项目总体规划
考虑到项目需求,决定采用AutoCAD中的Accoreconsole.exe+.Net Dll来实现,对Accoreconsole不太了解的同学可以自行百度,总之一句话,要想高效的批量处理dwg文件,这个AutoCAD控制台是必须要了解的。
对AutoCAD进行批量处理,以愚人之见,就是如下三个步骤:
- 用C#开发.net DLL程序,生成所有需要的AutoCAD命令(Command)。
- 编写SCR指令文件,在SCR中使用netload加载以上DLL并处理需要的AutoCAD命令(Command)。
- 用VBS捏合所有关于关于window下文件的处理(很遗憾,本人来自工控行业,目前只考虑windows平台,MAC、Linux暂不考虑)并调用Accoreconsole.exe,处理第2步中的SCR指令文件。
项目的具体实施
1. 开发.net DLL程序
一、开发块引入程序
经过对项目需求的进一步分析,本人觉得最佳的方法就是新建一个AutoCAD文件,在此文件中新建两个块DTL-L和DTL-R,分别对应即将被替换掉的TCDN()-L, TCDN()-R, 其中()内可能为任意字符。
下图是创建好的dwg文件,命名为StandardBlock.dwg
创建好这个StandardBlock.dwg后,我们需要做的第一步就是在每一个待修改的图纸中,执行一个命令,将StandardBlock.dwg中的这两个块(DTL-L和DTL-R)引入到当前图纸中,然后进行替换。我们先来开发如何实现从另一份图纸中拷贝块的信息到当前图纸。
1)新建.net framework 类库项目
本人使用VS2019,其他版本类似
2)命名类库名称并更改.NET Framework 版本
类库项目名称命名为CADSmart, 注意,.NET Framework框架版本很重要,太低的话有可能会导致与AutoCAD的DLL不兼容。这里我选用.NET Framework 4.6用来兼容AutoCAD 2018
3)添加AutoCAD 库的引用
在Auto