明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 998|回复: 3

[源码] 这个命令标注出来面积时 会多生成一天多段线。

[复制链接]
发表于 2015-9-1 14:08:17 | 显示全部楼层 |阅读模式
(defun c:mj();生成面域并在其内标注面积(亩)和质心
;(VL-LOAD-COM)
;(setq AcadObject (vlax-get-acad-object)
;AcadDocument (vla-get-ActiveDocument AcadObject)
;mSpace (vla-get-ModelSpace AcadDocument)
;)
;(setq ss (ssget))
;(while(>(sslength ss)0)
(setq p1 t)
(while p1
(if *error*
;(command "_boundary" (setq p1 (getpoint "点取封闭区域内部的一点:")) "A" "o" "R" "" "")
;(command "_boundary" (setq p1 (getpoint "点取封闭区域内部的一点:")) "Y" "A" "o" "R" "" "")
(command "_boundary" (setq p1 (getpoint "\n点取封闭区域内部的一点:"))  "")
)
(setq EN (entlast))
(command "area" "o" EN)
(setq AA (getvar "area"))
(setq aa (/ aa 2000))
(setq aa (* aa 3))
(setq sss (RTOS aa 2 2))
(setq sss (strcat  sss  "亩"))
;(setq Centriod (vla-get-Centroid (vlax-ename->vla-object EN)))
;(setq x (vlax-safearray-get-element (vlax-variant-value Centriod) 0))
;(setq y (vlax-safearray-get-element (vlax-variant-value Centriod) 1))
(if (=  ffsize nil)
    (progn
      (setq ffsize 2)
      )
    )
;(setq ss (strcat "\n输入字体的高度<" (rtos ffsize 2 1) ">:"))
;(setq ffsize1 (getreal ss))
; (if  ffsize1
   ; (setq ffsize ffsize1)
    ;)
(COMMAND "TEXT" p1 ffsize 0 sss)
;(COMMAND "TEXT" (list x y 0) 0.5 0 sss)
;(entdel en) ;把;号去掉就可以把生成的区域线删掉
;(command "circle" (list x y 0) 500 "")
)
nil
)
(defun c:wb2();生成面域并在其内标注面积(m2)和质心
;(VL-LOAD-COM)
;(setq AcadObject (vlax-get-acad-object)
;AcadDocument (vla-get-ActiveDocument AcadObject)
;mSpace (vla-get-ModelSpace AcadDocument)
;)
(setq p1 t)
(while p1
(if *error*
;(command "_boundary" (setq p1 (getpoint "点取封闭区域内部的一点:")) "A" "o" "R" "" "")
;(command "_boundary" (setq p1 (getpoint "点取封闭区域内部的一点:")) "Y" "A" "o" "R" "" "")
(command "_boundary" (setq p1 (getpoint "\n点取封闭区域内部的一点:"))  "")
)
(setq EN (entlast))
(command "area" "o" EN)
(setq AA (getvar "area"))
(setq sss (RTOS aa 2 4))
(setq sss (strcat "S=" sss  "平方米"))
;(setq Centriod (vla-get-Centroid (vlax-ename->vla-object EN)))
;(setq x (vlax-safearray-get-element (vlax-variant-value Centriod) 0))
;(setq y (vlax-safearray-get-element (vlax-variant-value Centriod) 1))
  (if (=  ffsize nil)
    (progn
      (setq ffsize 0.5)
      )
    )
(setq ffsize1 (getreal (strcat "\n输入字体的高度<" (rtos ffsize 2 1) ">:")))
  (if  ffsize1
    (setq ffsize ffsize1)
    )
(COMMAND "TEXT" p1 ffsize 0 sss)
;(COMMAND "TEXT" (list x y 0) 0.5 0 sss)
;(entdel en) ;把;号去掉就可以把生成的区域线删掉
;(command "circle" (list x y 0) 500 "")
)
nil
)
(princ "\n更多资源添加QQ964265407")
(princ)


该贴已经同步到 胡杰45558的微博
 楼主| 发表于 2015-9-1 14:10:06 | 显示全部楼层
是多生成一条多段线,怎么解决,怎么修改!
发表于 2015-9-8 19:51:15 | 显示全部楼层
第一,(setq EN (entlast))修改为(setq ( EN (ssadd (entlast)))
第二,在(setq AA (getvar "area"))下面增加一句(command "erase" en "")



 楼主| 发表于 2015-11-14 15:56:37 | 显示全部楼层
dingtiedt 发表于 2015-9-8 19:51
第一,(setq EN (entlast))修改为(setq ( EN (ssadd (entlast)))
第二,在(setq AA (getvar "area"))下面增 ...

谢谢!我知道呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-9-29 06:58 , Processed in 0.200303 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表