如何自动删除DWG文件中的Wipeouts?Archicad导出DWG清理问询
批量删除DWG文件中的Wipeouts方案
一、AutoCAD LT 自带自动化方案(VBA宏+批处理)
AutoCAD LT支持VBA,你可以通过写简单宏配合批处理实现批量操作:
编写VBA宏代码:
打开AutoCAD LT,按Alt+F11打开VBA编辑器,插入新模块,粘贴以下代码:Sub DeleteAllWipeouts() On Error Resume Next Dim objWipeout As AcadEntity ' 遍历模型空间所有Wipeout并删除 For Each objWipeout In ThisDrawing.ModelSpace If objWipeout.ObjectName = "AcDbWipeout" Then objWipeout.Delete End If Next ' 若Wipeouts在布局空间,可添加遍历布局的代码 ' 保存并关闭文件 ThisDrawing.Save ThisDrawing.Close End Sub将宏保存为
.dvb文件(比如DeleteWipeouts.dvb),放在固定路径(如C:\AutoCADScripts\)。编写批处理文件:
新建文本文件,重命名为BatchDeleteWipeouts.bat,替换路径后保存:@echo off set "ACADLT_PATH=C:\Program Files\Autodesk\AutoCAD LT 202X\acadlt.exe" set "MACRO_PATH=C:\AutoCADScripts\DeleteWipeouts.dvb" set "DWG_FOLDER=C:\YourDWGFolder" for %%f in ("%DWG_FOLDER%\*.dwg") do ( "%ACADLT_PATH%" /b /nologo /vba "%MACRO_PATH%!DeleteAllWipeouts" "%%f" )双击运行批处理,即可批量处理目标文件夹下的所有DWG文件。
二、低成本/免费第三方工具方案
1. BricsCAD Shape(免费)
这款免费DWG编辑工具支持LISP脚本,可实现批量操作:
- 编写LISP脚本并保存为
DelWipeouts.lsp:(defun c:DelWipeouts () (vl-load-com) (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))) (setq ms (vla-get-ModelSpace doc)) ; 删除模型空间Wipeouts (foreach obj (vlax-invoke ms 'GetObjects nil nil acDbWipeout) (vla-delete obj) ) (vla-save doc) (vla-close doc) ) - 编写批处理调用BricsCAD Shape执行脚本,逻辑和AutoCAD LT的批处理类似,替换工具路径即可。
2. DWG TrueView(Autodesk官方免费)
作为免费DWG查看器,可配合AutoCAD LT的脚本间接批量处理,但操作略繁琐,更推荐前两种方案。
三、注意事项
- 处理前务必备份所有DWG文件,避免数据丢失。
- 若Wipeouts存放在布局空间而非模型空间,需修改宏/脚本代码,添加遍历布局对象的逻辑。
- 不同版本的AutoCAD LT/BricsCAD安装路径不同,需根据实际情况修改批处理中的路径。
内容的提问来源于stack exchange,提问作者kaj.n
相关产品推荐
相关产品推荐

