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