需要lisp到polyedi的帮助
大家好!我需要一个lisp的帮助,它允许我只需点击一个按钮,然后一层一层地将所有内容编辑在一起。不需要有模糊因素。我对创建Lisp知之甚少;事实上,我的知识仅限于编辑已经创建的Lisp。非常感谢。 很容易做到,但要做什么,只要把每一条线变成一条多段线? 我在台面行业工作。我们用autocad绘制台面,然后用它来编程我们的数控系统。数控系统需要每条线都是多段线。我们对不同的工具/深度使用不同的层。我只是想,如果我能得到一个lisp,它可以编辑每一层上的每一条线,以创建依赖于线所在层的所有内容的多段线。如果线路正在连接,则连接它们;如果它们是单独的线,那么只需将它们转换为多段线。 开始了!(defun c:pljoin (/ *error* varLst oldVars ss ssl)
;; --- Error Trap ---
(defun *error* (msg)
(mapcar 'setvar varLst oldVars)
(if (= msg "")
(princ "\nFunction Complete.")
(princ (strcat "\n" (strcase msg)))
) ;_end if
(princ)
) ; end of *error*
(setq varLst(list "CMDECHO" "PEDITACCEPT")
oldVars (mapcar 'getvar varLst)
) ; end setq
;; --- Error Trap ---
(setvar "cmdecho" 0)
(setvar "PEDITACCEPT" 0)
(setq plnum 0)
(setq ss (ssget "X" (list (cons 0 "LINE") (cons 410 (getvar "ctab")))))
(if (/= (setq ssl (sslength ss)) 0)
(command "_pedit" "M" ss "" "Y" "J" "0.0" "")
) ;_end if
(*error* "")
(alert (strcat (rtos ssl) " Polylines Created/Joined."))
(princ)
) ;_end defun
我真的很感谢你的帮助,但这似乎不起作用。它是在某些项目上改变层,而不是将半径聚合在一起。我是如何在脑海中想象它的。关闭除一层之外的所有层。运行pedit,选择“多个”,选择屏幕上的所有内容,使用“连接”选项,没有模糊距离。然后转到下一层,重复上述步骤。这有意义吗?如果你愿意,我也可以给你发送一份我们正在尝试做的事情的完成文件。谢谢 隐马尔可夫模型。。。当我测试它时,它在我的机器上工作——这是一个如此简单的例行程序,几乎不会出什么问题。
你能举个例子吗?我会看看是否还有其他问题。
我刚刚在我的机器上重新测试过,没有改变图层,所有的线都转换成多段线。 这是我们的一张图纸的文件。需要编辑的线已经制作成多段线,因此必须将其分解。注意,某些层(cab线、文字、sqft等)不值得关注。都是以“路线”开头的。
示例绘图。dxf 我最喜欢的命令BOUNDARY在这种情况下有用吗? 好的,我能看到发生了什么-这是因为你有多段线,它们接触到两个不同的层这就是层发生变化的原因-当它们连接时,它会将它们移动到同一层上。 好的,这样可以:
(defun c:pljoin (/ *error* varLst oldVars oLst plnum ss)
;; --- Error Trap ---
(defun *error* (msg)
(mapcar 'setvar varLst oldVars)
(if (= msg "")
(princ "\nFunction Complete.")
(princ (strcat "\n" (strcase msg)))
) ;_end if
(princ)
) ; end of *error*
(setq varLst(list "CMDECHO" "PEDITACCEPT")
oldVars (mapcar 'getvar varLst)
) ; end setq
;; --- Error Trap ---
(vl-load-com)
(vlax-for l
(vla-get-Layers
(vla-get-ActiveDocument
(vlax-get-acad-object)
) ;_end vla-get-ActiveDocument
) ;_end vla-get-Layers
(setq oLst
(cons (vla-get-Name l) oLst)
) ; end setq
) ; end vlax-for
(setq oLst (reverse oLst))
(setvar "cmdecho" 0)
(setvar "PEDITACCEPT" 0)
(setq plnum 0)
(foreach lay oLst
(if
(setq ss (ssget "X"
(list (cons 0 "LINE")
(cons 410 (getvar "ctab"))
(cons 8 lay)
) ;_end list
) ;_end ssget
) ;_end setq
(progn
(command "_pedit" "M" ss "" "Y" "J" "0.0" "")
(setq plnum (+ (sslength ss) plnum))
) ;_end progn
) ;_end if
) ;_end foreach
(*error* "")
(alert (strcat (rtos plnum 2 0) " Polylines Created/Joined."))
(princ)
) ;_end defun
页:
[1]
2