乐筑天下

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

[编程交流] Lisp将多线转换为s

[复制链接]

4

主题

33

帖子

29

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 16:07:08 | 显示全部楼层 |阅读模式
你好
 
我正在寻找一个lisp,可以将多行转换为一个单PLINE。
我在附件中找到的将同一多行转换为2 PLINE的lisp 170711pnfxnt8fuioo8zsl.jpg
但我需要多条线连接到一条线,而不是两条线。
如果有人有任何想法,请与我分享。。。
:)
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-5 16:11:46 | 显示全部楼层
最终结果是一条多段线,其宽度模拟了两条多线之间的距离?
回复

使用道具 举报

4

主题

33

帖子

29

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 16:18:29 | 显示全部楼层
可根据图纸进行更改。。
假设MLINE表示管道,则管道直径应不同。。。
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-5 16:21:13 | 显示全部楼层
注意,我没有指定“set”宽度。所以基本上我的问题的答案是“是的”。对的
回复

使用道具 举报

4

主题

33

帖子

29

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 16:26:22 | 显示全部楼层
170713u0if8kcc44fk04yf.jpg
 
希望你抓住我。。。。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:29:22 | 显示全部楼层
备注看起来像mline的原始中心线,不确定mline的“co ords”给出了什么,也需要检查顶部、底部和零。
 
  1. ; converts mline to pline note uses mline vertices does not take
  2. ; into account top or bottom offset
  3. ; By Alan H Aug 2017
  4. (defun c:test ( / co-ords ent co-ordsxy xy oldsnap)
  5. (setq oldsnap (getvar "osmode"))
  6. (setq ss (ssget (list (cons 0 "Mline")))) ; pick only mlines
  7. (if (/= ss nil)
  8. (progn
  9. (repeat (setq x (sslength ss))
  10. (setq ent (ssname ss (setq x (- x 1)))) ; get mlines
  11. (setq co-ords
  12. (vlax-safearray->list
  13. (vlax-variant-value
  14. (vlax-get-property
  15. (vlax-ename->vla-object ent) ; get co-ordinates of mline
  16. "Coordinates"
  17. )
  18. )
  19. )
  20. )
  21. ; convert now to a list of xy as co-ords are x y x y x y if 3d x y z x y z
  22. (setq numb (/ (length co-ords) 3)) ; mlines have a z value hence / 3
  23. (setq I 0)
  24. (repeat numb
  25. (setq xy (list (nth i co-ords)(nth (+ I 1) co-ords) ))
  26. (setq co-ordsxy (cons xy co-ordsxy)) ; make a list of co-ordinates
  27. (setq I (+ I 3))
  28. )
  29. (setvar "osmode" 0)
  30. (command "_pline")
  31. (while (= (getvar "cmdactive") 1 )
  32. (repeat (setq y (length co-ordsxy))
  33. (command (nth (setq y (- y 1)) co-ordsxy)) ; read list of points
  34. )
  35. (command "")
  36. )
  37. (setq co-ordsxy nil) ; reset to do again
  38. (command "erase" ent "")
  39. )
  40. )
  41. )
  42. (setvar "osmode" oldsnap) ; reset snap mode
  43. )
回复

使用道具 举报

4

主题

33

帖子

29

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 16:34:53 | 显示全部楼层
比加尔,
 
那太棒了,相当不错。
 
仍然存在一个问题。。。。。
 
1.MLINE仍然存在(需要删除的MLINE)
2、新创建的PLINE不是MLINE的中心线。(在这种情况下,我将多线的塞纳线视为一条普林线,基础多线应替换为新普林线)
 
希望你能满足我的要求。:)
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:36:48 | 显示全部楼层
删除添加到代码,顶部或底部使其更难。
回复

使用道具 举报

4

主题

33

帖子

29

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 16:42:29 | 显示全部楼层
无论如何,多线包含奇数,如3,5,7,9。。。。等Mlines,它将以中心线作为PLINE。(但不是偶数)。
正如您所提到的,如果删除更难添加,那么easly可以通过带有“选择类似”选项的Erase命令删除保留多行。
 
谢谢大家的大力支持:D:D:D
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-5 16:44:30 | 显示全部楼层
我已经将您的帖子转移到AutoLISP、Visual LISP和DCL论坛。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 19:44 , Processed in 0.647807 second(s), 75 queries .

© 2020-2025 乐筑天下

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