| 请教各位朋友: 我的目的。连接相同方向的线,且(基本没有间距)的线。
 我的想法。是全部选择构建选择集: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
)
 |