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