(in-package :greskamp) (use-package :OLI) (export 'nach_einer_Farbe_anzeigen) (sd-defdialog 'nach_einer_Farbe_anzeigen :dialog-title "nach Farbe anzeigen" :toolbox-button t ;;:dialog-control :sequential :variables '( (Baugruppe1 :value-type :assembly :multiple-items nil :title "oberste Baugruppe auswählen" :prompt-text "Auswahl der obersten Baugruppe in der gesucht werden soll" :initial-value nil ;keine automatische auswahl :modifies nil ) (sel_Teil_mit_Farbe :title "Teil wählen" :value-type :part :prompt-text "Bitte wählen Sie ein Teil mit der entsprechenden Farbe aus" :multiple-items nil :initial-value nil ;keine automatische auswahl :modifies nil :face-part-allowed t ) );ende variables :local-functions '( ;(next_action (sel_Biegung sel_Oberwerkzeug) ); ende local functions :cancel-action '() :ok-action '(Farbe_ausgeben sel_Teil_mit_Farbe Baugruppe1) ); ende sd-defdialog (defun Farbe_ausgeben (sel_Teil_mit_Farbe Baugruppe1) (setq gewuenschte_Farbe (sd-inq-part-color sel_Teil_mit_Farbe :realized)) (SETQ A_TREE (inq-obj-tree-list Baugruppe1)) (setq PART_Liste ()) ;(display gewuenschte_Farbe) (dolist (ITEM A_TREE) (IF (AND (sd-inq-part-p ITEM) (NOT (sd-inq-face-part-p ITEM)) (EQUAL (sd-inq-part-color ITEM :realized) gewuenschte_Farbe )) (setq PART_Liste (cons ITEM PART_Liste)) ) ; ende if ) ;dolist (progn (IF (> (length PART_Liste) 0) (sd-call-cmds (clear_vp (oli::sd-inq-current-vp))) ) ;ende if (dolist (ITEM PART_Liste) (sd-call-cmds (add_to_vp_drawlist (oli::sd-inq-current-vp) :with-wp ITEM)) ) ; ende dolist ) ; ende progn ) (defun inq-obj-tree-list (obj) (cons obj (apply #'nconc (mapcar #'inq-obj-tree-list (sd-inq-obj-children obj)))))