明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: egoroom

检查线段是否断开。。。

  [复制链接]
 楼主| 发表于 2012-7-28 14:05:22 | 显示全部楼层
freehand8008 发表于 2012-7-19 12:45
去下载个燕秀,有这功能

那个我知道。想要个独立的。。。呵呵。。谢谢帮我看帖。。。
发表于 2012-8-2 09:15:59 | 显示全部楼层
十分感谢楼主!!!!
(defun c:ccc()
(if (setq ssa (ssget '((0 . "LINE"))))
(progn
(setq ptb nil  i -1)
(repeat (sslength ssa)
(setq dxf (entget (ssname ssa (setq i (1+ i))))
p10 (cdr (assoc 10 dxf))
p11 (cdr (assoc 11 dxf))
ptb (cons p11 (cons p10 ptb))
)
)
(setq jgb nil fhz nil)
(while (setq pt  (car ptb)
ptb (cdr ptb)
)
(if (member pt ptb)
(setq ptb (vl-remove pt ptb)
fhz (cons pt fhz)
)
(setq jgb (cons pt jgb))
)
)
(mapcar '(lambda(x) (command "_circle" x 50)) jgb)
;变量tymlb储存刚好首尾相接直线的图元名列表
(setq tymlb nil)
(foreach pt fhz
(setq ssa (ssget "c" pt pt '((0 . "LINE")))
i   -1
)
(repeat (sslength ssa)
(if (not (member (setq ent (ssname ssa (setq i (1+ i)))) tymlb))
(setq tymlb (cons ent tymlb))
)
)
)
)
)
(princ)
)

真的很好用感谢中
发表于 2012-8-2 09:21:25 | 显示全部楼层
选择对象: 指定对角点: 找到 8784 个

再次感谢!
发表于 2017-8-23 22:59:56 | 显示全部楼层
;;;*****查悬挂线 程序开始*****
(defun C:T1 (/ ptList ptNo)
  (princ "\n★功能:查找悬挂断开的线段集\n")
  (setvar "pickadd" 1)
  (setvar "osmode" 15359)
  (setvar "PICKDRAG" 0)
  (setvar "cmdecho" 0)
                                        ;  (wdy_timeset1)
  (command "undo" "be")
  (princ "\n请选取直线、多段线、样条曲线、圆弧:")
  (if (not (setq ss (ssget '((0 . "*LINE,ARC")))))
    (progn (princ "\未选中对象。程序退出!") (exit))
  )
  (initget 6)
  (if (not (setq jd (getreal "\n输入模糊距离:<0.001>"))) (setq jd 0.001))
  (initget 1)
  (setq ptBase (getpoint "\n指定标记引出线的位置点:"))
  (command "LAYER" "M" "层标记-悬挂线" "C" "1" "层标记-悬挂线" "")
  (setvar "osmode" 0)
  (vl-load-com)
  (setq        i -1
        ptList nil
        ptNo nil
  )
  (repeat (sslength ss)
    (setq entnam  (ssname ss (setq i (1+ i)))
          obj          (vlax-ename->vla-object entnam)
          ptStart (vlax-curve-GetStartPoint obj)
          ptEnd          (vlax-curve-GetEndPoint obj)
    )
    (if        (not (vlax-curve-isclosed obj))
      (progn
        (setq ptList (cons ptStart ptList))
        (setq ptList (cons ptEnd ptList))
      )
    )
  )
  (prin1 ptList)
  (while (setq pt     (car ptList)
               ptList (cdr ptList)
         )
    (if        (wdy_cxgx_duibi pt ptList jd)
      (setq ptList (vl-remove pt ptList))
      (setq ptNo (cons pt ptNo))
    )
  )
  ;| (while (setq pt     (car ptList)
               ptList (cdr ptList)
         )
    (if        (member pt ptList)
      (setq ptList (vl-remove pt ptList))
      (setq ptNo (cons pt ptNo))
    )
  )|;                                        ;另一种写法,无精度判断,算法较差
  (if (not ptNo)
    (alert "提示:\n恭喜你!没有发现悬挂线对象。\n")
    (progn
      (foreach pt ptNo
        (command "LINE" pt ptBase "")
      )
      (alert
        "提示:\n发现了悬挂线对象!\n\n请根据“层标记-悬挂线”图层中的引出线位置点进行查看悬挂线位置点。\n"
      )
    )
  )
  (command "undo" "e")
  (setvar "osmode" 15359)
  (princ)
)

(defun wdy_cxgx_duibi (pt0 lst jd / TorF x)
  (setq TorF nil)
  (foreach x lst
    (if        (equal pt0 x jd)
      (setq TorF T)
    )
  )
  TorF
)
;;;*****查悬挂线 程序结束*****
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-16 05:59 , Processed in 0.152137 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表