434939575 发表于 2015-3-21 17:28:50

请帮忙修改连接同向且接近的短线

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

荒野孤行 发表于 2015-3-21 23:27:37

那不就是删除重线的功能么?

434939575 发表于 2015-3-22 10:35:24

荒野孤行 发表于 2015-3-21 23:27 static/image/common/back.gif
那不就是删除重线的功能么?

谢谢关照。确实是的。

荒野孤行 发表于 2015-3-22 21:19:02

434939575 发表于 2015-3-22 10:35 static/image/common/back.gif
谢谢关照。确实是的。

搞定了吧?

434939575 发表于 2015-3-23 09:12:28

嗯,网上搜了去重线,就可以了,谢谢啦!
页: [1]
查看完整版本: 请帮忙修改连接同向且接近的短线