Switch to side-by-side view

--- a
+++ b/Tools/AnyMocap/SaveLoadParameters.any
@@ -0,0 +1,94 @@
+  Main.ModelSetup.Macros = {   
+   
+   #ifndef MOCAP_PARAMETER_FILE_PREFIX
+   #define MOCAP_PARAMETER_FILE_PREFIX MOCAP_TEST_FILENAME_PREFIX + MOCAP_OUTPUT_FILENAME_PREFIX
+   #endif
+      
+   #if (ANYBODY_V1 > 7)|(ANYBODY_V1 == 7 & ANYBODY_V2 > 2)
+   AnyOperationMacro Save_parameters = {
+     AnyFileVar SavePath = TEMP_PATH;
+     MacroStr  = {"classoperation Main" + strquote("Save Values") +"--file=" + 
+       strquote(FilePathCompleteOf(SavePath) +"/"+  MOCAP_PARAMETER_FILE_PREFIX + Main.ModelSetup.TrialSpecificData.TrialFileName +".anyset" )    
+     };
+   };
+   #else
+   AnyOperationSequence Save_parameters= {
+     OPERATION_DISPLAY_PRIORITY(PriorityLow);
+     // This operation uses `AnyOperationSetValue` to mark all values that must be saved 
+      AnyOperationSetValue TouchMarkers = {
+        Source = ObjSearch("Main.ModelSetup.MocapDrivers.*.sRelOptEdit");
+        Target = Source;
+      };     
+      AnyOperationSetValue TouchSegLength =  {
+        Source = arrcat(
+          ObjSearch("Main.HumanModel.Anthropometrics.SegmentDimensions.*","AnyValue"),
+          ObjSearch("Main.HumanModel.Anthropometrics.SegmentDimensions.Right.*","AnyValue"),
+          ObjSearch("Main.HumanModel.Anthropometrics.SegmentDimensions.Left.*","AnyValue"),
+          ObjSearchRecursive("Main.HumanModel.Anthropometrics.SegmentScaleFactors", "LengthScale", "AnyValue"),
+          ObjSearchRecursive("Main.HumanModel.Anthropometrics.SegmentScaleFactors", "DepthScale", "AnyValue"),
+          ObjSearchRecursive("Main.HumanModel.Anthropometrics.SegmentScaleFactors", "WidthScale", "AnyValue")
+        );
+        Target = Source;
+      };   
+      
+      AnyOperationSetValue TouchOtherValues =  {
+        Source = arrcat(
+          ObjSearch("Main.HumanModel.BodyModel.Left.Leg.Seg.Thigh.KneeJoint.VarusValgusRotation", "AnyValue"),
+          ObjSearch("Main.HumanModel.BodyModel.Right.Leg.Seg.Thigh.KneeJoint.VarusValgusRotation", "AnyValue"),
+          ObjSearch("Main.HumanModel.BodyModel.Left.Leg.Seg.Shank.AnkleJoint.TibialTorsionOffset", "AnyValue"),
+          ObjSearch("Main.HumanModel.BodyModel.Right.Leg.Seg.Shank.AnkleJoint.TibialTorsionOffset", "AnyValue")
+         );
+          
+        Target = Source;
+      };   
+            
+      AnyOperationMacro SaveToFile = {
+        AnyFileVar SavePath = TEMP_PATH;
+        MacroStr  = {"classoperation Main" + strquote("Save Values") +"--file=" + 
+          strquote(FilePathCompleteOf(SavePath) +"/"+  MOCAP_PARAMETER_FILE_PREFIX + Main.ModelSetup.TrialSpecificData.TrialFileName +".anyset" )
+        };
+      };
+    };
+    #endif
+      
+    #if MOCAP_CREATE_PARAMETER_ID_SHORTCUT
+    Main.RunParameterIdentification.SaveParameters = {
+      AnyOperation &Save_parameters_to_anyset = Main.ModelSetup.Macros.Save_parameters;
+    };
+    #endif
+  };
+ 
+ 
+Main.ModelSetup.Macros = {
+  
+  #define _GET_VALID_INDEX(X) iffun(gtfun(NumElemOf(Main.ModelSetup.TrialSpecificData.LoadParametersFrom), X), X, 0)
+  #define _LOAD_MACRO(X) iffun( andfun(gtfun(NumElemOf(Main.ModelSetup.TrialSpecificData.LoadParametersFrom), X) , neqfun(Main.ModelSetup.TrialSpecificData.LoadParametersFrom[ _GET_VALID_INDEX(X)],"")),\
+                                  "classoperation Main " + strquote("Load Values") +" --file=" + strquote( FilePathCompleteOf(LoadPath)+ "/" + MOCAP_PARAMETER_FILE_PREFIX + Main.ModelSetup.TrialSpecificData.LoadParametersFrom[ _GET_VALID_INDEX(X)]+".anyset") ,\
+                                  "")
+ 
+
+  AnyOperationMacro Load_parameters = {
+    OPERATION_DISPLAY_PRIORITY(PriorityLow);
+     
+    AnyFileVar LoadPath = TEMP_PATH;
+    MacroStr  = { _LOAD_MACRO(0),
+                  _LOAD_MACRO(1),
+                  _LOAD_MACRO(2),
+                  _LOAD_MACRO(3),
+                  _LOAD_MACRO(4),
+                  _LOAD_MACRO(5),
+                  _LOAD_MACRO(6),
+                  _LOAD_MACRO(7),
+                  _LOAD_MACRO(8),
+                  iffun(neqfun( Main.ModelSetup.TrialSpecificData.LoadParametersFrom[0], "" ),"classoperation Main " + strquote("Update Values"),"")   };   
+  };
+  #undef _LOAD_MACRO
+  #undef _GET_VALID_INDEX
+  
+  Main.RunAnalysis.LoadParameters = {
+    AnyOperation &Load_parameters_from_anyset = Main.ModelSetup.Macros.Load_parameters;
+  };
+  
+};
+
+