All these examples show that it is possible to access modeling functions in various ways and that modeling is easy.
Keep in mind that if your product is parametric, it is possible to automate modeling and calculations via the API. Many manufacturers are moving in this direction to automate their design processes once the procedures are established. Using shell elements instead of transformed objects provides greater flexibility for meshing and adding accessories.


' Creates a 3-segment tapered dodecagon mast (12-sided polygonal shell)
' Base diameter: 0.95m, Top diameter: 0.35m, Total height: 25m
Sub BuildTruncatedDodecagoneMast()
Dim app As RobotApplication: Set app = New RobotApplication
Dim o As RobotObjObjectServer: Set o = app.Project.structure.objects
Const H = 25, db = 0.95, dt = 0.35, S = 3, E = 12, HS = H / S
Dim pb As New RobotPointsArray, pt As New RobotPointsArray, pf As New RobotPointsArray
pb.SetSize E: pt.SetSize E: pf.SetSize 4
Dim tsl As RobotLabel, tsd As IRobotThicknessData, tsh As IRobotThicknessHomoData
Dim labels As RobotLabelServer: Set labels = app.Project.structure.labels
Dim MaxT%, tArr As Variant: tArr = Array(12, 10, 8): MaxT = UBound(tArr)
For Each t In tArr
Set tsl = labels.Create(IRobotLabelType.I_LT_PANEL_THICKNESS, ThkName(t))
Set tsd = tsl.data: tsd.MaterialName = "Q345": tsd.ThicknessType = I_TT_HOMOGENEOUS
Set tsh = tsd.data: tsh.ThickConst = (t - 0.04) / 1000
labels.Store tsl
Next t
o.BeginMultiOperation
Dim thk$, i%, j%, k%, n%, id%
Dim hb#, ht#, Rb0#, Rt0#, dr#: Rb0 = db / 2: Rt0 = dt / 2: dr = (Rt0 - Rb0) / H
For i = 0 To S - 1
hb = i * HS: ht = hb + HS
Fill pb, E, hb, Rb0 + dr * hb
Fill pt, E, ht, Rb0 + dr * ht
k = i: If i > MaxT Then k = MaxT
thk = ThkName(tArr(k))
For j = 1 To E
If j = E Then n = 1 Else n = j + 1
CopyPt pb, j, pf, 1: CopyPt pb, n, pf, 2: CopyPt pt, n, pf, 3: CopyPt pt, j, pf, 4
id = o.FreeNumber: o.CreateContour id, pf
With o.Get(id): .Main.Attribs.Meshed = 1: .SetLabel I_LT_PANEL_THICKNESS, thk: .Initialize: End With
Next
Next
o.EndMultiOperation: app.Project.viewMngr.Refresh
End Sub
Function ThkName(t As Variant) As String
ThkName = "THK_" & t & "_HDG"
End Function
Sub Fill(p As RobotPointsArray, n%, z#, r#)
Dim a#: a = 6.28318530717959 / n: For i = 0 To n - 1: p.Set i + 1, r * Cos(i * a), r * Sin(i * a), z: Next
End Sub
Sub CopyPt(src As RobotPointsArray, i%, dst As RobotPointsArray, k%)
Dim x#, y#, z#: src.Get i, x, y, z: dst.Set k, x, y, z
End Sub
Beyond modelling the shaft, the API can automate much more: connections, arm attachments, slip-joint overlaps, climatic loads (wind, seismic, ice), and code checks across several standards at once and behind a revamping project, there's often a code upgrade and ageing structure to account for too: GB, Eurocode, TIA-222, ASCE/SEI 48 + MOP 74, EN 50341. That makes it practical to compare standards or sweep many configurations in reasonable time.
On the innovation side, this can now connect to AI tools via an MCP server: an assistant can drive the model directly in natural language, generating geometry and running checks, while the engineer simply describes what to verify.
Programs can be written as a single block or, better, built in layers : more flexible, easier to maintain, and reusable across projects.
Best Regards

Stéphane Kapetanovic
Did you find this post helpful? If it gave you one or more solutions,
don't forget to click the Accept Solution button and leave a < like !
