乐筑天下

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

[编程交流] 将多段线连接为一个逗号

[复制链接]

19

主题

70

帖子

51

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 08:35:09 | 显示全部楼层 |阅读模式
大家好
 
我不太喜欢lisp,但我确实经常使用一系列命令,如果有人能告诉我lisp,我可以将它们打包为一个命令,这将是一个很大的帮助。我相信这对你们这些lisp专家来说一点都不难,提前谢谢。
 
多重多段线编辑

参加
0
出口
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 08:47:17 | 显示全部楼层
也许是这样。。。。。
 
  1. (defun c:TesT (/ ss)
  2. (if (setq ss (ssget "_:L" '((0 . "*POLYLINE"))))
  3.    (command "_.pedit" "_m" ss "" "_join" 0.0 "")
  4. )
  5. (princ)
  6. )
回复

使用道具 举报

19

主题

70

帖子

51

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 08:53:32 | 显示全部楼层
谢谢,我的问题是我试图使用Mpedit,这不是一个标准命令,无法调用,我编写了自己的lisp作为:
 
  1. (defun c:pj()
  2. (if (setq entset(ssget))
  3.    (progn
  4.      (command "pedit" "multiple" entset "" "yes" "join" 0 "")
  5.      (princ)
  6.      )
  7.    )
  8. )

 
但我脑海中浮现出另一个问题,当我创建这条最终的多段线时,我想知道它的长度,我如何选择之前命令的结果,将“li”应用到它并获得它的长度变量?
 
ps:如果我不是按照某些标准编写代码,我很高兴知道这一点
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 09:00:12 | 显示全部楼层
使用列表查看连接多段线的长度可能更好。。。
 
  1. (defun c:TesT (/ ss)
  2. (if (setq ss (ssget "_:L" '((0 . "*POLYLINE"))))
  3.    (progn (command "_.pedit" "_m" ss "" "_join" 0.0 "")
  4.           (alert (strcat "Length of last joined Polyline is : "
  5.                          " "
  6.                          "< "
  7.                          (rtos (vlax-curve-getDistatPoint (entlast) (vlax-curve-getEndPoint (entlast))) 2)
  8.                          " >"
  9.                  )
  10.           )
  11.    )
  12. )
  13. (princ)
  14. )
回复

使用道具 举报

22

主题

326

帖子

185

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
243
发表于 2022-7-6 09:09:34 | 显示全部楼层
也许以前换过培他西普?
回复

使用道具 举报

10

主题

38

帖子

28

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 09:20:09 | 显示全部楼层
  1. (defun c:jj( / ss doc )
  2.    (defun PTE:ss->obj ( ss / i re )
  3.        (if ss
  4.            (repeat (setq i (sslength ss))
  5.                (setq re (cons (vlax-ename->vla-object (ssname ss (setq i (1- i)))) re))
  6.            )
  7.        )
  8.    )
  9.    
  10.    (setvar 'cmdecho 0)
  11.    (setq ss
  12.        (ssget
  13.            '(
  14.                (-4 . "<or")
  15.                    (0 . "line,arc")
  16.                   
  17.                    (-4 . "<and")
  18.                        (0 . "lwpolyline")
  19.                        (70 . 0)
  20.                    (-4 . "and>")
  21.                (-4 . "or>")
  22.            )
  23.        )
  24.    )
  25.    (vla-startundomark (setq doc(vla-get-ActiveDocument (vlax-get-acad-object))))
  26.    (foreach obj (PTE:ss->obj ss)
  27.        (and
  28.            (not(vlax-erased-p obj))
  29.            (if (= (vla-get-objectname obj)"AcDbPolyline")
  30.                (command "pedit" (vlax-vla-object->ename obj) "j" ss "" "")
  31.                (command "pedit" (vlax-vla-object->ename obj) "y" "j" ss "" "")
  32.            )
  33.        )
  34.    )
  35.    (vla-endundomark doc) (princ)
  36. )(vl-load-com)
回复

使用道具 举报

19

主题

70

帖子

51

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 09:24:50 | 显示全部楼层
Arin你的lisp是最好的,因为当我想附加多个多段线时,它可以工作,但我无法找到你在那里做了什么,我无法将最终多段线的显示长度添加到你的lisp中,entlast只向我返回nil。
 
最好是在代码中添加一些注释,最重要的是在第一个代码中添加一个标识,例如:
;;;--- jj。lsp-使所有选定对象成为一条多段线并测量其长度。
;;;
;;;
;;;
;;;--- Arin版权所有2011
;;;    保留所有权利。
;;;
;;;
;;;
;;;--- 创建于2011年12月10日
你能告诉我你学习lisp的参考资料是什么吗?
 
我也喜欢你的密码
回复

使用道具 举报

22

主题

326

帖子

185

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
243
发表于 2022-7-6 09:31:51 | 显示全部楼层
或者从这样的事情开始:
您可以自己放置错误捕捉或撤消标记
回复

使用道具 举报

19

主题

70

帖子

51

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2022-7-6 09:39:29 | 显示全部楼层
谢谢你,这就是我所需要的
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-8 04:40 , Processed in 1.706712 second(s), 70 queries .

© 2020-2025 乐筑天下

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