Announcements
Attention for Customers without Multi-Factor Authentication or Single Sign-On - OTP Verification rolls out April 2025. Read all about it here.

Create some delete some

Anonymous

Create some delete some

Anonymous
Not applicable

In need of some programming help...

So I have this code:

 

Sub Main()

    Dim oAsmCompDef As AssemblyComponentDefinition
    oAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition


    ' Get references to the two occurrences to constrain.
    ' This arbitrarily gets the first and second occurrence.
    Dim oOcc1 As ComponentOccurrence
    oOcc1 = oAsmCompDef.Occurrences.Item(Cars)

    Dim oOcc2 As ComponentOccurrence
    oOcc2 = oAsmCompDef.Occurrences.Item(Bumper)


    ' Get the work points from each occurrence.  This goes to the
    ' component definition of the part to get this information.
    ' This is the same as accessing the part document directly.
    ' The work point obtained is in the context of the part,
    ' not the assembly.
    Dim oPartPoint1 As WorkPoint
     oPartPoint1 = oOcc1.Definition.WorkPoints.Item(1)

    Dim oPartPoint2 As WorkPoint
    oPartPoint2 = oOcc2.Definition.WorkPoints.Item(1)

    Dim oPartPlaneXY As WorkPlane
    oPartPlaneXY = oOcc1.Definition.WorkPlanes(3)
    
    Dim oPart2PlaneXY As WorkPlane
    oPart2PlaneXY = oOcc2.Definition.WorkPlanes(3)

    
    ' Because we need the work point in the context of the assembly
    ' we need to create proxies for the work points.  The proxies
    ' represent the work points in the context of the assembly.
    Dim oAsmPoint1 As WorkPointProxy
    Call oOcc1.CreateGeometryProxy(oPartPoint1, oAsmPoint1)

    Dim oAsmPoint2 As WorkPointProxy
    Call oOcc2.CreateGeometryProxy(oPartPoint2, oAsmPoint2)
    
    Dim oPartPlane1 As WorkPlaneProxy 
    Call oOcc1.CreateGeometryProxy(oPartPlaneXY, oPartPlane1)
    
    Dim oPart2Plane1 As WorkPlaneProxy
    Call oOcc2.CreateGeometryProxy(oPart2PlaneXY, oPart2Plane1)

    
    ' Create the constraint using the work point proxies.
    Call oAsmCompDef.Constraints.AddMateConstraint(oAsmPoint1, oAsmPoint2, 0)
    Call oAsmCompDef.Constraints.AddMateConstraint(oPartPlane1, oPart2Plane1, 0)
 
End Sub

 

There is an excel sheet thats linked to inventor and inventor pulls values from this sheet and uses them as parameters. This code was created in iLogic which uses some of these parameters. The parameters 'Cars' and 'Bumper' give the occurance of the two components that I want to mate. As you can see from the code, it's choosing two components, a workplane and workpoint from each component and create a mate constraint. My problem now is deleting the constraints that were created. I am running this program over and over and it creates more constraints but what I am aiming for is the bumper to follow the end of the car wherever it happens to be in inventor.

0 Likes
Reply
433 Views
1 Reply
Reply (1)

Curtis_Waguespack
Consultant
Consultant

Hi dtowngurl51,

Here is a modification of the code you provided. This example simply names the new constraints as they are created, then you could use the code at this link to delete the constraints by name.

 

 

 

Dim oAsmCompDef As AssemblyComponentDefinition
oAsmCompDef = ThisApplication.ActiveDocument.ComponentDefinition
    
    ' Get references to the two occurrences to constrain.
    ' This arbitrarily gets the first and second occurrence.
Dim oOcc1 As ComponentOccurrence
oOcc1 = oAsmCompDef.Occurrences.Item(1)
Dim oOcc2 As ComponentOccurrence
oOcc2 = oAsmCompDef.Occurrences.Item(2)

    ' Get the work points from each occurrence.  This goes to the
    ' component definition of the part to get this information.
    ' This is the same as accessing the part document directly.
    ' The work point obtained is in the context of the part,
    ' not the assembly.
Dim oPartPoint1 As WorkPoint
oPartPoint1 = oOcc1.Definition.WorkPoints.Item(1)

Dim oPartPoint2 As WorkPoint
oPartPoint2 = oOcc2.Definition.WorkPoints.Item(1)

Dim oPartPlaneXY As WorkPlane
oPartPlaneXY = oOcc1.Definition.WorkPlanes(3)
    
Dim oPart2PlaneXY As WorkPlane
oPart2PlaneXY = oOcc2.Definition.WorkPlanes(3)
    
    ' Because we need the work point in the context of the assembly
    ' we need to create proxies for the work points.  The proxies
    ' represent the work points in the context of the assembly.
Dim oAsmPoint1 As WorkPointProxy
Call oOcc1.CreateGeometryProxy(oPartPoint1, oAsmPoint1)

Dim oAsmPoint2 As WorkPointProxy
Call oOcc2.CreateGeometryProxy(oPartPoint2, oAsmPoint2)
    
Dim oPartPlane1 As WorkPlaneProxy 
Call oOcc1.CreateGeometryProxy(oPartPlaneXY, oPartPlane1)
    
Dim oPart2Plane1 As WorkPlaneProxy
Call oOcc2.CreateGeometryProxy(oPart2PlaneXY, oPart2Plane1)
    
'Create the constraint using the work point proxies.
Dim oConstraint As MateConstraint
oConstraint  = oAsmCompDef.Constraints.AddMateConstraint(oAsmPoint1, oAsmPoint2, 0.5)
'name the constraint
oConstraint.Name = "MyConstraint1"
oConstraint  = oAsmCompDef.Constraints.AddMateConstraint(oPartPlane1, oPart2Plane1, 0.5)
'name the constraint
oConstraint.Name = "MyConstraint2"
    

 

 

0 Likes