Hallo WhiteFox,
ein paar Anmerkungen.
1. Um dich zur sauberen Deklaration zu zwingen würde ich immer mit "Option Explicit" beginnen. So lernt mans am besten und die Syntaxhilfe funktioniert auch meistens.
2. Das "Set prtdc = CATIA.Documents.Item(CATIA.Documents.Count)" kannst du dir sparen, da du das Document schon mit "Set prtdc = CATIA.Documents.Add("CATPart")" in prtdc gelegt hast.
3. "prt.Update" macht ein Update über das gesamte Part. Das kann, falls man das öfter im Code verwendet, das Makro langsam machen. Mit "MyPart.UpdateObject MySketch" können auch einzelne Objekte aktualisiert werden. Das reicht meistens.
4. Du brauchst keine Punkte um 2DLinien zu erzeugen. Da die Linie bereits Start und Endpunkt beinhalten. "Set MyLine_01 = MyFactory2D.CreateLine(X1, Y1, X2, Y2)" Einfach die Koordinaten für Punkt1 (X1,Y1) und Punkt2 (X2,Y2) hinter CreateLine schreiben.
zu Empfehlen ist:
http://forum.cad.de/cgi-bin/ubb/foru...ung&number=137
die Catia Hilfe in deinem Installationsverzeichnis und die Makrorekorderfunktion.
mfG
Mario
Code:
Option Explicit
Sub CATMain()
Dim MyPartDoc As PartDocument
Dim MyDocuments As Documents
Dim MyPart As Part
Dim MyHybBodies As HybridBodies
Dim MyHybBody As HybridBody
Dim MyHybShapeFact As HybridShapeFactory
Dim MyPlane As HybridShapePlaneOffset
Dim MySketches As Sketches
Dim MySketch As Sketch
Dim MyReference As Reference
Dim MyFactory2D As Factory2D
Dim MyLine_01 As Line2D
Dim MyLine_02 As Line2D
Dim MyLine_03 As Line2D
Dim MyLine_04 As Line2D
'CATPart erzeugen
Set MyDocuments = CATIA.Documents
Set MyPartDoc = MyDocuments.Add("CATPart")
'Part umbenennen
Set MyPart = MyPartDoc.Part
MyPartDoc.Product.PartNumber = "PRISMA"
'GeometricalSet anlegen / umbenennen /GeoSet in work setzen
Set MyHybBodies = MyPart.HybridBodies
Set MyHybBody = MyHybBodies.Add()
MyHybBody.Name = "Grundfläche"
MyPart.InWorkObject = MyHybBody
'Plane erstellen
Set MyHybShapeFact = MyPart.HybridShapeFactory
Set MyReference = MyPart.CreateReferenceFromObject(MyPart.OriginElements.PlaneXY)
Set MyPlane = MyHybShapeFact.AddNewPlaneOffset(MyReference, 10, False)
MyPlane.Name = "Skizzierebene"
MyHybBody.AppendHybridShape MyPlane
MyPart.UpdateObject MyHybBody
'Sketch erzeugen
Set MySketches = MyHybBody.HybridSketches
Set MyReference = MyPart.CreateReferenceFromObject(MyPlane)
Set MySketch = MySketches.Add(MyReference)
MySketch.Name = "Skizze Prisma"
MyPart.UpdateObject MySketch
'Sketch öffnen und Linien erzeugen
MySketch.OpenEdition
Set MyFactory2D = MySketch.Factory2D
Set MyLine_01 = MyFactory2D.CreateLine(0, 0, 10, 0)
Set MyLine_02 = MyFactory2D.CreateLine(10, 0, 10, 10)
Set MyLine_03 = MyFactory2D.CreateLine(10, 10, 0, 10)
Set MyLine_04 = MyFactory2D.CreateLine(0, 10, 0, 0)
MyLine_01.Name = "Linie_01"
MyLine_02.Name = "Linie_02"
MyLine_03.Name = "Linie_03"
MyLine_04.Name = "Linie_04"
MySketch.CloseEdition
'alles Updaten
MyPart.Update
End Sub
Lesezeichen