Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

Update element via reference in constraints [CATIA VBA]

Status
Not open for further replies.

Rault

New member
Feb 12, 2024
1
0
0
DE
I'm trying to update an element of an already defined constraint with the following lines of code. I received an error message saying: "Run-time error '-2147467259 (80004005)': Method 'SetConstraintElement' of object 'Constraint' failed.
The script is the following:
----------------------------------
Sub WorstLocationIterator()
'Creation of CATIA object
Dim catiaApp As Object
Set catiaApp = GetObject(, "CATIA.Application")
If catiaApp Is Nothing Then
Set catiaApp = CreateObject("CATIA.Application")
catiaApp.Visible = True
End If

'Get active document (CATProduct) and declare a variable to represent it
Dim productDoc As ProductDocument
Set productDoc = catiaApp.ActiveDocument

'Get the main product from the active document
Dim mainProduct As Product
Set mainProduct = productDoc.Product

'Get the collection of products inside the main product
Dim mainProductChildren As Products
Set mainProductChildren = mainProduct.Products
MsgBox ("Check2. número de products hijos" & mainProductChildren.Count)

'Get parts inside each product of the collection and define it as parts
Dim jigPart As Part
Set jigPart = mainProductChildren.Item(1).ReferenceProduct.Parent.Part
Dim nominalPart As Part
Set nominalPart = mainProductChildren.Item(2).ReferenceProduct.Parent.Part

Dim gSetJigPart As HybridBody
Set gSetJigPart = jigPart.Bodies.Item(1).HybridBodies.Item(2)

Dim gSetNominalPart As HybridBody
Set gSetNominalPart = nominalPart.Bodies.Item(1).HybridBodies.Item(1)

Dim lineObject As HybridShape
Set lineObject = gSetNominalPart.HybridShapes.Item("Line.2")
Dim lineObjectRef As Reference
Set lineObjectRef = nominalPart.CreateReferenceFromObject(lineObject)

Dim lineTarget As HybridShape
Dim index As Integer
Dim lineTargetName As String

index = 6
lineTargetName = "Line." & index
Set lineTarget = gSetJigPart.HybridShapes.Item(lineTargetName)
Dim lineTargetRef As Reference
Set lineTargetRef = jigPart.CreateReferenceFromObject(lineTarget)

Dim mainProductConstraints As Constraints
Set mainProductConstraints = mainProduct.Connections("CATIAConstraints")
Dim coincidenceConst As Constraint
Set coincidenceConst = mainProductConstraints.Item(2)

Call coincidenceConst.SetConstraintElement(1, lineTargetRef)
End Sub

-------------------------

I appreciate your help a lot in advance.
Best
 
Status
Not open for further replies.
Back
Top