diff --git a/scapula_addmeasure.m b/scapula_addmeasure.m new file mode 100644 index 0000000..ae8c44c --- /dev/null +++ b/scapula_addmeasure.m @@ -0,0 +1,91 @@ +%% scapula_measure +% +% This script returns additional measurements from the Amira files. +% 3 differents output are possible: + +% - 'References' creates a text file in References folder containing coordinates to built in Solidworks 2 Coordinates +% Systems. One for Abaqus and one for the scapula. There are two +% additional coordinates to built the glenoid centerline. +% +% - 'density' creates a textfile in CylinderReferences folder containing +% an Amira script used in the density measurements protocol. It is needed to adjust the Cylinder at the correct position and with the correct size. +% +% - 'obliqueSlice' creates a textfile in obliqueSlice folder containing an +% Amira script used in Amira to obtain an image of the Friedman plane (2D +% glenoid orientation measurement) and an image for muscles measurement. +% +% - 'display' creates a textfile in "display" folder containing an Amira +% script used to display the glenoid sphere and the scapula plane. + + +% Author: EPFL-LBO +% Date: 2016-09-05 +% +%% + +% Output is 'References' or 'obliqueSlice' 'display' or 'density' +% Type is 'normal' or 'pathologic' +% Subject is the patient number + + +function scapula_addmeasure(output,type,subject) + +directory = '../../../data'; % Define directory + +switch type + case 'pathologic' + location = 'P'; + CTn = sprintf('P%d',str2num(subject)); % format the patient name to P### + levelDir1 = str2num(subject(1)); + levelDir2 = str2num(subject(2)); + + + finalDirectory = sprintf('%s/%s/%d/%d', directory, location, levelDir1, levelDir2); + + listing = dir(sprintf('%s/%s/%d/%d', directory, location, levelDir1, levelDir2)); + for i = 1:1:numel(listing) + name = listing(i).name; + t = strfind(name, CTn); + if t == 1; + patientName = listing(i).name; + end + end + + + case 'normal' + location = 'N'; + CTn = sprintf('N%03d',subject); % format the patient name to N### + patient = num2str(subject); + levelDir1 = str2num(patient(1)); + levelDir2 = str2num(patient(2)); + finalDirectory = sprintf('%s/%s/%d/%d', directory, location, levelDir1, levelDir2); + + listing = dir(sprintf('%s/%s/%d/%d', directory, location, levelDir1, levelDir2)); + for i = 1:1:numel(listing) + name = listing(i).name; + t = strfind(name, CTn); + if t == 1; + patientName = listing(i).name; + end + end +end + +switch output + + case 'References' + output = 'References'; + scapula_calculation(patientName, finalDirectory, location, output); + + case 'obliqueSlice' + output = 'obliqueSlice'; + scapula_calculation(patientName, finalDirectory, location, output); + + case 'density' + output = 'density'; + scapula_calculation(patientName, finalDirectory, location, output); + + case 'display' + output = 'display'; + scapula_calculation(patientName, finalDirectory, location, output); +end +end \ No newline at end of file