乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 74|回复: 15

[编程交流] 连接的多段线角点

[复制链接]

24

主题

141

帖子

115

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
123
发表于 2022-7-5 18:01:48 | 显示全部楼层 |阅读模式
你好
请帮忙!
我不会Lisp程序。
使用lisp寻找连接闭合多段线角点的方法。
这些多段线总是与示例非常相似。
有很多这样的行,如果你能用lisp来求解,那就太好了。
非常感谢。
马丁
190150ndsh2d5drox15rh1.jpg
回复

使用道具 举报

0

主题

375

帖子

385

银币

限制会员

铜币
-7
发表于 2022-7-5 18:07:01 | 显示全部楼层
嗨,Martin
 
尝试此操作,但请注意,如果存在重复点或任何部分距离短于“偏移”距离,则此操作将失败。
  1. (defun connect (e / _point d d1 l p1 p2 a b n i)
  2. (setq _point vlax-curve-getpointatparam
  3.        d (vlax-curve-getdistatparam e (setq n (fix (+ 0.1 (vlax-curve-getendparam e))))))
  4. (repeat (setq i (1+ n))
  5.    (setq l (cons (setq p1 (_point e (setq i (1- i)))) l))
  6.    (if
  7.      (setq p2 (cadr l))
  8.      (if
  9.        (and
  10.          (< (setq d1 (distance p1 p2)) d)
  11.          (not (zerop d1))
  12.        )
  13.        (setq
  14.          d d1
  15.          a (rem (1+ i) n)
  16.          b i
  17.          )
  18.        )
  19.      )
  20.    )
  21. (mapcar 'set '(a b) (list (max a b) (min a b)))
  22. (while
  23.    (progn
  24.      (setq a (rem (1+ a) n))
  25.      (setq b (rem (+ n (1- b)) n))
  26.      (not (= (rem (1+ a) n) b))
  27.    )
  28.    (entmake
  29.      (list
  30.        '(0 . "LINE")
  31.        (cons 10 (_point e a))
  32.        (cons 11 (_point e b))
  33.        )
  34.      )
  35.    )
  36. )
  37. (defun c:test (/ ss i)
  38. (if
  39.    (setq ss (ssget '((0 . "LWPOLYLINE"))))
  40.    (repeat (setq i (sslength ss))
  41.      (connect (ssname ss (setq i (1- i))))
  42.      )
  43.    )
  44. (princ)
  45. )
回复

使用道具 举报

24

主题

141

帖子

115

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
123
发表于 2022-7-5 18:12:36 | 显示全部楼层
你好,斯特凡!
 
太棒了!!
非常感谢。
它工作得很好!
 
 
非常感谢。
马丁
回复

使用道具 举报

8

主题

1133

帖子

1164

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 18:16:36 | 显示全部楼层
如果您想要一个不使用lisp的替代方案,请在中心绘制一条多段线,给它一个宽度,然后禁用“填充”。效果是一样的
190152ip0ljcyl4rxj0ycr.png
回复

使用道具 举报

24

主题

141

帖子

115

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
123
发表于 2022-7-5 18:20:34 | 显示全部楼层
Hi Eldon公司
 
我的多段线已经存在。
只有角关节仍然缺失。
 
非常感谢。
 
马丁
回复

使用道具 举报

0

主题

375

帖子

385

银币

限制会员

铜币
-7
发表于 2022-7-5 18:24:00 | 显示全部楼层
不客气,马丁
 
删除重复点错误
  1. (defun connect (e / _point d d1 p1 p2 p11 p12 p21 p22 a b n i)
  2. (setq _point vlax-curve-getpointatparam
  3.        d (vlax-curve-getdistatparam e
  4.            (setq n (fix (+ 0.1 (vlax-curve-getendparam e))))
  5.          )
  6.        )
  7. (repeat (setq i (1+ n))
  8.    (setq p1 (_point e (setq i (1- i))))
  9.    (if p2
  10.      (if
  11.        (and
  12.          (< (setq d1 (distance p1 p2)) d)
  13.          (not (zerop d1))
  14.        )
  15.        (setq
  16.          d d1
  17.          a (rem (1+ i) n)
  18.          b i
  19.          )
  20.        )
  21.      )
  22.    (setq p2 p1)
  23.    )
  24. (if (zerop b) (mapcar 'set '(a b) (list b a)))
  25. (setq p11 (_point e a)
  26.        p21 (_point e b)
  27.        )
  28. (while
  29.    (progn
  30.      (while
  31.        (equal p11 (setq p12 (_point e (setq a (rem (1+ a) n)))) 1e-
  32.        )
  33.      (while
  34.        (equal p21 (setq p22 (_point e (setq b (rem (+ n (1- b)) n)))) 1e-
  35.        )
  36.      (not
  37.        (or
  38.          (= (abs (- a b)) 1)
  39.          (= (abs (- a b)) n)
  40.        )
  41.      )
  42.    )
  43.    (entmake
  44.      (list
  45.        '(0 . "LINE")
  46.        (cons 10 (setq p11 p12))
  47.        (cons 11 (setq p21 p22))
  48.        )
  49.      )
  50.    )
  51. )
  52. (defun c:test (/ ss i)
  53. (if
  54.    (setq ss (ssget '((0 . "LWPOLYLINE"))))
  55.    (repeat (setq i (sslength ss))
  56.      (connect (ssname ss (setq i (1- i))))
  57.      )
  58.    )
  59. (princ)
  60. )
回复

使用道具 举报

24

主题

141

帖子

115

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
123
发表于 2022-7-5 18:26:45 | 显示全部楼层
你好,斯特凡!
非常感谢。
 
 
非常感谢。
马丁
回复

使用道具 举报

24

主题

141

帖子

115

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
123
发表于 2022-7-5 18:31:36 | 显示全部楼层
你好,Stefan,
 
一件小事是我注意到了。
绘制了所有斜连接。
同时也是到多段线直端的连接。
您是否仍有可能不使用它在另一个is上创建任何线?
那太好了!
 
非常感谢!
 
马丁
回复

使用道具 举报

24

主题

141

帖子

115

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
123
发表于 2022-7-5 18:33:55 | 显示全部楼层
对不起,我英语不好
回复

使用道具 举报

0

主题

375

帖子

385

银币

限制会员

铜币
-7
发表于 2022-7-5 18:37:56 | 显示全部楼层
更新了以前的帖子。
我不确定我已经涵盖了所有的可能性,稍后我会再次检查。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 00:02 , Processed in 0.425406 second(s), 75 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表