95 lines (78 with data), 4.3 kB
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;
};
};