CADr LISP问题

论坛上找到统计长度和面积的代码如下(参见http://p4.xdcad.net/forum/showthrea...7#post3324477:第23楼)(defunC:... 论坛上找到统计长度和面积的代码如下(参见http://p4.xdcad.net/forum/showthrea...7#post3324477: 第23楼)

(defun C:am(/ ss l i totalarea ename obj entarea)
(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 "SUB AREA: "(rtos totalarea 2 4) " mm2")
text2(strcat "SUB LENGTH: "(rtos totlength 2 4) " mm")
)
(if(setq insertpt(getpoint "\n请输入文字插入点: "))
(if(setq height(getdist "\n请输入文字高度:"))
(setq insertp1(vlax-3d-point insertpt)
insertp2(vlax-3d-point(polar insertpt(* 1.5 Pi)(* 1.5 height)))
textobj1 (vla-addtext modelspace text1 insertp1 height)
textobj2 (vla-addtext modelspace text2 insertp2 height)
)
)
)
)
)
)
(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
)

但有时图层很多,又要分别进行统计长度或面积,一个个统计就很烦了
本人想一次统计,统计后以表格形式输出,行为图层名称,一列是总长度,一列是总面积

本人刚学LISP,哪位高手帮我修改一下这个代码,谢过了!
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
小猫咪呜呜009
2015-01-01 · 超过31用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:82.6万
展开全部
答案:他们将会看见,
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式