问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

修改CAD测量面积、长度的LSP代码

发布网友 发布时间:2022-05-01 12:35

我来回答

3个回答

热心网友 时间:2023-10-12 13:33

;单独做一个程序amset设置字高,再把单位改一下就行了
(defun C:amset()
(setq height (getdist "\n请输入文字高度:"))
(PRINC))
(defun C:am (/ ss l i totalarea ename obj entarea)
(if (setq ss (ssget))
(progn
(vl-load-com)
(setq modelspace (vla-get-Modelspace (vla-get-activeDocument (vlax-get-acad-object))))
(setq l (sslength ss) i 0 totalarea 0 totlength 0)
(repeat l
(setq ename (ssname ss i))
(setq obj (vlax-ename->vla-object ename))
;;(vlax-mp-object obj T)
(if (vlax-property-available-p obj "area")
(setq totalarea (+ (vlax-get-property obj 'area) totalarea))
)
(if (= (cdr (assoc 0 (entget ename))) "MLINE")
(setq totlength (+ totlength (ml-length ename)))
(setq totlength (+ totlength (vlax-curve-getdistatparam ename (vlax-curve-getendparam ename))))
)
(setq i (1+ i))
)
(setq text1 (strcat "面积为: " (rtos (/ totalarea 1000000) 2 4) "平方米")
text2 (strcat "长度为: " (rtos (/ totlength 1000) 2 4) "米")
)
(if (setq insertpt (getpoint "\n请输入文字插入点: "))
(if height
(setq insertp1 (vlax-3d-point insertpt)
insertp2 (vlax-3d-point (polar insertpt (* 1.5 Pi) (* 1.5 height)))
textobj1 (vla-addtext modelspace text1 insertp1 height)
textobj2 (vla-addtext modelspace text2 insertp2 height)
)
)
)
)
)
)
(defun ml-length (ename / j d ptlist)
(foreach n (entget ename)
(if (= (car n) 11)
(setq ptlist (cons (cdr n) ptlist))
)
)
(reverse ptlist)
(setq j 0 d 0)
(repeat (1- (length ptlist))
(setq d (+ d (distance (nth j ptlist) (nth (1+ j) ptlist))))
(setq j (1+ j))
)
d
)

热心网友 时间:2023-10-12 13:34

使用下面的autolisp代码统计面积:
(defun c:mj ( / &k1 &kw1 a1 a2 ss1);统计面积
 (setvar "cmdecho" 0)
 (setvar "blipmode" 0)
 (if (null vlax-mp-object) (vl-load-com) );加载vlax函数
 (princ "\n请选择要计算面积的对象")
 (if (setq &kw1 (ssget '((0 . "POLYLINE,LWPOLYLINE,CIRCLE,ELLIPSE,SPLINE,REGION"))))
  (progn
   (setq ss1 '() a1 0.0)
   (while (setq &k1 (ssname &kw1 0))
    (setq &kw1 (ssdel &k1 &kw1))
    (if (and 
            (setq &k1 (vlax-ename->vla-object &k1));转换为vlax对象
            (null (vl-catch-all-error-p (setq a2 (vl-catch-all-apply 'vla-get-area (list &k1)))))
         );计算面积
     (progn
      (setq a1 (+ a1 a2));总面积
      (setq a2 (rtos a2))
      (if (car ss1)
       (setq ss1 (append ss1 (list "+" a2)));计算公式
       (setq ss1 (cons a2 ss1))
      )
     )
    )
   );while
   (princ "\n对象总面积:")
   (princ (rtos a1)) (princ " 平方毫米")
   (princ "\n计算公式为:")
   (princ (apply 'strcat ss1));显示计算公式
  )
 )
 (princ)
)追问你这个还是以毫米为单位的,而且只能测量面积,我的那个代码可以同时测面积与长度。

热心网友 时间:2023-10-12 13:34

那个代码的单个面积或周长结果就是m2(平方米)、m(米)的啊,只是总面积和总周长不对的,你要结果乘以一个系数做什么用啊?

热心网友 时间:2023-10-12 13:33

;单独做一个程序amset设置字高,再把单位改一下就行了
(defun C:amset()
(setq height (getdist "\n请输入文字高度:"))
(PRINC))
(defun C:am (/ ss l i totalarea ename obj entarea)
(if (setq ss (ssget))
(progn
(vl-load-com)
(setq modelspace (vla-get-Modelspace (vla-get-activeDocument (vlax-get-acad-object))))
(setq l (sslength ss) i 0 totalarea 0 totlength 0)
(repeat l
(setq ename (ssname ss i))
(setq obj (vlax-ename->vla-object ename))
;;(vlax-mp-object obj T)
(if (vlax-property-available-p obj "area")
(setq totalarea (+ (vlax-get-property obj 'area) totalarea))
)
(if (= (cdr (assoc 0 (entget ename))) "MLINE")
(setq totlength (+ totlength (ml-length ename)))
(setq totlength (+ totlength (vlax-curve-getdistatparam ename (vlax-curve-getendparam ename))))
)
(setq i (1+ i))
)
(setq text1 (strcat "面积为: " (rtos (/ totalarea 1000000) 2 4) "平方米")
text2 (strcat "长度为: " (rtos (/ totlength 1000) 2 4) "米")
)
(if (setq insertpt (getpoint "\n请输入文字插入点: "))
(if height
(setq insertp1 (vlax-3d-point insertpt)
insertp2 (vlax-3d-point (polar insertpt (* 1.5 Pi) (* 1.5 height)))
textobj1 (vla-addtext modelspace text1 insertp1 height)
textobj2 (vla-addtext modelspace text2 insertp2 height)
)
)
)
)
)
)
(defun ml-length (ename / j d ptlist)
(foreach n (entget ename)
(if (= (car n) 11)
(setq ptlist (cons (cdr n) ptlist))
)
)
(reverse ptlist)
(setq j 0 d 0)
(repeat (1- (length ptlist))
(setq d (+ d (distance (nth j ptlist) (nth (1+ j) ptlist))))
(setq j (1+ j))
)
d
)

热心网友 时间:2023-10-12 13:34

使用下面的autolisp代码统计面积:
(defun c:mj ( / &k1 &kw1 a1 a2 ss1);统计面积
 (setvar "cmdecho" 0)
 (setvar "blipmode" 0)
 (if (null vlax-mp-object) (vl-load-com) );加载vlax函数
 (princ "\n请选择要计算面积的对象")
 (if (setq &kw1 (ssget '((0 . "POLYLINE,LWPOLYLINE,CIRCLE,ELLIPSE,SPLINE,REGION"))))
  (progn
   (setq ss1 '() a1 0.0)
   (while (setq &k1 (ssname &kw1 0))
    (setq &kw1 (ssdel &k1 &kw1))
    (if (and 
            (setq &k1 (vlax-ename->vla-object &k1));转换为vlax对象
            (null (vl-catch-all-error-p (setq a2 (vl-catch-all-apply 'vla-get-area (list &k1)))))
         );计算面积
     (progn
      (setq a1 (+ a1 a2));总面积
      (setq a2 (rtos a2))
      (if (car ss1)
       (setq ss1 (append ss1 (list "+" a2)));计算公式
       (setq ss1 (cons a2 ss1))
      )
     )
    )
   );while
   (princ "\n对象总面积:")
   (princ (rtos a1)) (princ " 平方毫米")
   (princ "\n计算公式为:")
   (princ (apply 'strcat ss1));显示计算公式
  )
 )
 (princ)
)追问你这个还是以毫米为单位的,而且只能测量面积,我的那个代码可以同时测面积与长度。

热心网友 时间:2023-10-12 13:34

那个代码的单个面积或周长结果就是m2(平方米)、m(米)的啊,只是总面积和总周长不对的,你要结果乘以一个系数做什么用啊?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求这图片原图或者主角 出自哪一边电影或者电视剧 哪位大神知道这张图原版在吗?求原版。。。 在word中加下划线时第一次出现一条下划线第二次怎么就出现两条... 诛仙2资料站里的宠物展示能在npc买到吗 求一些诛仙2中的可以变为人形的宠物名字 诛仙2 神域的神农殿里,这是什么东西 诛仙2宠物元神问题 诛仙2 商城 中 宠物元神 怎么比 宠物 还贵啊?宠物元神是干什么的啊... 电热水器怎么安固定花洒 猛鬼夜惊魂剧情介绍 cad 计算面积的一个LSP文件不能用 喜马拉雅怎么建群 求教CAD lsp插件程序修改成计算选择对象的面积,不要生成面域 北汽X3口碑怎么样呀?新手适不适合开? 儿童把橙子和猕猴桃一起吃 身上发痒是怎么回事 我吃猕猴桃过敏,全身红肿一块一块的,好痒啊,可是买了那么多还能在吃吗,丢了可惜的 吉利X3质量怎么样? 猕猴桃如何止痒 吃了猕猴桃手上,背上骚痒是不是过敏了 怎么样把荣耀手机上的数据转到真我GT手机上- 问一问 真我gtneo2t电子三包凭证在哪儿看 华为nova9和真我gt2por哪个信号好? 学生花名册怎么做?急需,坐等。做一个14列21行的,用word文档做 谢 生产管理师的报名条件 怎么删除疫苗预约登记记录- 问一问 狗咬吕洞宾不识好人心的下一句是什么 在网上买手机,但是没货了,我设置了到货通知,那是怎么通知我呢? 狗咬吕洞宾不识好人心是什么意思啊?如题 谢谢了 长春机场需要核酸检测证明吗? 生产管理师的发展历程 关于CAD求和的插件,我加载后使用叫我选择对象,选了之后没用,多行文字是无效的吗? 网上找不到cad生成长宽的明细表的插件就自己研究个做个用了,想改一个计算面积的lsp cad插件编译一下 CAD中怎么求多个面积和,用PL线围合的 《上古卷轴5》和“若基”结了婚它就消失了,怎么能找到? 上古卷轴5若基在哪 上古卷轴5若基是未成年? 求一个CAD求和的小插件? 请解读下下面的LSP程序,是在CAD中运行,用来标注面积的。 上古卷轴5和若基接了婚它就消失了怎么找都找不到 cad面积求和 上古卷轴5怎么和若基结婚?用控制台按网上的教程不行啊,求帮帮忙! 下面是CAD中自动计算多条线段长度的一个LSP插件的程序内容,我想将计算结果除以1000,怎么改? 上古卷轴5怎么跟若基结婚的? 上古卷轴5如何和若基结婚 上古卷轴5的美女有哪些。分布地点 = = 。 上古卷轴5用控制台招募 若基 后带回自建别墅(炉火DLC)当管家 成功 存档下线 之后进档回家若基不见了。 上古卷轴5怎么和若基结婚? 知道若基是谁吧? 我用了下面的代码不行啊。。。。 上古卷轴5 请教高手 如何 娶若基 上古卷轴5如何向若基表白 上古卷轴5 银血客栈若基 想娶她,可是找她对话都不出现任何对话框,那怎么结婚?