立即注册 登录
晓东CAD家园-论坛 返回首页

GTJ116600的个人空间 http://bbs.xdcad.net/?675105 [收藏] [复制] [分享] [RSS]

日志

fsxm写的选择连续实体程序

已有 163 次阅读2013-5-25 23:34 | AUTOCAD

CAD的选择集是以对象本身特属性做选择的
但事实上我们有很多时候
是要用对象相对几何关系来选择一批对象
比如说在一堆乱七八糟的线中选择相互连续的一组线
这时就要用到选择连续线的功能了!
有很多CAD软件中就有这个功能如:ug,等等
但AUTOCAD却没有带让人很头晕
写了一个简单点的请大家试用:
等有时间再加上个选择连续且相切功能

(vl-load-com)
(defun gotonexten (en pt / box en2 en2lst ep i sp ss)
  (setq        box (* (/ (getvar "pickbox") (cadr (getvar "screensize")))
               (getvar "viewsize")
            )
  )
  (setq        ss (ssget "c"
                  (mapcar '- pt (list box box))
                  (mapcar '+ pt (list box box))
           )
  )
  (if ss
    (progn
      (ssdel en ss)
      (setq i 0)
      (while (setq en2 (ssname ss i))
        (setq i (1+ i))
        (setq
          sp (vl-catch-all-apply 'vlax-curve-getStartPoint (list en2))
        )
        (if (listp sp)
          (progn (setq ep (vlax-curve-getEndPoint en2))
                 (cond ((equal sp pt 1e-8)
                        (setq en2lst (cons (list en2 ep) en2lst))
                       )
                       ((equal ep pt 1e-8)
                        (setq en2lst (cons (list en2 sp) en2lst))
                       )
                 )
          )
        )
      )
    )
  )
  en2lst
)
;;选择连续线c:ss -----fsxm 2007/01/29
(defun c:ss (/ en enp ept spt ss addnext)
  (if (and (setq enp (entsel))
           (ssget (cadr enp) '((0 . "*line,arc,circle,ellipse")))
      )
    (progn
      (setq en (car enp))
      (setq spt (vlax-curve-getStartPoint en))
      (setq ept (vlax-curve-getendPoint en))
      (setq ss (ssadd))
      (ssadd en ss)
      (defun addnext (en pt / next)
        (if (setq next (gotonexten en pt))
          (foreach a next
            (if        (not (ssmemb (car a) ss))
              (progn (ssadd (car a) ss)
                     (apply 'addnext a)
              )
            )
          )
        )
      )
      (addnext en spt)
      (addnext en ept)
      (if (= 0 (getvar "cmdactive"))
        (sssetfirst nil ss)
      )
      ss
    )
    (progn
      (princ "\n未选取对象或选取了非curve类型对象!")
      (princ)
    )
  )
)
普通浏览复制代码保存代码打印代码
(vl
 - 本文出自晓东CAD家园-论坛,原文地址:http://www.xdcad.net/forum/thread-620040-1-1.html

路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-15 19:37 , Processed in 0.116866 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

返回顶部