作者:Michael Best
公司:The Arthur G. Russell Company
学习目标
- 学习如何减少鼠标点击、按键操作及各类手动操作
- 学习在桌面和 AutoCAD 内编写并运行脚本文件
- 学习批量处理整个目录的图形文件,以实现版本控制、符合公司和 / 或客户标准
- 学习结合.bat文件和脚本文件与核心控制台集成
AutoCAD 脚本编写是软件自 90 年代初就内置的 “开箱即用” 工具之一。2013 年引入的 AutoCAD 核心控制台(Core Console),使用户处理图形的时间仅为手动打开图形并修改所需时间的一小部分。
在本课程中,您将学习如何通过脚本文件直接向核心控制台输入命令、创建.bat文件,以及快速高效地批量处理整个目录的图形文件,无需任何重复性用户输入。
掌握核心控制台的动态功能后,您回到办公室工作时将大幅提升效率。
注:本课程以 AutoCAD 为主,但核心控制台包含于所有 AutoCAD 垂直领域产品中。
Michael Best 是康涅狄格州布里斯托尔市 The Arthur G. Russell(AGR)公司的高级项目工程师。他负责通过应用可靠的机械设计实践开发设计概念,协调项目设计团队活动,并作为主要技术联系人,确保设计目标稳健且准确实现。
Michael 在过去 18 年中参加了 11 次 AutoCAD 用户大会(AU),同时担任讨论小组和焦点小组的成员,曾主讲 4 门课程并协助其他课程的教学工作。
他拥有 30 多年使用 AutoCAD 及其多个版本的经验,在有限的业余时间还为 AutoCAD、Inventor 和 Windows 产品编写程序。
Michael 的联系方式如下:
电子邮箱:Michael.Best@ArthurGRussell.com
备用邮箱:MikeBest05@comcast.net
AutoCAD 始终具备强大的自定义能力,能够实现几乎所有您能想到的操作,而重复性任务却是生产力的“杀手”!无论是创建新图形还是更新现有图形,随着时间的推移,反复点击命令和按钮会变得乏味且令人麻木。更不用说,长时间重复执行这些命令有时反而会适得其反。
试想一下,为了满足客户要求的内部或外部标准,需要对成千上万张图形进行此类操作。此时,我们可能会感到枯燥,开始查看电子邮件、参与其他对话,甚至快速浏览社交媒体,来逃避枯燥乏味的工作。在某些极端情况下,可能会质疑自己在公司的价值,进而上网寻找新工作。(此处露出狡黠的微笑)
AutoCAD 脚本编写和核心控制台(Core Console)正是解决这一问题的利器!脚本使用的命令与您通过鼠标点击反复执行的命令完全相同,但这些命令被集中编写在一个文本文件中。经过初步的输入尝试和调试后,您可以通过菜单插入脚本文件,或将其“拖放”至界面中运行。最棒的是,无需学习任何编程语言!脚本功能是免费的,并且一直是 AutoCAD 的内置功能。如果您知道如何在 AutoCAD 中输入命令,那么您已经掌握了 AutoCAD 脚本编写的基础。在本课程中,我们将涵盖脚本编写的基础知识,并进一步深入探讨。
使用核心控制台(CC),您可以以标准 AutoCAD 无法企及的速度批量处理数百甚至数千张图形。核心控制台是 AutoCAD 的精简版本,无需依赖我们在 AutoCAD 中常用的外围图形界面。您只需创建一个 .bat 文件和一个或多个脚本文件,即可一次性处理所有图形文件。需要注意的是,如今大多数计算机都运行多核处理器,核心控制台可以配置为在不同核心上的不同文件夹中运行一系列 .bat 文件。
我相信在座的大多数人都会承认,身体里最强壮的肌肉是食指……其次是中指。当然,中指是用于右键点击的。
在任何设计项目或互联网使用中,鼠标操作都是我们重复最多的工作。您几乎可以自动化 AutoCAD 中的任何流程。任何形式的编程总是充满挑战,这是一种“爱恨交织”的关系——当程序运行时,您会喜欢它;当程序出错时,您会讨厌它!当程序出错时,需要尝试不同的方法,或者暂时离开,理清思路后再试,有时看看茶叶的形状(译注:西方占卜方式)或献祭一只鸡寻找答案也会奏效。而我会选择吃掉一桶炸鸡。
VBA (Visual Basic for Applications)
AutoCAD VBA 在 R14 版本首次推出。最初版本功能强大,但如果您习惯为 Windows Office 产品创建 VBA 应用程序,可能会觉得有些难以上手。目前 VBA 不再包含在 AutoCAD 安装包中,必须从 Autodesk 网站单独下载安装。
AutoLISP/Visual LISP
AutoLISP 是一种解释型编程语言,在 AutoCAD 中使用前无需编译。自 1986 年 AutoCAD 2.18 版本起,AutoLISP 就已存在,至今仍被广泛使用,网上有上百万行代码可供下载使用。它是 AutoCAD 中处理和操作 .dwg 文件的强大编程语言。
宏与功能区
将宏分配到功能区按钮非常简单,但根据复杂程度,调试可能会很困难。理解语法是创建从简单到复杂的按钮宏的关键。
脚本编写
让命令提示符成为您的朋友! 没错,如果您知道想要使用的命令,那么屏幕底部那个总是出现的小面板(很烦人,对吧?)将成为您脚本编写时最好的朋友。您的第二好朋友是谁?当然是 AutoCAD 文本窗口(或 F2 键)!
脚本编写的优势:
在接下来的课程中,我们将重点学习如何利用脚本编写和核心控制台大幅提高您的工作效率!
什么是脚本?脚本只做一件事:模拟你在屏幕或命令提示符(过去固定在屏幕底部的那个工具)中输入的操作。输入命令,按照提示完成操作,你就基本编写了第一个脚本。例如想清理图形?无需从菜单中选择(见下文),可以直接在AutoCAD命令行运行清理命令。

只需在命令行输入 Pu,即可调出清理命令对话框。

以下是输入 Pu 后显示的对话框示意图。

对于脚本编写,我们不能使用对话框,因为它会完全停止/取消脚本命令的执行。通过在命令行输入 “-PU”,命令行会在下方显示,询问你希望对“Purge”命令执行何种操作。

之前对话框中所有可供选择的选项,在命令行中均以文本形式呈现。注意列表中的大写字母了吗?这些字母对应脚本中可输入的选择项。我们大多数人会选择 “All” 来清理所有未使用的对象。
在创建首个脚本前,请先记录你希望脚本实现的功能。以下是可供使用的潜在命令列表,随后需梳理这些命令的执行顺序:
在确定需要对图形集进行的修改、调整或清理操作后,需将命令按逻辑顺序排列。最佳实践是先在测试图形上尝试这些命令,以验证执行顺序是否符合预期。在输入命令时,可使用 AutoCAD 文本窗口(F2)查看每个命令及后续命令的执行结果,直至完成所有操作。(参见上文“Purge”命令示意图)
以下工具均可用于创建脚本文件:
这些工具均能高效支持脚本编写与编辑。
如前所述,为节省时间,建议充分利用AutoCAD文本窗口(F2)。该窗口会记录命令提示符历史,当前图形中的所有命令均可滚动查看。历史记录包括所有AutoCAD提示、命令、系统变量、默认值和设置、错误消息、报告,当然还有您通过键盘输入或菜单/工具栏点击执行的所有操作。
确定操作流程并通过手动输入命令验证顺序后,可按以下步骤创建脚本:
.scr。Zoom E 中“m”和“E”之间的空格等效于一次“回车”,表示执行“缩放范围”命令。; 下一条命令将缩放至图形范围 Zoom E
Zoom E (光标需位于此空行,确保“缩放范围”命令完成)
-Insert ; 仅通过命令行执行“插入”命令,避免弹出对话框
Undo命令一次性撤销脚本执行的所有步骤(脚本执行被视为单个整体命令)。遵循以上规则可大幅降低脚本编写错误率,确保自动化流程稳定运行。
DELAY [毫秒值]DELAY 1000 ; 暂停1秒
EXPORT PDF 后延时等待文件写入完成。DELAY 3000)。ESC/Backspace)的脚本。RESUME 即可继续。INPUT 命令等待用户输入时临时中断,确认后恢复。SAVEAS 前暂停检查参数,确认后继续保存。RSCRIPT。ZOOM EXTENTS → PAN → ROTATE 动态展示图纸。DELAY 实现每隔5分钟自动刷新 EXTERNALREFERENCE。.scr 脚本文件并按顺序执行命令。SCRIPT,选择脚本文件路径。LAYER → STYLE → DIMSTYLE 统一设置新图模板。APPLOAD → MENULOAD 快速加载自定义插件。SCRIPTCALL "路径\子脚本.scr"
; 主脚本:图纸标准化流程 SCRIPTCALL "CheckLayers.scr" ; 检查图层合规性 SCRIPTCALL "PurgeData.scr" ; 清理冗余数据 SCRIPTCALL "SaveFinal.scr" ; 保存并归档
; 建筑图纸主流程 SCRIPTCALL "Arch\Foundation.scr" ; 基础层处理 SCRIPTCALL "Arch\Structure.scr" ; 结构层处理
场景1:图纸批量合规性检查
; 主脚本:建筑图纸合规性检查 SCRIPTCALL "CheckLayers.scr" ; 检查图层命名规范 SCRIPTCALL "CheckText.scr" ; 检查文字样式和高度 SCRIPTCALL "CheckBlocks.scr" ; 检查块引用完整性 SAVEAS "合规版\" ; 另存为合规文件夹
场景2:自动化会议演示
; 演示脚本:动态展示设计方案 ZOOM E ; 初始全图显示 DELAY 2000 ; 暂停2秒 ZOOM W 0,0 100,100 ; 局部放大 DELAY 1500 RSCRIPT ; 循环执行,按ESC停止
场景3:版本批量转换
; 批量转换脚本 -OPEN "D:\旧图纸\*.dwg" ; 打开文件夹中所有图纸 -PURGE A ; 清理所有未使用对象 SAVEAS "D:\新图纸\*.dwg" AC1032 ; 保存为2018版本 CLOSE ; 关闭当前图纸 RSCRIPT ; 循环处理下一个
- 禁用对话框(如 -INSERT 代替 INSERT),避免脚本中断。"C:\My Scripts\File.scr")。F2文本窗口 查看命令执行日志,定位错误行。UNDO 命令一次性撤销脚本所有操作,快速回滚。通过严谨应用这些脚本命令,可实现真正符合工程需求的 AutoCAD 自动化流程。
是否应设置搜索路径?这并无坏处。可前往 「选项」 → 「支持文件搜索路径」 → 「添加」 → 「浏览」,然后添加脚本文件的保存路径。该路径可以是本地硬盘,也可以是网络共享位置。这将使您在通过功能区(「管理」 → 「运行脚本」)或命令行(输入 script)调用脚本时更加便捷。

脚本设置
在开始编写脚本前,我们需要修改一些变量。我通常会关闭的三个主要变量是 属性对话框、文件对话框 和 命令对话框。这些设置不会阻止所有对话框打开,但能覆盖大多数情况。
属性对话框(ATTDIA)
控制 INSERT 命令是否使用对话框进行属性值输入。
命令对话框(CMDDIA)
控制 DIMEDIT 和 QLEADER 命令的在位文字编辑器显示,以及基于 AutoCAD 的产品中某些对话框的显示。
文件对话框(FILEDIA)
抑制 SAVEAS 和 OPEN 等文件导航对话框的显示。
DWG 检查(DWGCHECK) 在打开图形时检查潜在问题。建议关闭此功能,以免在处理从其他 CAD 软件导出的图形时弹出对话框。
通过这些设置,您可以创建更加流畅的自动化工作流程,减少对话框干扰,提高脚本执行效率。
以下脚本用于关闭这些对话框。出于稳妥考虑,这样做很有必要。在脚本执行期间,任何对话框的弹出都会导致脚本中断。(0=关闭,1=开启)
script;Turn off Variables attdia 0 cmddia 0 filedia 0 dwgcheck 0 do work do work do work do work attdia 1 cmddia 1 filedia 1 dwgcheck 1 (optional to turn this back, your call)
保存脚本时,请确保将其保存为脚本(.scr)文件。使用 Windows 记事本保存文件时,需将文件名设置为带.scr 扩展名,并将 “保存类型” 更改为 “所有文件(.)”。如果保留为 “文本文档”,文件名会变为 “脚本名称.scr.txt”,此时 AutoCAD 将完全无法读取该文件。
尽管略显“原始”,但批量处理整个项目目录及其子目录的有效方法是使用 .bat 文件,并将其与 .lsp 或 .scr 文件关联到批处理例程中。以下是一个示例命令(需注意路径格式):
batchFOR %%f IN ("C:\Translate_Files\*.dwg") DO "C:\Program Files\AutoCAD 2019\acad.exe" /I "%%f" /s "C:\Translate_Files\Cleanup.scr"
说明:该命令会遍历指定目录下的所有 .dwg 文件,调用 AutoCAD 并执行 Cleanup.scr 脚本。但需注意,此过程会全程占用计算机和软件许可。
局限性:与 .bat 文件类似,需占用计算机和软件许可。
下载地址:
Autodesk 自定义与转换工具页面

.lsp 脚本调用,基于块名称和属性名称动态修改值。attributefunctions.lsp)。autocad(load "lispfilename") ; 替换为实际文件名
"C:\Program Files\")。autocad; 在 .scr 脚本中调用 .lsp 例程 (load "EditAttributes.lsp") ; 加载属性编辑 LISP -INSERT MyBlock ; 插入带属性的块 AttributeValue ; 通过 LISP 动态赋值
通过结合批处理文件、脚本工具和 LISP 编程,可高效实现图形批量标准化、版本控制及属性编辑,显著提升团队协作效率。
我所在的公司在项目结束时需向客户交付图形包,有时涉及数百甚至数千张图纸。由于我们使用三维软件生成所有文件,导出的.dwg文件既不符合典型的.dwg标准,更不符合公司标准。
若手动逐个修改数千张图纸以符合标准,可能需要数周时间。20年前我在另一家公司时曾接手类似任务:将近1000张从其他二维软件导出的文件转换为我们的AutoCAD标准。
在手动修改40-50张图纸的块、线型、颜色和图层后,我开始将字符串命令绑定到自定义菜单按钮。很快,我创建了一系列菜单按钮,几乎能完成所有所需修改——甚至有一个按钮可缩放至标题栏查看比例,暂停并等待输入以按比例调整图形(该按钮调用VBA代码实现此功能,其余按钮均基于脚本编写)。
如今,市场上有定制程序可批量处理数千张图纸,这些程序大多由擅长VBA、VB、C++和C#的CAD爱好者编写。但事实上,任何熟悉AutoCAD命令的用户,只需借助核心控制台(Core Console)和一点巧思,即可通过脚本实现与定制程序相同的功能。
什么是核心控制台(accoreconsole.exe)?
可将其视为“静默模式”的AutoCAD:无需显示器、鼠标或键盘,仅凭命令行批量处理图形,效率远超传统界面。更强大的是,可在多核CPU上并行运行多个核心控制台实例——每个批次处理不同文件夹,每个实例占用独立CPU核心(此功能需通过VB.net编程实现,可在实操课程中深入学习)。

batchFOR %%f IN ("%~dp0*.dwg") DO "C:\Program Files\Autodesk\AutoCAD 2019\accoreconsole.exe" /i "%%f" /s "%~dp0saveDXFas_2018.scr" /l en-US
说明:
saveDXFas_2018.scr脚本/l en-US指定语言环境autocad; 脚本开头添加以下命令 filedia 0 ; 关闭文件对话框 cmddia 0 ; 关闭命令对话框 isavebak 0 ; 禁止生成.bak备份文件 +saveas ; 执行“另存为”(+号表示持续按下回车键) dwg 2018dwg 2018 ; 脚本结尾恢复设置 filedia 1 cmddia 1 isavebak 1 close


说明:
核心控制台适用于以下场景:
提示:结合.bat文件的循环逻辑与核心控制台的静默处理能力,可构建无人值守的自动化流水线,大幅降低重复性劳动成本。
祝您高效工作!