明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 8043|回复: 13

[讨论] 求帮忙实现 批量框选图形 标注面积 (注意不是点选)

[复制链接]
发表于 2014-8-23 22:14:03 | 显示全部楼层 |阅读模式
3明经币
谁能帮我呢 希望能实现 请下载附图进行测试 谢谢!
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

对楼主来说,应该不难,用如下程序是否满足楼主要求 (defun c:mjpl(/ ACADDOC ACADSPC OBJAREA OBJLLPOINT OBJRUPOINT SELECTIONSET TEXTBASEPOINT TEXTHEIGHT TEXTINDEX TEXTOBJ) (setq ss (ssget "x"'((0 . "LINE,LWPOLYLINE,ARC")))) (command "PEDITACCEPT" "1") (if ss (command ".pedit" "m" ss "" "j" "0" "w" "0" "" "PEDITACCEPT" "0") (command ".pedit" "m" "p" "" "j" "0" "w" "0" "" "PEDITA ...
发表于 2014-8-23 22:14:04 | 显示全部楼层
对楼主来说,应该不难,用如下程序是否满足楼主要求
(defun c:mjpl(/ ACADDOC ACADSPC OBJAREA OBJLLPOINT OBJRUPOINT SELECTIONSET TEXTBASEPOINT TEXTHEIGHT TEXTINDEX TEXTOBJ)
(setq ss (ssget "x"'((0 . "LINE,LWPOLYLINE,ARC"))))
      (command "PEDITACCEPT" "1")
(if ss
      (command ".pedit" "m" ss "" "j" "0" "w" "0" "" "PEDITACCEPT" "0")
      (command ".pedit" "m" "p" "" "j" "0" "w" "0" "" "PEDITACCEPT" "0")
)
   (vl-load-com)
   (setq AcadDoc (vla-get-activedocument (vlax-get-acad-object)))
   (if (= (getvar "TILEMODE") 1)(setq AcadSpc (vla-get-modelspace AcadDoc))(setq AcadSpc (vla-get-paperspace AcadDoc)))
(setvar"dimzin"0);;保留小数位数时如果位数不足可以补零
   (setq TextHeight (getdist "\n输入标注文字高度:")
TextIndex 1
)
   (ssget '((0 . "LWPOLYLINE")))
(mkla "面积计算" 3)
   (setq Selectionset (vla-get-activeselectionset AcadDoc))
   (if (and TextHeight Selectionset TextIndex)
     (vlax-for Obj Selectionset
       (setq ObjArea (vla-get-area obj)
      ObjLlPoint nil
      ObjRuPoint nil
      )
       (vla-GetBoundingBox Obj 'ObjLlPoint 'ObjRuPoint)
       (setq TextBasePoint (mapcar '(lambda(x y) (/ (+ x y) 2)) (vlax-safearray->list ObjLlPoint)(vlax-safearray->list ObjRuPoint))
      TextObj (vla-addtext AcadSpc (strcat  "S"(itoa TextIndex)"=" (rtos (/ ObjArea 1)2 3) "㎡") (vlax-3d-point TextBasePoint) TextHeight)
      )
       (vla-put-alignment TextObj acAlignmentCenter)
       (vla-put-TextAlignmentPoint TextObj (vlax-3d-point TextBasePoint))
       (setq TextIndex (1+ TextIndex))      
       )
     )
   )

评分

参与人数 1金钱 +20 收起 理由
hhaoma + 20 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-8-24 08:00:00 | 显示全部楼层
这应该是世界上最难实现的东西了!估计这个世界上没人会这个吧!这论坛的专家实力不过如此啊

点评

刚来论坛的,不了解论坛有多少年了,又有多少大神存在,说这种话!求程序的吧!  发表于 2014-8-25 19:41
回复

使用道具 举报

发表于 2014-8-24 09:31:05 | 显示全部楼层
楼上的,少子程序
回复

使用道具 举报

发表于 2014-8-24 12:06:57 | 显示全部楼层
hhaoma 发表于 2014-8-24 08:00
这应该是世界上最难实现的东西了!估计这个世界上没人会这个吧!这论坛的专家实力不过如此啊

浮云……

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

我去 院长又低调 又牛逼 我等最佩服你了  发表于 2014-8-26 08:20
回复

使用道具 举报

 楼主| 发表于 2014-8-24 12:25:53 | 显示全部楼层
xyp1964 发表于 2014-8-24 12:06
浮云……

厉害啊!!能教教我吗?
回复

使用道具 举报

 楼主| 发表于 2014-8-24 12:27:49 | 显示全部楼层
香田里浪人 发表于 2014-8-24 08:08
对楼主来说,应该不难,用如下程序是否满足楼主要求
(defun c:mjpl(/ ACADDOC ACADSPC OBJAREA OBJLLPOINT ...

是啊!没有子程序
回复

使用道具 举报

发表于 2014-8-24 12:37:19 | 显示全部楼层
hhaoma 发表于 2014-8-24 12:27
是啊!没有子程序

我觉得可以运行,还要什么子程序,请阁下教我?
回复

使用道具 举报

 楼主| 发表于 2014-8-24 14:18:37 | 显示全部楼层
本帖最后由 hhaoma 于 2014-8-24 14:25 编辑
香田里浪人 发表于 2014-8-24 12:37
我觉得可以运行,还要什么子程序,请阁下教我?

(mkla "面积计算" 3) 删除这句就能运行了!!!高手啊!太崇拜你了!
回复

使用道具 举报

发表于 2014-8-24 15:03:40 | 显示全部楼层
hhaoma 发表于 2014-8-24 14:18
(mkla "面积计算" 3) 删除这句就能运行了!!!高手啊!太崇拜你了!
  1. (defun mkla (la co)
  2.   (if (tblsearch "layer" la)
  3.     (command "-layer" "t" la "")
  4.     (command "-layer" "m" la "c" co "" "")
  5.   )
  6.   (setvar "clayer" la)
  7.   (setvar "cecolor" "bylayer")
  8.   (setvar "celtype" "bylayer")
  9. )
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-22 09:29 , Processed in 0.218683 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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