将多段线连接为一个逗号
大家好我不太喜欢lisp,但我确实经常使用一系列命令,如果有人能告诉我lisp,我可以将它们打包为一个命令,这将是一个很大的帮助。我相信这对你们这些lisp专家来说一点都不难,提前谢谢。
多重多段线编辑
对
参加
0
出口 也许是这样。。。。。
(defun c:TesT (/ ss)
(if (setq ss (ssget "_:L" '((0 . "*POLYLINE"))))
(command "_.pedit" "_m" ss "" "_join" 0.0 "")
)
(princ)
)
谢谢,我的问题是我试图使用Mpedit,这不是一个标准命令,无法调用,我编写了自己的lisp作为:
(defun c:pj()
(if (setq entset(ssget))
(progn
(command "pedit" "multiple" entset "" "yes" "join" 0 "")
(princ)
)
)
)
但我脑海中浮现出另一个问题,当我创建这条最终的多段线时,我想知道它的长度,我如何选择之前命令的结果,将“li”应用到它并获得它的长度变量?
ps:如果我不是按照某些标准编写代码,我很高兴知道这一点 使用列表查看连接多段线的长度可能更好。。。
(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)
)
也许以前换过培他西普?
(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)
Arin你的lisp是最好的,因为当我想附加多个多段线时,它可以工作,但我无法找到你在那里做了什么,我无法将最终多段线的显示长度添加到你的lisp中,entlast只向我返回nil。
最好是在代码中添加一些注释,最重要的是在第一个代码中添加一个标识,例如:
;;;--- jj。lsp-使所有选定对象成为一条多段线并测量其长度。
;;;
;;;
;;;
;;;--- Arin版权所有2011
;;; 保留所有权利。
;;;
;;;
;;;
;;;--- 创建于2011年12月10日
你能告诉我你学习lisp的参考资料是什么吗?
我也喜欢你的密码 或者从这样的事情开始:
您可以自己放置错误捕捉或撤消标记 谢谢你,这就是我所需要的
页:
[1]