| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
Autor
|
Thema: Partname ermitteln (406 mal gelesen)
|
Tom R Mitglied Technischer Zeichner
Beiträge: 274 Registriert: 02.11.2003 Solid Edge ST7 mit SMAP Piping OSDD 2006 unter Win 7
|
erstellt am: 22. Jul. 2004 14:35 <-- editieren / zitieren --> Unities abgeben:
Hallo! Ich glaube ich bin mal wieder mit Blindheit geschlagen. Ich suche den Abfragecode um zu ermitteln, zu welchem Teil das aktive Element gehört. Ich muss nach einem Klick auf ein Element sicherstellen, dass das angeklickte Element nicht zum aktiven Teil gehört. Letzteren erhalte ich ja mit INQ_ENV 7 - INQ 301. Aber das erste finde ich nicht. Hülfe! Viele Grüße Tom Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Klaus Lörincz Mitglied Consultant
Beiträge: 533 Registriert: 06.08.2003 OSD M = aktuell OSD D = aktuell OS M = aktuell auf WIN und HP-UX
|
erstellt am: 22. Jul. 2004 15:01 <-- editieren / zitieren --> Unities abgeben: Nur für Tom R
|
Tom R Mitglied Technischer Zeichner
Beiträge: 274 Registriert: 02.11.2003 Solid Edge ST7 mit SMAP Piping OSDD 2006 unter Win 7
|
erstellt am: 22. Jul. 2004 15:40 <-- editieren / zitieren --> Unities abgeben:
Hai! Stimmt! Danke für die Antwort. Nun ist dieser Befehl aber erst in der V12 dokumentiert. Wir setzen hier aber hauptsächlich noch die Version 10.5 ein. Geht das da noch nicht? Es muss doch eine Möglichkeit geben, das da auch zu ermitteln? Mir scheint, dass ich Elemente aus inaktiven Teilen gar nicht selektieren kann? Über INQ_SELECTED_ELEM und Klick auf ein inaktives Element bekomme ich jedenfalls nur den Namen des aktiven Parts angezeigt, wenn überhaupt. Viele Grüße Tom Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rhoffmann Mitglied Techniker
Beiträge: 58 Registriert: 22.01.2003
|
erstellt am: 22. Jul. 2004 15:50 <-- editieren / zitieren --> Unities abgeben: Nur für Tom R
Hallo Tom, um an das übergeordnete Teil zu kommen, kannst Du folgenden "Umweg" machen: DEFINE ug LOCAL Teil LOCAL TeilName LOCAL Teil_aktuell INQ_ENV 7 LET Teil_aktuell ('~'+ STR(INQ 302)) READ PNT "Teil antippen:" Teil TRAP_ERROR edit_part Teil IF (NOT CHECK_ERROR) END_PART INQ_ENV 7 LET TeilName (STR(INQ 301)) END_IF EDIT_PART Teil_aktuell DISPLAY(TeilName) END_DEFINE Um den eindeutigen Namen des Teils zu erfahren, setze statt INQ 301 INQ 302 ein. MfG Robert Hoffmann http://home.t-online.de/home/eva-hoffmann
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tom R Mitglied Technischer Zeichner
Beiträge: 274 Registriert: 02.11.2003 Solid Edge ST7 mit SMAP Piping OSDD 2006 unter Win 7
|
erstellt am: 22. Jul. 2004 16:12 <-- editieren / zitieren --> Unities abgeben:
Hallo Robert! Klar, das geht. Kann sein, dass das in meinem Fall auch ausreichend ist. Muss ich mal testen. Was wäre aber, wenn ich die Absicht hätte, ein inaktives Element zu erwischen, auch wenn an der Stelle, die man anklickt, unter umständen mehrere Elemente übereinander liegen, von denen auch mindestens eines zum aktiven Teil gehört? Dann wird über Sel._Elem wahrscheinlich das aktive Element angegeben. Wenn ich dann deine Schleife ausführe und dies feststelle, kann ich dann noch mit INQ_NEXT_ELEM arbeiten oder geht das nicht mehr, weil andere Befehle dazwischen lagen? Viele Grüße Tom Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rhoffmann Mitglied Techniker
Beiträge: 58 Registriert: 22.01.2003
|
erstellt am: 22. Jul. 2004 16:56 <-- editieren / zitieren --> Unities abgeben: Nur für Tom R
Hallo Tom, ich hatte keine Schleife in dem Makro. Mit untenstehendem Makro kannst Du solange Teile selektieren, bis Du eins erwischt hast, was nicht zu der Oberbaugruppe gehört. Mit END verlässt Du das Makro, wenn Du keine Lust mehr hast ..... DEFINE ug LOCAL Teil LOCAL TeilName LOCAL TeilName_aktuell LOCAL Teil_aktuell LOCAL OK INQ_ENV 7 LET Teil_aktuell ('~'+ STR(INQ 302)) REPEAT LET OK 0 READ PNT "Teil antippen:" Teil TRAP_ERROR edit_part Teil IF (NOT CHECK_ERROR) END_PART INQ_ENV 7 LET TeilName (STR(INQ 301)) LET TeilName_aktuell ('~'+ STR(INQ 302)) END_IF IF (TeilName_aktuell = Teil_aktuell) LET OK 0 DISPLAY('gehoert zum aktuellen Teil') ELSE LET OK 1 DISPLAY (TeilName_aktuell) END_IF UNTIL (OK = 1) EDIT_PART Teil_aktuell END_DEFINE MfG Robert Hoffmann http://home.t-online.de/home/eva-hoffmann
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tom R Mitglied Technischer Zeichner
Beiträge: 274 Registriert: 02.11.2003 Solid Edge ST7 mit SMAP Piping OSDD 2006 unter Win 7
|
erstellt am: 22. Jul. 2004 17:04 <-- editieren / zitieren --> Unities abgeben:
Hallo Robert! Sorry, dumme Wortwahl von mir: ich meinte "Schleife" nicht im programmtechnischen Sinne, sondern den Umweg, das Teil des gewählten Elementes aktiv zu machen. Dein Makro habe ich jetzt noch nicht getestet, kann ich morgen machen. Ich bin aber nicht sicher: was passiert, wenn ich ein aktives und ein inaktives Element übereinander liegen habe? Ich stelle mir das so vor, dass die Auswahl aktiver Elemente Prorität hat? Dann würde auch bei mehrmaligem Anklicken (bis ich keine Lust mehr habe *ggg*) immer nur dieses Element erwischt, an das andere käme ich nicht heran? Viele Grüße Tom Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |