| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
Autor
|
Thema: LISP: Variable prüfen - enthält Baugruppe (1060 mal gelesen)
|
holt Mitglied Systembetreuer CAD
Beiträge: 713 Registriert: 07.08.2003 Corei7 3770K, Win7-64, 16GB PNY Quadro 2000K CoCreate Modeling 18.10 CoCreate Drafting 18.10 CoCreate ModelManager 18.10
|
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: 713 Registriert: 07.08.2003 Corei7 3770K, Win7-64, 16GB PNY Quadro 2000K CoCreate Modeling 18.10 CoCreate Drafting 18.10 CoCreate ModelManager 18.10
|
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: 713 Registriert: 07.08.2003 Corei7 3770K, Win7-64, 16GB PNY Quadro 2000K CoCreate Modeling 18.10 CoCreate Drafting 18.10 CoCreate ModelManager 18.10
|
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 Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build19044.2364 ● Drafting V17~V20.5.1 ● Modeling V17~V20.5.1
|
erstellt am: 29. Apr. 2009 20:34 <-- editieren / zitieren --> Unities abgeben: Nur für holt
|
| Berechnungsingenieur CAE-Automotive (m/w/d) | Die CAIQ GmbH schafft einzigartige Lösungen, um die virtuellen Produktentwicklungsprozesse zu optimieren. Dabei arbeiten wir an der funktionalen Absicherung komplexer Produkte mittels computergestützter Methoden, die unsere hochqualifizierten und innovativen Ingenieur:innen entwickeln und anwenden. Diese Methoden werden durch unsere Software in einfach anzuwendende Applikationen eingebettet. Die Offenheit unserer Software ermöglicht die Integration nahezu beliebiger Softwareprodukte.... | Anzeige ansehen | Fahrzeugtechnik |
|
holt Mitglied Systembetreuer CAD
Beiträge: 713 Registriert: 07.08.2003 Corei7 3770K, Win7-64, 16GB PNY Quadro 2000K CoCreate Modeling 18.10 CoCreate Drafting 18.10 CoCreate ModelManager 18.10
|
erstellt am: 01. Mai. 2009 15:08 <-- editieren / zitieren --> Unities abgeben:
|