基于AutoCAD图纸集与二次开发实现图纸批量打印

2022-10-03 05:17王晟磊
制造业自动化 2022年9期
关键词:二次开发对话框新建

王晟磊

(上海市政工程设计研究总院(集团)有限公司武汉分公司,武汉 430000)

0 引言

工程设计文件一般由多个独立的图形文件组成。图纸打印时需要逐个手动打开文件,再重复设置打印样式,才能进行打印。此外,工作中常需多次将所有设计图纸生成一份PDF文件,这样还需进行PDF合并工作。图纸打印工作内容重复,严重影响设计人员的工作效率。笔者结合工作实践,基于AutoCAD图纸集功能和二次开发(AutoLISP),摸索出一种图纸快速批量打印方案,能够有效地提升工作效率。

1 AutoCAD图纸集功能和二次开发(AutoLISP)

1.1 AutoCAD图纸集功能

AutoCAD图纸集提供简洁的图纸管理功能,可以方便地进行图纸组织、打印。使用图纸集功能时,需将指定图形文件的布局输入到图纸集中,但每一个布局只能包含一张图纸。使用图纸集打印前,需设置好输入到图纸集中的布局的页面设置,页面设置包括选择打印机、打印范围、图纸尺寸、打印样式等内容,与AutoCAD打印设置类似。

1)使用AutoCAD图纸集功能进行图纸批量打印,需要重复进行的工作包括:

(1)对每一个布局进行页面设置以使打印效果符合预期;

(2)将每一张图纸拆分成一个布局以便输入到图纸集。

2)对于市政道路专业而言,还细分为两种情况:

(1)将模型空间中的图纸拆分成单个布局,如纵断面设计图、横断面设计图、附属构筑物结构详图等一般在模型空间绘制,这类图纸在模型空间需拆分成单个布局;

(2)将布局空间中的图纸拆分成单个布局,如平面设计图、交通设施平面布置图等一般先使用道路专业设计软件在模型空间绘制,然后在布局空间进行分图,这类图纸在布局空间需拆分成单个布局。

1.2 AutoCAD二次开发(AutoLISP)

AutoLISP是Autodesk公司开发的一种Lisp语言,内嵌于AutoCAD软件中。使用AutoLISP进行AutoCAD二次开发,能够大大减少设计工作中的重复内容,有效提升设计效率。使用AutoLISP对AutoCAD进行二次开发,可以将前述重复工作进行简化,使之基本完全由AutoCAD自动完成。

由此,结合AutoCAD图纸集功能和二次开发,可以实现设计图纸快速批量打印。

2 新建页面设置

页面设置控制每个新建布局的页面布局、打印设备、图纸尺寸和其他设置。可以在“模型”选项卡或某个布局选项卡上单击鼠标右键,然后单击“页面设置管理器”打开页面设置管理器[1],如图1所示。

图1 页面设置管理器

道路专业图幅一般为A3,为方便二次开发程序编写,这里将页面设置名称设置为“A3”。程序执行过程中会自动将“A3”页面设置应用到由程序生成的每一个布局中,这样就不必单独设置布局的页面设置。

自动应用页面设置到布局的代码如下:

点击“页面设置管理器”对话框中的“新建”按钮,弹出“新建页面设置”对话框,为新建页面设置输入名称,然后点击“确定”进行页面设置。打印范围设置为左下角坐标为(0,0)、右上角坐标为(420,297)的A3图幅范围,打印比例选1:1。其他设置与AutoCAD打印设置类似,不再赘述。设置完成后,在页面设置管理器可以看到页面设置列表框内将出现名称为“A3”的页面设置如图1所示。

再次修改该页面设置后,软件可以将修改后的页面设置全部应用到使用该页面设置的布局中,不须另外单独修改布局设置。

3 将图纸拆分成单个布局

3.1 新建布局命名规则

笔者工作中,每一个图框对应一张图纸。而图框是带有属性的图块,图框中“图号”属性值因图纸而异,图纸的图号两两不同,以此区分同一工程中不同的图纸。因此,可以借“图号”属性值来命名布局,使每一个布局与每一张图纸对应和方便核对。

获取图块属性值函数的代码如下:

获取“图号”属性值并将其命名新建布局的代码如下:

3.2 将模型空间中的图纸拆分成单个布局

将模型空间中的每一张图纸拆分成单个布局的原理是使用视口将每一张图单独显示在一个布局中,具体思路如下:

1)运行程序。使用appload命令加载程序,在AutoCAD模型空间界面运行程序。

2)获取对象。点取一个图框块对象,程序根据选择对象的特性自动选择模型空间中所有图框块对象。

3)获取信息。对于每一个图框块对象,程序会获取图号属性值和图框左下角、右上角坐标。

4)新建布局。程序会新建布局并按图号命名布局。

5)清空布局。此步骤是为方便同一图形文件再次运行本程序时能对之前创建的布局内容进行“覆盖”。

6)新建视口。程序在布局中新建视口,视口范围为左下角坐标(0,0)、右上角坐标(420,297)的A3图幅范围,与页面设置中的打印范围一致。

7)满布图纸。程序根据图框左下角、右上角坐标将图纸完整显示并布满于视口。

8)页面设置。将名称为“A3”的页面设置应用到新建布局。

9)重复操作。模型空间中有多少个图框块对象,程序就重复执行3)~8)操作多少次,以此达到将模型空间中的每一张图纸拆分成单个布局的目的。

实际操作步骤则简化为:输入命令运行程序、选择图框块对象,然后等待程序执行完成即可。

页面设置代码见前文“2新建页面设置”,新建布局并按图号命名布局的代码见前文“3.1新建布局命名规则”,其他主要代码如下:

(1)获取对象

程序运行效果实例如图2所示,每一个布局显示一张图纸,并且布局名为图号。

图2 将模型空间中的图纸拆分成单个布局

3.3 将布局空间中的图纸拆分成单个布局

将布局空间中的每一张图纸拆分成单个布局的原理是使用带基点复制与粘贴功能,将布局空间中每张图纸的内容复制到单独的布局中,具体思路如下:

1)运行程序

使用appload命令加载程序,在AutoCAD布局空间界面运行程序。

2)获取对象

3)获取信息

4)基点复制

通过框选选择一个图框范围内的所有图元,然后以图框左下角为基点复制选中图元。框选范围较图框稍小以避免当相邻图框紧贴时,选中相邻图框。

5)新建布局

6)清空布局

7)原点粘贴

将复制图元粘贴到新布局原点,以使粘贴的图元处于前述页面设置的打印范围内。

8)页面设置

9)重复操作

布局空间中有多少个图框块对象,程序就重复执行3)~8)操作多少次,以此达到将布局空间中的每一张图纸拆分成单个布局的目的。

上述2)、3)、5)、6)、8)步同“3.2将模型空间中的图纸拆分成单个布局”。

实际操作步骤则简化为:输入命令运行程序、选择图框块对象,然后等待程序执行完成即可。程序运行效果与图2类似。

主要代码如下:

3.4 注意事项

1)使用程序将布局空间中的图纸拆分成单个布局后,如果后续在原布局中进行修改,再次打印前,需重新进行布局拆分。

2)需使用公制单位绘图,图框大小为420×297(A3图幅)。

4 使用图纸集批量打印图纸

4.1 新建图纸集

图纸集启动命令为SHEETSET,快捷键为Ctrl+4[1]。图纸集对话框如图3所示。

图3 图纸集对话框

新建图纸集的步骤为:点击“图纸集”对话框上部的下拉菜单,选择“新建图纸集…”,按照“创建图纸集向导”对话框的提示选择“现有图形”,点击“下一步”,输入图纸集名称,选择图纸集保存位置,再点击两次“下一步”,最后点击“完成”即可创建图纸集。

在“图纸集”对话框中右击图纸集名称,再点击“新建子集(U)…”,可创建子集。可将同类图纸放在一个子集内,方便管理。

4.2 输入图纸

在“图纸集”对话框中右击图纸集或子集名称,点击“将布局作为图纸输入(L)…”,弹出“按图纸输入布局”对话框如图4所示,再点击“浏览图形”,选择需要输入图纸集的图形文件(可多选),再在“按图纸输入布局”对话框中勾选需要输入的布局。点击“布局名称”,可以按布局名称(即图号)对输入的图纸进行排序,此顺序即为图纸集中图纸顺序,也是图纸批量打印的顺序,图纸顺序还可以在图纸集对话框中调整。

图纸输入图纸集后在图纸集窗口显示效果如图4所示。

图4 将图纸输入布局对话框

4.3 批量打印

按照上述“4.2 输入图纸”步骤将所有设计图纸输入到图纸集之后,即可按照如下步骤批量打印图纸(以生成PDF文件为例):在“图纸集”对话框中右击图纸集或子集名称,依次点击“发布”、“发布为PDF”,即可一键将所有设计图纸或子集内所有图纸打印成一份PDF文件,无需额外操作。

5 结语

本文梳理了页面设置和图纸集操作流程,并使用AutoLISP对AutoCAD二次开发,实现将模型空间或布局空间中的每一张图纸拆分成单个布局的功能。本文给出了一种图纸快速批量打印方案,主要优点有:

1)自动将设置好的页面设置应用到每一个新建布局中,无需手工操作。

2)自动将模型空间或布局空间中的每张图纸拆分成单个布局,操作简洁准确。

3)在模型空间中对图形文件进行任何修改,不需要再次拆分布局或者重新创建图纸集,仍可以使用之前创建好的图纸集直接打印图纸。做到“一次设置,反复使用”。

4)本方案不仅适用于道路专业,桥梁、排水、建筑、结构、景观等专业均可以使用。

因此,本文提出的批量打印方案能够极大提升设计文件成图和打印效率。

猜你喜欢
二次开发对话框新建
AutoCAD 与PDMS 二次开发在三维复杂形体设计建模上的应用
例谈对高中数学教材中习题的二次开发
浅谈CAD软件二次开发的方法及工具
Bootlace Worms’Secret etc.
What Is Beauty?
万紫蝶、梁新建作品
曹曙东、温新建作品
例谈课本习题的“二次开发”
2016年10月70个大中城市新建住宅价格指数
2016年6月70个大中城市新建住宅价格指数