resullins 发表于 2022-7-6 06:13:33

在多个文件中运行宏

我有一个图形集,里面有大约200个图形,所有的都有修订云。我现在需要删除所有云线批注。由于文件的大小,手动操作需要几个小时。
 
有没有一种方法可以自动打开所有。dwg文件在一个位置,选择某个块,删除它,保存文件,然后关闭?冲洗并重复。

Lee Mac 发表于 2022-7-6 06:16:52

我建议创建一个AutoLISP程序来对每个图形执行必要的操作,然后通过我的脚本编写器程序(或替代的批处理程序)运行它。
 
 
是否希望从每个图形中删除特定的块参照?
还是块参照的所有实例?

MBSupport 发表于 2022-7-6 06:22:18

你在这里需要小心一点。您需要使用AutoCAD full version来使用SSGET选择修订块,这是可以做到的,而且非常具体,我看到的问题是在删除修订云线时。你能绝对肯定你只选择了云线批注,而不是其他什么吗。云线批注可能位于特定层上,但您无法确定该层上是否也没有其他内容。
 
我认为最好的选择是部分自动执行脚本以删除修订块,然后暂停脚本以手动删除修订云线。脚本例程中的任何非AutoCAD命令都将暂停脚本,以便在完成后在AutoCAD命令行上键入RESUME以恢复脚本并打开下一个图形。暂停脚本的能力是一个非常有用的功能。
 
帕特里克
http://www.multi-batch.com/

resullins 发表于 2022-7-6 06:26:07

@李:我去看看。我希望这是一个简单的Lisp程序,因为我仍然不是很好!但你的网站已经被建议作为去的地方!像往常一样。
 
@MB:我不能做一些需要用户输入的事情,这违背了我试图做的事情的目的。我正在处理的文件需要5-6分钟来保存和关闭每个文件。

ReMark 发表于 2022-7-6 06:29:10

这可以合并到您的脚本文件中。
 

;; FIND AND ERASE BLOCK
;; EDIT "yourblockname" TO SUIT
(setq ss (ssget "_X" '((0 . "INSERT") ( 2 . "youroldblockname"))))
;; Find all blocks named "youroldblockname"
(if ss (command "_.ERASE" ss ""))
;; PURGE BLOCK
;; EDIT "youroldblockname" TO SUIT
_PURGE
_B
"youroldblockname"
_N
_QSAVE
;; END SCRIPT
 
致谢:由MTE Controls编写,并于2006年在AutoCAD Electrical讨论组上发布。

Lee Mac 发表于 2022-7-6 06:31:09

要删除特定块的所有引用(包括嵌套到任何深度的所有嵌套引用),请将此程序保存到AutoCAD支持路径,然后在脚本中使用:
 
更改突出显示的块名称列表以适合(该列表不区分大小写)。
 
对于选择和删除修订云线-我同意,如果您的图形包含其他多段线,且弧段与修订云线位于同一图层上,则这可能会有潜在危险。
 
为了减少这种潜在风险,如果修订云线自创建以来未被修改,则可以使用以下函数返回过滤器列表,然后可以使用ssget函数检索一组修订云线:
2

resullins 发表于 2022-7-6 06:33:06

我实际上刚刚创建了一个名为“RevCloud”或类似的动态块,所以我不需要选择弧或类似的东西。。。整个事情是一个街区。
 
实际上,我将其制作成了一个块,这样就可以更容易地用代码进行操作。

ReMark 发表于 2022-7-6 06:37:55

马·nip·u·lat·able?
即使每个图形中有200个相同块的实例,我们仍然只讨论一个块。我之前发布的宏可以工作。你所要做的就是把它做成一个表格,李的脚本作者可以用它批量处理整个文件夹中的图纸。

resullins 发表于 2022-7-6 06:39:52

是的。。。只有一个块,尽管可能有多个实例。所以我要试试你的。。。只要我找到时间。。。或者,你知道,我一天36小时的请愿书通过了!

resullins 发表于 2022-7-6 06:44:06

我支持操纵。有效选择!我肿胀的手指打字的时间更短!
页: [1] 2
查看完整版本: 在多个文件中运行宏