;;;MASS.lsp ;;;-------------------------------------------------------------------- ;;;Author: Dipl.eng. GYARMATHY ATTILA ;;;E-mail: gyattila@rdslink.ro gyattila@hotmail.com ;;;About: Calculate mass of AutoCAD 3D solids. ;;; Working good with AutoCAD14 - 2000. ;;;-------------------------------------------------------------------- (textscr) (prompt "\n \n Mass.lsp program successfully loaded. \n To calculate 3D solids mass do these: \n - use MASS command \n - choose a material from list \n - select solid objects \n To hide this screen press F2. \n" ) (defun *error* (msg) (princ msg) (setvar "dimzin" $dim) (setvar "CMDECHO" cmd) (princ) ) (defun c:mass (/ versio versval $dim cmd densitate mat ro ss1 l j solnum flist ename fisier i citire lungsir verificare volum masa masser volser roser ) (setq version (getvar "ACADVER")) (setq versval (atof version)) (setq $dim (getvar "dimzin")) (setvar "dimzin" 8) (setq cmd (getvar "CMDECHO")) (setvar "CMDECHO" 0) (setvar "luprec" 3) (initget "H W S A C B Z I L N") (initget "Hartholz Weichholz Stahl Aluminium Kupfer Messing Zink Zinn Blei Nickel" ) (setq densitate (getkword "\nChoose material Hartholz/Weichholz/Aluminium/Kupfer/Messing/Zink/Zinn/Blei/Nickel/:" ) ) (cond ((or (= densitate "Hartholz") (= densitate "H")) (setq ro 8.00) (setq mat "Hartholz") ) ((or (= densitate "Weichholz") (= densitate "W")) (setq ro 6.00) (setq mat "Weichholz") ) ((or (= densitate "Aluminium") (= densitate "A")) (setq ro 2.70) (setq mat "Aluminium") ) ((or (= densitate "Kupfer") (= densitate "K")) (setq ro 8.93) (setq mat "Kupfer") ) ((or (= densitate "Messing") (= densitate "M")) (setq ro 8.80) (setq mat "Messing") ) ((or (= densitate "Zink") (= densitate "Z")) (setq ro 7.14) (setq mat "ZinK") ) ((or (= densitate "Zinn") (= densitate "I")) (setq ro 7.29) (setq mat "Zinn") ) ((or (= densitate "Blei") (= densitate "B")) (setq ro 11.34) (setq mat "Blei") ) ((or (= densitate "Nickel") (= densitate "N")) (setq ro 8.86) (setq mat "Nickel") ) (T (setq ro 7.85) (setq mat "Stahl") ) ) (setq ss1 (ssget)) (if (= ss1 nil) (exit) ) (setq l (sslength ss1)) (setq j 0) (setq solnum 0) (while (/= j l) (setq flist (entget (ssname ss1 j))) (setq ename (cdr (assoc 0 flist))) (if (= ename "3DSOLID") (setq solnum (+ solnum 1)) ) (setq j (1+ j)) ) (if (= solnum 0) (progn (alert "\nNo solids selected!") (exit) ) ) (command "massprop" ss1 "" "y" "C:/temp/MASS.mpr") (setq fisier (open "C:/TEMP/MASS.mpr" "r")) (setq i 1) (while (not (equal i 5)) (setq citire (read-line fisier)) (setq i (1+ i)) ) (setq lungsir (strlen citire)) (setq verificare (substr citire 26 (- lungsir 26))) (close fisier) (setq volum (atof verificare)) (setq masa (* (* volum ro) 1)) (setq masser (rtos masa 2 3)) (setq volser (rtos volum 2 3)) (setq roser (rtos ro 2 3)) (alert (strcat "CONCLUSION" "\n" "\nMaterial :\t" mat "\nMass :\t" masser " kg" "\nVolume :\t" volser " m^3" "\nDensity :\t" roser " to/m^3" "\n_________________________________" "\n" "\nŠ 2002 Gyarmathy Attila. All right reserved" ) ) (if (>= versval 15.0) (progn (vl-file-delete "c:/MASS.mpr") ) (progn (command "shell" (strcat "del \\MASS" ".mpr")) ) ) (setvar "CMDECHO" cmd) (setvar "dimzin" $dim) (princ) )