请教各位朋友:
我的目的。连接相同方向的线,且(基本没有间距)的线。
我的想法。是全部选择构建选择集:aa
再提取选择集里面第一个图元,按线方向两头(根据自己情况)定距离选择。把同向的,和相交的选择了
再把不同向的过滤掉。最后连接。
再把原来选择集AA 减去刚才的选择集。
这样循环。现在循环条件设置不对, - (defun c:tt ()
- (vl-load-com)
- (setq ss_all (ssget '((0 . "line"))))
- (while
- (/= 0 (sslength ss_all) )
- (setq name_00 (ssname ss_all 0))
- (setq pt:start (vlax-curve-getstartpoint name_00))
- (setq pt:end (vlax-curve-getendpoint name_00))
- (setq ang_00 (angle pt:start pt:end))
- (setq lengt++ 100000) ;测试过程由于数据过小引起失误
- (setq pt<--- (polar pt:start (angle pt:end pt:start) lengt++))
- (setq pt---> (polar pt:end (angle pt:start pt:end) lengt++))
- (setq lis (list pt<--- pt--->))
- (setq ss>>1 (ssget "f" lis '((0 . "*line"))))
- ;;;;----------------------
- (setq ii 0)
- (setq add_11 (ssadd))
- (repeat (sslength ss>>1)
- (setq name>11 (ssname ss>>1 ii)
- ii (1+ ii)
- )
- (setq start>11 (vlax-curve-getstartpoint name>11))
- (setq end>11 (vlax-curve-getendpoint name>11))
- (setq ang>11 (angle start>11 end>11))
- (if ;把与第一个图元角度(ang_00)相等的分类到选择集add_11
- (or (= ang_00 ang>11) (= ang_00 (+ pi ang>11)))
- (progn
- (setq add_11 (ssadd name>11 add_11))
- (setq ss>nub_11 (sslength add_11))
- );progn
- ) ;if
- ) ;repeat
- ;;;;----------------------
- (setq ss>nub (sslength ss>>1))
- (command "_.select" ss_all "r" add_11 "")
- (setq ss_all (ssget "p")) ;设置
- (setq ss>nub (sslength ss_all))
- ;(sssetfirst nil xx)
- (vl-cmdf "pedit" "m" add_11 "" "y" "j" 1 "")
- ) ;while
- )
|