| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
| |
 | Wichtige Änderung bei Lizenzverlängerungen von PTC, eine Pressemitteilung
|
Autor
|
Thema: LISP: Variable prüfen - enthält Baugruppe (1187 mal gelesen)
|
holt Mitglied Systembetreuer CAD
  
 Beiträge: 720 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: 29. Apr. 2009 07:02 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich glaube ich stehe momentan auf der Leitung. Ich möchte bei einer Dialog-Variable mit Mehrfach-Auswahl prüfen ob Baugruppen enthalten sind und damit eine andere Variable aktiv oder inaktiv setzen. Ich habe dazu folgenden etwas länglichen Code geschrieben: (nur das Codeschnipsel)
Code:
(Teile :title "Teil/Bgr" :value-type :Part-assembly :multiple-items t :wire-part-allowed t :face-part-allowed t :with-container t :initial-value nil :after-input (let (bgr) (setq bgr nil) (if (listp Teile) (when (find t Teile :test #'(lambda (a b) (if (sd-inq-assembly-p b) t nil))) (setq bgr t) ) (when (sd-inq-assembly-p Teile) (setq bgr t) ) ) (if bgr (progn (setq rekursiv nil) (sd-set-variable-status 'rekursiv :enable t) ) (progn (setq rekursiv nil) (sd-set-variable-status 'rekursiv :enable nil) ) ) ) )
Da gibts doch sicherlich eine kürzere und elegantere Möglichkeit, oder? ------------------ Gruß aus dem Salzkammergut Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
     
 Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 29. Apr. 2009 07:21 <-- editieren / zitieren --> Unities abgeben:          Nur für holt
Erster Versuch: Code:
(Teile :title "Teil/Bgr" :value-type :Part-assembly :multiple-items t :wire-part-allowed t :face-part-allowed t :with-container t :initial-value nil :after-input (progn (setq rekursiv nil) (if (find-if #'sd-inq-assembly-p Teile) (sd-set-variable-status 'rekursiv :enable t) (sd-set-variable-status 'rekursiv :enable nil))))
------------------ CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/
[Diese Nachricht wurde von clausb am 29. Apr. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
holt Mitglied Systembetreuer CAD
  
 Beiträge: 720 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: 29. Apr. 2009 07:50 <-- editieren / zitieren --> Unities abgeben:         
Super! Danke! 10x10 Us für die tolle Lösung und die schnelle Reaktion! Sehr übersichtlich und macht genau das was ich wollte. Wenn man deinen Code betrachtet fällt auf, dass mein Code auch kürzer möglich gewesen wäre (z.B. das doppelte (setq rekursiv nil), ...) Aber so kompakt hätte ich das wohl nie hingebracht. find-if - muss man sich merken. Hätte ich mir die Prüfung auf Liste auch mit find sparen könnnen? ------------------ Gruß aus dem Salzkammergut Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
     
 Beiträge: 2914 Registriert: 20.12.2000 Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.
|
erstellt am: 29. Apr. 2009 07:59 <-- editieren / zitieren --> Unities abgeben:          Nur für holt
|
holt Mitglied Systembetreuer CAD
  
 Beiträge: 720 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: 29. Apr. 2009 08:31 <-- editieren / zitieren --> Unities abgeben:         
Ich war bisher immer der Meinung, dass bei Einzelauswahl ein einzelnes Element kommt und nur bei Mehrfachauswahl eine Liste. Hab aber gerade in der IKIT-Doku nachgelesen. Da steht drin dass man immer eine Liste bekommt wenn :multiple-items t eingestellt ist. War also wirklich überflüssig. Und jetzt weiß ich auch womit ich das verwechselt habe: Bei get_selection ist wird je nach Auswahl ein Einzelelement oder eine Liste geliefert. ------------------ Gruß aus dem Salzkammergut Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
     
 Beiträge: 2296 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.5737 ● Drafting V17~V20.7@job ● Modeling V17~V20.7@job ● Windchill 12.1.2.6@job ● UWGM Client 13.0.0.1@job ● Taschenrechner ● Stift+Zettel V8.42
|
erstellt am: 29. Apr. 2009 20:34 <-- editieren / zitieren --> Unities abgeben:          Nur für holt
|
holt Mitglied Systembetreuer CAD
  
 Beiträge: 720 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: 01. Mai. 2009 15:08 <-- editieren / zitieren --> Unities abgeben:         
|