明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: xskfq

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

[复制链接]
 楼主| 发表于 2013-11-26 23:25 | 显示全部楼层
改了,不行
回复

使用道具 举报

 楼主| 发表于 2013-11-26 23:30 | 显示全部楼层
本帖最后由 xskfq 于 2013-11-26 23:31 编辑

命令: tt
选择对象: 指定对角点: 找到 7 个
选择对象:
10
10
10
10
10
10
10
10
10
10

回复

使用道具 举报

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

不行的,Z版应该不会犯这种错误吧
回复

使用道具 举报

发表于 2013-11-26 23:48 | 显示全部楼层

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2013-11-26 23:52 | 显示全部楼层
本帖最后由 xskfq 于 2013-11-27 00:54 编辑
xyp1964 发表于 2013-11-26 23:48

就是这种效果
回复

使用道具 举报

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

1.没解决排除圆的情况。
2.没解决,标记圆被选中情况
回复

使用道具 举报

发表于 2013-11-27 16:36 | 显示全部楼层

  1. (defun c:tt ()
  2.   (if (setq ss (ssget '((0 . "LINE"))))
  3.     (progn
  4.       (setq i -1)
  5.       (repeat (sslength ss)
  6.         (setq K1 T
  7.               K2 T
  8.         )
  9.         (setq ent (entget (ssname ss (setq i (1+ i))))
  10.               p1  (cdr (assoc 10 ent))
  11.               p2  (cdr (assoc 11 ent))
  12.         )
  13.         (if (setq ss1 (ssget "F" (list p1 p2) '((0 . "CIRCLE"))))
  14.           (progn
  15.             (setq ent1 (entget (ssname ss1 0)))
  16.             (setq p3 (cdr (assoc 10 ent1)))
  17.             (setq l1 (distance p1 p3)
  18.                   l2 (distance p2 p3)
  19.             )
  20.             (if        (< l1 l2)
  21.               (setq K1 nil)
  22.               (setq K2 nil)

  23.             )
  24.           )
  25.         )
  26.         (if (and (= (sslength (ssget "C" p1 p1)) 1) k1)
  27.           (command "CIRCLE" p1 10)
  28.         )
  29.         (if (and (= (sslength (ssget "C" p2 p2)) 1) k2)
  30.           (command "CIRCLE" p2 10)
  31.         )
  32.       )
  33.     )
  34.   )
  35.   (princ)
  36. )

点评

确实是这样  发表于 2013-11-27 22:09
(= (sslength (ssget "C" p2 p2)) 1) 会受屏幕放大率影响,也就是说如果当端点不在另一条线上但很近的时候,它可能会出幺蛾子  发表于 2013-11-27 19:52
回复

使用道具 举报

发表于 2013-11-27 20:52 | 显示全部楼层
(defun c:tt(/ ss i ob p a)
  (if(setq ss(ssget '((0 . "*LINE"))))
    (progn (setq i -1 p nil)
      (repeat (sslength ss)
        (setq p(append p(list(vlax-ename->vla-object(ssname ss(setq i(1+ i))))))))
      (foreach o p
        (setq a(list(vlax-curve-getStartPoint o)(vlax-curve-getendPoint o)))
        (foreach b a
          (if(and(null(vl-remove'nil(mapcar'(lambda(e)(if(vlax-curve-getdistatpoint e b)b))(vl-remove o p))))
                 (null(ssget"F"(list b'(-1e30 -1e30))'((0 . "circle")))))(command "CIRCLE" b 10))))
        ))
  (princ))
回复

使用道具 举报

 楼主| 发表于 2013-11-27 21:16 | 显示全部楼层
cable2004 发表于 2013-11-26 21:52
(defun c:tt ( / a c1 ent ent1 i p1 p2 r1 ss sslast x1)
  (setq sslast (ssadd))
  (if (setq ss  ...

没成功,加油,继续努力!
回复

使用道具 举报

 楼主| 发表于 2013-11-27 21:16 | 显示全部楼层
ljpnb 发表于 2013-11-27 16:36

没成功,加油,继续努力!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 16:14 , Processed in 0.210647 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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