找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3716|回复: 7

[求助] 封闭区域自动标注面积、长度

[复制链接]
发表于 2014-6-6 00:11:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
求CAD图形中自动标注面积、周长的程序,谢谢大侠
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2014-6-6 00:13:40 | 显示全部楼层
最好能批量处理的;
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2016-8-27 21:11:43 | 显示全部楼层
程序在哪啊?没看到???????

点评

去 每日插件 论坛找,有。  详情 回复 发表于 2016-8-27 21:38
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-8-27 21:38:18 | 显示全部楼层
小也75 发表于 2016-8-27 21:11
程序在哪啊?没看到???????

去 每日插件 论坛找,有。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2017-9-5 17:14:56 | 显示全部楼层
(defun c:SignAreaLength (/ AREA CEN ENT HEIGTHSTR I LEN PTNUM PTS SS STR WIDTHSTR)
  (setq ss (ssget '((0 . "lwpolyline") (70 . 1))))
  (setq i 0)
  (repeat (sslength ss)
;;;    计算所需参数
    (setq ent            (ssname ss i)        ;多边形
          ptnum            (cdr (assoc 90 (entget ent))) ;顶点数
          area            (vlax-curve-getarea ent) ;面积
          len            (vlax-curve-getDistAtParam ent ptnum) ;周长
          pts            (mapcar 'cdr
                            (vl-remove-if-not
                              '(lambda (x)
                                 (if (= 10 (car x))
                                   t
                                   nil
                                 )
                               )
                              (entget ent)
                            )
                    )                        ;多边形定点集合
          cen            (list (/ (apply '+ (mapcar 'car pts)) ptnum)
                          (/ (apply '+ (mapcar 'cadr pts)) ptnum)
                          0.0
                    )                        ;多边形中心
          str            (strcat "面积:" (rtos area 2 2) "\n周长:" (rtos len 2 2))
                                        ;插入文字内容
          heigthstr (* (getvar "VIEWSIZE") 0.05)
                                        ;以绘图区域高度的5%为字高
          widthstr  (* heigthstr (strlen str))
                                        ;文字高度*文字长度=文字宽度
    )

;;;    在图上注记文字
    (vla-put-height
      (vla-addmtext
        (vla-get-modelspace
          (vla-get-activedocument (vlax-get-acad-object))
        )
        (vlax-safearray-fill
          (vlax-make-safearray vlax-vbdouble '(0 . 2))
          cen
        )                                ;文字插入点
        widthstr
        str
      )
      heigthstr
    )
  )
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2017-9-5 17:18:49 | 显示全部楼层
更正,少了一个(setq (1+ i))

(defun c:SignAreaLength (/ AREA CEN ENT HEIGTHSTR I LEN PTNUM PTS SS STR WIDTHSTR)
  (setq ss (ssget '((0 . "lwpolyline") (70 . 1))))
  (setq i 0)
  (repeat (sslength ss)
;;;    计算所需参数
    (setq ent            (ssname ss i)        ;多边形
          ptnum            (cdr (assoc 90 (entget ent))) ;顶点数
          area            (vlax-curve-getarea ent) ;面积
          len            (vlax-curve-getDistAtParam ent ptnum) ;周长
          pts            (mapcar 'cdr
                            (vl-remove-if-not
                              '(lambda (x)
                                 (if (= 10 (car x))
                                   t
                                   nil
                                 )
                               )
                              (entget ent)
                            )
                    )                        ;多边形定点集合
          cen            (list (/ (apply '+ (mapcar 'car pts)) ptnum)
                          (/ (apply '+ (mapcar 'cadr pts)) ptnum)
                          0.0
                    )                        ;多边形中心
          str            (strcat "面积:" (rtos area 2 2) "\n周长:" (rtos len 2 2))
                                        ;插入文字内容
          heigthstr (* (getvar "VIEWSIZE") 0.05)
                                        ;以绘图区域高度的5%为字高
          widthstr  (* heigthstr (strlen str))
                                        ;文字高度*文字长度=文字宽度
    )

;;;    在图上注记文字
    (vla-put-height
      (vla-addmtext
        (vla-get-modelspace
          (vla-get-activedocument (vlax-get-acad-object))
        )
        (vlax-safearray-fill
          (vlax-make-safearray vlax-vbdouble '(0 . 2))
          cen
        )                                ;文字插入点
        widthstr
        str
      )
      heigthstr
    )
    (setq i (1+ i))
  )
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2019-10-28 16:31:00 | 显示全部楼层
@南宁-南子,要能编写出这样的语言要从什么基础学起
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 225个

财富等级: 日进斗金

发表于 2023-7-16 08:19:16 | 显示全部楼层
谢谢分享!!!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-25 18:38 , Processed in 0.187734 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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