vladthedog 发表于 2022-7-6 15:19:47

需要lisp到polyedi的帮助

大家好!我需要一个lisp的帮助,它允许我只需点击一个按钮,然后一层一层地将所有内容编辑在一起。不需要有模糊因素。我对创建Lisp知之甚少;事实上,我的知识仅限于编辑已经创建的Lisp。非常感谢。

Lee Mac 发表于 2022-7-6 15:25:32

很容易做到,但要做什么,只要把每一条线变成一条多段线?

vladthedog 发表于 2022-7-6 15:27:22

我在台面行业工作。我们用autocad绘制台面,然后用它来编程我们的数控系统。数控系统需要每条线都是多段线。我们对不同的工具/深度使用不同的层。我只是想,如果我能得到一个lisp,它可以编辑每一层上的每一条线,以创建依赖于线所在层的所有内容的多段线。如果线路正在连接,则连接它们;如果它们是单独的线,那么只需将它们转换为多段线。

Lee Mac 发表于 2022-7-6 15:32:00

开始了!
 

(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


vladthedog 发表于 2022-7-6 15:33:04

我真的很感谢你的帮助,但这似乎不起作用。它是在某些项目上改变层,而不是将半径聚合在一起。我是如何在脑海中想象它的。关闭除一层之外的所有层。运行pedit,选择“多个”,选择屏幕上的所有内容,使用“连接”选项,没有模糊距离。然后转到下一层,重复上述步骤。这有意义吗?如果你愿意,我也可以给你发送一份我们正在尝试做的事情的完成文件。谢谢

Lee Mac 发表于 2022-7-6 15:36:30

隐马尔可夫模型。。。当我测试它时,它在我的机器上工作——这是一个如此简单的例行程序,几乎不会出什么问题。
 
你能举个例子吗?我会看看是否还有其他问题。
 
我刚刚在我的机器上重新测试过,没有改变图层,所有的线都转换成多段线。

vladthedog 发表于 2022-7-6 15:40:17

这是我们的一张图纸的文件。需要编辑的线已经制作成多段线,因此必须将其分解。注意,某些层(cab线、文字、sqft等)不值得关注。都是以“路线”开头的。
示例绘图。dxf

MaxwellEdison 发表于 2022-7-6 15:43:01

我最喜欢的命令BOUNDARY在这种情况下有用吗?

Lee Mac 发表于 2022-7-6 15:47:20

好的,我能看到发生了什么-这是因为你有多段线,它们接触到两个不同的层这就是层发生变化的原因-当它们连接时,它会将它们移动到同一层上。

Lee Mac 发表于 2022-7-6 15:50:51

好的,这样可以:
 

(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
查看完整版本: 需要lisp到polyedi的帮助