| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX |
Autor
|
Thema: GRIP: Name eines Symbols ermitteln (1824 mal gelesen)
|
UdoMM Mitglied Senior Consultant CAX
Beiträge: 271 Registriert: 02.07.2004
|
erstellt am: 30. Okt. 2007 09:50 <-- editieren / zitieren --> Unities abgeben:
Wer kann mir ein Beispiel geben, wie man den Namen eines Zeichnugnssymbols ermitteln kann? Hintergrund: Ich schreibe ein Programm, welches alle Symbole findet und deren Platzierungskoordinaten, Platzierungswinkel und Namen feststellen soll. Ich versuche mit &SYMDFT an den Namen zu kommen. In der Doku steht die Symtax: &SYMDFT(obj,index). Was bei "index" erforderlich ist, wird nicht erklärt. Beispielprogramme mit &SYMDFT habe ich nirgends gefunden. Ich bekomme zur Laufzeit die Meldung: "Symbol in line font not found". Hier die Hauptschleife meines bisherigen Programms:
INEXTE/ALL MASK/25 LBL040: obj=NEXTE/IFEND,LBL050: a=istr(&SUBTYP(obj)) $$ PRINT/a $$ Objekte vom Typ 25, Subtyp 10 sind anscheinend Symbole... $$ IF/ (&SUBTYP(obj)) <> 10, PRINT/'NEIN' IF/ (&SUBTYP(obj)) <> 10, JUMP/LBL049: zaehl=zaehl+1 Pos=&ORIGIN(obj) PRINT/istr(zaehl)+'. Symbol:' PRINT/'XC='+fstr(Pos(1)) PRINT/'YC='+fstr(Pos(2)) PRINT/'ZC='+fstr(Pos(3)) Dat=&SYMDAT(obj,5) $$ (1)=Länge, (2)=Höhe, (3)=Winkel PRINT/'Winkel:'+fstr(Dat(3)) SymAnz=&SYMNUM(obj) PRINT/'Anzahl Symbole im Objekt:'+istr(SymAnz) SymNam=&SYMDFT(obj,0) PRINT/'Symbolname :'+SymNam PRINT/' ' LBL049: JUMP/LBL040: LBL050: ------------------ Gruß UdoMM : <>< Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 30. Okt. 2007 17:36 <-- editieren / zitieren --> Unities abgeben: Nur für UdoMM
Hallo Udo, evtl. hilft's, mal den Index von &SYMDFT zu ändern. D.h. einfach mal hochzählen und sehen, was Dein Program bei index <> 0 ausspuckt. In der Doku steht noch ein Zusammenhang mit &SYMNUM, was wohl den höchsten Index angibt. Daher ist anzunehmen, daß es sich bei &SYMDFT um ein Array aller Drafting- Symbole handelt, der Index wäre dann einfach die Nummer des einzelnen Objekts. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
UdoMM Mitglied Senior Consultant CAX
Beiträge: 271 Registriert: 02.07.2004
|
erstellt am: 31. Okt. 2007 08:13 <-- editieren / zitieren --> Unities abgeben:
Hallo Michael, danke für den Tipp. Wenn ich &SYMNUM(obj) verwende, ergibt das immer den Wert "0". Das ist mir ebenfalls unerklärlich, denn "obj" ist in dem Moment eines der vorhandenen Symbole und ich erhalte daraus z.B. auch die Ursprungskoordinaten des Symbols korrekt ermittelt. Trotzdem ergibt &SYMNUM(obj) immer eine "0". ------------------ Gruß UdoMM : <>< [Diese Nachricht wurde von UdoMM am 31. Okt. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 31. Okt. 2007 11:16 <-- editieren / zitieren --> Unities abgeben: Nur für UdoMM
Hallo Udo, die nächste Vermutung betrifft den gewählten Objekttyp / Subtyp. 25/10 ist lt. Doku User defined. Laß' mal testweise 25/3 (ID Symbol) und 25/4 (GD&T Symbol) in Deine Schleife, evtl. kriegst Du damit eine Rückgabe, mit der sich was anfangen läßt. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
älg Mitglied CADmin
Beiträge: 403 Registriert: 17.06.2003
|
erstellt am: 01. Nov. 2007 13:01 <-- editieren / zitieren --> Unities abgeben: Nur für UdoMM
|
UdoMM Mitglied Senior Consultant CAX
Beiträge: 271 Registriert: 02.07.2004 NX1 ... 2306 auch: I-deas MS6 ... NXI6.1m1 (15), Pro/E WF4 TCE9.1/TCX4 ... TC14 / AW6, SWIM, iPEM, TCAI
|
erstellt am: 05. Nov. 2007 09:23 <-- editieren / zitieren --> Unities abgeben:
|
UdoMM Mitglied Senior Consultant CAX
Beiträge: 271 Registriert: 02.07.2004
|
erstellt am: 05. Nov. 2007 09:29 <-- editieren / zitieren --> Unities abgeben:
Zitat: Laß' mal testweise 25/3 (ID Symbol) und 25/4 (GD&T Symbol) in Deine Schleife, evtl. kriegst Du damit eine Rückgabe, mit der sich was anfangen läßt.
Mit diesen Subtypes bekomme ich gar keine Daten geliefert. ------------------ Gruß UdoMM : <>< Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 05. Nov. 2007 10:38 <-- editieren / zitieren --> Unities abgeben: Nur für UdoMM
Hallo Udo, so langsam gehen mir die Ideen aus, was noch helfen könnte. Kriegst Du die richtigen Info's mit Information -> Object heraus ? Die Meldung "Symbol in line font not found" könnte darauf hinweisen, daß das betreffende Part in einer anderen Umgebung erstellt wurde. Da Drafting nicht meine liebste Spielwiese ist, kann ich nur vermuten, daß dort eine andere Definition für Line- Fonts verwendet wurde, auf die Du jetzt keinen Zugriff hast. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
UdoMM Mitglied Senior Consultant CAX
Beiträge: 271 Registriert: 02.07.2004
|
erstellt am: 05. Nov. 2007 10:42 <-- editieren / zitieren --> Unities abgeben:
Info / Objekt ergibt folgendes: ============================================================ Informationsliste erzeugt von : i01micudo055 Datum : 05.11.2007 10:41:00 Aktuelles aktives Teil : Z:\UM_Symboltestbeispiel.prt Knotenname : pc253196 ============================================================ Informationen über Objekt # 1 Besitzendes Teil Z:\Kunden\Benning\Benning-Macros_fuer_UM\UM_Symboltestbeispiel.prt Layer 1 Geänderte Version 6 29 Okt 2007 16:57 (durch Anwender i01micudo055) Erzeugte Version 6 29 Okt 2007 16:57 (durch Anwender i01micudo055) Ansichtenabhängig in TFR-TRI BESCHRIFTUNGSINFORMATIONEN ------------------------------------------------------------ Kontrollobjekt: None Einbau-Typ Non-Associative OBJEKTSPEZIFISCHE INFORMATIONEN ------------------------------------------------------------ Name Schnittpfeil hlBo Verbindungspunkte 0 Geometrische Elemente 8 Textelemente 1 Winkel = 0.000000000 Länge = 17.811974613 Höhe = 13.623575344 Anker XC = 17.951464228 X = 17.951464228 YC = 37.513381479 Y = 37.513381479 ZC = 0.000000000 Z = 0.000000000 ------------------------------------------------------------ Graph für Objektabhängigkeiten: Custom Symbol - ID 3588 Verwendet von: Keine ------------------------------------------------------------
------------------ Gruß UdoMM : <>< Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
älg Mitglied CADmin
Beiträge: 403 Registriert: 17.06.2003
|
erstellt am: 05. Nov. 2007 10:56 <-- editieren / zitieren --> Unities abgeben: Nur für UdoMM
Ich habe mir den Code nun doch mal angeschaut: Wieso verwendest Du subtyp 10, der lt. Doku für UF_draft_user_defined_subtype steht ? Um was für Symbole handelt es sich denn ? Erfrage das doch mal mit &TYPE(obj). Nee - ich korrigiere mich: erfrage den subtype mit &SUBTYP(obj). Und dann schau mer ma ... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
UdoMM Mitglied Senior Consultant CAX
Beiträge: 271 Registriert: 02.07.2004 NX1 ... 2306 auch: I-deas MS6 ... NXI6.1m1 (15), Pro/E WF4 TCE9.1/TCX4 ... TC14 / AW6, SWIM, iPEM, TCAI
|
erstellt am: 06. Nov. 2007 13:18 <-- editieren / zitieren --> Unities abgeben:
Ja, wenn ich also mal mit IDENT/ das Objekt der Begierde frei anklickbar mache und dann mit &type(obj) und &subtyp(obj) hantiere, denn erfahre ich, dass mein Symbol vom Type 25 und Subtyp 10 ist (qed.) Ist ja auch ein "anwenderdef. Symbol". Unter "Info"/"Objekt" spuckt NX ja sogar den richtigen Namen aus, in meinem Beispiel: "Schnittpfeil hlBo"
------------------ Gruß UdoMM : <>< Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
älg Mitglied CADmin
Beiträge: 403 Registriert: 17.06.2003
|
erstellt am: 06. Nov. 2007 15:18 <-- editieren / zitieren --> Unities abgeben: Nur für UdoMM
Ein hartes Brot - ich sehe langsam schwarz für GRIP ! Ich fand lediglich Lösungsansätze für OpenAPI (UF_DRF_ask_embedded_uds_font_info(...)) und VB (AskEmbeddedUdsFontInfo). Als Krücke höchstens noch die Suche von in notes eingebetteten UDS (z.B. ...<%myUDS> ). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 06. Nov. 2007 20:13 <-- editieren / zitieren --> Unities abgeben: Nur für UdoMM
Hallo Udo, stellst Du mal ein Part mit den Symbolen bereit ? Ohne das gesehen zu haben, ist mein Latein hier sonst am Ende. Eine Information, die am Objekt dranhängt, wie Info/Object zeigt, muß doch auch irgendwie rauszukriegen sein. Gruß, Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
UdoMM Mitglied Senior Consultant CAX
Beiträge: 271 Registriert: 02.07.2004
|
erstellt am: 06. Nov. 2007 23:20 <-- editieren / zitieren --> Unities abgeben:
|
mseufert Moderator Freiberuflicher CAD/CAM Ingenieur
Beiträge: 2700 Registriert: 18.10.2005 HP Z420 WIN7 64 Win 10 UG NX6-2306 3D Printer Prusa MK2 S
|
erstellt am: 14. Nov. 2007 18:56 <-- editieren / zitieren --> Unities abgeben: Nur für UdoMM
Hallo Udo, hier kommt zwar keine Lösung, aber die Gründe, warum Dein Program nicht das gewünschte Ergebnis liefert. &SYMNUM gibt die Anzahl der sog. User defined Symbols (Typ 25/3) an, die an einem (beliebigen ?) Drafting Objekt hängen. Testen kannst Du das z.B. mit einer Dimension, das Objekt und die Symbole bilden dann eine Einheit. In so einem Fall kannst Du mit &SYMDFT die Namen dieser Symbole auslesen, das funktioniert. Custom Symbols (Typ 25/10) lassen sich nirgendwo dranhängen, sind m.W. immer standalone. Umgekehrt lassen sich auch keine 25/3 mit Objekten vom Typ 25/10 verknüpfen. D.h. &SYMNUM und &SYMDFT sind für den assoziativen Typ 25/3 geeignet, können mit Typ 25/10 aber nichts anfangen. Eine Idee, den Namen des Symbols auszulesen, wäre folgende: Beim Einfügen des Symbols dessen Namen als Objektnamen setzen, &NAME(obj) = symbolname, dann kann der Name auf diesem Weg auch wieder ausgelesen werden. Setzt aber voraus, daß mit GRIP überhaupt ein Custom Symbol eingesetzt werden kann. Ohne eine solche Krücke wird's mit GRIP sonst nicht funktionieren, da auch OBTAIN (zumindest lt. Doku) keine Symbolnamen ausgibt. Eine denkbare Alternative wäre noch, das über NXOPEN zu versuchen. Da gibt's, meiner noch bescheidenen Erfahrung nach, wesentlich mehr Möglichkeiten, an die Daten eines Objekts dran zu kommen. Gruß, Michael
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Electronics Engineer for Mechatronic Systems (m/w/d) | Als weltweit führender Experte für Filtration entwickelt MANN+HUMMEL Lösungen für Automobile, industrielle Anwendungen, saubere Luft in Innenräumen und die nachhaltige Nutzung von Wasser. Mit Teamgeist und einer offenen Kommunikationskultur arbeiten wir unentwegt an unserer Vision 'Leadership in Filtration'.
Ihre Rolle: Filtersysteme erfordern immer mehr Komponenten die zur System und Funktionsoptimierung notwendig sind.... | Anzeige ansehen | Elektrotechnik, Elektronik |
|
UdoMM Mitglied Senior Consultant CAX
Beiträge: 271 Registriert: 02.07.2004
|
erstellt am: 15. Nov. 2007 09:17 <-- editieren / zitieren --> Unities abgeben:
|