283 lines (193 with data), 6.3 kB
#class_template CreateMarkerTD (MarkerName, MarkerPlacement, WeightX,WeightY,WeightZ,OptX, OptY,OptZ, Model1, Model2){
AnyVec3 RGB={1,0,0}; //color of initial markers
#var AnyVec3 sRelOpt ; // Variable with obligatory initialization
AnyFolder &Macro= Main.ModelSetup.Macros ;
Macro={
AnyStringVar Set##MarkerName = ("classoperation "+ CompleteNameOf(.sRelOptEdit) + " " + strquote("Set Value") + strformat ("\n")+ "classoperation Main " + strquote("Update Values") + strformat ("\n"));
};
#if OptX =="Off"
#if OptY=="On"
#if OptZ=="On"
AnyVec3 sRelOptEdit = (sRelOpt);
#endif
#if OptZ=="Off"
AnyVec3 sRelOptEdit = (sRelOpt);
#endif
#endif
#if OptY=="Off"
#if OptZ=="On"
AnyVec3 sRelOptEdit = (sRelOpt);
#endif
#if OptZ=="Off"
AnyVec3 sRelOptEdit = DesignVar(sRelOpt); //make it a design var ! because it will not be otherwise
#endif
#endif
#endif
#if OptX =="On"
#if OptY=="On"
#if OptZ=="On"
AnyVec3 sRelOptEdit = (sRelOpt);
#endif
#if OptZ=="Off"
AnyVec3 sRelOptEdit = (sRelOpt);
#endif
#endif
#if OptY=="Off"
#if OptZ=="On"
AnyVec3 sRelOptEdit = (sRelOpt);
#endif
#if OptZ=="Off"
AnyVec3 sRelOptEdit = (sRelOpt);
#endif
#endif
#endif
#if Model1 == 1
AnyFolder &InsertionNode1 =Main.Studies.HumanModel.BodyModel.MarkerPlacement;
InsertionNode1 ={
AnyRefNode MarkerName={
//sRel=.ScalingNode.sRel+.Scale(..sRelOptEdit*.ScalingNode.ARel');
sRel=.ScalingNode.sRel+.GeomScale(..sRelOptEdit)*.ScalingNode.ARel';
ARel=.ScalingNode.ARel;
#if OptX =="On"
AnyDrawVector XDir = {
Line.RGB={0,1,0};
Vec = {size,0, 0};
#include "DrawVector.any"
Text="X";
};
#endif
#if OptY =="On"
AnyDrawVector YDir = {
Line.RGB={0,1,0};
Vec = {0,size, 0};
#include "DrawVector.any"
Text="Y";
};
#endif
#if OptZ =="On"
AnyDrawVector ZDir = {
Line.RGB={0,1,0};
Vec = {0,0,size};
#include "DrawVector.any"
Text="Z";
};
#endif
#if OptX =="Off"
AnyDrawVector XDir = {
Line.RGB={1,0,0};
Vec = {size,0, 0};
Text="X";
#include "DrawVector.any"
};
#endif
#if OptY =="Off"
AnyDrawVector YDir = {
Vec = {0,size, 0};
Line.RGB={1,0,0};
#include "DrawVector.any"
Text="Y";
};
#endif
#if OptZ =="Off"
AnyDrawVector ZDir = {
Line.RGB={1,0,0};
Vec = {0,0,size};
#include "DrawVector.any"
Text="Z";
};
#endif
}; //create the marker
};
AnyFolder &DriverFolder =Main.Studies.KinematicStudyForParameterIdentification.ModelEnvironmentConnection.Drivers;
DriverFolder ={
AnyFolder MarkerName ={
AnyFunConst WeightFun ={Value = {WeightX,WeightY,WeightZ};};
AnyKinDriverMarker Driver = {
AnyDrawKinMeasure Draw = {
Visible = On;
Opacity = 1;
Label = Off;
Size = 0.01;
Line = On;
Text = "";
TextSize = 30;
};
Linear.Ref=0;
AnyRefFrame &ref1 = ...InsertionNode1.MarkerName;
AnyParamFun &ref2 = Main.ModelSetup.C3DFileData.Points.Markers.MarkerName.PosInterpol;
WeightFun={&.WeightFun};
};
};
};
AnyFolder &ref= Main.Studies.ParameterIdentification ;
ref={
#if OptX =="On"
AnyDesVar MarkerName##X = { Val =..sRelOptEdit[0];
Min=-100;
Max=100;
};
#endif
#if OptY =="On"
AnyDesVar MarkerName##Y = { Val = ..sRelOptEdit[1];
Min=-100;
Max=100;
};
#endif
#if OptZ =="On"
AnyDesVar MarkerName##Z = { Val = ..sRelOptEdit[2];
Min=-100;
Max=100;
};
#endif
};
#endif
#if Model2 == 1
AnyFolder &InsertionNode2 =Main.Studies.HumanModel.BodyModel.MarkerPlacement;
InsertionNode2 ={
AnyRefNode MarkerName={
// sRel=.ScalingNode.sRel+.Scale(DesignVar(..sRelOptEdit)*.ScalingNode.ARel');
sRel=.ScalingNode.sRel+.GeomScale((..sRelOptEdit)*.ScalingNode.ARel');
AnyDrawNode DrawMarker =
{
Visible = On;
Opacity = 0.5;
RGB = {1, 0, 0};
ScaleXYZ = {0.01, 0.01, 0.01};
};
};//create the marker
};
Main.Studies.InverseDynamicStudy.EnvironmentModel.DrawC3DMarkers = {
AnyDrawSphere MarkerName = {
Visible = On;
Opacity = 0.5;
Position = {Main.ModelSetup.C3DFileData.Points.Markers.MarkerName.PosInterpol(Main.Studies.InverseDynamicStudy.t)}[0];
PointAway = On;
GlobalCoord = On;
ScaleXYZ={1,1,1}*0.02;
RGB={0,0,1};
AnyRefFrame &Globalref = Main.Studies.InverseDynamicStudy.EnvironmentModel.GlobalRef;
};
};
AnyFolder &ref2= Main.Studies.LoadParametersOptimizationResults;
ref2={
#if OptX =="On"
AnyDesVar MarkerName##X = { Val =..sRelOptEdit[0];
Min=-100;
Max=100;
};
#endif
#if OptY =="On"
AnyDesVar MarkerName##Y = { Val = ..sRelOptEdit[1];
Min=-100;
Max=100;
};
#endif
#if OptZ =="On"
AnyDesVar MarkerName##Z = { Val = ..sRelOptEdit[2];
Min=-100;
Max=100;
};
#endif
};
#endif
}; // End of InsertSegmentClass