anishtain4 发表于 2022-7-6 08:35:09

将多段线连接为一个逗号

大家好
 
我不太喜欢lisp,但我确实经常使用一系列命令,如果有人能告诉我lisp,我可以将它们打包为一个命令,这将是一个很大的帮助。我相信这对你们这些lisp专家来说一点都不难,提前谢谢。
 
多重多段线编辑

参加
0
出口

Tharwat 发表于 2022-7-6 08:47:17

也许是这样。。。。。
 

(defun c:TesT (/ ss)
(if (setq ss (ssget "_:L" '((0 . "*POLYLINE"))))
   (command "_.pedit" "_m" ss "" "_join" 0.0 "")
)
(princ)
)

anishtain4 发表于 2022-7-6 08:53:32

谢谢,我的问题是我试图使用Mpedit,这不是一个标准命令,无法调用,我编写了自己的lisp作为:
 

(defun c:pj()
(if (setq entset(ssget))
   (progn
   (command "pedit" "multiple" entset "" "yes" "join" 0 "")
   (princ)
   )
   )
)

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

Tharwat 发表于 2022-7-6 09:00:12

使用列表查看连接多段线的长度可能更好。。。
 

(defun c:TesT (/ ss)
(if (setq ss (ssget "_:L" '((0 . "*POLYLINE"))))
   (progn (command "_.pedit" "_m" ss "" "_join" 0.0 "")
          (alert (strcat "Length of last joined Polyline is : "
                         " "
                         "< "
                         (rtos (vlax-curve-getDistatPoint (entlast) (vlax-curve-getEndPoint (entlast))) 2)
                         " >"
               )
          )
   )
)
(princ)
)

ketxu 发表于 2022-7-6 09:09:34

也许以前换过培他西普?

Arin9916 发表于 2022-7-6 09:20:09


(defun c:jj( / ss doc )
   (defun PTE:ss->obj ( ss / i re )
       (if ss
         (repeat (setq i (sslength ss))
               (setq re (cons (vlax-ename->vla-object (ssname ss (setq i (1- i)))) re))
         )
       )
   )
   
   (setvar 'cmdecho 0)
   (setq ss
       (ssget
         '(
               (-4 . "<or")
                   (0 . "line,arc")
                  
                   (-4 . "<and")
                     (0 . "lwpolyline")
                     (70 . 0)
                   (-4 . "and>")
               (-4 . "or>")
         )
       )
   )
   (vla-startundomark (setq doc(vla-get-ActiveDocument (vlax-get-acad-object))))
   (foreach obj (PTE:ss->obj ss)
       (and
         (not(vlax-erased-p obj))
         (if (= (vla-get-objectname obj)"AcDbPolyline")
               (command "pedit" (vlax-vla-object->ename obj) "j" ss "" "")
               (command "pedit" (vlax-vla-object->ename obj) "y" "j" ss "" "")
         )
       )
   )
   (vla-endundomark doc) (princ)
)(vl-load-com)

anishtain4 发表于 2022-7-6 09:24:50

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

ketxu 发表于 2022-7-6 09:31:51

或者从这样的事情开始:
您可以自己放置错误捕捉或撤消标记

anishtain4 发表于 2022-7-6 09:39:29

谢谢你,这就是我所需要的
页: [1]
查看完整版本: 将多段线连接为一个逗号