Public Sub HelicalHelix() Dim oPartDoc As PartDocument Set oPartDoc = ThisApplication.ActiveDocument Dim dMainPitch As Double dMainPitch = 7 Dim dMainRadius As Double dMainRadius = 6 Dim dPitchesPerRevolution As Double dPitchesPerRevolution = 10 Dim dCoilRadius As Double dCoilRadius = 0.75 Dim dMainNumPitches As Double dMainNumPitches = 5 Dim iNumPointsPerCoil As Integer iNumPointsPerCoil = 10 Dim dPi As Double dPi = Atn(1) * 4 Dim adCurvePoints() As Double ReDim adCurvePoints(iNumPointsPerCoil * dPitchesPerRevolution * 3 - =1) Dim iCoilPoint As Integer iCoilPoint = 1 Dim oCurveDef As BSplineCurveDefinition Set oCurveDef = =ThisApplication.TransientGeometry.CreateBSplineCurveDefinition oCurveDef.FitMethod = kACADSplineFit Dim i As Integer For i = 1 To iNumPointsPerCoil * dPitchesPerRevolution * =dMainNumPitches ' Calculate the position of the point on the coil as if the =primary axis is straight. Dim dCoilPointX As Double Dim dCoilPointY As Double Dim dCoilAngle As Double dCoilAngle = ((dPi * 2) / iNumPointsPerCoil) * (i Mod =iNumPointsPerCoil) dCoilPointX = dCoilRadius * Cos(dCoilAngle) dCoilPointY = dCoilRadius * Sin(dCoilAngle) ' Calculate the current angle around the primary axis. Dim dAngle As Double dAngle = (((dPi * 2) / dPitchesPerRevolution) / =iNumPointsPerCoil) * (i - 1) Dim dRadius As Double dRadius = dMainRadius - dCoilPointX Dim dX As Double Dim dY As Double Dim dZ As Double dX = dRadius * Cos(dAngle) dY = dRadius * Sin(dAngle) dZ = ((dMainPitch / (iNumPointsPerCoil * =dPitchesPerRevolution)) * (i - 1)) + dCoilPointY Dim oPoint As Point Set oPoint = ThisApplication.TransientGeometry.CreatePoint(dX, =dY, dZ) Call oCurveDef.AddPoint(oPoint) Next Dim oSketch As Sketch3D Set oSketch = oPartDoc.ComponentDefinition.Sketches3D.Add Dim oSplineCurve As BSplineCurve Set oSplineCurve = =ThisApplication.TransientGeometry.CreateFittedBSplineCurve(oCurveDef) Call oSketch.SketchFixedSplines3D.Add(oSplineCurve)End Sub