White_Fox
27.12.2016, 16:40
Hallo
Sind hier zufällig Leute, die CATIA benutzen und damit schonmal VBA-Makros programmiert haben?
Mach grad meine ersten Geh-Versuche und CATIA ist mir da etwas unlogisch.
Folgendes Problem:
Dieses Makro soll eine Skizze erstellen. Nichts Großes...einfach nur ein Dreieck aus drei Linien, die Start- und Endpunkte der Linie werden über Punkte gebildet.
Public Sub NeuerKoerper()
Dim prtdc As PartDocument
Dim prt As Part
Dim fctr As Factory
Dim fctr2D As Factory2D
Dim hbd As HybridBody
Dim prdct As Product
Dim ebn As HybridShapePlaneOffset
Dim refe As Reference
Dim sktch As sketch
Dim sktchs As Sketches
Dim l As Line2D
Dim p As Point2D
'Neues CATPart
Set prtdc = CATIA.Documents.Add("CATPart")
Set prtdc = CATIA.Documents.Item(CATIA.Documents.Count)
Set prt = prtdc.Part
'Part umbenennen
Set prdct = prtdc.GetItem(prt.Name)
prdct.PartNumber = "Prisma"
'Geometrisches Set einen sinnvollen Namen geben
Set hbd = prt.HybridBodies.Item(1)
hbd.Name = "Grundfläche"
'Ebene bauen und einfügen
Set fctr = prt.HybridShapeFactory
Set refe = prt.CreateReferenceFromObject(prt.OriginElements.P laneXY)
Set ebn = fctr.AddNewPlaneOffset(refe, 10, False)
ebn.Name = "Skizzierebene"
hbd.AppendHybridShape ebn
prt.Update
'Skizze erstellen
Set sktchs = prt.Bodies.Item(1)
Set refe = ebn
Set sktch = sktchs.Add(refe)
sktch.Name = "Skizze Prisma"
prt.Update
With sktch
'Skizze öffnen
.OpenEdition
'Dreieck zeichnen
With .Factory2D
Set l = .CreateLine(0, 0, 0, 0)
l.Name = "L1"
Set l = .CreateLine(0, 0, 0, 0)
l.Name = "L2"
Set l = .CreateLine(0, 0, 0, 0)
l.Name = "L3"
Set p = .CreatePoint(0, 0)
p.Name = "P1"
Set p = .CreatePoint(0, 0)
p.Name = "P2"
Set p = .CreatePoint(0, 0)
p.Name = "P3"
End With
Set p = .GeometricElements.Item("P1")
p.SetData iX:=2, iY:=-2
Set l = .GeometricElements.Item("L1")
l.StartPoint = p
Set l = .GeometricElements.Item("L2")
l.EndPoint = p
Set p = .GeometricElements.Item("P2")
p.SetData iX:=0, iY:=3
Set l = .GeometricElements.Item("L2")
l.StartPoint = p
Set l = .GeometricElements.Item("L3")
l.EndPoint = p
Set p = .GeometricElements.Item("P3")
p.SetData iX:=-2, iY:=-2
Set l = .GeometricElements.Item("L3")
l.StartPoint = p
Set l = .GeometricElements.Item("L1")
l.EndPoint = p
.CloseEdition
End With
prt.Update
End Sub
Laß ich dieses Makro jetzt durchlaufen werden die H-Koordinaten der Punkte zwar korrekt dargestellt und die Linien verbunden, nicht jedoch die V-Koordinanten. Das sieht dann so aus, daß in der Skizze nur eine horizontale Linie zu sehen ist, und erst wenn ich in der Skizze nachträglich eine Linie rausgezogen wird sieht man, daß es drei sind.
Frage: Warum werden die V-Koordinaten nicht korrekt bei den Punkten übernommen?
Was ich schon versucht habe:
-NUR Punkte erstellen und Linien erstmal weglassen. Das klappt gut, die Punkte sind dann wo sie sein sollen.
-Erst die Koordinaten aller Punkte verteilen und danach die Linien auf die Punkte legen. Einzeln und mit Unterbrechung zeigt nach jeder einzelnen Linie, daß genau in diesem Schritt der Punkt wieder auf die H-Achse gelegt wird.
Edit:
.evaluate zwischendurch bringt auch nix :(
@Joschi:
Oben links, großer blauer Konopf im jeweiligen Forum. Wohl zu groß...
Sind hier zufällig Leute, die CATIA benutzen und damit schonmal VBA-Makros programmiert haben?
Mach grad meine ersten Geh-Versuche und CATIA ist mir da etwas unlogisch.
Folgendes Problem:
Dieses Makro soll eine Skizze erstellen. Nichts Großes...einfach nur ein Dreieck aus drei Linien, die Start- und Endpunkte der Linie werden über Punkte gebildet.
Public Sub NeuerKoerper()
Dim prtdc As PartDocument
Dim prt As Part
Dim fctr As Factory
Dim fctr2D As Factory2D
Dim hbd As HybridBody
Dim prdct As Product
Dim ebn As HybridShapePlaneOffset
Dim refe As Reference
Dim sktch As sketch
Dim sktchs As Sketches
Dim l As Line2D
Dim p As Point2D
'Neues CATPart
Set prtdc = CATIA.Documents.Add("CATPart")
Set prtdc = CATIA.Documents.Item(CATIA.Documents.Count)
Set prt = prtdc.Part
'Part umbenennen
Set prdct = prtdc.GetItem(prt.Name)
prdct.PartNumber = "Prisma"
'Geometrisches Set einen sinnvollen Namen geben
Set hbd = prt.HybridBodies.Item(1)
hbd.Name = "Grundfläche"
'Ebene bauen und einfügen
Set fctr = prt.HybridShapeFactory
Set refe = prt.CreateReferenceFromObject(prt.OriginElements.P laneXY)
Set ebn = fctr.AddNewPlaneOffset(refe, 10, False)
ebn.Name = "Skizzierebene"
hbd.AppendHybridShape ebn
prt.Update
'Skizze erstellen
Set sktchs = prt.Bodies.Item(1)
Set refe = ebn
Set sktch = sktchs.Add(refe)
sktch.Name = "Skizze Prisma"
prt.Update
With sktch
'Skizze öffnen
.OpenEdition
'Dreieck zeichnen
With .Factory2D
Set l = .CreateLine(0, 0, 0, 0)
l.Name = "L1"
Set l = .CreateLine(0, 0, 0, 0)
l.Name = "L2"
Set l = .CreateLine(0, 0, 0, 0)
l.Name = "L3"
Set p = .CreatePoint(0, 0)
p.Name = "P1"
Set p = .CreatePoint(0, 0)
p.Name = "P2"
Set p = .CreatePoint(0, 0)
p.Name = "P3"
End With
Set p = .GeometricElements.Item("P1")
p.SetData iX:=2, iY:=-2
Set l = .GeometricElements.Item("L1")
l.StartPoint = p
Set l = .GeometricElements.Item("L2")
l.EndPoint = p
Set p = .GeometricElements.Item("P2")
p.SetData iX:=0, iY:=3
Set l = .GeometricElements.Item("L2")
l.StartPoint = p
Set l = .GeometricElements.Item("L3")
l.EndPoint = p
Set p = .GeometricElements.Item("P3")
p.SetData iX:=-2, iY:=-2
Set l = .GeometricElements.Item("L3")
l.StartPoint = p
Set l = .GeometricElements.Item("L1")
l.EndPoint = p
.CloseEdition
End With
prt.Update
End Sub
Laß ich dieses Makro jetzt durchlaufen werden die H-Koordinaten der Punkte zwar korrekt dargestellt und die Linien verbunden, nicht jedoch die V-Koordinanten. Das sieht dann so aus, daß in der Skizze nur eine horizontale Linie zu sehen ist, und erst wenn ich in der Skizze nachträglich eine Linie rausgezogen wird sieht man, daß es drei sind.
Frage: Warum werden die V-Koordinaten nicht korrekt bei den Punkten übernommen?
Was ich schon versucht habe:
-NUR Punkte erstellen und Linien erstmal weglassen. Das klappt gut, die Punkte sind dann wo sie sein sollen.
-Erst die Koordinaten aller Punkte verteilen und danach die Linien auf die Punkte legen. Einzeln und mit Unterbrechung zeigt nach jeder einzelnen Linie, daß genau in diesem Schritt der Punkt wieder auf die H-Achse gelegt wird.
Edit:
.evaluate zwischendurch bringt auch nix :(
@Joschi:
Oben links, großer blauer Konopf im jeweiligen Forum. Wohl zu groß...