[38ba34]: / Tools / ModelUtilities / Widgets / 3DForce.any

Download this file

78 lines (61 with data), 2.0 kB

#class_template WidgetForce (ForceName, AnySeg &Base,AnyMechOpr &Study){
  
  #var AnyVec3 IniForce3D ;  // Variable with obligatory initialization
  #var AnyVec3 LocalPos ;  // Variable with obligatory initialization
  #var AnyVec3 LocalRotZYX ;  // Variable with obligatory initialization
  
  AnyDrawWidgetLin DrwWidget = {
    RefFrame = &.Base.ForceName;
    Target = &.ForceName.Flocal;
    AxisOnOff = {On,On,On};
    
    UpdateEvent = OnMouseRelease;
    
    Operation = &.Study;
  };
  
  
  
  Base ={
    AnyRefNode ForceName={
      sRel=..LocalPos ;
      ARel=RotMat(..LocalRotZYX[0]*pi/180,z)*RotMat(..LocalRotZYX[1]*pi/180,y)*RotMat(..LocalRotZYX[2]*pi/180,x);
      
    };
  };
  
  AnyForce3D ForceName={
    AnyRefNode &ref=.Base.ForceName;
    Flocal=.IniForce3D;
  };
  
  AnyDrawVector DrawForce = {
    Vec = .ForceName.Flocal;
    //PointAway = On;
    GlobalCoord = Off;
    AnyRefNode &ref=.Base.ForceName;
    Line.Thickness=0.005;
    Line.RGB={0,0,1};
    Line.End.Style = {5} ;
    Line.End.Thickness = 3*Line.Thickness;  
    Line.End.Length = 4*Line.Thickness;
    Line.Start.Style = {0};
    Line.Start.Thickness = 3*Line.Thickness;  
    Line.Start.Length = 3*Line.Thickness;
    Line.Start.RGB = {1,0,0};
  };
  
  
  AnyDrawVector DrawForceX = {
    Vec ={ .ForceName.Flocal[0],0,0};
    //PointAway = On;
    GlobalCoord = Off;
    AnyRefNode &ref=.Base.ForceName;
    Line.Thickness=0.5*.DrawForce.Line.Thickness;
    Line.RGB={1,0,0};
  };
  
  AnyDrawVector DrawForceY = {
    Vec ={ 0,.ForceName.Flocal[1],0};
    //PointAway = On;
    GlobalCoord = Off;
    AnyRefNode &ref=.Base.ForceName;
    Line.Thickness=0.5*.DrawForce.Line.Thickness;
    Line.RGB={0,1,0};
    
  };
  AnyDrawVector DrawForceZ = {
    Vec ={ 0,0,.ForceName.Flocal[2]};
    //PointAway = On;
    GlobalCoord = Off;
    AnyRefNode &ref=.Base.ForceName;
    Line.Thickness=0.5*.DrawForce.Line.Thickness;
    Line.RGB={0,0,1};
  };
  
};