| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
| |
 | MAIT erhält den Abas Partner Performance Award 2025, eine Pressemitteilung
|
Autor
|
Thema: Element_ID statt Pickpunkt ? (929 mal gelesen)
|
Reiner Mitglied Maustreiber

 Beiträge: 24 Registriert: 06.11.2000
|
erstellt am: 02. Jun. 2003 16:39 <-- editieren / zitieren --> Unities abgeben:         
Hallo Makro-Programmierer, gibt es eine Möglichkeit ein Element direkt mit einer Element_ID anzusprechen statt den Pickpunkt zu benutzen. Die Gefahr ist ja immer gegeben dass sich an dem Pickpunkt bereits ein Element befindet und somit eventuell das falsche erwischt wird. Ich kenne das von anderen CAD-Systemen. Wie bekomme ich das in ME10 gebacken ? Gruss Reiner DEFINE picktest
LOCAL count { bisherige Element-Info löschen } DELETE_CURRENT_INFO { Alle jetzt eingefügten Elemente erhalten diesen Info-String } ADD_CURRENT_INFO 'MeineTexte' END { Texte erzeugen } TEXT 'Text' 0,0 END TEXT 'Text' 0,0 END { alle eingefügten Texte selektieren } INQ_SELECTED_ELEM SELECT INFOS 'MeineTexte' CONFIRM END { Schleife über alle selektierten Texte } LET count 0 WHILE ((INQ 14) > 0) IF ((STR (INQ 403)) = 'TEXT') DISPLAY ('Text: ' + (INQ 902)) LET count (count + 1) CHANGE_TEXT (STR count) (INQ 101) END { besser wäre mit ID, wenn es so was in ME10 gibt ???? CHANGE_TEXT (STR count) (Element_ID) END } END_IF { Zeiger auf nächstes Element } INQ_NEXT_ELEM END_WHILE END_DEFINE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
baumgartner Mitglied Dipl.-Ing. Maschinenbau
  
 Beiträge: 715 Registriert: 05.01.2001 Ing.-Büro Andreas Baumgartner bietet Lösungen rund um ME10. * ME10-Makros * ME10-Makroschulungen
|
erstellt am: 02. Jun. 2003 18:15 <-- editieren / zitieren --> Unities abgeben:          Nur für Reiner
hallo, wenn das so einfach wäre... - ich löse es immer so ähnlich... DELETE_CURRENT_INFO ADD_CURRENT_INFO "info text1" TEXT "Text1" 0,0 END DELETE_CURRENT_INFO ADD_CURRENT_INFO "info text2" TEXT "Text2" 0,0 END CHANGE_TEXT "neuer Text" SELECT (*GLOBAL*) INFOS "info text2" CONFIRM END Allerdings ist die Sache mit dem SELECT INFOS nicht ganz ohne, denn wenn das angegebene Info nicht in der Zeichnung ist, gibt es Probleme die man gesondert behandeln muss. Wenn die Texte schon in der Zeichnung sind, dann können diese Infos doch auch mittels Makro schon erzeugt werden. INQ_SELECTED_ELEM SELECT (*GLOBAL*) TEXTS ALL CONFIRM END LOOP EXIT_IF (INQ 14=0) let count (count +1) (* eventuell prüfen ob "count" schon mal vorhanden ist *) ADD_ELEM_INFO count INQ 101 INQ_NEXT_ELEM END_LOOP So alles jetzt ungetestet, aber so ähnlich gehe ich dann immer vor. ME10-Makro-Grüsse
------------------ Grüsse aus dem Schwarzwald  www.Andreas-Baumgartner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RAND CoCreateSolutions Mitglied

 Beiträge: 10 Registriert: 22.04.2002
|
erstellt am: 02. Jun. 2003 19:36 <-- editieren / zitieren --> Unities abgeben:          Nur für Reiner
Also lösen kann man das mit POINTER { Alle jetzt eingefügten Elemente erhalten diesen Info-String } ADD_CURRENT_INFO 'MeineTexte' END { Texte erzeugen } TEXT 'Text' 0,0 END TEXT 'Text' 0,0 END { alle eingefügten Texte selektieren } INQ_SELECTED_ELEM SELECT INFOS 'MeineTexte' CONFIRM END CHANGE_TEXT 'Bubu' SELECT POINTER (INQ 2) CONFIRM END INQ_NEXT_ELEM usw. Natürlich auch mit Schleife möglich
Gruß Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
H.annes Mitglied CAD-Pfriemler
 
 Beiträge: 482 Registriert: 02.07.2001 OSDD 8.7 - 13.20 ; OSDM 13.00
|
erstellt am: 03. Jun. 2003 07:27 <-- editieren / zitieren --> Unities abgeben:          Nur für Reiner
Morgen, (INQ 2) ist wirklich eine hilfreiche & tolle Lösung - erwähnen muß man aber noch, das dies UNDOCUMENTED und damit UNSUPPORTED ist: Zitat: This way we have direct access to element structure in memory and can manipulate it. Therefore it may be risky if you write macros carelessly and use try to use a pointer of e.g. element that was already deleted. Although SELECT first checks if the element really exists, POINTER was nevertheless decided not to be available for users due to such risks.
Aber es funktioniert fantastisch! Ein kleiner Tip noch: Wenn Du beim INQ_SELECTED_ELEM noch ein TEXTS einfügst, sparst Du ein IF :
Code: DEFINE Picktest LOCAL Count DELETE_CURRENT_INFO ADD_CURRENT_INFO 'MeineTexte' END TEXT 'Text' 0,0 END TEXT 'Text' 0,0 END INQ_SELECTED_ELEM SELECT TEXTS INFOS 'MeineTexte' CONFIRM END LET Count 0 WHILE ((INQ 14) > 0) DISPLAY_NO_WAIT ('Text: ' + (INQ 902)) LET Count (Count + 1) CHANGE_TEXT (STR Count) POINTER (INQ 2) END INQ_NEXT_ELEM END_WHILE END_DEFINE
Gruß aus Österreich, Hannes
------------------ und i hob im kalenda gschaut: heit ged da wind. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Reiner Mitglied Maustreiber

 Beiträge: 24 Registriert: 06.11.2000
|
erstellt am: 03. Jun. 2003 10:11 <-- editieren / zitieren --> Unities abgeben:         
Hallo Leute, vielen Dank für die schnellen Lösungen  Das mit dem POINTER habe ich natürlich gleich getestet weil das die Lösung ist nach der ich gesucht habe. Leider funktioniert es mit der Version 8.7 nicht. Welche Version habt ihr benutzt ? Aber trotzdem vielen Dank an alle. Units sind unterwegs. Viele Grüße Reiner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
baumgartner Mitglied Dipl.-Ing. Maschinenbau
  
 Beiträge: 715 Registriert: 05.01.2001 Ing.-Büro Andreas Baumgartner bietet Lösungen rund um ME10. * ME10-Makros * ME10-Makroschulungen
|
erstellt am: 03. Jun. 2003 10:36 <-- editieren / zitieren --> Unities abgeben:          Nur für Reiner
|
H.annes Mitglied CAD-Pfriemler
 
 Beiträge: 482 Registriert: 02.07.2001 OSDD 8.7 - 13.20 ; OSDM 13.00
|
erstellt am: 03. Jun. 2003 11:32 <-- editieren / zitieren --> Unities abgeben:          Nur für Reiner
Hallo Reiner, ja, leider: POINTER gibts erst ab Version 11.0. Das Keyword POINTER ist zwar auch in der 8er-Version definiert, aber funktionieren tut's erst ab 11. Hannes
------------------ undmiadanwosmadanundmiadanawosondas oisdeswosmadanundwosondasdamara Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas 253 Mitglied
 
 Beiträge: 157 Registriert: 01.03.2002
|
erstellt am: 14. Jan. 2004 09:36 <-- editieren / zitieren --> Unities abgeben:          Nur für Reiner
Hallo, Ich krame mal diesen altenBeitrag wieder raus, weil ich ein aktuelles Problem zu dem Thema habe. Ich hänge mit folgendem Befehl eine Info an ein gewähltes Element an: ADD_ELEM_INFO 'getestet' SELECT POINTER (INQ 2) CONFIRM END Prinzipiell funktioniert das auch, aber scheinbar ist die Info erst nach abarbeiten des gesamten Makros vorhanden. Wenn ich später in dem gleichen Makro diese Info für eine Auswahl benutzen will, scheint sie für das gewählte Element noch nicht da zu sein, wohl aber für Elemente, die diese Info in früheren Durchläufen des Makros bekommen haben. Weiß jemand eine Lösung, wie ich diesen Mechanismus trotzdem nutzen kann? Gruß Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |