检查折线间有无裂缝,请各高手提供个算法[已解决]
本帖最后由 soly2006 于 2012-5-4 18:15 编辑如图,在求面积汇总时候(pline,无拟合),有时会手抖,没有捕捉到位,会产生总面积与各分面积不符情况,但裂缝很小,图形又大的情况下肉眼又难以判断,有什么好的办法检查错误地方?
简而言之,内部面积之间没有很好靠一起,造成裂缝。
现在要找出来,谢谢.以下是测试图情况。
没有人理啊?应该用的人不少啊,给个方法。
再自顶上。
行有不得反求诸己
单依楼主所提资料怕是难有回应...
提问可是个大学问啊,问对了有如叩钟之应... pe m 看看这个应该是你要的效果,我没有原代码,这是别人工具箱里面的功能,会写像这样的代码的高手,请你们帮一下,谢谢.
顶上去先,我越发严重怀疑我的表达能力了.
怎么都不能理解啊.
就是两折线间留有缝的地方标示出来。
希望大家关注一下。 表达严重有问题 !首先折线是什么类型的线没说,其次应该给个样图,样图中要有原图和你想要的结果!这样别人才能帮你,否则,自然没人关注! 再自顶,顶不出来不罢休 soly2006 发表于 2012-5-2 13:16 static/image/common/back.gif
再自顶,顶不出来不罢休
(defun c:tt(/ MKCIRCLE SS L PL FLAG S i)
(defun mkcircle(pt r)
(entmake (list '(0 . "circle")
(cons 10 pt)
(cons 40 r)
(cons 62 1)
(cons 8 "检查标记")))
)
(setq n 0 nn 0)
(while (progn
(princ "\n选择要检查的物体:")
(setq ss (ssget '((0 . "lwpolyline"))))
)
(setq s nil n 0)
(repeat (setq i (sslength ss))
(setq s (cons (ssname ss (setq i (1- i))) s))
)
(foreach en s
(setq l (vl-remove en s))
(setq pl (mapcar 'cdr
(vl-remove-if-not
'(lambda (x) (= 10 (car x)))
(entget en))))
(foreach ptpl
(setq Flag
(vl-some
'(lambda (x)
(equal (vlax-curve-getclosestpointto en pt)
(vlax-curve-getclosestpointto x pt)
1e-6))
l))
(if (not Flag)
(progn
(mkcircle pt 1)
(setq n (1+ n))
)
)
)
)
(princ (strcat "\n发现 " (itoa n) "处问题:"))
(setq nn (+ n nn))
)
(princ (strcat "\n总共发现 " (itoa nn) "处问题:"))
(princ)
)
严重顶起,期待解决中