Hallo zusammen,
ich beschäftige mich seit Kurzem mit der Makroporgrammierung im VBA Editor von Catia.
Zunächst einmal eine kurze Beschreibung was für ein Makro ich mir Schritt für Schritt erarbeiten möchte. Ich hoffe diese ist ausreichend, um zu verstehen, was ich umsetzen möchte:
In der Ausgangssituation ist ein Produkt mit mehreren Unterprodukten und Parts geöffnet und aktiv. Die Struktur dieses Root-Produktes ist dabei variabel. Das Ziel ist es, Koordiantenpunkte von bestimmten Parts in ein Zielpart innerhalb dieses Produktes einzufügen. Diese Punkte haben eine fixe Bezeichnung und befinden sich stets in einem geometrischen Set mit einer fixen Bezeichnung.
Zu Beginn gebe ich dem Anwender die Möglichkeit innerhalb des geöffneten Produktes die relevanten Parts nach folgendem Shema auszuwählen:
Code:
Set selection1 = activedoc.SelectionDim InputObjectType(0)
InputObjectType(0) = "Part"
MsgBox "Wählen Sie das Zielpart aus!"
Status = selection1.SelectElement2(InputObjectType, "Wählen Sie das entsprechende CATIA Part", False)
If (Status = "Cancel") Then
MsgBox "Makro wurde abgebrochen", 16, makroname & " " & version
Exit Sub
Else
Dim part_zielmodell As Part
Set part_zielmodell = selection1.Item(1).Value
selection1.Clear
Ich erhoffe mir damit, die Information zu hinterlegen, welche Parts relevant sind für die nachfolgenden Operationen.
Im Anschluss möchte ich automatisch die Koordinaten von einem Punkt A des Parts XY mit getCoordinates auslesen und diese Werte einem Punkt B im Zielpart mit SetCoordinates zuweisen. Derzeit fehlt mir noch das Verständnis, wie ich in meinem Makro "die richtigen Orte" anwähle.
Zu meinen Fragen:
1. Ist es sinnvoll die Information über die relevanten Parts so zu hinterlegen?
2. Wie beziehe ich mich auf ein geometrisches Set in einem der ausgewählten Parts, sodass ich die Koordinaten der dort vorhandenen Punkte auslesen kann?
Mein Ansatz, den ich mir aus dem MAKRO Rekorder hergeleitet habe:
Code:
'Anwählen des GeoSets
Dim documents1 As Documents
Set documents1 = CATIA.Documents Dim partDocument1 As PartDocument
Set partDocument1 = documents1.Item("Bezeichnung vom cat part, das den Punkt A beinhaltet") 'Idee: Info aus der User-Selektion eingeben
Dim part1 As Part
Set part1 = partDocument1.Part
Dim hybridBodies1 As HybridBodies
Set hybridBodies1 = part1.HybridBodies
Dim hybridBody1 As HybridBody
Set hybridBody1 = hybridBodies1.Item("BodyPoints") 'Bodypoints ist hier der Name des GeoSets, das die Punkte beinhaltet
Dim hybridShapes1 As HybridShapes
Set hybridShapes1 = hybridBody1.HybridShapes
'Ermitteln der xyz-Koordinatenwerte
Dim point_A
Set point_A = Selection.Search("hier fehlt noch das Argument, das zur Anwahl des Punktes nötig ist")
Dim coordinates_point_A(2)
point_A.GetCoordinates coordinates_point_A
Ich freu mich über eure Hilfe und Tipps.
VG
[Diese Nachricht wurde von Tanki am 14. Mai. 2018 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP