--- 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; + }; + +}; + +