;;-------------------------------------------------------------------------------* ;; Copyright 2017 IWG * ;; * ;;-------------------------------------------------------------------------------* ;; Dateiname: dichte_suchen_v2.lsp ;; Version : 2.0 ;; Datum : 29.03.2017 ;; Author : Gt ;;-------------------------------------------------------------------------------* ;; Version : 2.01 ;; Datum : 03.04.2017 ;; Erweitert von Mibr ;; - Auswahl Werkstoffe ;; - Liste Anzeigen ja/nein ;; - Teile Anzeigen auf Baugruppe bezogen und auf nicht gefundene/gefundene Teile ;; - Behälter ausblenden hinzugefügt ;;-------------------------------------------------------------------------------* (in-package :custom) (use-package :OLI) ;;-------------------------------------------------------------------------------* ;; dialogs * ;;-------------------------------------------------------------------------------* (sd-defdialog 'iwg-dichte-suchen-dialog :dialog-title "Dichte suchen" :after-initialization '(progn (List-action) (Werkstoff-setzen)) :toolbox-button t :variables '( (bgr :value-type :assembly :prompt-text "Baugruppe angeben" :title "Baugruppe" :modifies nil ) ("Dichte") (dichtu :value-type :number :prompt-text "unteren Wert eingeben" :title "von" ;;:initial-value nil ) (dichto :value-type :number :prompt-text "oberen Wert eingeben" :title "bis" ;;:initial-value nil ) ("Dichte von") (teil :value-type :part :prompt-text "Teil, dessen Dichte uebernommen werden soll angeben" :title "Teil" :modifies :nil :initial-value nil :initial-optional t :after-input (after-teil-action) ) (Werkst :value-type :string :prompt-text "Werkstoff wÌhlen" :title "Werkstoff" :proposals ("Stahl" "Gusseisen" "Aluminium" "Messing" "Kunstst./Gummi" "< Stahl" "> Stahl") :auto-add-proposal nil :persistent-proposals nil :initial-value "Stahl" :after-input (Werkstoff-setzen) ) ("Teile/Liste anzeigen") (nshow :value-type :boolean :toggle-type :grouped-toggle :title "n. gef. Teile" :initial-value nil :after-input (if (equal show t) (setf show nil)) ) (show :value-type :boolean :toggle-type :grouped-toggle :title "gef. Teile" :initial-value t :after-input (if (equal nshow t) (setf nshow nil)) ) (displ :value-type :boolean :toggle-type :grouped-toggle :title "Liste anzeigen" :initial-value nil :after-input (List-action) ) ("-") (hide :title "Anzeige umkehren" :toggle-type :grouped-toggle :push-action (sd-call-cmds (invert-action)) ) (hidebe :title "BehÌlter ausblenden" :toggle-type :grouped-toggle :push-action (sd-call-cmds (behaelter-action)) ) (next :title "Suchen" :toggle-type :wide-toggle :push-action (sd-call-cmds (next-action)) ) ) :local-functions '( (after-teil-action () (let () (setf dichtu (sd-inq-part-density teil :realized)) (setf dichto (sd-inq-part-density teil :realized)) );;let ) (next-action () (if (equal bgr nil) (progn (display (format nil "Baugruppe angeben!!!"))) (progn (if (equal show t) (progn (remove_from_vp_drawlist (oli::sd-inq-current-vp) :with-wp bgr)) );end if (if (equal nshow t) (progn (add_to_vp_drawlist (oli::sd-inq-current-vp) :with-wp bgr) (setf nshowva t)) (progn (setf nshowva nil)) );end if (iwg-suche-dichte-in-bgr bgr dichtu dichto show) ) ) );End next-action (invert-action () (let (sichtblist sichtb) (setf sichtblist (sd-inq-vp-drawlist-objects (oli::sd-inq-current-vp))) (uic_draw_all (oli::sd-inq-current-vp)) (dolist (sichtb sichtblist) (sd-call-cmds (remove_from_vp_drawlist (oli::sd-inq-current-vp) :with-wp sichtb)) );;dolist );;let ) (List-action () (if (equal displ t) (progn (setf distex t)) (progn (setf distex nil)) ) ) (behaelter-action () (remove_from_vp_drawlist (oli::sd-inq-current-vp) :container :recursive :all_at_top) ) (Werkstoff-setzen () (if (string= Werkst "Stahl") (progn (setf dichtu 0.0078) (setf dichto 0.0079) );end progn );end if (if (string= Werkst "< Stahl") (progn (setf dichtu 0) (setf dichto 0.00775) );end progn );end if (if (string= Werkst "> Stahl") (progn (setf dichtu 0.00795) (setf dichto 1000) );end progn );end if (if (string= Werkst "Gusseisen") (progn (setf dichtu 0.0072) (setf dichto 0.0073) );end progn );end if (if (string= Werkst "Messing") (progn (setf dichtu 0.0080) (setf dichto 0.0090) );end progn );end if (if (string= Werkst "Aluminium") (progn (setf dichtu 0.00265) (setf dichto 0.00275) );end progn );end if (if (string= Werkst "Kunstst./Gummi") (progn (setf dichtu 0.0009) (setf dichto 0.002) );end progn );end if );;end wertstoff-setzen ) :ok-action '() ;:ok-action ; '(sd-call-cmds (iwg-suche-dichte-in-bgr bgr dichtu dichto)) );;end Local ;;--------------------------------------------------------------------------* (defun iwg-suche-dichte-in-bgr (teil_bgr dichtu dichto show) (let (teiletyp kind kinder teildicht) (setf teiletyp (sel_item-type teil_bgr)) (if (equal teiletyp *sd-part-seltype*) (progn (setf teildicht (sd-inq-part-density teil_bgr)) (if (and (<= dichtu teildicht) (>= dichto teildicht)) (progn (if (equal distex t) (display (format nil "~a:~a~a" (sd-inq-obj-pathname teil_bgr) (code-char 9) teildicht)) ) (if (equal show t) (add_to_vp_drawlist (oli::sd-inq-current-vp) teil_bgr) ) (if (equal nshowva t) (remove_from_vp_drawlist (oli::sd-inq-current-vp) teil_bgr) ) );;progn nil);;if );;progn ;; else (when (equal teiletyp *sd-assembly-seltype*) (progn (setf kinder (sd-inq-obj-children teil_bgr)) (dolist (kind kinder) (iwg-suche-dichte-in-bgr kind dichtu dichto show) ) ;; dolist ) ;; progn ) ;; when ) ;; if ) ;; let ) ;;--------------------------------------------------------------------------*