[38ba34]: / Tools / ModelUtilities / SolidModeling / SolidModeling.any

Download this file

260 lines (251 with data), 10.6 kB

#class_template CreateBox( InputName, InputPlacement, InputLengthX, InputLengthY, InputLengthZ, InputDensity )
{
    #var AnyVec3 Pos0 = {0,0,0 };
    #var AnyVec3 RotAnglesInDegree0 = {0,0,0 } ;
    #var AnyVec3 Color = {0,0,0 };
    #var AnyVar Opacity = 1.0;
    #var AnyVar OpacityForLocalFrame = 1.0;
    #var AnyVar OpacityForLocalRefNodes = 1.0;
    //#var AnyVar ScaleFactorForLocalFrame = 0.5* sqrt(pow(InputLengthX,2)+pow(InputLengthY,2)+pow(InputLengthZ, 2));
    #var AnyVar ScaleFactorForLocalFrame = 2 * min({InputLengthX,InputLengthY,InputLengthZ});
    #var AnyVar ScaleFactorForLocalRefNodes = ScaleFactorForLocalFrame * 0.5;
    
    AnyVar GetVolume = InputLengthX * InputLengthY * InputLengthZ ;
    AnyVar GetMass = InputDensity * GetVolume;
    AnyVar GetIxx = GetMass * ( pow(InputLengthY,2) * pow(InputLengthZ, 2)) / 12;
    AnyVar GetIyy = GetMass * ( pow(InputLengthZ,2) * pow(InputLengthX, 2)) / 12;
    AnyVar GetIzz = GetMass * ( pow(InputLengthX,2) * pow(InputLengthY, 2)) / 12;
    AnyFolder& WhereToPut = InputPlacement; 
    
   
    WhereToPut =
    {
        AnySeg InputName =
        {
            Mass = ..GetMass;
            Jii = {..GetIxx, ..GetIyy, ..GetIzz };
            r0 = ..Pos0;
            Axes0 = RotMat(..RotAnglesInDegree0[0]*pi/180, x) *
                    RotMat(..RotAnglesInDegree0[1]*pi/180, y) *
                    RotMat(..RotAnglesInDegree0[2]*pi/180, z) ;
            JaboutCoMOnOff = On;
            AnyDrawSurf drw =
            {
                FileName = "box";
                ScaleXYZ = {InputLengthX/2, InputLengthY/2, InputLengthZ/2} / 0.15;
                RGB = ...Color ;
                Opacity = ...Opacity;
                Face = -1;
            };
            //AnyDrawRefFrame drw_frame =
            //{
            //    RGB = {0,0,0};
            //    ScaleXYZ = ...ScaleFactorForLocalFrame * {1, 1, 1};
            //    Opacity = ...OpacityForLocalFrame;
            //};
            AnyRefNode Node_Point0 =
            {
                sRel = {InputLengthX/2, InputLengthY/2, InputLengthZ/2};
                //AnyDrawRefFrame drw_frame =
                //{
                //    RGB = {1,1,0};
                //    ScaleXYZ = ....ScaleFactorForLocalRefNodes * {1, 1, 1};
                //    Opacity = ....OpacityForLocalRefNodes;
                //};                
            };
            AnyRefNode Node_Point1 =
            {
                sRel = {InputLengthX/2, InputLengthY/2, -InputLengthZ/2};
                //AnyDrawRefFrame drw_frame =
                //{
                //    RGB = {1,1,0};
                //    ScaleXYZ = ....ScaleFactorForLocalRefNodes * {1, 1, 1};
                //    Opacity = ....OpacityForLocalRefNodes;
                //};                
            };
            AnyRefNode Node_Point2 =
            {
                sRel = {InputLengthX/2, -InputLengthY/2, InputLengthZ/2};
                //AnyDrawRefFrame drw_frame =
                //{
                //    RGB = {1,1,0};
                //    ScaleXYZ = ....ScaleFactorForLocalRefNodes * {1, 1, 1};
                //    Opacity = ....OpacityForLocalRefNodes;
                //};                
            };
            AnyRefNode Node_Point3 =
            {
                sRel = {InputLengthX/2, -InputLengthY/2, -InputLengthZ/2};
                //AnyDrawRefFrame drw_frame =
                //{
                //    RGB = {1,1,0};
                //    ScaleXYZ = ....ScaleFactorForLocalRefNodes * {1, 1, 1};
                //    Opacity = ....OpacityForLocalRefNodes;
                //};                
            };
            AnyRefNode Node_Point4 =
            {
                sRel = {-InputLengthX/2, InputLengthY/2, InputLengthZ/2};
                //AnyDrawRefFrame drw_frame =
                //{
                //    RGB = {1,1,0};
                //    ScaleXYZ = ....ScaleFactorForLocalRefNodes * {1, 1, 1};
                //    Opacity = ....OpacityForLocalRefNodes;
                //};                
            };
            AnyRefNode Node_Point5 =
            {
                sRel = {-InputLengthX/2, InputLengthY/2, -InputLengthZ/2};
                //AnyDrawRefFrame drw_frame =
                //{
                //    RGB = {1,1,0};
                //    ScaleXYZ = ....ScaleFactorForLocalRefNodes * {1, 1, 1};
                //    Opacity = ....OpacityForLocalRefNodes;
                //};                
            };
            AnyRefNode Node_Point6 =
            {
                sRel = {-InputLengthX/2, -InputLengthY/2, InputLengthZ/2};
                //AnyDrawRefFrame drw_frame =
                //{
                //    RGB = {1,1,0};
                //    ScaleXYZ = ....ScaleFactorForLocalRefNodes * {1, 1, 1};
                //    Opacity = ....OpacityForLocalRefNodes;
                //};                
            };
            AnyRefNode Node_Point7 =
            {
                sRel = {-InputLengthX/2, -InputLengthY/2, -InputLengthZ/2};
                //AnyDrawRefFrame drw_frame =
                //{
                //    RGB = {1,1,0};
                //    ScaleXYZ = ....ScaleFactorForLocalRefNodes * {1, 1, 1};
                //    Opacity = ....OpacityForLocalRefNodes;
                //};                
            };             
        };
    };
};

#class_template CreateSphere( InputName, InputPlacement, InputRadius, InputDensity)
{
    #var AnyVec3 Pos0 = {0,0,0 };
    #var AnyVec3 RotAnglesInDegree0 = {0,0,0 } ;
    #var AnyVec3 Color = {0,0,0 };
    #var AnyVar Opacity = 1.0;
    #var AnyVar OpacityForLocalFrame = 1.0;
    #var AnyVar OpacityForLocalRefNodes = 1.0;
    #var AnyVar ScaleFactorForLocalFrame = 2* InputRadius ;
    #var AnyVar ScaleFactorForLocalRefNodes = ScaleFactorForLocalFrame * 0.5;
    
    AnyVar GetVolume = 4 * pi * pow(InputRadius, 3) / 3;
    AnyVar GetMass = InputDensity * GetVolume ;
    AnyVar GetIxx = 2 * GetMass * pow(InputRadius, 2) / 5 ;
    AnyVar GetIyy = 2 * GetMass * pow(InputRadius, 2) / 5 ;
    AnyVar GetIzz = 2 * GetMass * pow(InputRadius, 2) / 5 ;
    AnyFolder& WhereToPut = InputPlacement ;
    
    WhereToPut =
    {
        AnySeg InputName =
        {
            Mass = ..GetMass;
            Jii = {..GetIxx, ..GetIyy, ..GetIzz };
            r0 = ..Pos0;
            Axes0 = RotMat(..RotAnglesInDegree0[0]*pi/180, x) *
                    RotMat(..RotAnglesInDegree0[1]*pi/180, y) *
                    RotMat(..RotAnglesInDegree0[2]*pi/180, z) ;
            JaboutCoMOnOff = On;
            AnyDrawSphere drw =
            {
                ScaleXYZ = InputRadius * {1,1,1};
                RGB = ...Color ;
                Opacity = ...Opacity;
                AnyStyleDrawMaterial1 style = 
                {
                  EnableCreasing = On;
                  CreasingAngle = 0.524;
                  SpecularRGB = 0.05*{1,1,1};
                };
            };
            //AnyDrawRefFrame drw_frame =
            //{
            //    RGB = {0,0,0};
            //    ScaleXYZ = ...ScaleFactorForLocalFrame * {1, 1, 1};
            //    Opacity = ...OpacityForLocalFrame;
            //};
        };        
    };
};

#class_template CreateCylinder( InputName, InputPlacement, InputRadius, InputLength, InputDensity)
{
    #var AnyVec3 Pos0 = {0,0,0 };
    #var AnyVec3 RotAnglesInDegree0 = {0,0,0 } ;
    #var AnyVec3 Color = {0,0,0 };
    #var AnyVar Opacity = 1.0;
    #var AnyVar CapRatio = 0;
    #var AnyVar OpacityForLocalFrame = 1.0;
    #var AnyVar OpacityForLocalRefNodes = 1.0;
    #var AnyVar ScaleFactorForLocalFrame = 2* InputRadius ;
    #var AnyVar ScaleFactorForLocalRefNodes = ScaleFactorForLocalFrame * 0.5;
    
    AnyVar GetVolume = pi * pow(InputRadius, 2) * InputLength ;
    AnyVar GetMass = InputDensity * GetVolume ;
    AnyVar GetIxx = GetMass * (3 * pow(InputRadius, 2) + pow(InputLength, 2) ) / 12 ;
    AnyVar GetIyy = GetMass * (3 * pow(InputRadius, 2) + pow(InputLength, 2) ) / 12 ;
    AnyVar GetIzz = GetMass * pow(InputRadius, 2) / 2 ;
    AnyFolder& WhereToPut = InputPlacement ;
    
    WhereToPut =
    {
        AnySeg InputName =
        {
            Mass = ..GetMass;
            Jii = {..GetIxx, ..GetIyy, ..GetIzz };
            r0 = ..Pos0;
            Axes0 = RotMat(..RotAnglesInDegree0[0]*pi/180, x) *
                    RotMat(..RotAnglesInDegree0[1]*pi/180, y) *
                    RotMat(..RotAnglesInDegree0[2]*pi/180, z) ;
            JaboutCoMOnOff = On;
            //AnyDrawRefFrame drw_frame =
            //{
            //    RGB = {0,0,0};
            //    ScaleXYZ = ...ScaleFactorForLocalFrame * {1, 1, 1};
            //    Opacity = ...OpacityForLocalFrame;
            //};
            AnyRefNode drw_node =
            {
                sRel = { 0,0, -InputLength/2 };
                AnySurfCylinder drw =
                {
                    Radius = InputRadius ;
                    Length = InputLength;
                    CapRatio = ....CapRatio ;
                    AnyDrawParamSurf drw =
                    {
                        RGB = .....Color;
                        Opacity = .....Opacity;
                        AnyStyleDrawMaterial1 style = 
                        {
                          EnableCreasing = On;
                          CreasingAngle = 0.524;
                          SpecularRGB = 0.05*{1,1,1};
                        };
                    };                    
                };
            };
            AnyRefNode Node_Bottom =
            {
                sRel = {0, 0, -InputLength/2};
                //AnyDrawRefFrame drw_frame =
                //{
                //    RGB = {1,1,0};
                //    ScaleXYZ = ....ScaleFactorForLocalRefNodes * {1, 1, 1};
                //    Opacity = ....OpacityForLocalRefNodes;
                //};                
            };
            AnyRefNode Node_Top =
            {
                sRel = {0, 0, InputLength/2};
                //AnyDrawRefFrame drw_frame =
                //{
                //    RGB = {1,1,0};
                //    ScaleXYZ = ....ScaleFactorForLocalRefNodes * {1, 1, 1};
                //    Opacity = ....OpacityForLocalRefNodes;
                //};                
            };            
        };        
    };
};