egoroom 发表于 2012-7-3 12:32:09

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

(defun c:ccc()
   (if (setq ssa (ssget '((0 . "LINE"))))
         (progn
             (setq ptb nili -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)
)

llsheng_73 发表于 2023-3-9 14:41:25

本帖最后由 llsheng_73 于 2023-3-9 15:17 编辑

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

vladimirputin 发表于 2023-3-9 14:22:22

非常不错的代码,谢谢楼主分享啊。

egoroom 发表于 2012-7-3 12:34:15

希望能标出连接线两端,对line,pline,arc,cire等都有效。。不知道我说的大家理解吗

egoroom 发表于 2012-7-3 12:35:03

那样的话,在画图的时候就可以在标出的地方处理了。。要不量太大。。。

egoroom 发表于 2012-7-3 12:35:59

本帖最后由 egoroom 于 2012-7-3 13:10 编辑

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=90624
这是原文连接,望解决。。。

Andyhon 发表于 2012-7-3 13:36:16

上传个您认为具代表性的 Dwg文件 用作探讨呗

egoroom 发表于 2012-7-3 13:52:29

您看下。。现在只对直线起作用

egoroom 发表于 2012-7-3 13:55:45

egoroom 发表于 2012-7-3 13:52 static/image/common/back.gif
您看下。。现在只对直线起作用

应该是连接的线,不论直线或者其他线形。。在图形的首尾加个标注。

Andyhon 发表于 2012-7-3 14:22:35


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

Select objects: Specify opposite corner: 7 found

Select objects:

Enter an option : J
Join Type = Extend
Enter fuzz distance or <0.0000>: 0.0001
6 segments added to polyline
Enter an option :

fuzz distance 依需求而定

egoroom 发表于 2012-7-3 14:29:12

本帖最后由 egoroom 于 2012-7-3 14:30 编辑

Andyhon 发表于 2012-7-3 14:22 http://bbs.mjtd.com/static/image/common/back.gif
串接的话,如此即可
=================
Command: Pedit


你好,不是串接。。是为了标出连接线的首尾,就是上面我给的lsp,但他的那个只能标注直线----
弧线连接就有问题了。。。

egoroom 发表于 2012-7-3 14:31:17

Andyhon 发表于 2012-7-3 14:22 static/image/common/back.gif
串接的话,如此即可
=================
Command: Pedit


你好,不是串接。。是为了标出连接线的首尾,就是上面我给的lsp,但他的那个只能标注直线----
弧线连接就有问题了。。。麻烦你帮看一下。。
页: [1] 2 3
查看完整版本: 高手帮解决下,判断线收尾连接,希望对其他线形起作用