明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5163|回复: 27

高手帮解决下,判断线收尾连接,希望对其他线形起作用

  [复制链接]
发表于 2012-7-3 12:32 | 显示全部楼层 |阅读模式
(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)
)
发表于 2023-3-9 14:41 | 显示全部楼层
本帖最后由 llsheng_73 于 2023-3-9 15:17 编辑

不管什么线(CIRCLE,ELLIPSE,xline,ray等无所谓起止的除外),提取起点和止点,然后找出容差范围内只出现过一次的点,画圆
  1. (defun c:tt(/ s a pt e n)
  2.   (and(or(setq a(getreal"容差[1e-3]"))(setq a 1e-3))
  3.       (setq s(ssget'((0 . "*polyline,line,arc,ellipse,spline"))))
  4.       (while(setq e(ssname s 0))
  5.         (ssdel e s)
  6.         (setq pt(vl-list*(vlax-curve-getstartpoint e)(vlax-curve-getendpoint e)pt)))
  7.       (while pt(setq n(length pt))
  8.         (if(=(1- n)(length(setq e(car pt)pt(vl-remove-if(function(lambda(x)(equal x e a)))(cdr pt)))))
  9.           (entmakex(list'(0 . "circle")'(62 . 1)(cons 10 e)'(40 . 1)))))))

本帖子中包含更多资源

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

x
发表于 2023-3-9 14:22 | 显示全部楼层
非常不错的代码,谢谢楼主分享啊。
 楼主| 发表于 2012-7-3 12:34 | 显示全部楼层
希望能标出连接线两端,对line,pline,arc,cire等都有效。。不知道我说的大家理解吗
 楼主| 发表于 2012-7-3 12:35 | 显示全部楼层
那样的话,在画图的时候就可以在标出的地方处理了。。要不量太大。。。
 楼主| 发表于 2012-7-3 12:35 | 显示全部楼层
本帖最后由 egoroom 于 2012-7-3 13:10 编辑

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=90624
这是原文连接,望解决。。。
发表于 2012-7-3 13:36 | 显示全部楼层
上传个您认为具代表性的 Dwg文件 用作探讨呗
 楼主| 发表于 2012-7-3 13:52 | 显示全部楼层
您看下。。现在只对直线起作用

本帖子中包含更多资源

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

x
 楼主| 发表于 2012-7-3 13:55 | 显示全部楼层
egoroom 发表于 2012-7-3 13:52
您看下。。现在只对直线起作用

应该是连接的线,不论直线或者其他线形。。在图形的首尾加个标注。
发表于 2012-7-3 14:22 | 显示全部楼层

串接的话,如此即可
=================
Command: Pedit
Select polyline or [Multiple]: M

Select objects: Specify opposite corner: 7 found

Select objects:

Enter an option [Close/Open/Join/Width/Fit/Spline/Decurve/Ltype gen/Undo]: J
Join Type = Extend
Enter fuzz distance or [Jointype] <0.0000>: 0.0001
6 segments added to polyline
Enter an option [Close/Open/Join/Width/Fit/Spline/Decurve/Ltype gen/Undo]:

fuzz distance 依需求而定

本帖子中包含更多资源

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

x
 楼主| 发表于 2012-7-3 14:29 | 显示全部楼层
本帖最后由 egoroom 于 2012-7-3 14:30 编辑
Andyhon 发表于 2012-7-3 14:22
串接的话,如此即可
=================
Command: Pedit


你好,不是串接。。是为了标出连接线的首尾,就是上面我给的lsp,但他的那个只能标注直线----
弧线连接就有问题了。。。
 楼主| 发表于 2012-7-3 14:31 | 显示全部楼层
Andyhon 发表于 2012-7-3 14:22
串接的话,如此即可
=================
Command: Pedit

你好,不是串接。。是为了标出连接线的首尾,就是上面我给的lsp,但他的那个只能标注直线----
弧线连接就有问题了。。。麻烦你帮看一下。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-19 07:25 , Processed in 0.180455 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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