(in-package :custom) (use-package :oli) #| **NOTE** If you don't already have a default part density set here's the command SET_DEFAULT_PART_DENSITY |# ;;;; =================================================================================================================== (sd-defdialog 'sd_reset_all_random_densities ;;;; =================================================================================================================== :dialog-title "Reset Random Densities" :without-show t :toolbox-button t :after-initialization '(sd_reset_random_densities ) :local-functions '( (sd_reset_random_densities () ;;Create an empty list (setf ChgPrtDnst "" Counter 0) ;;Define the top level part (setf TopAssy (ai-inq-obj-tree-list (sd-pathname-to-obj "/")) ) (delete (first TopAssy) TopAssy) ;; "/" ;;Now lets run through the top assembly checking each parts density (dolist (child TopAssy) ;;First, we are only interested in parts (when (equal (sd-inq-part-p child) t) ;;Now check to see if the part is read-only or not... (if (sd-inq-obj-contents-read-only-p child) (sd-set-obj-contents-read-only child nil) );if ;;Delete any Instance density (sd-call-cmds (set_part_inst_density :parts child :dens :off )) ;;Now get the part's current density (setf PartDens (sd-write-to-string(sd-inq-part-density child :contents)10) ) ;;This is the conversion and default density (setf DenCnvrt 0.0276799047102 ;;Converts it to lb\in^3 DfltDens (sd-inq-default-part-density) ) ;;Now lets check it against known densities that we use (cond ((equal PartDens (sd-write-to-string(* DenCnvrt 0.0980)10)) (print(format nil "~A Has a Aluminum Density" (sd-inq-obj-basename child) )) ) ((equal PartDens (sd-write-to-string(* DenCnvrt 0.3100)10)) (print(format nil "~A Has a Brass Density" (sd-inq-obj-basename child) )) ) ((equal PartDens (sd-write-to-string(* DenCnvrt 0.2400)10)) (print(format nil "~A Has a Chome Carbide Density" (sd-inq-obj-basename child) )) ) ((equal PartDens (sd-write-to-string(* DenCnvrt 0.6200)10)) (print(format nil "~A Has a Tungston Carbide Density" (sd-inq-obj-basename child) )) ) ((equal PartDens (sd-write-to-string(* DenCnvrt 0.3240)10)) (print(format nil "~A Has a Copper Density" (sd-inq-obj-basename child) )) ) ((equal PartDens (sd-write-to-string(* DenCnvrt 0.0939)10)) (print(format nil "~A Has a Glass Density" (sd-inq-obj-basename child) )) ) ((equal PartDens (sd-write-to-string(* DenCnvrt 0.2840)10)) (print(format nil "~A Has a Iron Density" (sd-inq-obj-basename child) )) ) ((equal PartDens (sd-write-to-string(* DenCnvrt 0.4100)10)) (print(format nil "~A Has a Lead Density" (sd-inq-obj-basename child) )) ) ((equal PartDens (sd-write-to-string(* DenCnvrt 0.0513)10)) (print(format nil "~A Has a Plastic Density" (sd-inq-obj-basename child) )) ) ((equal PartDens (sd-write-to-string(* DenCnvrt 0.0403)10)) (print(format nil "~A Has a Rubber Density" (sd-inq-obj-basename child) )) ) ((equal PartDens (sd-write-to-string(* DenCnvrt 0.2836)10)) (print(format nil "~A Has a Carbon steel Density" (sd-inq-obj-basename child) )) ) ((equal PartDens (sd-write-to-string(* DenCnvrt 0.2891)10)) (print(format nil "~A Has a Stainless Density" (sd-inq-obj-basename child) )) ) ((equal PartDens (sd-write-to-string(* DenCnvrt 0.1600)10)) (print(format nil "~A Has a Titanium Density" (sd-inq-obj-basename child) )) ) ((equal PartDens (sd-write-to-string(* DenCnvrt 0.3050)10)) (print(format nil "~A Has a Weld nickle Density" (sd-inq-obj-basename child) )) ) ((equal PartDens (sd-write-to-string(* DenCnvrt 0.2580)10)) (print(format nil "~A Has a Zinc Density" (sd-inq-obj-basename child) )) ) (t(progn ;(print PartDens) (sd-call-cmds (set_part_base_density :parts child :dens DfltDens )) (setf Counter 1) ));t-progn );cond );when ;;Add it to the list (when (= Counter 1) (setf NewPart (format nil "~% >> ~A" (sd-inq-obj-pathname child) )) (setf ChgPrtDnst (format nil "~A~A" ChgPrtDnst NewPart)) (setf Counter 0) );when );dolist ;;Now show a log if there is something (print (length ChgPrtDnst)) (if (> (length ChgPrtDnst) 1) (display(format nil "These part's densities have been changed to default...~A" ChgPrtDnst )) (sd-display-alert "No part densities were changed" :icon :info) );when );sd_reset_random_densities );local-functions );sd-defdialog