NH3man! 发表于 2022-7-6 08:31:30

缺少Lisp

我一生都找不到它。我以前Lisp程序
 
1、打开所有层
2、删除所有文本
3、删除所有直线和点
4.将所有剩余对象的属性设置为(0层)(线型设置为“按块”)(颜色设置为“按块”)(线宽设置为“按块”)
5.删除现有布局选项卡
6、清除所有REGAPP
 
我不得不手动处理大约100个文件,还有将近2000个文件要处理。我会继续到处找,但那是一份旧文件。如果你们中的任何人有或看过它,你可以在你的帖子中链接它。
 
谢谢NH3man!

dirkvandonkelaa 发表于 2022-7-6 08:38:56

这是你需要的职位吗??
 
http://www.cadtutor.net/forum/showthread.php?44801-清理图形Lisp&高亮显示=Lisp+turn+图层

Lee Mac 发表于 2022-7-6 08:42:08

试试这个:
 
(defun c:DoItAll ( / *error* _startundo _endundo acdoc cmdecho locked i s )

   (defun *error* ( msg )
       (if cmdecho (setvar 'CMDECHO cmdecho))
       (if acdoc   (_EndUndo acdoc))
       (if (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
         (princ (strcat "\nError: " msg))
       )
       (princ)
   )

   (defun _StartUndo ( doc )
       (_EndUndo doc)
       (vla-StartUndoMark doc)
   )

   (defun _EndUndo ( doc )
       (if (= 8 (logand 8 (getvar 'UNDOCTL)))
         (vla-EndUndoMark doc)
       )
   )

   (setq acdoc   (vla-get-activedocument (vlax-get-acad-object))
         cmdecho (getvar 'CMDECHO)
   )
   (_StartUndo acdoc)
   (setvar 'CMDECHO 0)

   ;; Turn on and unlock all Layers

   (vlax-for layer (vla-get-layers acdoc)
       (vla-put-layeron layer :vlax-true)
       (if (eq :vlax-true (vla-get-lock layer))
         (vla-put-lock (car (setq locked (cons layer locked))) :vlax-false)
       )
   )

   ;; Delete Layout Tabs:

   (vlax-for layout (vla-get-layouts acdoc)
       (if (not (eq "Model" (vla-get-name layout)))
         (vla-delete layout)
       )
   )

   ;; Delete all Text, MText, Lines & Points

   (if (setq s (ssget "_X" '((0 . "TEXT,MTEXT,LINE,POINT"))))
       (repeat (setq i (sslength s))
         (entdel (ssname s (setq i (1- i))))
       )
   )

   ;; Set properties of remaining objects
   
   (vlax-for obj (vla-get-modelspace acdoc)
       (vla-put-layer obj "0")
       (vla-put-linetype obj "BYBLOCK")
       (vla-put-color obj acbyblock)
       (vla-put-lineweight obj aclnwtbyblock)
   )

   ;; Purge all RegApps:

   (command "_.-purge" "_R" "*" "_N")

   ;; Relock those layers!

   (foreach layer locked (vla-put-lock layer :vlax-true))

   ;; Reset the environment
   
   (setvar 'CMDECHO 1)
   (_EndUndo acdoc)
   (princ)
)
(vl-load-com) (princ)

NH3man! 发表于 2022-7-6 08:49:49

工作方式更好!!!!!在大约10个文件上试用了一下,都很好。我喜欢你把它分开的方式。我能更好地理解它。
 
再次感谢李帮我摆脱困境!!!!!!

Lee Mac 发表于 2022-7-6 08:53:12

很好的NH3人,很高兴听到它为你工作

NH3man! 发表于 2022-7-6 08:58:19

李,我刚刚遇到了另一个问题。不是你的代码,而是我正在处理的一些文件。当我在一些(属性定义)上运行代码时。我不需要它们,因为我们正在将所有的块和零件图转换为MEP的多视图零件。我曾尝试将(att)(attr)和其他一些内容添加到我认为是您的删除代码字符串中,但没有效果。我还试着在你的代码中加入一些其他代码的部分,但那根本不起作用。
 
谢谢你的帮助。
 
NH3人!

Lee Mac 发表于 2022-7-6 09:01:41

我不太明白NH3man,你想补充什么?

NH3man! 发表于 2022-7-6 09:10:24

当我在一些图形上运行你的代码时。属性定义显示在图形上。它们看起来像文本,但不是。我可以点击其中一个,然后选择相似的。然后删除它们。然后我试图通过在我认为是删除字符串的地方添加(属性)来编辑代码。但这不起作用。

Lee Mac 发表于 2022-7-6 09:13:14

嗯,我不确定它们为什么会出现(除非它们可能在由例程打开的关闭层上?)。
 
无论如何,请更改以下内容:
 
(0 . "TEXT,MTEXT,LINE,POINT")
 
收件人:
 
(0 . "ATTDEF,TEXT,MTEXT,LINE,POINT")

NH3man! 发表于 2022-7-6 09:17:13

我差点就拿到了。我试过ATTD。英雄联盟
 
再次感谢!
页: [1] 2
查看完整版本: 缺少Lisp