3DCoatScripting  4.8.31Ξ²
Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ скриптинга ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ возмоТностями ΠšΠΎΡƒΡ‚Π° ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π».
πŸŒ€ АвтоматичСскоС созданиС скриптов Π² ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°Ρ…

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ скриптов Π² 3DCoat для инструмСнта ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² Π² ΡΠΊΡƒΠ»ΡŒΠΏΡ‚ Ρ‚Π° Ρ€Π΅Ρ‚ΠΎΠΏΠΎ ΠΊΠΎΠΌΠ½Π°Ρ‚Π°Ρ…. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ свои дСйствия Π² скрипт Ρ„Π°ΠΉΠ», ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² Ρ„Π°ΠΉΠ»Π΅ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ.

Π—Π°ΠΏΠΈΡΡŒ скрипта Π² ΡΠΊΡƒΠ»ΡŒΠΏΡ‚ ΠΊΠΎΠΌΠ½Π°Ρ‚Π΅

Для просмотра Π²ΠΈΠ΄Π΅ΠΎ записи скрипта Π² ΡΠΊΡƒΠ»ΡŒΠΏΡ‚ ΠΊΠΎΠΌΠ½Π°Ρ‚Π΅, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ здСсь Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉ этот скрипт сСбС Π½Π° ΠΊΠΎΠΌΠΏ ΠΈ запусти ΠΈΠ· мСню 3DCoat: "Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ / Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт". Если Π½Π΅ знаСшь, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ скрипты, загляни сюда.

// Π€Π°ΠΉΠ», созданный послС записи скрипта Π² ΡΠΊΡƒΠ»ΡŒΠΏΡ‚-ΠΊΠΎΠΌΠ½Π°Ρ‚Π΅.
void main() {
    
    Coat coat;
    UI ui;
    // ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΡΠΊΡƒΠ»ΡŒΠΏΡ‚ ΠΊΠΎΠΌΠ½Π°Ρ‚Ρƒ
    coat.room("Sculpt");
    
    Symmetry symm;
    
    // Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΡΠΈΠΌΠΌΠ΅Ρ‚Ρ€ΠΈΡŽ
    symm.Enable(true);
    symm.ShowPlane(true);
    symm.Type(0);
    
    // Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ "лоТь"
    symm.SetMirror(false,0);
    symm.SetMirror(false,1);
    symm.SetMirror(false,2);
    symm.CoordSystemXYZ(0);
    symm.StartPoint(Vec3(0.00,0.00,0.00));
    
    SculptRoom sculpt;
    
    // ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ½Π°Ρ‚Ρƒ
    sculpt.clear();
    sculpt.toVoxel();
    
    // Π²ΠΎΠΊΡΠ΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚
    Vox vox1;
    vox1.clearScene();
    vox1.rename("Volume5");
    
    // ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ инструмСнт ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ²
    PrimitivesTool tool;
    
    // ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°ΠΌ
    coat.room("Sculpt");
    ui("$SCULP_PRIM");

    // ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ сфСру
    SpherePrim sphere1;
    sphere1 = tool.sphere();
    
    // ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ сфСры
    sphere1.useDiameter(false);
    sphere1.Position(Vec3(0.00,0.00,0.00));
    sphere1.Radius(15.00);
    
    // ΠΏΠ΅Ρ€ΠΉΡ‚ΠΈ Π² сурфСйсный Ρ€Π΅ΠΆΠΈΠΌ
    vox1.toSurface();
    ui("$SCULP_PRIM");
    
    // ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΡƒΠ±
    CubPrim cube2;
    cube2 = tool.cube();
    
    // ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΡƒΠ±Π°
    cube2.AxisX(Vec3(1.00,0.00,0.00));
    cube2.AxisY(Vec3(0.00,1.00,0.00));
    cube2.AxisZ(Vec3(0.00,0.00,1.00));
    cube2.useFillet(true);
    cube2.Position(Vec3(0.00,0.00,0.00));
    cube2.SideA(30.00);
    cube2.SideB(30.00);
    cube2.SideC(30.00);
    cube2.details(0.36);
    
    // ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ сторон
    cube2.Position(Vec3(0.00,0.00,-191.27));
    cube2.SideA(434.41);
    cube2.SideB(12.88);
    cube2.SideC(896.92);
    
    // Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΡƒΠ± Π² сцСну
    tool.Apply(0);
    
    // ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°ΠΌ
    ui("$SCULP_PRIM");
    Step(1);
    
    // ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€ 
    CylinderPrim cylinder4;
    cylinder4 = tool.cylinder();
    
    // ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€Π°
    cylinder4.useDiameter(false);
    cylinder4.useFillet(false);
    cylinder4.useSector(false);
    cylinder4.startPoint(Vec3(0.00,0.00,0.00));
    cylinder4.endPoint(Vec3(0.00,20.00,0.00));
    cylinder4.height(20.00);
    cylinder4.radius(10.00);
    cylinder4.topRadius(10.00);
    cylinder4.bottomRadius(10.00);
    cylinder4.scalex(1.00);
    cylinder4.scaley(1.00);
    cylinder4.details(0.36);
    
    // ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ
    cylinder4.startPoint(Vec3(153.52,-6.44,194.20));
    cylinder4.endPoint(Vec3(153.52,-126.74,194.20));
    
    // высота, радиус
    cylinder4.height(120.30);
    cylinder4.radius(31.52);
    cylinder4.topRadius(31.52);
    cylinder4.bottomRadius(31.52);
    
    // Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€ Π² сцСну
    tool.Apply(0);
    
    // новая позиция
    cylinder4.startPoint(Vec3(-147.54,-6.44,191.79));
    cylinder4.endPoint(Vec3(-147.54,-126.74,191.79));
    
    // Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€ Π² сцСну
    tool.Apply(0);
    
    // новая позиция
    cylinder4.startPoint(Vec3(150.98,-6.44,-577.69));
    cylinder4.endPoint(Vec3(150.98,-126.74,-577.69));
    
    // Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€ Π² сцСну
    tool.Apply(0);
    
    // новая позиция
    cylinder4.startPoint(Vec3(-149.89,-6.44,-568.62));
    cylinder4.endPoint(Vec3(-149.89,-126.74,-568.62));
    
    // Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ†ΠΈΠ»ΠΈΠ½Π΄Ρ€ Π² сцСну
    tool.Apply(0);
    
    // ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°ΠΌ
    ui("$SCULP_PRIM");
    
    // ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠ³Ρ€Π°Π½Π½ΠΈΠΊ
    NGonPrim ngon8;
    ngon8 = tool.ngon();
    
    // инициализация ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²
    ngon8.useDiameter(false);
    ngon8.useFillet(false);
    ngon8.startPoint(Vec3(0.00,0.00,0.00));
    ngon8.endPoint(Vec3(0.00,20.00,0.00));
    ngon8.height(20.00);
    ngon8.radius(10.00);
    ngon8.topRadius(10.00);
    ngon8.bottomRadius(10.00);
    ngon8.Order(8);
    ngon8.scalex(1.00);
    ngon8.scaley(1.00);
    
    // ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ
    ngon8.details(0.36);
    
    // ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ
    ngon8.startPoint(Vec3(-75.14,6.44,99.46));
    ngon8.endPoint(Vec3(-75.14,356.44,99.46));
    // ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ радиус
    ngon8.radius(65.01);
    ngon8.topRadius(65.01);
    ngon8.bottomRadius(65.01);
    
    // Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² сцСну
    tool.Apply(0);
    
    // ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°ΠΌ
    ui("$SCULP_PRIM");
    Step(1);
    
    // ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡˆΠ΅ΡΡ‚Π΅Ρ€Π΅Π½ΠΊΡƒ 
    GearPrim gear9;
    gear9 = tool.gear();
    
    // инициализация ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²
    gear9.useDiameter(false);
    gear9.startPoint(Vec3(0.00,0.00,0.00));
    gear9.endPoint(Vec3(0.00,20.00,0.00));
    gear9.height(20.00);
    gear9.radius(10.00);
    gear9.topRadius(10.00);
    gear9.bottomRadius(10.00);
    gear9.Depth(0.20);
    gear9.Sharpness(0.50);
    gear9.Order(16);
    gear9.scalex(1.00);
    gear9.scaley(1.00);
    gear9.details(0.36);
    
    // ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ
    gear9.startPoint(Vec3(-64.67,6.44,-410.43));
    gear9.endPoint(Vec3(-64.67,300.44,-410.43));
    
    // ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ радиус
    gear9.radius(55.01);
    gear9.topRadius(55.01);
    gear9.bottomRadius(55.01);
    
    // Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² сцСну
    tool.Apply(0);
    
    // ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°ΠΌ
    ui("$SCULP_PRIM");
    Step(1);
    
    // ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡˆΡ€ΠΈΡ„Ρ‚
    Font font;
    font.Name("Arial");
    font.Size(384);
    font.Weight(0);
    font.Style(0);
    font.OutPrecision(0);
    font.ClipPrecision(0);
    font.CharSet(0);
    font.Quality(0);
    font.Family(0);
    
    // ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ тСкстовый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚
    TextPrim text11;
    text11 = tool.text();
    
    // тСкст
    text11.SetText("Hello world");
    text11.AxisX(Vec3(1.00,0.00,0.00));
    text11.AxisY(Vec3(0.00,1.00,0.00));
    text11.AxisZ(Vec3(0.00,0.00,1.00));
    text11.Position(Vec3(0.00,0.00,0.00));
    
    // Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹
    text11.SideA(50.00);
    text11.SideB(50.00);
    text11.SideC(5.00);
    text11.ExtraRotation(0.00);
    
    // ΠΊΡ€ΠΈΠ²ΠΈΠ·Π½Π° Π²Ρ‹ΠΊΠ».
    text11.Bend(false);
    
    // оси
    text11.AxisX(Vec3(-0.03,0.00,-1.00));
    text11.AxisY(Vec3(0.00,1.00,0.00));
    text11.AxisZ(Vec3(1.00,-0.00,-0.03));
    
    // позиция ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ сторон
    text11.Position(Vec3(72.97,68.81,-207.88));
    text11.SideA(380.69);
    text11.SideB(380.69);
    text11.SideC(38.07);
    
    // Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ тСкст Π² сцСну
    tool.Apply(0);
}

Π—Π°ΠΏΠΈΡΡŒ скрипта Π² Ρ€Π΅Ρ‚ΠΎΠΏΠΎ ΠΊΠΎΠΌΠ½Π°Ρ‚Π΅

Для просмотра Π²ΠΈΠ΄Π΅ΠΎ записи скрипта Π² Ρ€Π΅Ρ‚ΠΎΠΏΠΎ ΠΊΠΎΠΌΠ½Π°Ρ‚Π΅, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ здСсь Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉ этот скрипт сСбС Π½Π° ΠΊΠΎΠΌΠΏ ΠΈ запусти ΠΈΠ· мСню 3DCoat: "Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ / Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ скрипт". Если Π½Π΅ знаСшь, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ скрипты, загляни сюда.

// This file generated after the script recording in the retopo room.
void main() {
    
    Coat coat;
    // goto retopo room
    coat.room("Retopo");
    
    // symmetry object
    Symmetry symm;
    
    // enable window
    symm.Enable(true);
    symm.ShowPlane(true);
    symm.Type(0);
    
    // mirror set to "false"
    symm.SetMirror(false,0);
    symm.SetMirror(false,1);
    symm.SetMirror(false,2);
    symm.CoordSystemXYZ(0);
    symm.StartPoint(Vec3(0.00,0.00,0.00));
    
    // clear the retopo
    RetopoRoom retopo;
    retopo.clear();
    
    // prepare the primitives tool
    PrimitivesTool tool;
    
    // go to the retopo primitives
    coat.room("Retopo");
    cmd("$RTP_PRIM");
    
    // get the retopo sphere
    rGeoSphere rsphere22;
    rsphere22 = tool.rsphere();
    
    // init parameters
    rsphere22.useDiameter(false);
    rsphere22.Position(Vec3(0.00,0.00,0.00));
    rsphere22.Radius(10.00);
    rsphere22.SubDivision(8);
    
    // go to the retopo primitives
    cmd("$RTP_PRIM");
    Step(1);
    
    // get the retopo box
    rGeoBox rbox23;
    rbox23 = tool.rbox();
    
    // init parameters
    rbox23.AxisX(Vec3(1.00,0.00,0.00));
    rbox23.AxisY(Vec3(0.00,1.00,0.00));
    rbox23.AxisZ(Vec3(0.00,0.00,1.00));
    rbox23.useFillet(false);
    rbox23.useUniform(true);
    rbox23.Position(Vec3(0.00,0.00,0.00));
    rbox23.SideA(30.00);
    rbox23.SideB(30.00);
    rbox23.SideC(30.00);
    rbox23.DivX(1);
    rbox23.DivY(1);
    rbox23.DivZ(1);
    rbox23.AverageDivision(12);
    
    // change the sides
    rbox23.SideA(134.45);
    rbox23.SideB(134.45);
    rbox23.SideC(134.45);
    
    // add the box in the scene
    tool.Apply();
    
    // go to the retopo primitives
    cmd("$RTP_PRIM");
    Step(1);

    // go to a sphere   
    tool.SetPrim("rsphere");
    rsphere22.Position(Vec3(-83.80,182.77,57.41));
    rsphere22.Radius(60.48);
    
    // add the sphere in the scene
    tool.Apply();
    
    // go to the retopo primitives
    cmd("$RTP_PRIM");
    Step(1);
    
    // get the retopo cylinder
    rGeoCylinder rcylinder24;
    rcylinder24 = tool.rcylinder();
    
    // init parameters ( diameter, fillet, removecaps )
    rcylinder24.useDiameter(false);
    rcylinder24.useFillet(false);
    rcylinder24.RemoveCaps(false);
    
    // uniform subdivision
    rcylinder24.useUniform(true);
    
    // positions (start,end points)
    rcylinder24.startPoint(Vec3(0.00,0.00,0.00));
    rcylinder24.endPoint(Vec3(0.00,20.00,0.00));
    
    // height, radius, topRadius, bottomRadius
    rcylinder24.height(20.00);
    rcylinder24.radius(0.00);
    rcylinder24.topRadius(10.00);
    rcylinder24.bottomRadius(10.00);
    
    // scales
    rcylinder24.scalex(1.00);
    rcylinder24.scaley(1.00);
    
    // custom divisions
    rcylinder24.DivY(1);
    rcylinder24.DivX(1);
    rcylinder24.DivZ(3);
    
    // average division
    rcylinder24.AverageDivision(16);
    
    // set the new positions
    rcylinder24.startPoint(Vec3(60.54,134.45,61.37));
    rcylinder24.endPoint(Vec3(60.54,163.89,61.37));
    
    // set the new height, radius, topRadius, bottomRadius 
    rcylinder24.height(129.44);
    rcylinder24.radius(47.91);
    rcylinder24.topRadius(47.91);
    rcylinder24.bottomRadius(47.91);
    rcylinder24.DivZ(7);
    
    // add the cylinder in the scene
    tool.Apply();
    
    // go to the retopo primitives
    cmd("$RTP_PRIM");
    Step(1);
    
    // get the retopo cone
    rGeoCone rcone25;
    rcone25 = tool.rcone();
    
    // init parameters (diameters, fillet)
    rcone25.useDiameter(false);
    rcone25.useFillet(false);
    
    // uniform subdivision
    rcone25.useUniform(true);
    
    // set the positions
    rcone25.startPoint(Vec3(0.00,0.00,0.00));
    rcone25.endPoint(Vec3(0.00,20.00,0.00));
    
    // height & radius
    rcone25.height(20.00);
    rcone25.bottomRadius(10.00);
    
    // scales
    rcone25.scalex(1.00);
    rcone25.scaley(1.00);
    
    // custom divisions
    rcone25.DivY(1);
    rcone25.DivX(1);
    rcone25.DivZ(3);
    
    // average division
    rcone25.AverageDivision(12);
    
    // change the parameters
    rcone25.startPoint(Vec3(-65.00,134.45,-69.28));
    rcone25.endPoint(Vec3(-65.00,198.84,-69.28));
    rcone25.height(164.39);
    rcone25.bottomRadius(47.91);
    rcone25.DivY(4);
    rcone25.DivZ(4);
    
    // add the cone in the scene
    tool.Apply();
    
    // go to the retopo primitives
    cmd("$RTP_PRIM");
    Step(1);
    
    // get the retopo spiral
    rGeoSpiral rspiral31;
    rspiral31 = tool.rspiral();
    
    // init parameters (axises)
    rspiral31.AxisX(Vec3(0.00,0.00,-1.00));
    rspiral31.AxisY(Vec3(1.00,-0.00,0.00));
    rspiral31.AxisZ(Vec3(0.00,-1.00,-0.00));
    
    // uniform subdivision
    rspiral31.useUniform(true);
    
    // positions
    rspiral31.Position(Vec3(0.00,0.00,0.00));
    rspiral31.Position2(Vec3(0.00,2.00,0.00));
    
    // sphere profile
    rspiral31.UseRectProfile(false);
    
    // outer diameter
    rspiral31.OuterDiameter(40.00);
    
    // pitch
    rspiral31.Pitch(20.00);
    
    // profile params (d & r)
    rspiral31.ProfileDiameter(10.00);
    rspiral31.ProfileRadiusRelation(0.50);
    
    // amount of turns
    rspiral31.Turns(10);
    
    // clockwise direction
    rspiral31.ClockWise(true);
    
    // custom subdivisions
    rspiral31.DivY(3);
    rspiral31.DivX(3);
    rspiral31.DivZ(3);
    
    // average division
    rspiral31.AverageDivision(3);
    
    // change the axises
    rspiral31.AxisX(Vec3(-1.00,-0.07,0.00));
    rspiral31.AxisY(Vec3(-0.07,1.00,0.00));
    rspiral31.AxisZ(Vec3(-0.00,0.00,-1.00));
    
    // set the new positions 
    rspiral31.Position(Vec3(-8.92,24.72,134.45));
    rspiral31.Position2(Vec3(-8.92,24.72,136.45));
    
    // set the new outer diameter
    rspiral31.OuterDiameter(120);
    
    // change the pitch
    rspiral31.Pitch(47.91);
    rspiral31.ProfileDiameter(30);
    
    // change the divisions
    rspiral31.DivY(8);
    rspiral31.DivZ(1);
    
    // change the average divisions
    rspiral31.AverageDivision(16);
    
    // add the spiral in the scene
    tool.Apply();
    
    // change locations (axes & positions) 
    rspiral31.AxisX(Vec3(-0.00,0.13,0.99));
    rspiral31.AxisY(Vec3(0.00,0.99,-0.13));
    rspiral31.AxisZ(Vec3(-1.00,0.00,-0.00));
    rspiral31.Position(Vec3(134.45,29.35,-0.27));
    rspiral31.Position2(Vec3(136.45,29.35,-0.27));
    
    // add the spiral in the scene
    tool.Apply();
}