Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Orte anwählen im Makro

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Orte anwählen im Makro (1013 / mal gelesen)
Tanki
Mitglied
Entwicklungsingenieur


Sehen Sie sich das Profil von Tanki an!   Senden Sie eine Private Message an Tanki  Schreiben Sie einen Gästebucheintrag für Tanki

Beiträge: 14
Registriert: 11.05.2018

CATIA V5 R29 SP3
Windows 10

erstellt am: 11. Mai. 2018 14:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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.Selection

Dim 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

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 12. Mai. 2018 09:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Tanki 10 Unities + Antwort hilfreich

Servus Tanki

Willkommen im Forum.
Das ansprechen Quellparts direkt über den (Datei)Namen ist möglich. Alternativ könntest du dort auch wieder eine User-Selektion nutzen oder über die Instanz (Namen oder Zähler) auf das Part kommen.
Den Hybridkörper über den Namen ansprechen geht, dieser muss aber auch vorhanden sein (ggf Fehler abfangen).
Falls du nur von einem Punkt die Koordinaten auslesen willst geht das auch über den Namen:

Code:
Set point_A = hybridBody1.HybridShapes.item("DerNameMeinesGesuchentenPunktes")
Falls du eventuell mehre Punkte auslesen wiollst ghet das zB über eine Schleife aller HybridShapes:
Code:
for i = 1 to hybridBody1.HybridShapes.count
  if TypName(hybridBody1.HybridShapes.item(i)) = "HybridShapePointCoord" then 'hier als Beispiel nur Punkte die über Koordinaten erzeugt wurden
    Set oQuellpunkt = hybridBody1.HybridShapes.item(i)
    'dann hier was mit dem Punkt machen

  end if
next


oder über eine Suche:
Code:
Set QuellSelection = QuellPartDocument.Selection

QuellSelection.add hybridBody1
QuellSelection.search "CATGmoSearch.GSMPointCoord.Name='DerNameMeinesGesuchentenPunktes',sel"
for i = 1 to QuellSelection.count2
    Set oQuellpunkt = QuellSelection.item2.value
    'was mit den einzelnen Punkten machen
next


Wenn du allerdings bei den Koordinaten noch die unterschiedlichen Positionen von Quell- zu Zielpart einbeziehen willst wird es komplexer.
Achtung: getCoordinates geht nicht bei allen Punkttypen.

Gruß
Bernd

PS: Meine Code-Schnippsel sind nicht getestet können also noch Flüchtigkeitsfehler drin sein.

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz