;;--------------------------------------------------------------------------* ;; Copyright 2003 DC4 Technisches Büro GmbH * ;; * ;;--------------------------------------------------------------------------* (in-package :custom) (use-package :OLI) ;;--------------------------------------------------------------------------* (sd-defdialog 'dc4-normteil-dichte-dialog :dialog-title "Gewicht" :variables '( (teil :selection (*sd-object-seltype*) ;;:multiple-items t :show-select-menu t :prompt-text "Teil oder Baugruppe angeben" :title "Teil" :initial-value nil ) (masse :value-type :number :prompt-text "Gewicht angeben" :title "Gewicht" ) (einh :range ((1000 :label "kg") (1 :label "g") (1000000 :label "t")) :title "Einheit" ) (next :push-action (sd-call-cmds (next-action)) ) ) :local-functions '((next-action () (dc4-make-normteil-density teil masse einh) ) ) :ok-action '(sd-call-cmds (dc4-make-normteil-density teil masse einh)) ) ;;--------------------------------------------------------------------------* (defun dc4-make-normteil-density (teil masse einh) (let (name akt_teil vol dichte) (setf name (sd-inq-obj-pathname teil)) (setf akt_teil (sd-inq-curr-part)) (create_part :name "dc4_dummy" :owner "/") (if (not (sd-inq-obj-children teil)) (setf vol (sd-call-cmds (get_vol_prop :for_part :part teil :select_done :volume))) (setf vol (sd-call-cmds (get_vol_prop :for_part :assembly teil :select_done :volume))) );;if (delete_3d "/dc4_dummy") (setf masse (* einh masse)) (setf dichte (/ masse vol)) (dc4-put-density-on-part teil dichte) (if akt_teil (current_part (sd-inq-obj-pathname akt_teil)) nil );;if );;let ) (defun dc4-put-density-on-assy (teil_bgr dichte) (let () (dc4-put-density-on-part teil_bgr dichte) ) ;; let ) (defun dc4-put-density-on-part (teil_bgr dichte) (let (teiletyp kind kinder) (setf teiletyp (sel_item-type teil_bgr)) (if (equal teiletyp *sd-part-seltype*) (progn (sd-call-cmd (set_part_base_density :parts (sd-inq-obj-pathname teil_bgr) :dens dichte)) (sd-call-cmd (set_part_inst_density :parts (sd-inq-obj-pathname teil_bgr) :dens dichte)) );;progn ;; else (when (equal teiletyp *sd-assembly-seltype*) (progn (setf kinder (sd-inq-obj-children teil_bgr)) (dolist (kind kinder) (dc4-put-density-on-part kind dichte) ) ;; dolist ) ;; progn ) ;; when ) ;; if ) ;; let )