Rault
New member
- Feb 12, 2024
- 1
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
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