Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Einmaliger Name auf oberster Part-Ebene

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:  Einmaliger Name auf oberster Part-Ebene (1386 mal gelesen)
Math.random
Mitglied
Ing

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

Beiträge: 8
Registriert: 23.02.2010

erstellt am: 16. Apr. 2010 07:59    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 Forum!

Wie lässt sich sicherstellen, dass ein per Makro vergebener Name im Strukturbaum auf gleicher Ebene nicht doppelt vorhanden ist?

Konkret habe ich folgendes vor:
Ein Geometrisches Set per CATIA.ActiveDocument.Part.HybridBodies.Add() erzeugen.
Dem Set im Baum einen "sprechenden" Namen geben, z.B. "GeoSet_Makro".

In das erzeugte Set werden u.a. Parameter eingefügt, die miteinander per Formel verknüpft sind.
Damit die in den Formeln angegebenen Pfade (z.B. Offset = GeoSet_Makro\Abstandsparameter) eindeutig sind, ist es wichtig, dass der Name des erzeugten Sets auf gleicher Ebene nur einmal vorkommt.
Nun kann es aber sein, dass aufgrund eines vorherigen Makro-Durchlaufs bereits ein Geometrisches Set namens "GeoSet_Makro" vorhanden ist.
Bevor das neu erzeugte Set umbenannt wird, ließe sich per Zugriffsversuch auf CATIA.ActiveDocument.Part.HybridBodies.Item("GeoSet_Makro") überprüfen, ob der gewünschte Name bereits im Part vorhanden ist. Gibt es ein Error, dann ist der Name noch nicht vorhanden und kann verwendet werden. Ansonsten wird solange hochgezählt ("GeoSet2_Makro" usw.), bis ein Name gefunden wird, der noch nicht vorhanden ist.

Diese Methode wird wahrscheinlich die nächsten 10 Mio. Jahre stabil funktionieren. Wenn aber ein Scherzkeks auf die Idee kommt, beispielsweise den PartBody oder ein Geordnetes Geometrisches Set "GeoSet_Makro" zu nennen, dann hat man ein Problem.
Also müsste die Abfrage um CATIA.ActiveDocument.Part.Bodies.Item("GeoSet_Makro") und CATIA.ActiveDocument.Part.OrderedGeometricalSets.Item("GeoSet_Makro") erweitert werden.
Das ist unschön, denn wahrscheinlich gibt es 200 weitere Elementtypen, die auch noch abgefragt werden wollen.
Das würde das Skript aufblähen aber irgendeine alles entscheidende Abfrage (z.B. ob eine Wandstärkenanalyse namens "GeoSet_Makro" im Part vorhanden ist) vergisst man garantiert. 

Was ich suche, aber bisher nirgends gefunden habe, ist ein Elementzugriff über Pfad und Name (z.B. Item("Part1/GeoSet_Makro")) OHNE dass der Typ des Elements (z.B. AxisSystems.Item) angegeben werden muss. Das muss doch möglich sein?

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 16. Apr. 2010 09:30    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 Math.random 10 Unities + Antwort hilfreich

Hallo,
was du suchts ist die "FindObjectByName"-Methode des Parts.
Siehe Doku.

Gruß

------------------
tomtom1972

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

Math.random
Mitglied
Ing

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

Beiträge: 8
Registriert: 23.02.2010

erstellt am: 16. Apr. 2010 19:22    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

Diese Antwort hilft nur bedingt, trotzdem Danke.
Wie es scheint, gibt es für mein triviales Problem keine saubere Lösung.

CATIA.ActiveDocument.Part.FindObjectByName("GeoSet_Makro") war so ziemlich das erste, was ich ausprobiert habe. Neben CATIA.ActiveDocument.Part.CreateReferenceFromName("Part1/!GeoSet_Makro") in allen Schreibweisen.

Das Problem an FindObjectByName ist, dass der gesamte Baum des Parts solange durchsucht wird, bis der gesuchte Begriff gefunden wurde oder nicht. Wie lange mag die Ausführung der Anweisung FindObjectByName dauern, wenn jemand aus Unwissenheit mit einem Part arbeitet, das 80.000 einzelne Flächen enthält?

Ich möchte sowieso nicht das gesamte Part nach einem Namen durchsuchen, sondern nur einen ganz bestimmten Knoten. Genauso, wie es CATIA macht, wenn unter Options eingestellt wurde Cecking Operation When Renaming: Under the same tree node.

Zumindest lässt sich per FindObjectByName sicherstellen, dass das per Makro erzeugte Geom. Set einen eindeutigen Namen hat. Wird jedoch tief verschachtelt im Baum ein Element mit dem gesuchten Name gefunden, dann wird der Name fälschlicherweise nicht zum Umbenennen verwendet. Es wäre denkbar, dass auf "GeoSet2_Makro" ein "GeoSet4_Makro" folgt, nur weil FindObjectByName irgendwo tief im Baum ein "GeoSet3_Makro" gefunden hat.
Mal abgesehen vom unnötigen Scannen des Baums wäre dieser höchst unwahrscheinliche Fall kein Beinbruch. Alle formelmäßigen Verknüpfungen der Elemente im erzeugten Geom. Set würden tadellos funktionieren. Aber scheinbar habe ich eine Abneigung gegen bewusst in Skripte eingebaute logische Fehler. Es muss doch eine einfache, zuverlässige Methode geben, die CATIA-Funktion Cecking Operation When Renaming: Under the same tree node per Makro nachzubilden!

[Diese Nachricht wurde von Math.random am 16. Apr. 2010 editiert.]

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



Teamleiter Vehicle Stowage (m/w/d)

Als Teamleiter (m/w/d) übernehmen Sie die fachliche Führung eines Konstruktionsteams, welches für die ganzheitliche mechanische Integration von Rüstsätzen/ Gerätesätzen in militärischen Systemen verantwortlich ist.
Zu Ihrem Aufgabenfeld gehören unter anderem folgende Punkte:

  • Fachliche Führung eines Konstruktionsteams mit Schwerpunkt auf der Konstruktion ...
Anzeige ansehenTeamleitung, Gruppenleitung
MICHLICK
Mitglied
CAD Methodik Entwickler (CATIA; NX)


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

Beiträge: 454
Registriert: 20.06.2001

Der Aufwand bei Änderungen ist groß, wenn die Finger schneller klicken als das Gehirn denkt.

erstellt am: 19. Apr. 2010 07:34    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 Math.random 10 Unities + Antwort hilfreich

Ja, man kann es auch kompliziert machen.

Wie wäre die Verwendung der Suchfunktion?
Einfach den Knoten, den Du überprüfen möchtest in eine Selektion nehmen. Dann innerhalb der Selektion nach dem Namen suchen.
Wenn dann Selektion.Count > 0 ist, dann gibt es mindestens ein Element mit dem gesuchten Namen.

Die Suche kann man sogar ganz einfach mit dem Makro-Recorder aufzeichnen.

------------------
Gruß Michael B.

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