[38ba34]: / Tools / ModelUtilities / Mocap / CreateMarkerClassTD.any

Download this file

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