Hallo ich habe gerade erst mit der Makro Programmierung in Catia angefangen und bin dabei auf folgendes Problem gestoßen:
Ich würde gerne über eine for - Schleife eine bestimmte anzahl an Liniensegmenten aneinanderreihen.
Dazu habe ich mit dem Makro Aufzeichnungstool von Catia den Vorgang zunächst einmal aufgenommen und mir dann den Code angeschaut. Leider komme ich an einem Punkt nicht mehr weiter.
Der Code sieht folgendermaßen aus:
------------------------------------------------------------------------------------------
Language="VBSCRIPT"
Sub CATMain()
Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part
Set hybridShapeFactory1 = part1.HybridShapeFactory
Set axisSystems1 = part1.AxisSystems
Set axisSystem1 = axisSystems1.Item("Achsensystem.1")
Set reference1 = part1.CreateReferenceFromBRepName("REdge:(Edge:(Face:(Brp:(AxisSystem.1;2);None:();Cf11:());Face:(Brp:(AxisSystem.1;1);None:();Cf11:());None:(Limits1:();Limits2:());Cf11:());WithPe rmanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)", axisSystem1)
Set hybridShapeDirection1 = hybridShapeFactory1.AddNewDirection(reference1)
Set bodies1 = part1.Bodies
Set body1 = bodies1.Item("Hauptkörper")
Set hybridShapes1 = body1.HybridShapes
Set hybridShapeLinePtDir1 = hybridShapes1.Item("Linie.2")
Set reference2 = part1.CreateReferenceFromBRepName("BorderFVertex:(BEdge:(Brp:(GSMLine.2;2);None:(Limits1:();Limits2:();-1);Cf11:());WithPermanentBody;WithoutBuildError;WithSelectingFeatureS upport;MFBRepVersion_CXR15)", hybridShapeLinePtDir1)
Set hybridShapeLinePtDir2 = hybridShapeFactory1.AddNewLinePtDir(reference2, hybridShapeDirection1, 0.000000, 20.000000, False)
body1.InsertHybridShape hybridShapeLinePtDir2
part1.InWorkObject = hybridShapeLinePtDir2
part1.Update
End Sub
-------------------------------------------------------------------------------------------------------------
Wenn ich bei
Set hybridShapeLinePtDir1 = hybridShapes1.Item("Linie.2")
und
Set reference2 = part1.CreateReferenceFromBRepName("BorderFVertex:(BEdge:(Brp:(GSMLine.2;2);None:(Limits1:();Limits2:();-1);Cf11:
die Zahl jeweils manuell um einen Schritt erhöhe - also aus der 2 eine drei, dann eine 4 usw. mache kann ich das Makro jeweils durchlaufen lassen und es erstellt auch die gewünschte Linie. Allerdings möchte ich das Ganze ja über eine Laufvariable i lösen.
Den Code habe ich zunächst ohne for-Schleife abgeändert zu:
--------------------------------------------------------------------------------------------------------------
Language="VBSCRIPT"
Sub CATMain()
Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part
Set hybridShapeFactory1 = part1.HybridShapeFactory
Set axisSystems1 = part1.AxisSystems
Set axisSystem1 = axisSystems1.Item("Achsensystem.1")
Set reference1 = part1.CreateReferenceFromBRepName("REdge:(Edge:(Face:(Brp:(AxisSystem.1;2);None:();Cf11:());Face:(Brp:(AxisSystem.1;1);None:();Cf11:());None:(Limits1:();Limits2:());Cf11:());WithPe rmanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)", axisSystem1)
Set hybridShapeDirection1 = hybridShapeFactory1.AddNewDirection(reference1)
Set bodies1 = part1.Bodies
Set body1 = bodies1.Item("Hauptkörper")
Set hybridShapes1 = body1.HybridShapes
i = 2
Set hybridShapeLinePtDir1 = hybridShapes1.Item("Linie." & i )
Set reference2 = part1.CreateReferenceFromBRepName("BorderFVertex:(BEdge:(Brp:(GSMLine.& i;2);None:(Limits1:();Limits2:();-1);Cf11:());WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)", hybridShapeLinePtDir1)
Set hybridShapeLinePtDir2 = hybridShapeFactory1.AddNewLinePtDir(reference2, hybridShapeDirection1, 0.000000, 20.000000, False)
body1.InsertHybridShape hybridShapeLinePtDir2
part1.InWorkObject = hybridShapeLinePtDir2
part1.Update
End Sub
-------------------------------------------------------------------------------------------------------------
Allerdings kommt jetzt die Fehlermeldung:
Das Verfahren InsertHybridShape ist fehlgeschlagen.
Hat jemand eine Idee wo der Fehler liegt?
MFG
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP