王晟磊
(上海市政工程設(shè)計(jì)研究總院(集團(tuán))有限公司武漢分公司,武漢 430000)
工程設(shè)計(jì)文件一般由多個(gè)獨(dú)立的圖形文件組成。圖紙打印時(shí)需要逐個(gè)手動(dòng)打開(kāi)文件,再重復(fù)設(shè)置打印樣式,才能進(jìn)行打印。此外,工作中常需多次將所有設(shè)計(jì)圖紙生成一份PDF文件,這樣還需進(jìn)行PDF合并工作。圖紙打印工作內(nèi)容重復(fù),嚴(yán)重影響設(shè)計(jì)人員的工作效率。筆者結(jié)合工作實(shí)踐,基于AutoCAD圖紙集功能和二次開(kāi)發(fā)(AutoLISP),摸索出一種圖紙快速批量打印方案,能夠有效地提升工作效率。
AutoCAD圖紙集提供簡(jiǎn)潔的圖紙管理功能,可以方便地進(jìn)行圖紙組織、打印。使用圖紙集功能時(shí),需將指定圖形文件的布局輸入到圖紙集中,但每一個(gè)布局只能包含一張圖紙。使用圖紙集打印前,需設(shè)置好輸入到圖紙集中的布局的頁(yè)面設(shè)置,頁(yè)面設(shè)置包括選擇打印機(jī)、打印范圍、圖紙尺寸、打印樣式等內(nèi)容,與AutoCAD打印設(shè)置類(lèi)似。
1)使用AutoCAD圖紙集功能進(jìn)行圖紙批量打印,需要重復(fù)進(jìn)行的工作包括:
(1)對(duì)每一個(gè)布局進(jìn)行頁(yè)面設(shè)置以使打印效果符合預(yù)期;
(2)將每一張圖紙拆分成一個(gè)布局以便輸入到圖紙集。
2)對(duì)于市政道路專(zhuān)業(yè)而言,還細(xì)分為兩種情況:
(1)將模型空間中的圖紙拆分成單個(gè)布局,如縱斷面設(shè)計(jì)圖、橫斷面設(shè)計(jì)圖、附屬構(gòu)筑物結(jié)構(gòu)詳圖等一般在模型空間繪制,這類(lèi)圖紙?jiān)谀P涂臻g需拆分成單個(gè)布局;
(2)將布局空間中的圖紙拆分成單個(gè)布局,如平面設(shè)計(jì)圖、交通設(shè)施平面布置圖等一般先使用道路專(zhuān)業(yè)設(shè)計(jì)軟件在模型空間繪制,然后在布局空間進(jìn)行分圖,這類(lèi)圖紙?jiān)诓季挚臻g需拆分成單個(gè)布局。
AutoLISP是Autodesk公司開(kāi)發(fā)的一種Lisp語(yǔ)言,內(nèi)嵌于AutoCAD軟件中。使用AutoLISP進(jìn)行AutoCAD二次開(kāi)發(fā),能夠大大減少設(shè)計(jì)工作中的重復(fù)內(nèi)容,有效提升設(shè)計(jì)效率。使用AutoLISP對(duì)AutoCAD進(jìn)行二次開(kāi)發(fā),可以將前述重復(fù)工作進(jìn)行簡(jiǎn)化,使之基本完全由AutoCAD自動(dòng)完成。
由此,結(jié)合AutoCAD圖紙集功能和二次開(kāi)發(fā),可以實(shí)現(xiàn)設(shè)計(jì)圖紙快速批量打印。
頁(yè)面設(shè)置控制每個(gè)新建布局的頁(yè)面布局、打印設(shè)備、圖紙尺寸和其他設(shè)置??梢栽凇澳P汀边x項(xiàng)卡或某個(gè)布局選項(xiàng)卡上單擊鼠標(biāo)右鍵,然后單擊“頁(yè)面設(shè)置管理器”打開(kāi)頁(yè)面設(shè)置管理器[1],如圖1所示。
圖1 頁(yè)面設(shè)置管理器
道路專(zhuān)業(yè)圖幅一般為A3,為方便二次開(kāi)發(fā)程序編寫(xiě),這里將頁(yè)面設(shè)置名稱(chēng)設(shè)置為“A3”。程序執(zhí)行過(guò)程中會(huì)自動(dòng)將“A3”頁(yè)面設(shè)置應(yīng)用到由程序生成的每一個(gè)布局中,這樣就不必單獨(dú)設(shè)置布局的頁(yè)面設(shè)置。
自動(dòng)應(yīng)用頁(yè)面設(shè)置到布局的代碼如下:
點(diǎn)擊“頁(yè)面設(shè)置管理器”對(duì)話框中的“新建”按鈕,彈出“新建頁(yè)面設(shè)置”對(duì)話框,為新建頁(yè)面設(shè)置輸入名稱(chēng),然后點(diǎn)擊“確定”進(jìn)行頁(yè)面設(shè)置。打印范圍設(shè)置為左下角坐標(biāo)為(0,0)、右上角坐標(biāo)為(420,297)的A3圖幅范圍,打印比例選1:1。其他設(shè)置與AutoCAD打印設(shè)置類(lèi)似,不再贅述。設(shè)置完成后,在頁(yè)面設(shè)置管理器可以看到頁(yè)面設(shè)置列表框內(nèi)將出現(xiàn)名稱(chēng)為“A3”的頁(yè)面設(shè)置如圖1所示。
再次修改該頁(yè)面設(shè)置后,軟件可以將修改后的頁(yè)面設(shè)置全部應(yīng)用到使用該頁(yè)面設(shè)置的布局中,不須另外單獨(dú)修改布局設(shè)置。
筆者工作中,每一個(gè)圖框?qū)?yīng)一張圖紙。而圖框是帶有屬性的圖塊,圖框中“圖號(hào)”屬性值因圖紙而異,圖紙的圖號(hào)兩兩不同,以此區(qū)分同一工程中不同的圖紙。因此,可以借“圖號(hào)”屬性值來(lái)命名布局,使每一個(gè)布局與每一張圖紙對(duì)應(yīng)和方便核對(duì)。
獲取圖塊屬性值函數(shù)的代碼如下:
獲取“圖號(hào)”屬性值并將其命名新建布局的代碼如下:
將模型空間中的每一張圖紙拆分成單個(gè)布局的原理是使用視口將每一張圖單獨(dú)顯示在一個(gè)布局中,具體思路如下:
1)運(yùn)行程序。使用appload命令加載程序,在AutoCAD模型空間界面運(yùn)行程序。
2)獲取對(duì)象。點(diǎn)取一個(gè)圖框塊對(duì)象,程序根據(jù)選擇對(duì)象的特性自動(dòng)選擇模型空間中所有圖框塊對(duì)象。
3)獲取信息。對(duì)于每一個(gè)圖框塊對(duì)象,程序會(huì)獲取圖號(hào)屬性值和圖框左下角、右上角坐標(biāo)。
4)新建布局。程序會(huì)新建布局并按圖號(hào)命名布局。
5)清空布局。此步驟是為方便同一圖形文件再次運(yùn)行本程序時(shí)能對(duì)之前創(chuàng)建的布局內(nèi)容進(jìn)行“覆蓋”。
6)新建視口。程序在布局中新建視口,視口范圍為左下角坐標(biāo)(0,0)、右上角坐標(biāo)(420,297)的A3圖幅范圍,與頁(yè)面設(shè)置中的打印范圍一致。
7)滿布圖紙。程序根據(jù)圖框左下角、右上角坐標(biāo)將圖紙完整顯示并布滿于視口。
8)頁(yè)面設(shè)置。將名稱(chēng)為“A3”的頁(yè)面設(shè)置應(yīng)用到新建布局。
9)重復(fù)操作。模型空間中有多少個(gè)圖框塊對(duì)象,程序就重復(fù)執(zhí)行3)~8)操作多少次,以此達(dá)到將模型空間中的每一張圖紙拆分成單個(gè)布局的目的。
實(shí)際操作步驟則簡(jiǎn)化為:輸入命令運(yùn)行程序、選擇圖框塊對(duì)象,然后等待程序執(zhí)行完成即可。
頁(yè)面設(shè)置代碼見(jiàn)前文“2新建頁(yè)面設(shè)置”,新建布局并按圖號(hào)命名布局的代碼見(jiàn)前文“3.1新建布局命名規(guī)則”,其他主要代碼如下:
(1)獲取對(duì)象
程序運(yùn)行效果實(shí)例如圖2所示,每一個(gè)布局顯示一張圖紙,并且布局名為圖號(hào)。
圖2 將模型空間中的圖紙拆分成單個(gè)布局
將布局空間中的每一張圖紙拆分成單個(gè)布局的原理是使用帶基點(diǎn)復(fù)制與粘貼功能,將布局空間中每張圖紙的內(nèi)容復(fù)制到單獨(dú)的布局中,具體思路如下:
1)運(yùn)行程序
使用appload命令加載程序,在AutoCAD布局空間界面運(yùn)行程序。
2)獲取對(duì)象
3)獲取信息
4)基點(diǎn)復(fù)制
通過(guò)框選選擇一個(gè)圖框范圍內(nèi)的所有圖元,然后以圖框左下角為基點(diǎn)復(fù)制選中圖元。框選范圍較圖框稍小以避免當(dāng)相鄰圖框緊貼時(shí),選中相鄰圖框。
5)新建布局
6)清空布局
7)原點(diǎn)粘貼
將復(fù)制圖元粘貼到新布局原點(diǎn),以使粘貼的圖元處于前述頁(yè)面設(shè)置的打印范圍內(nèi)。
8)頁(yè)面設(shè)置
9)重復(fù)操作
布局空間中有多少個(gè)圖框塊對(duì)象,程序就重復(fù)執(zhí)行3)~8)操作多少次,以此達(dá)到將布局空間中的每一張圖紙拆分成單個(gè)布局的目的。
上述2)、3)、5)、6)、8)步同“3.2將模型空間中的圖紙拆分成單個(gè)布局”。
實(shí)際操作步驟則簡(jiǎn)化為:輸入命令運(yùn)行程序、選擇圖框塊對(duì)象,然后等待程序執(zhí)行完成即可。程序運(yùn)行效果與圖2類(lèi)似。
主要代碼如下:
1)使用程序?qū)⒉季挚臻g中的圖紙拆分成單個(gè)布局后,如果后續(xù)在原布局中進(jìn)行修改,再次打印前,需重新進(jìn)行布局拆分。
2)需使用公制單位繪圖,圖框大小為420×297(A3圖幅)。
圖紙集啟動(dòng)命令為SHEETSET,快捷鍵為Ctrl+4[1]。圖紙集對(duì)話框如圖3所示。
圖3 圖紙集對(duì)話框
新建圖紙集的步驟為:點(diǎn)擊“圖紙集”對(duì)話框上部的下拉菜單,選擇“新建圖紙集…”,按照“創(chuàng)建圖紙集向?qū)А睂?duì)話框的提示選擇“現(xiàn)有圖形”,點(diǎn)擊“下一步”,輸入圖紙集名稱(chēng),選擇圖紙集保存位置,再點(diǎn)擊兩次“下一步”,最后點(diǎn)擊“完成”即可創(chuàng)建圖紙集。
在“圖紙集”對(duì)話框中右擊圖紙集名稱(chēng),再點(diǎn)擊“新建子集(U)…”,可創(chuàng)建子集??蓪⑼?lèi)圖紙放在一個(gè)子集內(nèi),方便管理。
在“圖紙集”對(duì)話框中右擊圖紙集或子集名稱(chēng),點(diǎn)擊“將布局作為圖紙輸入(L)…”,彈出“按圖紙輸入布局”對(duì)話框如圖4所示,再點(diǎn)擊“瀏覽圖形”,選擇需要輸入圖紙集的圖形文件(可多選),再在“按圖紙輸入布局”對(duì)話框中勾選需要輸入的布局。點(diǎn)擊“布局名稱(chēng)”,可以按布局名稱(chēng)(即圖號(hào))對(duì)輸入的圖紙進(jìn)行排序,此順序即為圖紙集中圖紙順序,也是圖紙批量打印的順序,圖紙順序還可以在圖紙集對(duì)話框中調(diào)整。
圖紙輸入圖紙集后在圖紙集窗口顯示效果如圖4所示。
圖4 將圖紙輸入布局對(duì)話框
按照上述“4.2 輸入圖紙”步驟將所有設(shè)計(jì)圖紙輸入到圖紙集之后,即可按照如下步驟批量打印圖紙(以生成PDF文件為例):在“圖紙集”對(duì)話框中右擊圖紙集或子集名稱(chēng),依次點(diǎn)擊“發(fā)布”、“發(fā)布為PDF”,即可一鍵將所有設(shè)計(jì)圖紙或子集內(nèi)所有圖紙打印成一份PDF文件,無(wú)需額外操作。
本文梳理了頁(yè)面設(shè)置和圖紙集操作流程,并使用AutoLISP對(duì)AutoCAD二次開(kāi)發(fā),實(shí)現(xiàn)將模型空間或布局空間中的每一張圖紙拆分成單個(gè)布局的功能。本文給出了一種圖紙快速批量打印方案,主要優(yōu)點(diǎn)有:
1)自動(dòng)將設(shè)置好的頁(yè)面設(shè)置應(yīng)用到每一個(gè)新建布局中,無(wú)需手工操作。
2)自動(dòng)將模型空間或布局空間中的每張圖紙拆分成單個(gè)布局,操作簡(jiǎn)潔準(zhǔn)確。
3)在模型空間中對(duì)圖形文件進(jìn)行任何修改,不需要再次拆分布局或者重新創(chuàng)建圖紙集,仍可以使用之前創(chuàng)建好的圖紙集直接打印圖紙。做到“一次設(shè)置,反復(fù)使用”。
4)本方案不僅適用于道路專(zhuān)業(yè),橋梁、排水、建筑、結(jié)構(gòu)、景觀等專(zhuān)業(yè)均可以使用。
因此,本文提出的批量打印方案能夠極大提升設(shè)計(jì)文件成圖和打印效率。