检查闭合并计算面积
本帖最后由 lizhiqiang9801 于 2015-9-23 10:53 编辑工作中经常计算面积 有些图形没有闭合框选后计算出面积 有些图形被遗漏 不知道哪位有这个程序框选后计算面积能计算的变为红色不闭合的不能计算的图形 变成蓝色 恳请路过的高人指点一下 都是lwpolyline,检查一下DXF70是否为1就行了,如果不是,改成1就闭合并计算面积了。 mmmmmm 发表于 2015-9-23 10:55 static/image/common/back.gif
都是lwpolyline,检查一下DXF70是否为1就行了,如果不是,改成1就闭合并计算面积了。
请您说的详细点好吗 没看明白呢 你把全部的线选中,在属性面板里有个闭合的选项,选择闭合,然后全部都是闭合的可以直接算面积不会漏了。 mmmmmm 发表于 2015-9-23 11:07 static/image/common/back.gif
你把全部的线选中,在属性面板里有个闭合的选项,选择闭合,然后全部都是闭合的可以直接算面积不会漏了。
不是这么简单吧 有些图形缺少线段你选择了闭合 计算出来的面积也是错误的 那是图形本身的问题,你可以用qselect找出全部封闭的或者没有封闭的,然后自己在属性面板里改颜色。没有写程序的必要。 mmmmmm 发表于 2015-9-23 11:38 static/image/common/back.gif
那是图形本身的问题,你可以用qselect找出全部封闭的或者没有封闭的,然后自己在属性面板里改颜色。没有写程 ...
看一楼的演示,应该是楼主有插件了,想要源码吧 (defun c:tt ( / )
(vl-load-com)
(setq ss (ssget '((0 . "lwpolyline"))) i 0 area 0)
(repeat (sslength ss)
(setq en (ssname ss i)
ent (entget en)
dxf70 (cdr(assoc 70 ent))
pts nil)
(foreach x ent(if (= (car x) 10) (setq pts (append (list (cdr x)) pts))))
(if (or (= dxf70 1) (equal (distance (car pts) (last pts)) 0 1e-6))
(progn (if (assoc 62 ent) (entmod (subst (cons 62 1)(assoc 62 ent) ent)) (entmod (append ent (list (cons 62 1)))))
(setq area (+ area (Vlax-Get (Vlax-Ename->Vla-Object en) 'Area)))
)
(if (assoc 62 ent) (entmod (subst (cons 62 5)(assoc 62 ent) ent)) (entmod (append ent (list (cons 62 5)))) )
)
(setq i (1+ i))
)
(princ area)
(princ)
) Q1241274614 发表于 2015-9-23 13:32 static/image/common/back.gif
能否加个不闭合图形端点的地方做个标记 我会弄这个,,,需要联系我qq443896460
页:
[1]