Sub TrueSweepLength()
'Set a reference to the active part document
Dim oDoc As PartDocument
Set oDoc = ThisApplication.ActiveDocument
Dim oDef As PartComponentDefinition
Set oDef = oDoc.ComponentDefinition
' Check to make sure a sweep feature is selected.
If Not TypeOf oDoc.SelectSet.Item(1) Is SweepFeature Then
MsgBox "A sweep feature must be selected."
Exit Sub
End If
' Set a reference to the selected feature.
Dim oSweep As SweepFeature
Set oSweep = oDoc.SelectSet.Item(1)
' Get the centroid of the sweep profile in sketch space
Dim oProfileOrigin As Point2d
Set oProfileOrigin = oSweep.Profile.RegionProperties.Centroid
' Transform the centroid from sketch space to model space
Dim oProfileOrigin3D As Point
Set oProfileOrigin3D = oSweep.Profile.Parent.SketchToModelSpace(oProfileOrigin)
' Get the set of curves that represent the true path of the sweep
Dim oCurves As ObjectsEnumerator
Set oCurves = oDef.Features.SweepFeatures.GetTruePath(oSweep.Path, oProfileOrigin3D)
Dim TotalLength As Double
TotalLength = 0
Dim oCurve As Object
For Each oCurve In oCurves
Dim oCurveEval As CurveEvaluator
Set oCurveEval = oCurve.Evaluator
Dim MinParam As Double
Dim MaxParam As Double
Dim Length As Double
Call oCurveEval.GetParamExtents(MinParam, MaxParam)
Call oCurveEval.GetLengthAtParam(MinParam, MaxParam, Length)
TotalLength = TotalLength + Length
Next
' Display total sweep length
MsgBox "Total sweep length = " & ThisApplication.UnitsOfMeasure.GetStringFromValue(TotalLength, kInchLengthUnits)
End Sub