Hallo Matthias,
ich danke dir für deine schnelle Antwort. Aber entweder hab ich deine Lösungsvariante nicht verstanden oder es ist noch nicht das, was ich wirklich brauche
um mein Problem etwas zu verdeutlichen, habe ich folgendes Makro aufgenommen und ein wenig angepasst.
Sub CATMain()
Dim partDocument1 As PartDocument
Set partDocument1 = CATIA.ActiveDocument
Dim part1 As Part
Set part1 = partDocument1.Part
Dim bodies1 As Bodies
Set bodies1 = part1.Bodies
Dim body1 As Body
Set body1 = bodies1.Item("Hauptkörper")
Dim sketches1 As Sketches
Set sketches1 = body1.Sketches
Dim originElements1 As OriginElements
Set originElements1 = part1.OriginElements
Dim reference1 As Reference
Set reference1 = originElements1.PlaneXY
Dim sketch1 As Sketch
Set sketch1 = sketches1.Add(reference1)
Dim eingabe As Integer
eingabe = InputBox("bitte geben sie einen wertein", "wert", eingabe)
Dim arrayOfVariantOfDouble1(8)
arrayOfVariantOfDouble1(0) = 0#
arrayOfVariantOfDouble1(1) = 0#
arrayOfVariantOfDouble1(2) = 0#
arrayOfVariantOfDouble1(3) = 1#
arrayOfVariantOfDouble1(4) = 0#
arrayOfVariantOfDouble1(5) = 0#
arrayOfVariantOfDouble1(6) = 0#
arrayOfVariantOfDouble1(7) = 1#
arrayOfVariantOfDouble1(8) = 0#
Set sketch1Variant = sketch1
sketch1Variant.SetAbsoluteAxisData arrayOfVariantOfDouble1
part1.InWorkObject = sketch1
Dim factory2D1 As Factory2D
Set factory2D1 = sketch1.OpenEdition()
Dim geometricElements1 As GeometricElements
Set geometricElements1 = sketch1.GeometricElements
Dim axis2D1 As Axis2D
Set axis2D1 = geometricElements1.Item("Absolute Achse")
Dim line2D1 As Line2D
Set line2D1 = axis2D1.GetItem("H-Richtung")
line2D1.ReportName = 1
Dim line2D2 As Line2D
Set line2D2 = axis2D1.GetItem("V-Richtung")
line2D2.ReportName = 2
Dim point2D1 As Point2D
Set point2D1 = factory2D1.CreatePoint(100#, 0#)
point2D1.ReportName = 3
Dim line2D3 As Line2D
Set line2D3 = factory2D1.CreateLine(0#, 0#, 100#, 0#)
line2D3.ReportName = 4
Dim point2D2 As Point2D
Set point2D2 = axis2D1.GetItem("Ursprung")
line2D3.StartPoint = point2D2
line2D3.EndPoint = point2D1
Dim point2D3 As Point2D
Set point2D3 = factory2D1.CreatePoint(100#, 50#)
point2D3.ReportName = 5
Dim line2D4 As Line2D
Set line2D4 = factory2D1.CreateLine(100#, -0#, 100#, 50#)
line2D4.ReportName = 6
line2D4.StartPoint = point2D1
line2D4.EndPoint = point2D3
Dim point2D4 As Point2D
Set point2D4 = factory2D1.CreatePoint(-0#, 50#)
point2D4.ReportName = 7
Dim line2D5 As Line2D
Set line2D5 = factory2D1.CreateLine(100#, 50#, -0#, 50#)
line2D5.ReportName = 8
line2D5.StartPoint = point2D3
line2D5.EndPoint = point2D4
Dim line2D6 As Line2D
Set line2D6 = factory2D1.CreateLine(0#, 50#, 0#, 0#)
line2D6.ReportName = 9
line2D6.StartPoint = point2D4
line2D6.EndPoint = point2D2
Dim constraints1 As Constraints
Set constraints1 = sketch1.Constraints
Dim reference2 As Reference
Set reference2 = part1.CreateReferenceFromObject(line2D3)
Dim reference3 As Reference
Set reference3 = part1.CreateReferenceFromObject(line2D1)
Dim constraint1 As Constraint
Set constraint1 = constraints1.AddBiEltCst(catCstTypeHorizontality, reference2, reference3)
constraint1.Mode = catCstModeDrivingDimension
Dim reference4 As Reference
Set reference4 = part1.CreateReferenceFromObject(line2D5)
Dim reference5 As Reference
Set reference5 = part1.CreateReferenceFromObject(line2D1)
Dim constraint2 As Constraint
Set constraint2 = constraints1.AddBiEltCst(catCstTypeHorizontality, reference4, reference5)
constraint2.Mode = catCstModeDrivingDimension
Dim reference6 As Reference
Set reference6 = part1.CreateReferenceFromObject(line2D4)
Dim reference7 As Reference
Set reference7 = part1.CreateReferenceFromObject(line2D2)
Dim constraint3 As Constraint
Set constraint3 = constraints1.AddBiEltCst(catCstTypeVerticality, reference6, reference7)
constraint3.Mode = catCstModeDrivingDimension
Dim reference8 As Reference
Set reference8 = part1.CreateReferenceFromObject(line2D6)
Dim reference9 As Reference
Set reference9 = part1.CreateReferenceFromObject(line2D2)
Dim constraint4 As Constraint
Set constraint4 = constraints1.AddBiEltCst(catCstTypeVerticality, reference8, reference9)
constraint4.Mode = catCstModeDrivingDimension
Dim reference10 As Reference
Set reference10 = part1.CreateReferenceFromObject(line2D4)
Dim constraint5 As Constraint
Set constraint5 = constraints1.AddMonoEltCst(catCstTypeLength, reference10)
constraint5.Mode = catCstModeDrivingDimension
Dim length1 As Length
Set length1 = constraint5.Dimension
length1.Value = 50#
Dim reference11 As Reference
Set reference11 = part1.CreateReferenceFromObject(line2D5)
Dim constraint6 As Constraint
Set constraint6 = constraints1.AddMonoEltCst(catCstTypeLength, reference11)
constraint6.Mode = catCstModeDrivingDimension
Dim length2 As Length
Set length2 = constraint6.Dimension
length2.Value = 100#
sketch1.CloseEdition
part1.InWorkObject = sketch1
part1.Update
Dim shapeFactory1 As ShapeFactory
Set shapeFactory1 = part1.ShapeFactory
Dim pad1 As Pad
Set pad1 = shapeFactory1.AddNewPad(sketch1, eingabe)
part1.Update
End Sub
Mein Ziel ist es ein Makro auszuführen (es entsteht die gewünschte Geometrie). Anschließend möchte der Anwender die Geometrie verändern. Mein Ziel ist es die gewünschte Geometrie über ein Dialogfenster, ähnlich wie das der "eingabe", zu manipulieren.
Und dafür habe ich noch keine Lösung gefunden. Vielleicht hast du dafür auch eine Lösungsvariante.
Gruß
Hardy
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP