明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: highflybir

[【高飞鸟】] 【飞鸟集】面积求和及长度求和的lisp程序

    [复制链接]
发表于 2013-12-30 21:39 | 显示全部楼层
高飞兄是不是不玩lisp了,答应升级的,好久没见动静了,期待.......................

本帖子中包含更多资源

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

x
发表于 2014-1-17 16:12 | 显示全部楼层
这个功能比较实用,
发表于 2014-3-8 15:12 | 显示全部楼层
谢了         
发表于 2014-3-8 17:13 | 显示全部楼层
11 楼的程序在哪啊
发表于 2014-10-15 14:50 | 显示全部楼层
根据我们现在遇到的工程实际需要,希望高飞鸟大神,有一下几点优化
1、按图层计算面积,这样可以批量进行面积的分类统计
2、计算以后的数据可以导出到一个EXCEL表,每一行显示的是一个图层的面积。这样可以便于后续的数据处理(这样的处理对于房产测量的面积统计将会有改变行业格局的意义),因为房产面积的计算是一个多变的计算过程,阳台算半面积还是全面积还是不算面积都按实际的情况来。也就是说这个“YT”图层的面积乘以几,到后面是要用户自己指定的。
3、希望在框选的时候面积下面一行可以把长度也一起计算出来,因为房产面积计算是要扣除一个墙壁的占地面积的。有了长度就可以很简单的算出要扣除的面积了,比如,墙壁厚度为0.02m则扣除面积就是长度*0.02。用户修改后可以再把表用相关的软件导入到CAD就可以了。
4.其实最好是可以框选的时候自动提取闭合区域内的文字,作为这个面积的名称。比如,多边形内有文字“XXX”则,生成的表格的该行的第一个单元格内容就是“XXX面积”
刚刚开始学习写LISP。自己还只能写一些简单的东西,但是高飞鸟却有改变一个行业习惯的能力,相信你的程序会让我们叹为观止的!
发表于 2014-10-15 15:24 | 显示全部楼层
慢慢学..谢谢楼主
发表于 2015-7-12 18:13 | 显示全部楼层
顶~~~~~~~~~~~~~~~~~~~~~~~~~
发表于 2016-5-21 15:32 | 显示全部楼层
很实用,谢谢楼主!
发表于 2019-4-28 05:04 | 显示全部楼层
;;;;;程序源码 “飞鸟集”,修改:尘缘一生 2019-4-28
;;;关于对于面积求和和长度求和,还是有很多用途,在这里写一个lisp程序。加载运行am
;;;选择你要求和的物体,可以是line ,circle,arc ,ellipse ,spline, polyline,mline等,算出面积和长度。
;;; 【不用指定位置和高度,用你CAD整体比例系数控制】,用文字标注出来,并跟随鼠标定位
(defun C:am (/ s text1 text2 ss l i totalarea ename obj insertpt insertpt1)
        (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))
                                (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 2 4) "平方单位")
                                text2 (strcat "总长度为: " (rtos totlength 2 4) "单位")
                        )
                        (setq insertpt (nth 1(grread 5)))
                        (setq insertpt1 (polar insertpt (* 1.5 pi) (* (getvar "DIMSCALE") 7.0)))
                        (entmake (list '(0 . "TEXT") (cons 1 text1) (cons 8 "PUB_TEXT") (cons 10 insertpt) (cons 40 (* (getvar "DIMSCALE") 5.0))))
                        (setq s(ssadd))
                        (ssadd (entlast) s)
                        (entmake (list '(0 . "TEXT") (cons 1 text2) (cons 8 "PUB_TEXT") (cons 10 insertpt1) (cons 40 (* (getvar "DIMSCALE") 5.0))))
                        (ssadd (entlast) s)
                        (command "MOVE" s ""  insertpt)
                )
        )
)
(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
)  
发表于 2019-7-4 14:25 | 显示全部楼层
lpl 发表于 2013-12-30 21:39
高飞兄是不是不玩lisp了,答应升级的,好久没见动静了,期待.......................

求分享此插件,感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-26 11:22 , Processed in 0.164993 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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