;;; MASS.lsp bzw MASSE.LSP (DE) ;;;--------------------------------------------------------------------- ;;; 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. ;;;--------------------------------------------------------------------- ;;; Version 1.02 Original von Dipl.eng. GYARMATHY ATTILA ;;; Anpassungen Version 1.02 ;;; Getestet mit AutoCAD 200X (DE) von Proxy & Tunnelbauer ;;; *g* Support bei CAD.DE *g* ;;;--------------------------------------------------------------------- (defun c:mass(/ dcl_id ) (setq dcl_id (load_dialog "masse.dcl")) (if (not (new_dialog "testdialog" dcl_id) ) (exit)) (prompt "\n \n MASSE.LSP erfogreich geladen. \n Für die Berechnug von 3D-Solids: \n - Befehl MASSE eingeben, Material und Objekte auswählen. \n" ) (setq densitate "S") (setq ro 7.85) (setq mat "Stahl") (setq version (getvar "ACADVER")) (setq versval (atof version)) (setq $dim (getvar "dimzin")) (setvar "dimzin" 8) (setq cmd (getvar "CMDECHO")) (setq oldluprec (getvar "luprec")) (setvar "CMDECHO" 0) (setvar "luprec" 3) ;;;3 (action_tile "H" "(setq densitate \"H\")") (action_tile "S" "(setq densitate \"S\")") (action_tile "W" "(setq densitate \"W\")") (action_tile "K" "(setq densitate \"K\")") (action_tile "M" "(setq densitate \"M\")") (action_tile "Z" "(setq densitate \"Z\")") (action_tile "I" "(setq densitate \"I\")") (action_tile "B" "(setq densitate \"B\")") (action_tile "N" "(setq densitate \"N\")") (action_tile "A" "(setq densitate \"A\")") (action_tile "HG" "(setq densitate \"HG\")") (action_tile "WG" "(setq densitate \"WG\")") (action_tile "E" "(setq densitate \"E\")") (action_tile "accept" "(done_dialog)") (action_tile "cancel" "(done_dialog) (exit)") (start_dialog) (unload_dialog dcl_id) (princ) ;;; Alle Werte = kg/dm³ (cond ((or (= densitate "Hartgummi") (= densitate "HG")) (setq ro 1.4) (setq mat "Hartgummi") ) ((or (= densitate "Weichgummi") (= densitate "WG")) (setq ro 1.1) (setq mat "Weichgummi") ) ((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") ) ((or (= densitate "Dichte=1") (= densitate "E")) (setq ro 1) (setq mat "Dichte=1") ) (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 "\nKeine gültigen Solids ausgewählt !") (exit) ) ) (command "_massprop" ss1 "" "_y" "C:/MASSE.MPR") (setq fisier (open "C:/MASSE.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 24 (- lungsir 24))) (close fisier) ;;;Einfacher gehts bestimmt (setq volum (* (atof verificare) 0.000000001)) ;;; Umrechnungsfaktor für ZE/RE (setq masa (* (* volum ro) 1000)) (setq masser (rtos masa 2 6)) (setq volser (rtos volum 2 6)) (setq roser (rtos ro 2 6)) ;;; Berechnung Traegheitsmoment (command "_massprop" ss1 "" "_y" "C:/MASSE.MPR") (setq fisier (open "C:/MASSE.MPR" "r")) (setq i 1) (while (not (equal i 13)) (setq trae (read-line fisier)) (setq i (1+ i)) ) (setq lungsir (strlen trae)) (setq trae1 (substr trae 25 (- lungsir 25))) (close fisier) (setq trae2 (* (atof trae1) 0.000000001)) ;;; Umrechnungsfaktor für ZE/RE (setq tra (* (* trae2 ro) 1000)) (setq tr (rtos tra 2 2)) (alert (strcat "\tK o n k l u s i o n" "\n" "\nVolumen:\t\t" volser " m³" "\nMasse:\t\t" masser " kg" "\n\nMaterial:\t\t" mat "\nDichte:\t\t" roser " kg/dm³" "\nMassenträgheitsmoment:\t" tr " kg mm²" "\nACHTUNG!! BKS mit X-Achse Schwerpunkt setzen !! \n" "\n_________________________________" "\n" "\n© 2002 Gyarmathy Attila. All right reserved." "\n" "\nAnpassung(en) von: Proxy & Tunnelbauer (CAD.DE)" "\nund: -- Ralfi -- " ) ) (if (>= versval 15.0) (progn (vl-file-delete "C:/MASS.mpr") ) (progn (command "shell" (strcat "del \\MASS" ".mpr")) ) ) (setvar "LUPREC" oldluprec) (setvar "CMDECHO" cmd) (setvar "dimzin" $dim) (princ) )