[求助]优化图元路径的算法问题?
<P>各位前辈:<BR> 我编了一个程序,用来对用户所提供的图形里的图元从指定参考点开始寻找离参考点最近的图元,找到后,以找到的图元的端点为下一参考点再找离新的参考点最近的图元.下面这个程序用了两个循环,内外嵌套,在处理数量在1000个以下的图元时效果还勉强,但如果图元到了上万个的时候,那可得到外面去抽支烟再回来都还搞不定.请各位前辈及高手们帮忙看看,纠正我的思路和使用的算法,小弟先谢谢了!</P><P></P> <P>从无到有.....</P>
<P>(defun HHSel (a)<BR> (ssget "c" (mapcar '+ bspt a) (mapcar '+ bspt a))<BR>) </P>
<P>----snip-----<BR>(setq bspt (getpoint "\n请指定开始优化的位置:"))<BR>(setq HH '(1 1)<BR> fac '(1.25 1.25) ; or '(1.5 1.5) ; '(2.0 2.0) ......<BR>)</P>
<P>;;; Seach <BR>(if (ssget "X")<BR> (while (not (setq ss1 (HHSel HH)))<BR> (setq HH (mapcar '* HH fac))<BR>) )</P>
<P>----snip----- </P> Andyhon大侠,“从无到有”,您的方法让我眼前一亮,可惜我水平太低,能不能再说明白一点?楼上的程序我有点看不明白呀,谢谢。 本帖最后由 作者 于 2006-4-22 16:56:23 编辑
另外,我用了AutoCAD2002的ExpressTools里的overkill功能(删除及合并重复图元),觉得人家做得太棒了,我试了试画了5000对重复的图元(即1万个图元),哇噻,只要几秒钟就搞定了。一万个图元呀!!!!人家是怎么在几秒钟里对比1万个图元的呀?我想这应该就是传说中的算法吧! <P>(defun HHSel (a)<BR> (ssget "c" (mapcar '+ bspt a) (mapcar '+ bspt a))<BR>) </P>
<P>是不是有点问题?只有刚好在点上面的可以选择得到?</P>
<P>(ssget "c" bspt (mapcar '+ bspt a))</P>
页:
[1]