明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4748|回复: 32

[已解答] 如何检查直线是否断开(寻找开口)

[复制链接]
发表于 2013-11-26 21:34 | 显示全部楼层 |阅读模式
20明经币
效果如图:检查出孤立端点并标记,如果孤立的端点在园内,则不用标记。谁能帮帮忙,不甚感激!

附件: 您需要 登录 才可以下载或查看,没有账号?注册
发表于 2013-11-26 21:52 | 显示全部楼层
本帖最后由 cable2004 于 2013-11-27 10:51 编辑



(defun c:tt ( / a c1 ent ent1 i p1 p2 r1 ss sslast x1)
  (setq sslast (ssadd))
  (if (setq ss (ssget '((0 . "LINE"))))
    (progn
      (setq i -1)
      (repeat (sslength ss)
(setq ent (entget (ssname ss (setq i (1+ i))))
       p1 (cdr (assoc 10 ent))
       p2 (cdr (assoc 11 ent))
       x1 (ssget "C" p1 p2 '((0 . "CIRCLE")))
)
(if x1
   (if (= (sslength (ssget "C" p1 p1)) 1)
     (foreach a (vl-remove-if 'listp (mapcar
           'cadr
           (ssnamex x1)
         )
         )
       (setq ent1 (entget a)
      c1 (cdr (assoc 10 ent1))
      r1 (cdr (assoc 40 ent1))
       )
       (if (> (distance p1 c1) r1)
  (progn
    (command "CIRCLE" p1 10)
    (ssadd (entlast) sslast)
  )
       )
     )
   )
   (if (= (sslength (ssget "C" p1 p1)) 1)
     (progn
       (command "CIRCLE" p1 10)
       (ssadd (entlast) sslast)
     )
   )
)
(if x1
   (if (= (sslength (ssget "C" p2 p2)) 1)
     (foreach a (vl-remove-if 'listp (mapcar
           'cadr
           (ssnamex x1)
         )
         )
       (setq ent1 (entget a)
      c1 (cdr (assoc 10 ent1))
      r1 (cdr (assoc 40 ent1))
       )
       (if (> (distance p2 c1) r1)
  (progn
    (command "CIRCLE" p2 10)
    (ssadd (entlast) sslast)
  )
       )
     )
   )
   (if (= (sslength (ssget "C" p2 p2)) 1)
     (progn
       (command "CIRCLE" p2 10)
       (ssadd (entlast) sslast)
     )
   )
)
      )
    )
  )
  (sssetfirst nil sslast)
  (princ)
)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

发表于 2013-11-26 22:01 来自手机 | 显示全部楼层
查悬挂点,,楼主是不是同行哦?
回复

使用道具 举报

发表于 2013-11-26 22:33 | 显示全部楼层
燕秀有这种功能
回复

使用道具 举报

发表于 2013-11-26 22:42 | 显示全部楼层
本帖最后由 ZZXXQQ 于 2013-11-27 22:07 编辑
  1. (defun c:tt ()
  2. (if (setq ss (ssget '((0 . "LINE")))) (progn
  3.   (setq i -1)
  4.   (repeat (sslength ss)
  5.    (setq ent (entget(ssname ss (setq i (1+ i))))
  6.        p1 (cdr(assoc 10 ent))
  7.        p2 (cdr(assoc 11 ent)))
  8.    (if (= (sslength(ssget "C" p1 p1)) 1)
  9.     (command "CIRCLE" p1 10)
  10.    )
  11.    (if (= (sslength(ssget "C" p2 p2)) 1)
  12.     (command "CIRCLE" p2 10)
  13.    )
  14.   )
  15. ))
  16. (princ)
  17. )

点评

哪来的pc点?  发表于 2013-11-27 13:53
低级错误太多:(if (= (sslenth(ssetq "C" p1 p1)) 1) (command "CIRCLE" pc 10) )  发表于 2013-11-27 07:54
回复

使用道具 举报

发表于 2013-11-26 22:54 | 显示全部楼层
ZZXXQQ 发表于 2013-11-26 22:42

no function definition: SSETQ
回复

使用道具 举报

 楼主| 发表于 2013-11-26 23:12 | 显示全部楼层
ZZXXQQ 发表于 2013-11-26 22:42

; 错误: no function definition: SSETQ
回复

使用道具 举报

 楼主| 发表于 2013-11-26 23:15 | 显示全部楼层
Z版主,再帮看看,谢谢!
回复

使用道具 举报

 楼主| 发表于 2013-11-26 23:17 | 显示全部楼层
flyfox1047 发表于 2013-11-26 22:33
燕秀有这种功能

恩,,,,,,,,,,,
回复

使用道具 举报

发表于 2013-11-26 23:19 | 显示全部楼层
改成试试(= (sslength(ssget "C" p1 p1)) 1)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 18:37 , Processed in 0.428514 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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