明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 9400|回复: 36

[源码] 框选封闭区域面积到excel

[复制链接]
发表于 2014-4-29 10:24:43 | 显示全部楼层 |阅读模式
;;; 框选封闭区域面积到excel   
(defun c:jsmjdc(/ ACADDOC ACADSPC OBJAREA OBJLLPOINT OBJRUPOINT SELECTIONSET TEXTBASEPOINT TEXTHEIGHT TEXTINDEX TEXTOBJ)
   (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)))
   (setq TextHeight (getdist "\n输入标注文字高度:")
Textbh (getstring "\n输入编号前缀:")
TextIndex (getint "\n输入起始编号:")
)
    (setq f (getfiled "指定输出文件路径" "" "xls" 1) f (open f "a"));;;指定输出文件路径
  (write-line "编号\t面积(㎡)" f)
     (ssget '((0 . "CIRCLE,LWPOLYLINE,ELLIPSE")))
(command "layer" "M" "计算面积" "C" "4" "" "LT" "CONTINUOUS" "" "");设置一个标注图层
(command "style" "tukou" "黑体" "0" "" "0" "" "")
(setvar"dimzin"0);;保留小数位数时如果位数不足可以补零
(defun maketext (txt pt)  ; 生成文字子函数
    (entmake (list '(0 . "TEXT") (cons 10 pt) (cons 40 TextHeight) (cons 1 txt) '(41 . 0.8)'(7 . "BG_ST")))
  )
   (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 Textbh (itoa TextIndex) "=" (rtos (/ ObjArea 1)2 2) "㎡") (vlax-3d-point TextBasePoint) TextHeight)
      )
(write-line (strcat (strcat Textbh (itoa TextIndex)) "\t" (rtos (/ ObjArea 1)2 2) ) f)
       (vla-put-alignment TextObj acAlignmentCenter)
       (vla-put-TextAlignmentPoint TextObj (vlax-3d-point TextBasePoint))   
    (setq TextIndex (1+ TextIndex))      
       )     
)
(close f)
   )

评分

参与人数 1明经币 +1 收起 理由
flytoday + 1

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-10-16 21:31:02 | 显示全部楼层
香田里浪人 发表于 2014-4-30 11:11
将 (rtos (/ ObjArea 1)2 2) 改为 (rtos (/ ObjArea 1000000)2 2) 即可。如果小数点后要保留3位,将2 2改 ...

谢谢楼主,统计面积到表格的时候真的简单很多了
发表于 2023-1-5 00:24:25 | 显示全部楼层
想请教一下如果我想获取一个未封闭图形的面积咋办,可能只有一个接触点未封闭
发表于 2019-2-21 09:47:08 来自手机 | 显示全部楼层
谢谢楼主,但框选时顺序不对,都是从右至左
发表于 2014-4-29 11:10:32 | 显示全部楼层
看到源码就要支持,谢谢分享.
发表于 2014-4-29 12:23:51 | 显示全部楼层
增加个统计汇总标注于图中。效果会更好。。
发表于 2014-4-29 12:45:25 | 显示全部楼层
支持源码,好
发表于 2014-4-29 13:37:35 | 显示全部楼层
为什么我不能给楼主评分,权限不够?
发表于 2014-4-29 13:43:53 | 显示全部楼层
看到源码就要支持,谢谢分享
发表于 2014-4-29 13:44:45 | 显示全部楼层
好程序更要支持.
发表于 2014-4-29 14:45:29 | 显示全部楼层
好,我也整个示意的!
  1. http://ishare.iask.sina.com.cn/f/68448880.html
复制代码

本帖子中包含更多资源

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

x

点评

lpl
没看到代码........  发表于 2014-4-29 14:54
发表于 2014-4-29 16:32:21 | 显示全部楼层
本帖最后由 flytoday 于 2014-4-29 16:39 编辑

楼上这个不如楼主的好用。。。。
而已对话框出错。。。
对于未封闭的图形无效。。。
2006版本不能用‘’‘’。。。





命令: SCBH
** DCL could not be found **
选择对象: 指定对角点: 找到 3 个
选择对象:
; 错误: 参数类型错误: fixnump: nil


还有对圆。。未封闭的弧形无效。。。。

本帖子中包含更多资源

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

x

评分

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

查看全部评分

发表于 2014-4-30 07:57:32 | 显示全部楼层
请问,如果制图是以毫米为单位的,比如1米在cad中输入的是1000,请问修改哪一句可以使得出的面积结果是真实的面积,而不是以毫米得出的结果,比如1米*1米应该得出1平方米,而非1000*1000平方米,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 06:24 , Processed in 0.198361 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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