Measure Distance Between WorkPlane Main Assy with WorkPlane Component

Measure Distance Between WorkPlane Main Assy with WorkPlane Component

abilabib
Advocate Advocate
338 Views
1 Reply
Message 1 of 2

Measure Distance Between WorkPlane Main Assy with WorkPlane Component

abilabib
Advocate
Advocate

How to measure distance between Plane in Main Assembly with Plane in Component. 

I've tried for write code as per below. But still can't work.

 

Sub Distance2Plane()
        Dim oAsmDoc As AssemblyDocument
        oAsmDoc = InvApp.ActiveDocument
        Dim AssBaseXY As WorkPlane = oAsmDoc.ComponentDefinition.WorkPlanes.Item(3)
        'Dim oUOM As UnitsOfMeasure
        'oUOM = InvApp.ActiveDocument.UnitsOfMeasure
        Dim oCompDef As ComponentDefinition
        oCompDef = oAsmDoc.ComponentDefinition
        Call GetPlanePosition(oCompDef.Occurrences, AssBaseXY)
        InvApp.ActiveDocument.Update()
    End Sub
    Sub GetPlanePosition(ByVal oOccs As ComponentOccurrences, ByVal AssBaseXY As WorkPlane)
        Dim oOcc As ComponentOccurrence
        Dim DistPoints As Double
        Dim OPt2 As Point = Nothing
        Dim XV2 As UnitVector = Nothing
        Dim YV2 As UnitVector = Nothing
        'WorkPlane2.GetPosition(OPt2, XV2, YV2)
        'Memeriksa Jenis File Apakah Berupa Part
        For Each oOcc In oOccs
            If (oOcc.DefinitionDocumentType = DocumentTypeEnum.kPartDocumentObject) Then
                Dim oPartDef As PartComponentDefinition
                oPartDef = oOcc.Definition
                'Mendefinisikan parameter
                Dim BaseXY As WorkPlane
                BaseXY = oPartDef.WorkPlanes.Item(3)
                BaseXY.GetPosition(OPt2, XV2, YV2)
                'Measure Distance for Two Plane
                DistPoints = AssBaseXY.Plane.DistanceTo(BaseXY)
                Debug.Print(DistPoints.ToString)
            ElseIf (oOcc.DefinitionDocumentType = DocumentTypeEnum.kAssemblyDocumentObject) Then
                Debug.Print(UCase(oOcc.Name))
                Call GetPlanePosition(oOcc.SubOccurrences, AssBaseXY)
            End If
        Next
    End Sub
0 Likes
339 Views
1 Reply
Reply (1)
Message 2 of 2

Owner2229
Advisor
Advisor

How about this:

Note it measures the minimum distance.

 

    Sub Distance2Plane()
        Dim aDoc As AssemblyDocument = InvApp.ActiveDocument
        Dim AssBaseXY As WorkPlane = aDoc.ComponentDefinition.WorkPlanes.Item(3)
        Dim oCD As ComponentDefinition = aDoc.ComponentDefinition
        Call GetPlanePosition(oCD.Occurrences, AssBaseXY.Name)
        InvApp.ActiveDocument.Update()
    End Sub

    Sub GetPlanePosition(ByVal oOccs As ComponentOccurrences, ByVal AssBaseXY As String)
        For Each oOcc As ComponentOccurrence In oOccs
            If (oOcc.DefinitionDocumentType = DocumentTypeEnum.kPartDocumentObject) Then
                Dim oPartDef As PartComponentDefinition = oOcc.Definition
                Dim BaseXY As WorkPlane = oPartDef.WorkPlanes.Item(3)
                'Measure distance between two planes
                Dim DistPoints As Double = Measure.MinimumDistance(BaseXY.Name, AssBaseXY)
                Debug.Print(DistPoints.ToString)
            ElseIf (oOcc.DefinitionDocumentType = DocumentTypeEnum.kAssemblyDocumentObject) Then
                Debug.Print(UCase(oOcc.Name))
                Call GetPlanePosition(oOcc.SubOccurrences, AssBaseXY)
            End If
        Next
    End Sub
Consider using "Accept as Solution" / "Kudos" if you find this helpful.
- - - - - - - - - - - - - - -
Regards,
Mike

"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." - John F. Woods
0 Likes