- 积分
- 2317
- 明经币
- 个
- 注册时间
- 2015-2-2
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
发表于 2024-12-27 22:11:24
|
显示全部楼层
试试我编的程序。
;;求实体重量,作者:何勇
(defun c:zhonglianghe(/ bz obj lenobj sumwt sumvm i en em vlaem vm wt pt txt1)
(vl-load-com)
(setq bz
(getreal
"\n 输入实体(材料)比重:[灰铸铁:7.0,铸钢:7.8,钢材:7.85,不锈钢:7.98 紫钢:8.9,铝:2.75,聚氯乙烯:1.35~1.4,聚四氟乙烯:2.1~2.3,聚丙烯:0.9~0.91,ABS树脂:1.02~1.08,花岗岩:2.6~3,混凝土:1.8~2.45,]<7.85>"
)
)
(if (= bz nil)
(setq bz 7.85)
)
(setq obj (ssget '((0 . "3DSOLID"))));;只选择实体
(setq lenobj (sslength obj));;求选择集中的实体个数
(setq sumvm 0);;给体积和赋初值
(setq sumwt 0);;给体重量和赋初值
(setq i 0);;从0开始循环
(while (< i lenobj)
(setq en (ssname obj i));;求第i个实体的名称
(setq em (cdr (car (entget (ssname obj i)))));;从属性列表中获取对象名称
(setq vlaem (vlax-ename->vla-object em));;转换lisp对象为vla对象
(setq vm (vla-get-volume vlaem));;直接取得对象体积mm3
(setq vm1 (/ vm 1000000.0));;转换成立方分米dm3
(setq vm2 (/ vm1 1000.0));;转换成立方米m3
(setq wt (* bz vm1));;求重量kg
(setq sumvm (+ sumvm vm2));;体积累加
(setq sumwt (+ sumwt wt));;重量累加
(setq i (+ i 1));;计数器加1
)
(setq txt1 (strcat "体积=" (rtos sumvm 2 16) "m3," "重量=" (rtos sumwt 2 16) "kg"))
(setvar "cecolor" "1")
(setq pt (getpoint"\n文本起点:"))
(command "text" pt "" "" txt1)
(setvar "cecolor" "bylayer")
(prompt "\n计算结果如下:")
(princ txt1)
(princ "\n")
(prin1)
);;end zhonglianghe
|
|