Hi Hezarfen,
Nach dem Studieren deines Quellcodes sind mir 2 Fehler aufgefallen.
1. Beim Referenzfeld müsste in Klammern eine (1) stehen.
2. Du hast die Referenzen vertauscht. Du beziehst dich auf den Namen "Point.1" nennst die Referenz aber: "oReferenceCurve1"
Damit verwirrst du dich selbst.
Deshalb musst du hier dir Referenzen vertauschen:
Set aVar1(0) = oReferenceCurve1
Set aVar1(1) = oReferencePoint1
Hier der Quellcode, der funktionieren sollte:
(allerdings habe ich die "Verwirrungen" nicht verbessert, so siehst du es nochmal)
Option Explicit
Dim Language as String
Language="VBSCRIPT"
Sub CATMain()
Dim oRootProduct As AnyObject
Set oRootProduct = CATIA.ActiveDocument.Product
Dim oProductToFix As Product
Set oProductToFix = oRootProduct.Products.Item(1)
' oRootProduct.ApplyWorkMode DESIGN_MODE
Dim sRefName As String
sRefName = "Product1/Part2.1/!Point.1"
Dim oReferenceCurve1 As Reference
Set oReferenceCurve1 = oRootProduct.CreateReferenceFromName ( sRefName )
sRefName = "Product1/Part3.1/!Line.1"
Dim oReferencePoint1 As Reference
Set oReferencePoint1 = oRootProduct.CreateReferenceFromName ( sRefName )
Dim cTheMechanisms As AnyObject
Set cTheMechanisms = oRootProduct.GetTechnologicalObject("Mechanisms")
Dim oNewMechanism As Mechanism
Set oNewMechanism = cTheMechanisms.Add()
Dim iNbmech As Integer
iNbmech =cTheMechanisms.Count
' delete old mech----------------------------------------
' if iNbmech >1 then
' cTheMechanisms.Remove(1)
' end if
'-------------------------------------------------------------
Dim sMechanismName As String
sMechanismName = oNewMechanism.Name
oNewMechanism.FixedPart = oProductToFix
Dim aVar1(1)
Set aVar1(0) = oReferenceCurve1
Set aVar1(1) = oReferencePoint1
Dim oNewJoint 'as Joint
Set oNewJoint = oNewMechanism.AddJoint("CATKinPointCurveJoint", aVar1)
End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP