| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo |
| |
 | MAIT übernimmt Kundenstamm von GMCAD, eine Pressemitteilung
|
Autor
|
Thema: Annotation: sel_item für Geometrie, die mittels ME10 Makr selektiert wurde, ermitteln (296 / mal gelesen)
|
holt Mitglied Systembetreuer CAD
  
 Beiträge: 719 Registriert: 07.08.2003 Lenovo ThinkStation P360 Core i7-12700@2.10 GHz, 32GB NVIDIA RTX A2000 12 GB Creo Elements/Direct Modeling 20.5 Creo Elements/Direct Drafting 20.5 Creo Elements/Direct ModelManager 20.5
|
erstellt am: 09. Jan. 2025 15:09 <-- editieren / zitieren --> Unities abgeben:         
Hallo, nach ziemlich langer Abwesenheit melde ich mich wieder einmal. Mein Anliegen: Ich rufe in Annotation ein ME10-Makro, das bestimmte Geometrien aus einer Ansicht auswählt und den Pointer und die Geometrieeigenschaften als Liste an LISP zurückgibt. Der Pointer entspricht dem Rückgabewert der Funktion sd-get-annotator-reference. Um mit den Elementen in LISP weiterarbeiten zu können, benötige ich die sel_items zu den Pointern. Soviel ich weiß, gibt es aber keine Umkehrfunktion zu sd-get-annotator-reference. Als workaround hole ich mittels get_selection alle sel_items der Geometrien der Ansicht und füge zu der Liste mittels sd-get-annotator-reference die Pointer hinzu. Diese Liste verwende ich dann, um die sel_items zu der von ME10 zurückgegebenen Liste hinzuzufügen. Der letzte Vorgang ist jedoch recht langsam. Ungefähr so:
Code:
(setf new-list (mapcar #'(lambda (a) (append (list :SELITEM (first (find (getf a :POINTER) item-ref-list :key #'second :test #'equal))) a)) geo-list))
item-ref-list ist die Liste der Sel-items mit den Pointern. geo-list ist die Liste, die vom ME10-Makro kommt. Hat jemand eine Idee, wie man das effizient machen kann?
------------------ Gruß aus dem Salzkammergut Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
     
 Beiträge: 2260 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.5247 ● Drafting V17~V20.7 ● Modeling V17~V20.7 ● Windchill 12.1.2.6 ● UWGM Client 13.0.0.1
|
erstellt am: 09. Jan. 2025 17:25 <-- editieren / zitieren --> Unities abgeben:          Nur für holt
Zitat: Original erstellt von holt: nach ziemlich langer Abwesenheit melde ich mich wieder einmal.
Willkommen 'zurück'  Zitat: Ich rufe in Annotation ein ME10-Makro, das bestimmte Geometrien aus einer Ansicht auswählt und den Pointer und die Geometrieeigenschaften als Liste an LISP zurückgibt......Soviel ich weiß, gibt es aber keine Umkehrfunktion zu sd-get-annotator-reference.
sd-get-annotator-reference⁻¹ also .. ist doch einfach 😃 Zitat: Ungefähr so:Code:
(setf new-list (mapcar #'(lambda (a) (append (list :SELITEM (first (find (getf a :POINTER) item-ref-list :key #'second :test #'equal))) a)) geo-list))
ein richtiger Killer in dem Fall ist der append. Der KOPIERT immer eine Liste und bildet dann aus den beiden(oder mehreren) listen eine NEUE Liste. Das verursacht dann u.U Tonnen von LISP garbage. (gbc-log 3) Prinzipiell bin ich für so ein mapcar ja immer zu haben. Und mit lambda oben drein noch mehr. Aber da lässt sich dann oft schlecht 'messen' wo was lange dauert oder eben was schief geht. Wie lang sind denn die Listen❔❔ Da greife ich dann mal ganz gerne erst zu einem schnöden (dolist ..), taste mich ran, verbessere es, verbessere es, verbessere es .. und zum Schluss kommt dann sogar oft doch wieder ein mapcar raus, nur eben eine bessere Implementierung.
Code: (dolist (pointer geo-list) (when pointer gefunden (push sel-item found-selitems).. )
Das wäre auf alle Fälle schon mal (langsamer !!) reference code um zu wissen OB der neue Ansatz das richtige liefert. Aber egal wenn langsam, Hauptsache richtig! Eine Liste gemächlich aufbauen ist mit push schon mal ganz gut. Da werden intern nur 2 Pointer verbogen und fertig.
Den append kannst du (oft) mit einem nconc ersetzen. nconc ist DESTRUCTIV, dafür aber sehr speicher sparsam. Wenn du die Eingabe Liste nimmer brauchst kannst du nconc verwenden. pointer-gefunden in der item-ref-list kann auch schnarchen. Weil. Der muss ja JEDESmal wieder ganz vorne anfangen mit der Sucherei. richtig FIX : hashmap!
● baue dir aus der item-ref-list eine Hashmap, wobei der Key der reference-pointer (aus dem sel-item) ist. ● anschliessend loop'st du über die pointer liste, guckst mit dem Pointer in die hashmap ●● wenn gefunden das selitem wieder merken Am besten
● behälst Du deine orignal mapcar implementierung ● nimmst deine orignal mapcar implementierung, aber mit dem nconc drin ● machst eine erste dolist variante ● machst eine zweite dolist variante ● machst eine erste hashmap+list variante ● machst eine zweite hashmap+list variante dann machst'ne Test, der mit den selben eingangs listen alle Varianten hintereinander (vielleicht jede 5 mal) aufruft und läßt die Zeit mit-messen (seconds-since-1970). Das wird dir einige Erkenntnisse bringen. Und dann kommt vielleicht mal noch eine andere Idee. Und dann misst du wieder. So ein Test kann dann auch mal 30minuten dauern. Das ist egal . Das sind dann eben vergleichenden Messungen. Bei eine neueren Variante kannst du die älteren langsamsten Varianten ja beim neuen Testlauf weglassen. Ergebnis Verifikation: gib die Liste der gefundenen reference pointer aufsteigend sortiert (je in eine Datei) aus. Die müssen dann alle gleich sein. Diese Ausgabe machst du aber ausserhalb der Zeitmessung! Zitat: Hat jemand eine Idee, wie man das effizient machen kann?
Hccchh hättest Du das weiter oben gefragt hätte ich einfach nur mit "ja" geantwortet. Und fertig! Das wäre schneller gewesen. Danke dir für die 'ordentliche' LISP Frage. 😏
------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ●
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
holt Mitglied Systembetreuer CAD
  
 Beiträge: 719 Registriert: 07.08.2003 Lenovo ThinkStation P360 Core i7-12700@2.10 GHz, 32GB NVIDIA RTX A2000 12 GB Creo Elements/Direct Modeling 20.5 Creo Elements/Direct Drafting 20.5 Creo Elements/Direct ModelManager 20.5
|
erstellt am: 10. Jan. 2025 07:50 <-- editieren / zitieren --> Unities abgeben:         
Wow, Wolfgang, du bist ja schnell. Dass append in so einem Fall ein Killer ist, war mir bisher nicht klar, aber wenn man so arbeitet wie du das beschrieben hast, würde das auffallen. Vielen Dank für die ausführlichen Anregungen. Werde ich beherzigen. ------------------ Gruß aus dem Salzkammergut Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lix b Mitglied Konstrukteur, CAD-Admin
 
 Beiträge: 296 Registriert: 03.10.2014 Creo Elements / Direct Modeling 20.4 Creo Elements / Direct Model Manager 20.4 <P>Notepad++ Win 11
|
erstellt am: 10. Jan. 2025 08:58 <-- editieren / zitieren --> Unities abgeben:          Nur für holt
Hallo Thomas, wenn du schon mittels M10-Makro auf das Geometrieelement zugreifst, könntest du doch im selben Schritt die PID und die zugehörige SYS-ID erfragen. PID:
Code: INQ_SELECTED_ELEM SELECT GLOBAL POINTER [POINTER] CONFIRM END LET PID (DOCU_CSTRING_TO_LSTRING (INQ 309))
SYS-ID aus dem Infostring:
Code: INQ_SELECTED_ELEM GLOBAL [PID]
Hier kannst du dann mit einer Schleife die Infostrings (INQ 900) + (INQ 901) nach dem Eintrag SD_ID: durchforsten. Die SYS-ID fährts du dann 1x über eine Liste mit allen relevanten Modellen und greifst dir das SEL_ITEM.
------------------ Viele Grüße Felix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
holt Mitglied Systembetreuer CAD
  
 Beiträge: 719 Registriert: 07.08.2003 Lenovo ThinkStation P360 Core i7-12700@2.10 GHz, 32GB NVIDIA RTX A2000 12 GB Creo Elements/Direct Modeling 20.5 Creo Elements/Direct Drafting 20.5 Creo Elements/Direct ModelManager 20.5
|
erstellt am: 10. Jan. 2025 12:53 <-- editieren / zitieren --> Unities abgeben:         
Hallo Felix, in dem Fall geht es nur um die Geometrie in einer Ansicht eines Einzelteil. Ich brauche die sel_items, um in LISP mit den Linien weiterzuarbeiten. Die Teile, bei denen das gebraucht wird, sind komplex und die Ansichten bestehen aus tausenden Linien. Aber für den Fall, dass ich einmal mit Baugruppen arbeiten muss, ist das eine gute Anregung. Vielen Dank! ------------------ Gruß aus dem Salzkammergut Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
     
 Beiträge: 2260 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.5247 ● Drafting V17~V20.7 ● Modeling V17~V20.7 ● Windchill 12.1.2.6 ● UWGM Client 13.0.0.1
|
erstellt am: 10. Jan. 2025 15:36 <-- editieren / zitieren --> Unities abgeben:          Nur für holt
Zitat: Original erstellt von holt: Wow, Wolfgang, du bist ja schnell. Vielen Dank für die ausführlichen Anregungen. Werde ich beherzigen.
Mit Deinem Mapcar erzeugst Du (length geo-list) MAL eine neue Liste in dem du eine 'Kurze Liste' vor die vorhandene liste hängst, welche dann auch noch kopiert wird. Da du die Reihenfolge selber bestimmst wäre hier ein Push auch gut im lambda) Mapcar ist gut wenn du für jedes Element einer Liste ein anderes Element 'kreieren' willst. Also die Elemente der Liste durchnudeln. Der Return von Mapcar ist ja per se wieder eine Liste. ------- ab- Stand- ------- Ich denke aber (mittlerweile) das ich den append gestern abend nicht ganz richtig gelesen habe. Aber das mag auch dran liegen das ich/wir nicht wissen wie die Elemente Deiner Listen tatsächlich aussehen. Mir scheint meine folgende Annahme ist falsch:
Code: (pprint geo-list) => (142574548 25478787 24548788987 21544874 2548754 245487 ...) (pprint item-ref-list) => (sel-item-geo1 sel-item-geo2 ... sel-item-geo42) ;; und (pprint new-list) => (sel-item-geo3 sel-item-geo7 sel-item-geo8)
Deine listen sind offenbar listen von listen .. Denn mich stört sonst dein 'first' und 'second' .. und es würde ja auch der sd-get-annotator-reference fehlen. Ich habe 'dein Problem' eher so gesehen /mangels details so kristall-gekugelt
Code: (setq found-item-list (mapcan #`(lambda (ptr) (find ptr ,item-ref-list :key #'sd-get-annotator-reference :test #'equal)) geo-ptr-list ;; from ME10 ))
Aber du scheinst mit Listen von Listen zu hantieren, die mehr als nur PTR-Nr und sel-items als Elemente haben. Offen: Wie lang sind denn die Listen❔❔ ------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ●
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
     
 Beiträge: 2260 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.5247 ● Drafting V17~V20.7 ● Modeling V17~V20.7 ● Windchill 12.1.2.6 ● UWGM Client 13.0.0.1
|
erstellt am: 10. Jan. 2025 15:48 <-- editieren / zitieren --> Unities abgeben:          Nur für holt
|
der_Wolfgang Moderator Tastenhauer
     
 Beiträge: 2260 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.5247 ● Drafting V17~V20.7 ● Modeling V17~V20.7 ● Windchill 12.1.2.6 ● UWGM Client 13.0.0.1
|
erstellt am: 10. Jan. 2025 16:00 <-- editieren / zitieren --> Unities abgeben:          Nur für holt
|
lix b Mitglied Konstrukteur, CAD-Admin
 
 Beiträge: 296 Registriert: 03.10.2014 Creo Elements / Direct Modeling 20.4 Creo Elements / Direct Model Manager 20.4 <P>Notepad++ Win 11
|
erstellt am: 13. Jan. 2025 08:59 <-- editieren / zitieren --> Unities abgeben:          Nur für holt
Hallo Thomas, das hab ich wohl unterbewusst überlesen. Bist du dir sicher, dass du deine Aktion mit den Geometrien lieber in Annotation als mittels ME10-Makros durchführen willst? Performancetechnisch sind das gigantische Unterschiede, gerade wenn da einige Linien zusammenkommen. @Wolfgang Danke für den Hinweis auf den Makro-Ordner, sieht interessant aus ------------------ Viele Grüße Felix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
     
 Beiträge: 2260 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.5247 ● Drafting V17~V20.7 ● Modeling V17~V20.7 ● Windchill 12.1.2.6 ● UWGM Client 13.0.0.1
|
erstellt am: 13. Jan. 2025 16:49 <-- editieren / zitieren --> Unities abgeben:          Nur für holt
Zitat: Original erstellt von lix b: @Wolfgang Danke für den Hinweis auf den Makro-Ordner, sieht interessant aus
Selbst für mich ist da das immer wieder eine Fundgrube. Oft habe ich so den Gedanken "sowas haben wir doch schon mal gemacht" .. und werde dort fündig. Oder finde dort eben die passende Syntax für 'DOCU_*' Afn's & Co. "interessant" ist daher leicht untertrieben meiner Meinung nach 🙃 Den Ordner sollte jeder auswendig kennen, der/die im Annotation was austüftelt und ME10 Kenntnisse hat 😉.
------------------ ● Firefox ESR ● Java Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en) ● NotePad++ ● BuFDi ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lix b Mitglied Konstrukteur, CAD-Admin
 
 Beiträge: 296 Registriert: 03.10.2014 Creo Elements / Direct Modeling 20.4 Creo Elements / Direct Model Manager 20.4 <P>Notepad++ Win 11
|
erstellt am: 14. Jan. 2025 07:57 <-- editieren / zitieren --> Unities abgeben:          Nur für holt
Pssst! Wollte die Euphorie bewusst flach halten, sonst kommt noch jemand auf die Idee die Makros zu "schützen". Vielleicht hüpft ja in einer zukünftigen Version doch noch die ein oder andere neue Funktion da rein. Es geschehen ja noch Wunder heutzutage, siehe PKG/ZIP Anpassung in der 20.7er.
------------------ Viele Grüße Felix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
holt Mitglied Systembetreuer CAD
  
 Beiträge: 719 Registriert: 07.08.2003 Lenovo ThinkStation P360 Core i7-12700@2.10 GHz, 32GB NVIDIA RTX A2000 12 GB Creo Elements/Direct Modeling 20.5 Creo Elements/Direct Drafting 20.5 Creo Elements/Direct ModelManager 20.5
|
erstellt am: 15. Jan. 2025 14:16 <-- editieren / zitieren --> Unities abgeben:         
Mir scheint ich habe hier etwas verpasst. Kanns sein, dass man keine Email Benachrichtigungen mehr bekommt, wenn man das grüne Häkchen bei einem Beitrag angeklickt hat? Eure Ausführungen sind ja wieder einmal Top. Und die Info mit den DOCU* Befehlen ist Goldes Wert! Vielen Dank! Da müsste ich ja nochmals 10 Us vergeben! Ich versuche mal, ob das geht. Habs probiert, geht scheinbar leider nicht. Daher auf diesem Weg: Finde leider den 10Us Smielie nicht. Aber das geht auch. ------------------ Gruß aus dem Salzkammergut Thomas [Diese Nachricht wurde von holt am 15. Jan. 2025 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
holt Mitglied Systembetreuer CAD
  
 Beiträge: 719 Registriert: 07.08.2003 Lenovo ThinkStation P360 Core i7-12700@2.10 GHz, 32GB NVIDIA RTX A2000 12 GB Creo Elements/Direct Modeling 20.5 Creo Elements/Direct Drafting 20.5 Creo Elements/Direct ModelManager 20.5
|
erstellt am: 17. Jan. 2025 10:00 <-- editieren / zitieren --> Unities abgeben:         
|