Full tutorial for this 3D model is here:
Use 3D object visualization in TNG software
<?xml version="1.0" encoding="UTF-8"?> <Model> <Expr> offset_x = -35; offset_y = -5; offset_gantry_y = 22; offset_gantry_z = 5; </Expr> <!-- Main 'model' assembly --> <Assembly> <Items> <!-- Spindle assembly --> <Assembly Name="Spindle"> <Items> <Include Filename="Spindle.txt"/> </Items> </Assembly> <!-- Table assembly --> <Assembly Name="Table"> <Transform X="offset_x" Y="offset_y"/> <Items> <Include Filename="Table.txt"/> </Items> </Assembly> <!-- Gantry assembly --> <Assembly Name="Gantry"> <Transform X="offset_x" Y="offset_y+offset_gantry_y"/> <Items> <Include Filename="Gantry.txt"/> </Items> </Assembly> <!-- Carriage X assembly --> <Assembly Name="CarriageX"> <Transform Y="offset_y+offset_gantry_y"/> <Items> <Include Filename="CarriageX.txt"/> </Items> </Assembly> <!-- Carriage Z assembly --> <Assembly Name="CarriageZ"> <Transform Y="offset_y+offset_gantry_y" Z="offset_gantry_z"/> <Items> <Include Filename="CarriageZ.txt"/> </Items> </Assembly> </Items> </Assembly> </Model>
<?xml version="1.0" encoding="UTF-8"?> <Model> <Expr> table_sizex = 240; table_sizey = 440; table_thick = 15; table_height = 40; </Expr> <Assembly Name="Table"> <Items> <Part Name="Top"> <Color Value="ffaaaacc"/> <Cuboid X="0" Y="0" Z="-0.5" W="table_sizex" L="table_sizey" H="-table_thick"/> </Part> <Part Name="Front"> <Color Value="ff9999bb"/> <Cuboid X="0" Y="0" Z="-table_thick" W="table_sizex" L="table_thick" H="-table_height"/> </Part> <Part Name="Back"> <Color Value="ff9999bb"/> <Cuboid X="0" Y="table_sizey" Z="-table_thick" W="table_sizex" L="-table_thick" H="-table_height"/> </Part> </Items> </Assembly> </Model>
<?xml version="1.0" encoding="UTF-8"?> <Model> <Expr> gantry_sizey = 100; gantry_top = 180; gantry_bottom = -table_thick - table_height/2; gantry_gap = 24; gantry_thick = 12; gantry_posl = 0 - gantry_gap; gantry_posr = table_sizex + gantry_gap; gantry_sizex = table_sizex + 2*gantry_gap; gantry_clear = 80; gantry_rail_size = 8; gantry_rail_posy = gantry_sizey - gantry_thick - 2*gantry_rail_size; gantry_rail_posz1 = gantry_clear + 10; gantry_rail_posz2 = gantry_top - 10; </Expr> <Assembly Name="Gantry"> <Move Y="1"/> <Items> <Part Name="Left"> <Color Value="ff8e6767"/> <Poly X1="gantry_bottom" Y1="gantry_bottom" X2="gantry_bottom + 0.3*gantry_top" Y2="gantry_bottom" X3="gantry_top" Y3="0.4*gantry_sizey" X4="gantry_top" Y4="gantry_sizey" X5="gantry_bottom" Y5="gantry_sizey" Reverse="false" Size="-gantry_thick " X="gantry_posl" Y="0" Z="0" RY="-90"/> </Part> <Part Name="Right"> <Color Value="ff8e6767"/> <Poly X1="gantry_bottom" Y1="gantry_bottom" X2="gantry_bottom + 0.3*gantry_top" Y2="gantry_bottom" X3="gantry_top" Y3="0.4*gantry_sizey" X4="gantry_top" Y4="gantry_sizey" X5="gantry_bottom" Y5="gantry_sizey" Reverse="false" Size="+gantry_thick" X="gantry_posr" Y="0" Z="0" RY="-90"/> </Part> <Part Name="Back"> <Color Value="ff8e6767"/> <Cuboid X="-gantry_gap" Y="gantry_sizey" Z="gantry_clear" W="gantry_sizex" L="-gantry_thick" H="gantry_top - gantry_clear"/> </Part> <Part Name="Rail"> <Color Value="ff008080"/> <Cylinder X="gantry_posl" Y="gantry_rail_posy" Z="gantry_rail_posz1" R1="gantry_rail_size" R2="gantry_rail_size" Size="gantry_sizex" RY="90"/> </Part> <Part Name="Rail"> <Color Value="ff008080"/> <Cylinder X="gantry_posl" Y="gantry_rail_posy" Z="gantry_rail_posz2" R1="gantry_rail_size" R2="gantry_rail_size" Size="gantry_sizex" RY="90"/> </Part> </Items> </Assembly> </Model>
<?xml version="1.0" encoding="UTF-8"?> <Model> <Expr> carriagex_sizex = 90; carriagex_sizey = 30; carriagex_sizez = 115; carriagex_bot = gantry_clear; carriagex_top = carriagex_bot + carriagex_sizez; carriagex_posy = gantry_sizey - gantry_thick - 2; carriagex_arm_posy = carriagex_posy-carriagex_sizey; carriagex_arm_sizey = 30; carriagex_arm_sizez = 10; carriagex_rail_size = 6; carriagex_rail_posy = carriagex_arm_posy - carriagex_arm_sizey/2; carriagex_rail_offx = 1.5*carriagex_rail_size; </Expr> <Assembly Name="Carriage X"> <Move X="1" Y="1"/> <Transform X="-carriagex_sizex/2"/> <Items> <Part Name="Block"> <Color Value="ffaaaacc"/> <Cuboid X="0" Y="carriagex_posy" Z="carriagex_top" W="carriagex_sizex" L="-carriagex_sizey" H="-carriagex_sizez"/> </Part> <Part Name="Top"> <Color Value="ff9999bb"/> <Cuboid X="0" Y="carriagex_arm_posy" Z="carriagex_top" W="carriagex_sizex" L="-carriagex_arm_sizey" H="-carriagex_arm_sizez"/> </Part> <Part Name="Bottom"> <Color Value="ff9999bb"/> <Cuboid X="0" Y="carriagex_arm_posy" Z="carriagex_bot" W="carriagex_sizex" L="-carriagex_arm_sizey" H="+carriagex_arm_sizez"/> </Part> <Part Name="Rail"> <Color Value="ff008080"/> <Cylinder X="0+carriagex_rail_offx" Y="carriagex_rail_posy" Z="carriagex_top" R1="carriagex_rail_size" R2="carriagex_rail_size" Size="-carriagex_sizez"/> </Part> <Part Name="Rail"> <Color Value="ff008080"/> <Cylinder X="carriagex_sizex-carriagex_rail_offx" Y="carriagex_rail_posy" Z="carriagex_top" R1="carriagex_rail_size" R2="carriagex_rail_size" Size="-carriagex_sizez"/> </Part> </Items> </Assembly> </Model>
<?xml version="1.0" encoding="UTF-8"?> <Model> <Expr> carriagez_sizex = carriagex_sizex; carriagez_sizez = 30; carriagez_sizey = 32; carriagez_posy = carriagex_arm_posy; carriagez_posz = carriagex_bot + carriagex_arm_sizez + 1; carriagez_arm_sizez = 80; carriagez_arm_sizey = 10; carriagez_arm_posy = carriagez_posy - carriagez_sizey; carriagez_arm_posz = carriagez_posz + carriagez_sizez; </Expr> <Assembly Name="Carriage Z"> <Move X="1" Y="1" Z="1"/> <Transform X="-carriagez_sizex/2"/> <Items> <Part Name="Block"> <Color Value="ff9999bb"/> <Cuboid X="0" Y="carriagez_posy" Z="carriagez_posz" W="carriagez_sizex" L="-carriagez_sizey" H="carriagez_sizez"/> </Part> <Part Name="Arm"> <Color Value="ffaaaacc"/> <Cuboid X="0" Y="carriagez_arm_posy" Z="carriagez_arm_posz" W="carriagez_sizex" L="-carriagez_arm_sizey" H="-carriagez_arm_sizez"/> </Part> </Items> </Assembly> </Model>