- Sub addsph()
- Dim EentPnt As Variant
- EentPnt = ThisDrawing.Utility.GetPoint(, "GetPoint")
-
- AddHelix EentPnt, 5, 45, 10, 5
- End Sub
- Public Function AddHelix(varCentPnt As Variant, _
- dblRadius As Double, dblStartAng As Double, _
- dblPitch As Double, dblRot As Double) As AcadSpline
- Dim objPoly As AcadSpline
- Dim objSpace As AcadBlock
- Dim objUtil As AcadUtility
- Dim varSegments As Variant
- Dim dblSegInclAng As Double
- Dim dblSegPitch As Double
- Dim dblSegAng As Double
- Dim varPitchPnt As Variant
- Dim intCnt As Integer
- Dim dblPnts() As Double
- Dim intLoopCnt As Integer
- Dim intVertCnt As Integer
- Dim intCoordCnt As Integer
- On Error GoTo Err_Control
- If ThisDrawing.ActiveSpace = acModelSpace Then
- Set objSpace = ThisDrawing.ModelSpace
- Else
- Set objSpace = ThisDrawing.PaperSpace
- End If
- Set objUtil = ThisDrawing.Utility
- varSegments = ThisDrawing.GetVariable("SURFTAB1")
- dblSegInclAng = (2 * (Atn(1) * 4)) / varSegments
- dblSegPitch = dblPitch / varSegments
- dblSegAng = dblStartAng - dblSegInclAng
- intLoopCnt = CInt(1 + (varSegments * dblRot))
- ReDim dblPnts((intLoopCnt * 3) - 1)
- For intCnt = 1 To intLoopCnt
- dblSegAng = dblSegInclAng + dblSegAng
- varPitchPnt = objUtil.PolarPoint(varCentPnt, _
- dblSegAng, dblRadius)
- varCentPnt(2) = varCentPnt(2) + dblSegPitch
- For intVertCnt = 0 To 2
- dblPnts(intCoordCnt) = varPitchPnt(intVertCnt)
- intCoordCnt = intCoordCnt + 1
- Next
- Next intCnt
- Dim st(2) As Double
- Dim et(2) As Double
- st(0) = 0: st(1) = 0: st(2) = 0
- et(0) = 0: et(1) = 0: et(2) = 0
- Set objPoly = objSpace.AddSpline(dblPnts, st, et)
- Set AddHelix = objPoly
- Exit_Here:
- Exit Function
- Err_Control:
- Select Case Err.Number
- 'Cases here
- Case Else
- MsgBox Err.Description
- Err.Clear
- Resume Exit_Here
- End Select
- End Function
|