;;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;; os 26.09.2002 ;; 1 - Logical Table fuer Material und Dichte ;; 2 - Zuordnen von Dichte und Farbe - auch fuer Normteile ;; MM : von _inst_ nach _base_ geaendert - Dichte und Farbe soll im Teil und nicht ;; in der Baugruppe gespeichert werden 18.03.2004 ;; 3 - Sucht in Baugruppen oder unter Root nach Teilen mit einer bestimmten Dichte ;;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (in-package :GD-package) (use-package :OLI) (sd-create-logical-table "Dichte-Farbe-Liste" :columns '(:Benennung :Dichte_1 :Abk :Dichte :Farbe2) :columnNames (sd-multi-lang-string '("Material" "kg/dm^3" "-" "g/mm^3" "Farbe2") :german '("Material" "kg/dm^3" "-" "g/mm^3" "Farbe2") );;sd-multi-lang-string :types '(:string :string :string :mass :string) :units '(nil nil nil :g nil) :contents (sd-multi-lang-string '(("Aluminum" "2,75" "Al" 0.00275 "1,0,0") ("Bronze" "8,45" "CuSn" 0.00845 "1,0,0") ("Magnesium" "1,89" "Mg" 0.00189 "1,0,0") ("Brass" "8,50" "CuZn" 0.0085 "1,0,0") ("Steel" "7,85" "St" 0.00785 "1,0,0") ("Titan" "4,50" "Ti" 0.0045 "1,0,0") ("Zinc" "7,14" "Zn" 0.00714 "1,0,0") ("ABS/PS/SB" "1,00" "ABS/PS/SB" 0.001 "1,0,0") ("HD-PE" "0,96" "HD-PE" 0.00096 "1,0,0") ("laminated Paper" "1,40" "Hp/Hgw" 0.0014 "1,0,0") ("PA" "1,13" "PA" 0.00113 "1,0,0") ("PC" "1,20" "PC" 0.0012 "1,0,0") ("PMMA" "1,18" "PMMA" 0.00118 "1,0,0") ("POM/PVC" "1,40" "POM/PVC" 0.0014 "1,0,0") ("PP" "0,90" "PP" 0.0009 "1,0,0") ("PTFE" "2,20" "PTFE" 0.0022 "1,0,0") ("PU-Compact" "1,30" "PU-C" 0.0013 "1,0,0") ("PU-Foam" "0,59" "PU-F" 0.00059 "1,0,0") ("Glass" "2,50" "Glas" 0.0025 "1,0,0") ) :german '(("Aluminium" "2,75" "Al" 0.00275 "1,0,0") ("Bronze" "8,45" "CuSn" 0.00845 "1,0,0") ("Magnesium" "1,89" "Mg" 0.00189 "1,0,0") ("Messing" "8,50" "CuZn" 0.0085 "1,0,0") ("Stahl" "7,85" "St" 0.00785 "1,0,0") ("Titan" "4,50" "Ti" 0.0045 "1,0,0") ("Zink" "7,14" "Zn" 0.00714 "1,0,0") ("ABS/PS/SB" "1,00" "ABS/PS/SB" 0.001 "1,0,0") ("HD-PE" "0,96" "HD-PE" 0.00096 "1,0,0") ("Hartpapier" "1,40" "Hp/Hgw" 0.0014 "1,0,0") ("PA" "1,13" "PA" 0.00113 "1,0,0") ("PC" "1,20" "PC" 0.0012 "1,0,0") ("PMMA" "1,18" "PMMA" 0.00118 "1,0,0") ("POM/PVC" "1,40" "POM/PVC" 0.0014 "1,0,0") ("PP" "0,90" "PP" 0.0009 "1,0,0") ("PTFE" "2,20" "PTFE" 0.0022 "1,0,0") ("PU-Kompakt" "1,30" "PU-C" 0.0013 "1,0,0") ("PU-Schaum" "0,59" "PU-F" 0.00059 "1,0,0") ("Glas" "2,50" "Glas" 0.0025 "1,0,0" ) ("LEXAN glasklar" "1,20" "LEXAN" 0.0012 "1,0,0" ) ("Noppenplatte USM4000" "1,40" "Noppenplatte" 0.0014 "1,0,0" ) ("SUSTAMID PA6" "1,14" "SUSTAMID" 0.00114 "1,0,0" ) ("POLYSTONE Platte EXTR" "0,95" "POLYSTONE" 0.00095 "1,0,0" ) ("GD-Platte/Gummiplatte" "1,30" "GD-Platte/Gummiplatte" 0.0013 "1,0,0" ) ) );;sd-multi-lang-string );;sd-create-logical-table ;;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (sd-create-display-table "Material-Dichte-Liste" :tableTitle (sd-multi-lang-string "Material and Density" :german "Material und Dichte") :logicalTable "Dichte-Farbe-Liste" :columns '(:Benennung :Dichte_1 :Abk :Dichte :Farbe2) :applyColumns '(:Abk :Dichte :Farbe2) :displayHeight 350 :filterStatusLine nil :selectionMode :single-row :applyAction :default-tokens );;sd-create-display-table ;;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (sd-create-display-table "Dichte-Liste" :tableTitle (sd-multi-lang-string "Material and Density" :german "Material und Dichte") :logicalTable "Dichte-Farbe-Liste" :columns '(:Benennung :Dichte_1 :Abk :Dichte :Farbe2) :applyColumns '(:Dichte) :displayHeight 350 :filterStatusLine nil :selectionMode :single-row :applyAction :default-tokens );;sd-create-display-table ;;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;; 1 - Zuordnen von Dichte und Farbe - auch fuer Normteile (sd-defdialog 'dichte_waehlen :dialog-title (sd-multi-lang-string "Density" :german "Dichte") :variables '( (UI_PART :value-type :part :modifies nil :multiple-items t :title (sd-multi-lang-string "Part" :german "Teil") ) (ABK :value-type :string :title (sd-multi-lang-string "Material" :german "Material") :show-input-tool (sd-show-display-table "Material-Dichte-Liste" :position '("TOP-MENU-TOOLBOX-TB" :lefttop 70 50)) :hide-input-tool (sd-hide-display-table "Material-Dichte-Liste" :ignorePin t) :prompt-text (sd-multi-lang-string "Specify Material" :german "Material auswaehlen") );;ABK (DICHTE :value-type :positive-number :title (sd-multi-lang-string "Density" :german "Dichte") :prompt-text (sd-multi-lang-string "Specify Denstiy" :german "Dichte eingeben") ) (Farbe2 :value-type :string :toggle-type :invisible :after-input (progn (sd-set-variable-status "FARBE" :value (sd-rgb-to-color (read-from-string Farbe2))) (setq FARBE (sd-rgb-to-color (read-from-string Farbe2))) ) ) (FARBE :value-type :rgb-color :title (sd-multi-lang-string "Color" :german "Farbe") ;:after-input (display FARBE) ) ("Grundeigenschaften") ;; leider nicht mehrsprachig (AKTION_1 :value-type :boolean :toggle-type :wide-toggle :title (sd-multi-lang-string "Density" :german "Dichte") :initial-value t ) (AKTION_2 :value-type :boolean :toggle-type :wide-toggle :title (sd-multi-lang-string "Density & Color" :german "Dichte & Farbe") :initial-value nil ) ("") (AKTIONSSCHALTER :title (sd-multi-lang-string "apply" :german "zuordnen") :toggle-type :wide-toggle :push-action (sd-call-cmds (l-dichte-action)) );;AKTIONSSCHALTER );;variables :mutual-exclusion '(AKTION_1 AKTION_2) :local-functions '( (l-dichte-action () (progn (sd-call-cmds (set_part_base_density :parts UI_PART :dens DICHTE));; von _inst_ nach _base_ geaendert (when AKTION_2 (sd-call-cmds (set_part_base_color :parts UI_PART :color FARBE));; von _inst_ nach _base_ geaendert ) ) );;l-dichte-action );;local-functions :ok-action '() );;sd-defdialog ;;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;; 3 - Sucht in Baugruppen oder unter Root nach Teilen mit einer bestimmten Dichte (in-package :GD-package) (use-package :OLI) (sd-defdialog 'dichte-suchen-dialog :dialog-title (sd-multi-lang-string "Density = 1?" :german "Dichte = 1?") :variables '( ;;local (back-state :initial-value nil) ;;dialog (bgr :value-type :assembly :title (sd-multi-lang-string "Assembly" :german "Baugruppe") :prompt-text (sd-multi-lang-string "Specify Assembly" :german "Baugruppe angeben") :modifies nil );;bgr (dichte :value-type :positive-number :title (sd-multi-lang-string "Density" :german "Dichte") :show-input-tool (sd-show-display-table "Dichte-Liste" :position '("TOP-MENU-TOOLBOX-TB" :lefttop 70 50)) :hide-input-tool (sd-hide-display-table "Dichte-Liste" :ignorePin t) :prompt-text (sd-multi-lang-string "Specify Density" :german "Dichte eingeben") :initial-value 1 );;dichte (beschr :value-type :boolean :toggle-type :wide-toggle :title (sd-multi-lang-string "Label" :german "Beschriften") :initial-value t );;beschr (keep :value-type :boolean :toggle-type :wide-toggle :title (sd-multi-lang-string "keep Label" :german "Beschriftung behalten") :initial-value nil );;keep (next :title (sd-multi-lang-string "Find" :german "Suchen") :toggle-type :wide-toggle :push-action (sd-call-cmds (next-action)) );;next ) :local-functions '((next-action () (when (and back-state (not keep)) (progn (sd-return-to-model-checkpoint back-state) (setf back-state nil) );;progn );;when (if (and bgr dichte) (progn (setf back-state (sd-set-model-checkpoint)) (suche-dichte-in-bgr bgr dichte beschr) );;progn (sd-display-error (sd-multi-lang-string "Not all necessary inputs are specified!" :german "Es wurden nicht alle erforderlichen Eingaben gemacht!") );;sd-display-error );;if ) ) :cleanup-action '(when (and back-state (not keep)) (sd-return-to-model-checkpoint back-state)) :ok-action '() :help-action '() ) ;; durchsucht alle Teile nach der Dichte (dichte) und gibt eine ;; entsprechende Liste mit allen Teilen mit der entsprechende ;; Dichte aus! (defun suche-dichte-in-bgr (teil_bgr dichte beschr) (let (teiletyp kind kinder teilgenau txt) (setf teiletyp (sel_item-type teil_bgr)) (if (equal teiletyp *sd-part-seltype*) (progn (when (not (sd-inq-empty-part-p teil_bgr)) (progn (setf teildichte (sd-inq-part-density teil_bgr)) (if (= dichte teildichte) (progn (if (sd-inq-obj-contents-read-only-p teil_bgr) (display (sd-multi-lang-string (format nil "Density ~,,,,,,'EG: ~a (read only)" teildichte (sd-inq-obj-pathname teil_bgr)) :german (format nil "Dichte ~,,,,,,'EG: ~a (read only)" teildichte (sd-inq-obj-pathname teil_bgr)) );;sd-multi-lang-string );;display (display (sd-multi-lang-string (format nil "Density ~,,,,,,'EG: ~a" teildichte (sd-inq-obj-pathname teil_bgr)) :german (format nil "Dichte ~,,,,,,'EG: ~a" teildichte (sd-inq-obj-pathname teil_bgr)) );;sd-multi-lang-string );;display );;if (if beschr (progn (setf txt (format nil "Dichte ~,,,,,,'EG" teildichte)) (when (not (sd-inq-obj-contents-read-only-p teil_bgr)) (cocreate_3d_note :action :create :note txt :items teil_bgr) );;when );;progn nil );;if );;progn nil );;if );;progn );;when );;progn ;; else (when (equal teiletyp *sd-assembly-seltype*) (progn (setf kinder (sd-inq-obj-children teil_bgr)) (dolist (kind kinder) (suche-dichte-in-bgr kind dichte beschr) ) ;; dolist ) ;; progn ) ;; when ) ;; if ) ;; let )