MACRO LIBRARY

Lesson 4.3 selected edge length code

Free public access. No account or subscription required.

Files

Lesson 4.3 selected edge length code

Code

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swEdge As SldWorks.Edge
Dim swCurve As SldWorks.Curve
Dim swCurveParams As SldWorks.CurveParamData
Dim dblLength  As Double
Dim dblTotalLength As Double
    
Sub main()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swSelMgr = swModel.SelectionManager
    
    dblTotalLength = 0
    
    For i = 1 To swSelMgr.GetSelectedObjectCount2(-1)
        If swSelMgr.GetSelectedObjectType3(i, -1) = 1 Then
            Set swEdge = swSelMgr.GetSelectedObject6(i, -1)
            Set swCurve = swEdge.GetCurve
            Set swCurveParams = swEdge.GetCurveParams3
            dblLength = swCurve.GetLength3(swCurveParams.UMinValue, _
                swCurveParams.UMaxValue)
            dblTotalLength = dblTotalLength + dblLength
            
            'print to immediate window
            Debug.Print "---EDGE #" & i
            Select Case swCurve.Identity
                Case 3001
                    Debug.Print "   Type: line"
                Case 3002
                    Debug.Print "   Type: circle"
                Case 3003
                    Debug.Print "   Type: ellipse"
                Case 3004
                    Debug.Print "   Type: intersection"
                Case 3005
                    Debug.Print "   Type: b-curve"
                Case 3006
                    Debug.Print "   Type: sp-curve"
                Case 3008
                    Debug.Print "   Type: constant parameter"
                Case 3009
                    Debug.Print "   Type: trimmed"
            End Select
            dblLength = Round(dblLength, 4)
            Debug.Print "   Length = " & dblLength * 1000 & "mm"
        End If
    Next i
    
    'print total length
    Debug.Print "---Total length: " & dblTotalLength * 1000 & "mm"
End Sub