Autor
|
Thema: InternalName vs. DisplayName (undokumentiert) (5638 mal gelesen)
|
web_kai Mitglied
Beiträge: 4 Registriert: 27.10.2005
|
erstellt am: 12. Feb. 2007 07:22 <-- editieren / zitieren --> Unities abgeben:
Aloha! Einige kennen das Problem: Du zeichnest ein Makro auf, bekommst diesen Wahnsinns-String der Boundary-Representation, findest das Feature (z.B."Skizze.1") nur als Sketch.1 ... Was ist da los??? Catia vergibt die Namen der Features nicht nur ein-, sondern zweimal. Den öffentlichen Namen sieht jeder im Strukturbaum, der Interne Name ist verdeckt. Durch eine nicht dokumentierte Funktion (wenigstens in R14) lässt sich das lösen. Das Ding heißt ModelElement und will über GetItem angesprochen werden: Set oModelElement = oFeature.GetItem("ModelElement") sInternalName = oModelElement.InternalName Zur Namensgebung (lt. CAA-Hilfe): Feature wird erzeugt -> Name = Sketch Feature wird einem Strukturelement zugeordnet -> Name = Sketch.1 Egal ob der AW den Sketch umbenennt, oder die deutsche Version verwendet, der Sketch wird (immer) Sketch.1 heißen... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Augustiner Mitglied Konstrukteur
Beiträge: 188 Registriert: 02.12.2005 HP Workstation Windows XP Professional Visual Studio 2005 Professional CATIA V5 R14SP5 & R17SP3
|
erstellt am: 12. Feb. 2007 09:59 <-- editieren / zitieren --> Unities abgeben: Nur für web_kai
|
web_kai Mitglied
Beiträge: 4 Registriert: 27.10.2005
|
erstellt am: 13. Feb. 2007 06:27 <-- editieren / zitieren --> Unities abgeben:
Was DU damit anfangen kannst weiß auch ich nicht... Kollegen, die Makros programmieren, die sowohl in der deutschen als auch in der englischen Sprachversion laufen, haben damit die Möglichkeit, sicher auf Strukturelemente zuzugreifen. In einigen Quellen (Bücher/iNet) wird häufig wie folgt auf Features zugegriffen: ...Item("Körper.3") Das Problem dabei ist jedem klar, in der englischen Version laüft hier nichts. Wenn man allerdings nach dem internen Namen "MechanicalTool.3" sucht, ist man frei von irgendwelchen Sprachzwängen... Ob Dir das jetzt weiterhilft, who care´s? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
crow73 Mitglied Maschinenbauingenieur
Beiträge: 64 Registriert: 07.04.2003 CATIA V5R19 SP9 Hotfix 69 Core i7 16 GB RAM W7
|
erstellt am: 20. Feb. 2007 14:45 <-- editieren / zitieren --> Unities abgeben: Nur für web_kai
|
CAMiCADse Mitglied
Beiträge: 177 Registriert: 17.02.2006 V5,R19,SP9
|
erstellt am: 16. Apr. 2007 11:12 <-- editieren / zitieren --> Unities abgeben: Nur für web_kai
Hallo web_kai, mit Features im Body funktioniert das ja wunderbar, aber bei Elementen in einem HybridBody (GeometricalSet), klappt das nicht Z.B. will ich an den internalName einer Plane oder eines Point ran... Hast du dafür 'ne Lösung? Gruß CAMiCADse
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 05. Sep. 2007 18:33 <-- editieren / zitieren --> Unities abgeben: Nur für web_kai
|
noir333 Mitglied Ingenieur
Beiträge: 148 Registriert: 27.01.2004 Dell Precision 450 Dual Xeon, 2MB RAM, XP SP2, NX3 V5R17SP3
|
erstellt am: 05. Sep. 2007 23:12 <-- editieren / zitieren --> Unities abgeben: Nur für web_kai
Hallo Proofin, ich habe mal ein wenig damit herumgespielt. Es scheint so zu sein, als wenn es vom Objekttyp abhängig ist, ob man den InternalName mit ModelElement bekommt, oder nicht. Ein Sketch unterstützt die Methode, auch wenn er in einem Hybridbody (set) liegt, ein Punkt oder eine Linie nicht, auch wenn Sie in einem Body liegt. Aber es gibt eine andere Möglichkeit an den InternalName heranzukommen. Wenn man z.B. den Scheitelpunkt einer Linie selektiert bekommt man als Brep-Namen folgendes angezeigt: "BorderFVertex BEdge Brp GSMLine.4;2);None Limits1 );Limits2 );-1);Cf11 ));GSMLine.4;Z0;G2019)" GSMLine.4 ist der interne Name, glaube ich. Also: Dein Objekt (Punkt oder Linie) in die Selection nehmen, und alle Scheitelpunkte raussuchen (Search). Dann in dem Namen das letzte Cf raussuchen und zwischen den nächsten beiden ";" steckt dein Internalname. Probiers mal, ich drücke die Daumen... ------------------ -----------
[Diese Nachricht wurde von noir333 am 05. Sep. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zoltan.bekesi Mitglied
Beiträge: 321 Registriert: 22.10.2006 Job: CATIA V5R19 / XP 32bit MS Office 2003 Microstation V8 2004 Edition DELL Precision M6300
|
erstellt am: 09. Nov. 2008 16:03 <-- editieren / zitieren --> Unities abgeben: Nur für web_kai
Hallo Zusammen, dieser Beitrag hat mir bei meiner Problem sehr viel geholfen, in einen Punkt scheint es aber trotzdem nicht zu funktionieren. Vielleicht weiß jemand einen Ausweg: Ich möchte die Flächen aller Bohrungen für Weiterverarbeitung aus dem Modell haben, und zwar als Referenz. Den B-Rep-String habe ich bis diese Tiefe verstanden und die Herkunft von "Assemble.50"="Bohrbearbeitung.1" auch entziffert (InternalName). Was mir aber noch Probleme verursacht ist die Name der Skizze. Ich kann nicht nachvollziehen, warum CATIA Sketch.19 in den B-Rep schreibt, wobei sowohl DisplayName, als auch InternalName der erzeugender Skizze Sketch.18 ist. Wenn ich mit FindObjectByName auf Sketch.19 suche und es im Watch ansehe, bin ich beim selben Objekt und parent (VB mäßig) ist Hole.1. So kann ich leider keinen gültigen B-Rep-String mit zusammenfügen erzeugen... Der andere Weg an die Flächen zu kommen wäre eine Suche nach den Topologieelementen, Suchen aus Makro war bei mir bisher aber relativ langsam und Wegen der notwendigen Selection teilweise auch instabil. Hat hier vielleich jemand andere Erfahrungen? Ist es hier mit .NET besser geworden? Ich suche verzweifel nach einen guten Lösung. Gruß, Zoltan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
noir333 Mitglied Ingenieur
Beiträge: 148 Registriert: 27.01.2004 Dell Precision 450 Dual Xeon, 2MB RAM, XP SP2, NX3 V5R17SP3
|
erstellt am: 10. Nov. 2008 08:18 <-- editieren / zitieren --> Unities abgeben: Nur für web_kai
Hallo Zoltan, also mit dem Sketch.18 weiß ich auch nicht so recht, warum das so ist. Ich arbeite seit langem mit .NET und habe seit R17 keine Probleme mehr mit der Selection. Ich verwende VS2008. Ein anderer Vorschlag: 1. mit Search alle Bohrungen selektieren im Part 2. mit Search alle Flächen (topology) aus der aktuellen Selektion raussuchen. Löst das Dein Problem? ------------------ ----------- Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zoltan.bekesi Mitglied
Beiträge: 321 Registriert: 22.10.2006 Job: CATIA V5R19 / XP 32bit MS Office 2003 Microstation V8 2004 Edition DELL Precision M6300
|
erstellt am: 10. Nov. 2008 19:22 <-- editieren / zitieren --> Unities abgeben: Nur für web_kai
Hallo noir333, das wäre die andere Möglichkeit, die ich mir auch ausgedacht habe, werde wahrscheinlich dabei bleigen. Es wäre aber ohne Selection.Search schöner gewesen... Mit R16 habe ich schon mal (möglicherweise nach falscher Programmierung) einige "Click OK to terminate" und diverse Abstürze erlebt, hoffentlich werden wir aber bald R19 haben und hoffentlich wird es auch besser. Gruß, Zoltán Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MarcDe Mitglied
Beiträge: 137 Registriert: 11.10.2006 CATIA R18 SP2, BN 18, HF 162 Win 7 64Bit
|
erstellt am: 27. Jun. 2012 09:19 <-- editieren / zitieren --> Unities abgeben: Nur für web_kai
Hallo, auch wenn der Beitrag schon älter ist. Mit R18 scheint das bei "jedem" Element zu funktionieren. Habe gerade einmal 400 willkürliche Elemente rekursiv eingelesen mit dotNET C# und mit ((ModelElement)hybridBody.HybridSketches.Item(i).GetItem("ModelElement")).InternalName bekomme ich bei allen den InternalName, ohne Fehlermeldungen! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |