kun123322 发表于 2024-12-25 09:26:42

大佬们LISP提取三维实体的体积

本帖最后由 kun123322 于 2024-12-25 09:40 编辑

怎么搞,实体的体积啊,entget 没有要用的东西,用massprop怎么取啊






















kozmosovia 发表于 2024-12-25 09:35:38

copyhistory解析,或者vla-get

xyp1964 发表于 2024-12-25 09:41:24

(vla-get-Volume(vlax-ename->vla-object (car(entsel"\n选择三维实体: "))))

ocoipw 发表于 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

wx302008008 发表于 2025-2-15 18:18:38

(Vlax-Get (Vlax-Ename->Vla-Object (car (entsel))) 'Volume )
页: [1]
查看完整版本: 大佬们LISP提取三维实体的体积