本發(fā)明主要涉及打印技術(shù)領(lǐng)域,特指一種CAD圖紙的批量順序打印方法及裝置。
背景技術(shù):
基于AutoCAD的高效、精確、易于管理等諸多優(yōu)點,目前大多數(shù)設(shè)計行業(yè)都采用AutoCAD繪制工程圖紙,而且很多行業(yè)的工程圖紙數(shù)量都是成百上千,但出于軟件本身的特點,傳統(tǒng)的CAD圖紙的打印(輸出為紙質(zhì)文檔或者其它格式文件)只能一張一張手動進(jìn)行,不能批量、連續(xù)、自動的打印,更不能按照指定的順序進(jìn)行批量打印。其中就單張圖紙打印,其主要步驟如下:
(1)打開圖紙文件(圖紙文件夾文件多時查找很費時間);
(2)選擇打印設(shè)備;
(3)選擇打印樣式;
(4)選擇圖紙大小;
(5)打印設(shè)置(包括打印范圍,縱向/橫向,縮放比例,偏移,份數(shù)等);
(6)發(fā)送到打印設(shè)備,完成打??;
(7)關(guān)閉圖紙文件。
相應(yīng)的,對于整套圖紙,傳統(tǒng)的打印方法,可以總結(jié)為三步:手動查找文件、手動設(shè)置打印(上述7個步驟)、下一張圖紙。如前所述,很多行業(yè)的工程圖紙數(shù)量都是成百上千,這種打印方法,極大的限制了項目的出圖效率。
從以上打印步驟可知,傳統(tǒng)的這種手動一張一張打印方法,存在以下幾個缺點:
1、打印效率低,設(shè)計者工作量大。
不同的圖紙文件,其圖幅大小、默認(rèn)打印樣式、打印范圍、縱向/橫向、縮放比例等打印設(shè)置項都是不同的,幾乎每張圖紙都要重新設(shè)置一次,傳統(tǒng)的這種手動設(shè)置的打印方法,特別是在圖紙數(shù)量很多的情況下,會花費設(shè)計者大量的時間在打印上,大大降低出圖效率、增大設(shè)計者工作量。即使有部分CAD小插件可以自動設(shè)置打印,但不能實現(xiàn)按目錄順序打印,在圖紙打印完成后,在圖紙打印完成后,設(shè)計者須手動整理圖紙,這也會浪費設(shè)計者大量的時間。
2、容易出現(xiàn)少打、漏打、重打的問題。
很多行業(yè)工程圖紙都很多,相應(yīng)的文件夾也較大,這就使得查找打開圖紙文件很費時間,而且很容易出現(xiàn)少打、漏打、重打的問題。
3、制約設(shè)計效率,影響設(shè)計質(zhì)量。
由于出圖效率低,在設(shè)計周期一定的情況下,留給其他設(shè)計環(huán)節(jié)的時間相對就少,影響設(shè)計質(zhì)量。
目前,基于這種傳統(tǒng)打印方法,市場上有一些CAD小插件可以實現(xiàn)部分圖紙連續(xù)打印,但這些小插件存在以下問題:
1、圖框識別(也就是確定打印邊界)能力差,不能識別非標(biāo)準(zhǔn)圖框(不是圖塊,或者圖框邊界尺寸與標(biāo)準(zhǔn)圖紙大小有誤差)。
2、識別方法單一,打印效率低;目前這些小插件識別圖框要不就是識別圖塊圖框,要不就是讀取最大邊界點坐標(biāo),相比之下,第一種速度更快但適應(yīng)范圍很小,當(dāng)圖框不是標(biāo)準(zhǔn)圖塊時就無法識別;第二種雖然適應(yīng)范圍廣,但讀取速度很慢,因為要讀取很多圖元的端點坐標(biāo),然后逐一比較,確定最大邊界。
3、不能自動配置圖紙大小,一套工程圖,各個圖紙文件都不一定是相同的,比如總裝可能是A0,小零件可能是A4,目前的程序都是根據(jù)發(fā)送打印指令前設(shè)置的統(tǒng)一的圖紙大小進(jìn)行打印,當(dāng)一套工程圖含多種圖紙大小時,就必須先區(qū)分出各個圖紙文件的大小,然后分批次打印,打印效率較低。
4、不能按照目錄順序打印,在圖紙打印完成后,設(shè)計者須手動整理圖紙,特別在圖紙數(shù)量很多時,這會浪費設(shè)計者大量的時間。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題就在于:針對現(xiàn)有技術(shù)存在的技術(shù)問題,本發(fā)明提供一種操作簡便、可批量順序打印、工作效率高的CAD圖紙的批量順序打印方法,并相應(yīng)提供一種結(jié)構(gòu)簡單的CAD圖紙的批量順序打印裝置。
為解決上述技術(shù)問題,本發(fā)明提出的技術(shù)方案為:
一種CAD圖紙打印方法,步驟為:
S01、啟動或連接AutoCAD軟件,并與打印設(shè)備進(jìn)行連接,完成批量打印信息的設(shè)置;
S02、讀取打印對象:當(dāng)選取打印對象為“打印活動文檔”時,讀取AutoCAD軟件當(dāng)前所有活動對象;當(dāng)選取打印對象為“打印列表內(nèi)容”時,則搜索指定范圍或路徑下的所有CAD文件,并讀取相應(yīng)地址;
S03、建立打印順序數(shù)組:按順序?qū)Υ蛴ο筮M(jìn)行排序,生成一個二維數(shù)組Dysz(1 to N,1 to 3),其中第一維表示序號,第二維表示每個文件的圖紙信息,包括圖紙文件的全路徑、大小和份數(shù);
S04、圖幅設(shè)置:讀取各CAD圖紙的圖紙文件圖元和圖樣目錄文件,計算得到各CAD圖紙的打印圖幅設(shè)置,所述打印圖幅設(shè)置包括圖紙大小、圖形邊界、圖形方向以及縮放比例;
S05、啟動打印設(shè)備,按打印順序依次將各CAD圖紙按其打印圖幅設(shè)置進(jìn)行打印。
作為上述技術(shù)方案的進(jìn)一步改進(jìn):
在步驟S02中,當(dāng)選取打印對象為“打印列表內(nèi)容”時,搜索指定范圍或路徑包括三種方式:僅搜索一級目錄、搜索至二級子目錄和搜索至底層。
在步驟S04中,確定打印圖幅中的圖形邊界的方法為:利用GetVariable方法獲得圖紙文件的邊界,然后用范圍打印方式得到圖形邊界。
在步驟S04中,確定打印圖幅中的圖形邊界的方法為:讀取圖紙文件中的所有圖塊,然后利用GetBoundingBox方法獲得所有塊的邊界點坐標(biāo),對這些點逐個進(jìn)行比較,得出圖紙邊界點的坐標(biāo),再用窗口打印方式得到圖形邊界。
在步驟S04中,確定打印圖幅中的圖形邊界的方法為:首先讀取圖紙文件中的所有水平和豎直直線的端點坐標(biāo),然后對這些點逐個進(jìn)行比較,得出圖紙邊界點的坐標(biāo),再用窗口打印方式得到圖形邊界。
在得到圖形邊界后,通過圖形邊界的長寬比確定圖形方向。
在步驟S04中,所述圖紙大小根據(jù)圖形邊界的長寬比或者二維數(shù)組中的圖紙文件大小進(jìn)行確定。
本發(fā)明還公開了一種CAD圖紙的批量順序打印裝置,包括讀取文件模塊、打印順序處理模塊、圖幅設(shè)置模塊和打印設(shè)備,
所述讀取文件模塊,用于讀取打印對象:當(dāng)選取打印對象為“打印活動文檔”時,讀取AutoCAD軟件當(dāng)前所有活動對象;當(dāng)選取打印對象為“打印列表內(nèi)容”時,則搜索指定范圍或路徑下的所有CAD文件,并讀取相應(yīng)地址;
所述打印順序處理模塊,用于建立打印順序數(shù)組:按順序?qū)Υ蛴ο筮M(jìn)行排序,關(guān)生成一個二維數(shù)組Dysz(1to N,1to 3),其中第一維表示序號,第二維表示每個文件的圖紙信息,包括圖紙文件的全路徑、大小和份數(shù);
所述圖幅設(shè)置模塊,用于讀取各CAD圖紙的圖紙文件圖元和圖樣目錄文件,計算得到各CAD圖紙的打印圖幅設(shè)置,所述打印圖幅設(shè)置包括圖紙大小、圖形邊界、圖形方向以及縮放比例;
所述打印設(shè)備,用于按打印順序依次將各CAD圖紙按其打印圖幅設(shè)置進(jìn)行打印。
作為上述技術(shù)方案的進(jìn)一步改進(jìn):
所述打印設(shè)備包括虛擬打印機(jī)。
還包括顯示模塊,所述顯示模塊與所述圖幅設(shè)置模塊通訊相連。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點在于:
本發(fā)明的CAD圖紙的批量順序打印方法,能夠按照目錄順序,連續(xù)、自動設(shè)置打印信息、快速高效的打印出圖紙(輸出為紙質(zhì)文檔或者其他格式文件),以解決AutoCAD不能按連續(xù)、按指定順序、批量打印,出圖效率低,設(shè)計者工作量大,并且容易出現(xiàn)少打、漏打、重打的問題。本發(fā)明的CAD圖紙的批量順序打印裝置同樣具有如上方法所述的優(yōu)點,而且結(jié)構(gòu)簡單、易于實現(xiàn)。
附圖說明
圖1為本發(fā)明的方法流程圖。
圖2為本發(fā)明方法中打印順序數(shù)組生成的流程圖。
圖3為本發(fā)明方法中僅搜索一級目錄的流程圖。
圖4為本發(fā)明方法中搜索至二級子目錄的流程圖。
圖5為本發(fā)明方法中搜索至底層的流程圖。
圖6為本發(fā)明的打印裝置的方框結(jié)構(gòu)圖。
具體實施方式
以下結(jié)合說明書附圖和具體實施例對本發(fā)明作進(jìn)一步描述。
如圖1所示,本實施例的CAD圖紙的批量順序打印方法,步驟為:
S01、啟動或連接AutoCAD軟件,并與打印設(shè)備進(jìn)行連接,完成批量打印信息的設(shè)置;
S02、讀取打印對象:當(dāng)選取打印對象為“打印活動文檔”時,讀取AutoCAD軟件當(dāng)前所有活動對象;當(dāng)選取打印對象為“打印列表內(nèi)容”時,則搜索指定范圍或路徑下的所有CAD文件,并讀取相應(yīng)地址;
S03、建立打印順序數(shù)組:按順序?qū)Υ蛴ο筮M(jìn)行排序,生成一個二維數(shù)組Dysz(1 to N,1 to 3),其中第一維表示序號,第二維表示每個文件的圖紙信息,包括圖紙文件的全路徑、大小和份數(shù);
S04、圖幅設(shè)置:讀取各CAD圖紙的圖紙文件圖元和圖樣目錄文件,計算得到各CAD圖紙的打印圖幅設(shè)置,打印圖幅設(shè)置包括圖紙大小、圖形邊界、圖形方向以及縮放比例;
S05、啟動打印設(shè)備,按打印順序依次將各CAD圖紙按其打印圖幅設(shè)置進(jìn)行打印。
本實施例中,在步驟S02中,當(dāng)選取打印對象為“打印列表內(nèi)容”時,搜索指定范圍或路徑包括三種方式:僅搜索一級目錄、搜索至二級子目錄和搜索至底層。
如圖1所示,下面結(jié)合一實例對本發(fā)明的打印方法作進(jìn)一步描述:
1、打印前設(shè)置
如圖1所示,用戶可自由選擇打印機(jī)、打印對象、打印順序以及打印模式,此外,如果不是特殊打印,用戶可以選擇“一鍵設(shè)置”功能,按照系統(tǒng)默認(rèn)的方式進(jìn)行設(shè)置,進(jìn)一步提高效率。
2、啟動/連接AutoCAD,建立內(nèi)部數(shù)據(jù)連接
完成設(shè)置以后,通過接口語言實現(xiàn)自動啟動AutoCAD(AutoCAD處于關(guān)閉狀態(tài)),或者連接AutoCAD(AutoCAD已經(jīng)啟動),建立內(nèi)部連接,以完成批量打印信息和數(shù)據(jù)的傳輸、反饋。
3、查找、讀取打印對象
根據(jù)用戶設(shè)置進(jìn)行判斷:
a)如果用戶選擇打印對象為“打印活動文檔”,則讀取AutoCAD軟件當(dāng)前的所有活動(打開)對象,并統(tǒng)計其數(shù)量N,并彈出對話框以供用戶確認(rèn)。
b)如果用戶選擇打印對象為“打印列表內(nèi)容”,則啟動搜索,按用戶指定的搜索范圍和搜索路徑下所有的CAD文件,讀取其地址并將其顯示,統(tǒng)計文件數(shù)量N,以供用戶確認(rèn)。
4、獲取打印順序數(shù)組
如圖2所示,如果選擇按圖樣目錄打印,則提示用戶指定圖樣目錄文件(excel或CAD文件),然后通過接口語言和該文件應(yīng)用程序建立內(nèi)部連接,讀取其數(shù)據(jù),按照其順序?qū)ι喜将@取的打印對象排序,新建一個二維數(shù)組Dysz(1 to N,1 to 3),其中第一維表示序號,第二維表示每個文件的圖紙信息,包括圖紙文件的全路徑、大小和份數(shù);否則,按照默認(rèn)順序建立數(shù)組。
同時,初始化當(dāng)前處理文件索引n=1,成功打印文件數(shù)量d=0。
5、打開/激活文件P(n),讀取圖元,計算邊界、圖紙大小,確定縱/橫向、打印方式
如圖1所示,首先按照以上流程獲得的順序數(shù)組的順序,從n=1開始,打開(未打開),或者激活(已打開)文件P(n),然后通過VB程序語言和接口語言讀取圖紙文件圖元信息,自動確定打印邊界和打印方式(本發(fā)明提供三種方式,見下文),并按其各自特點,以最佳的方式將其組合,確保能夠最快速的計算、確定幾乎所有有效圖紙的打印邊界,并確定其圖形打印方向。
6、打印,統(tǒng)計打印信息,
對上述讀取計算結(jié)果進(jìn)行判斷,如果沒有錯誤,則向打印設(shè)備(包括虛擬打印機(jī),如Adobe PDF)發(fā)送打印指令,進(jìn)行打印,同時在列表中移除該文件,成功打印文件數(shù)量d=d+1;果在該文件中未讀取到任何有效圖元(文件為空文件或者僅含說明性文字),不做任何動作,直接進(jìn)入下一個流程。
7、關(guān)閉當(dāng)前文件進(jìn)入下一個循環(huán)直至全部打印,輸出打印結(jié)果信息
如果在人機(jī)界面上選擇“打完關(guān)閉”,則先關(guān)閉當(dāng)前文檔,否則不關(guān)閉,然后判斷當(dāng)前文檔索引n是否等總待打印文件數(shù)(n=N),如果n<N,則n=n+1,繼續(xù)循環(huán)執(zhí)行流程5、流程6;如果n=N,說明所有文檔已經(jīng)打印完成,輸出打印結(jié)果信息:已完成打印文件數(shù)量d,未完成打印文件數(shù)量N-d,并提示列表內(nèi)文件為未打印文件,請用戶檢查或手動完成打??;程序結(jié)束。
如圖6所示,本發(fā)明還相應(yīng)公開了一種CAD圖紙的批量順序打印裝置,包括讀取文件模塊、打印順序處理模塊、圖幅設(shè)置模塊和打印設(shè)備,
讀取文件模塊,用于讀取打印對象:當(dāng)選取打印對象為“打印活動文檔”時,讀取AutoCAD軟件當(dāng)前所有活動對象;當(dāng)選取打印對象為“打印列表內(nèi)容”時,則搜索指定范圍或路徑下的所有CAD文件,并讀取相應(yīng)地址;
打印順序處理模塊,用于建立打印順序數(shù)組:按順序?qū)Υ蛴ο筮M(jìn)行排序,關(guān)生成一個二維數(shù)組Dysz(1 to N,1 to 3),其中第一維表示序號,第二維表示每個文件的圖紙信息,包括圖紙文件的全路徑、大小和份數(shù);
圖幅設(shè)置模塊,用于讀取各CAD圖紙的圖紙文件圖元和圖樣目錄文件,計算得到各CAD圖紙的打印圖幅設(shè)置,打印圖幅設(shè)置包括圖紙大小、圖形邊界、圖形方向以及縮放比例;
打印設(shè)備,用于按打印順序依次將各CAD圖紙按其打印圖幅設(shè)置進(jìn)行打印。
本實施例中,打印設(shè)備包括虛擬打印機(jī)。
本實施例中,還包括顯示模塊,顯示模塊與圖幅設(shè)置模塊通訊相連。
下面結(jié)合上述的打印方法對本發(fā)明的打印裝置作進(jìn)一步描述:
讀取文件模塊:針對不同的查找需要,可以按三種搜索范圍方式(僅搜索指定目錄下所有CAD文件、搜索指定目錄和其下一級目錄所有CAD文件、搜索指定目錄及其所有子目錄所有CAD文件),批量查找要打印文件,也可以單個搜索,以供用戶快速高效的查找要打印文件,讀取其地址并將其導(dǎo)入打印列表。
讀取文件模塊主要是先調(diào)用CommonDialog控件,彈出路徑選擇對話框,用戶指定目標(biāo)文件夾,然后根據(jù)需要自由按下列三種方式進(jìn)行搜索。
(1)僅搜索一級目錄:
如圖3所示,本方式僅搜索指定文件夾下所有CAD文件。
先對用戶指定的路徑進(jìn)行字符串處理,使其變?yōu)橛行募窂紽d,賦值搜索路徑Mypath=Fd,然后讀取Mypath下所有文件名Myname=Dir(MyPath,vbDirectory Or vbHidden Or vbNormal Or vbReadOnly),然后逐個判斷該文件是否為CAD文件(Right(Myname,4)=".dwg"),是則將其全路徑添加到列表。最后統(tǒng)計列表內(nèi)文件數(shù)量,以便用戶確認(rèn)是否有漏打。
(2)搜索至二級目錄:
如圖4所示,本方式僅搜索指定文件夾下、及其下一級文件夾下所有CAD文件。
先對用戶指定的路徑進(jìn)行字符串處理,使其變?yōu)橛行募窂紽d,賦值搜索路徑Mypath=Fd,然后讀取Mypath下所有文件及子文件夾名Myname=Dir(MyPath,vbDirectory Or vbHidden Or vbNormal Or vbReadOnly);用GetAttr(MyPath&Myname)And vbDirectory)=vbDirectory逐個判斷是否為子目錄,如果是二級目錄,則目錄數(shù)idir=idir+1,該文件夾的索引為idir-1,即dir(idir-1)=Myname;
如果為文件,則判斷該文件是否為CAD文件(Right(Myname,4)=".dwg"),是則將其全路徑添加到列表。
搜索完所有一級目錄后,賦值Mypath=Fd+dir(n),重復(fù)上述步驟,即對每個二級文件夾進(jìn)行僅搜索一級目錄的整個過程;最后統(tǒng)計列表內(nèi)文件數(shù)量,以便用戶確認(rèn)是否有漏打。
(3)搜索至指定文件夾底層
如圖5所示,本方式僅搜索指定文件夾下、及其所有子目錄文件夾下所有CAD文件。
先對用戶指定的路徑進(jìn)行字符串處理,使其變?yōu)橛行募窂紽d,賦值搜索路徑Mypath=Fd,然后讀取Mypath下所有文件及子文件夾名Myname=Dir(MyPath,vbDirectory Or vbHidden Or vbNormal Or vbReadOnly);用GetAttr(MyPath&Myname)And vbDirectory)=vbDirectory逐個判斷是否為子目錄,如果是二級目錄,則目錄數(shù)idir=idir+1,該文件夾的索引為idir-1,即dir(idir-1)=Myname。
如果為文件,則判斷該文件是否為CAD文件(Right(Myname,4)=".dwg"),是則將其全路徑添加到列表。
搜索完所有一級目錄后,賦值Mypath=Mypath+dir(n),即對所有子目錄循環(huán)執(zhí)行上述步驟,直到搜索到指定路徑及其所有底層子目錄下的CAD文件;最后統(tǒng)計列表內(nèi)文件數(shù)量,以便用戶確認(rèn)是否有漏打。
打印順序處理模塊:可以打印由用戶指定路徑導(dǎo)入列表的CAD文件(打開,或者關(guān)閉狀態(tài)都可以),也可以打印AutoCAD軟件當(dāng)前打開的所有活動文檔。其打印順序的處理都是一樣的,都是根據(jù)用戶選擇的順序方式,生成一個順序二維數(shù)組Szdy(1 To 10000,1 To 3),其中第一維表示該文件的打印序號,第二維1表示該文件名(包括全路徑)、2表示該文件圖紙大小、3表示該文件在打印列表的行號。
如圖2所示,其具體實現(xiàn)流程:如果用戶選擇按列表順序打印,則依次將列表中文件的全名賦值給打印數(shù)組Dysz(i,1)=list1.list(i),對于活動文檔Dysz(i,1)=AcadAPP.Documents(i),如果選擇按目錄打印,則調(diào)用CommonDialog控件,設(shè)置其篩選條件為Excel或CAD文件,以限定用戶只能選擇Excel或CAD類型的圖樣目錄,用戶選擇后,連接Excel(或CAD).Application,從上往下依次讀取圖紙名稱列的文件名稱Tzmc(i),然后和列表內(nèi)容或者活動文檔逐個對比,這之前由于列表內(nèi)容為文件全名(包括全路徑,而圖樣目錄中僅為文件名,必須對列表內(nèi)容進(jìn)行處理(先用split函數(shù)獲得數(shù)組,再提取文件名),如果Tzmc(i)存在于打印列表的list1.list(n),或者活動文檔AcadAPP.Documents(n),則Dysz(i,1)=list1.list(n)或Dysz(i,1)=AcadAPP.Documents(n),Dysz(i,2)=Ml.Tzdx,Dysz(i,3)=n。
生成順序數(shù)組后可按數(shù)組第一維的序號依次對所有文件進(jìn)行后續(xù)打印操作,這樣打出來的圖紙,不需要再人工整理順序,提高打印效率,尤其在圖紙數(shù)量較大時更明顯。
自動設(shè)置圖幅模塊:如圖1所示,CAD圖紙的打印圖幅設(shè)置主要包括圖紙大小、圖形邊界(圖框)、圖形方向(縱向/橫向)以及縮放比例的確定,傳統(tǒng)的手動打印方法都是由打印者根據(jù)實際需要逐個圖紙文件進(jìn)行這些設(shè)置。本打印裝置通過VB程序語言和接口語言讀取圖紙文件圖元和圖樣目錄文件,計算確定出圖紙繪制時設(shè)計好的圖幅設(shè)置,并以最優(yōu)打印設(shè)置向打印設(shè)備發(fā)送打印指令,完成圖紙的自動打印。
①圖形邊界(圖框)的確定
在打印圖幅設(shè)置中,最關(guān)鍵也是最基礎(chǔ)的是圖形邊界(圖框)的確定,現(xiàn)提供了三種圖形邊界自動確定的方法,并根據(jù)各個方法的計算速度和應(yīng)用范圍以及具體圖紙的情況,選擇最優(yōu)邊界自動確定的方法,確保以最快的速度,最廣的使用范圍實現(xiàn)批量打印。下面是三種自動確定邊界方法的具體做法和特點:
(1)利用GetVariable("EXTMAX/EXTMIN")方法獲得圖紙文件的邊界;
這種方法首先利用配合GetVariable("EXTMAX/EXTMIN")方法獲得圖紙文件的邊界,然后用范圍打印方式(PlotType=acExtents)進(jìn)行打印,其最大的特點是運行速度快,很適合圖元都在圖框內(nèi)部,圖框外部無任何圖元的圖紙,但當(dāng)圖框外含有其它圖元時,這種方法確定的邊界就是包括框外圖元的區(qū)域,而實際上大多數(shù)情況下我們只需要打印圖框里面的內(nèi)容。
(2)利用圖塊確定圖紙邊界
這種方法首先讀取圖紙文件中的所有圖塊,然后利用GetBoundingBox方法獲得所有塊的邊界點坐標(biāo),對這些點逐個進(jìn)行比較,得出圖紙邊界點(左下點和右上點)的坐標(biāo),再用窗口打印方式(PlotType=acWindow)進(jìn)行打印。這種打印方式適應(yīng)范圍較廣,但運行速度較慢。
(3)利用水平和豎直直線得出圖紙邊界
這種方法首先讀取圖紙文件中的所有水平和豎直直線的端點坐標(biāo),然后對這些點逐個進(jìn)行比較,得出圖紙邊界點(左下點和右上點)的坐標(biāo),再用窗口打印方式(PlotType=acWindow)進(jìn)行打印。這種打印方式適應(yīng)范圍很廣,幾乎能適應(yīng)所有CAD文件的打印,但因其計算量大,運行速度慢。
在具體使用時,首先用GetVariable("EXTMAX/EXTMIN")方法獲得圖紙文件的邊界,計算其長寬比Ckb,如果Ckb為標(biāo)準(zhǔn)圖紙大小的長寬比例,如A3圖紙的長寬比為1.41414(橫向)或0.70714(縱向),則說明圖元都在圖框內(nèi),適合范圍打印,此時用第一種方式效率最高。
如果Ckb不是標(biāo)準(zhǔn)圖紙大小,就判斷圖紙文件是否有圖塊對象,如果有則利用第二種方式確定圖紙邊界,先讀取圖紙文件中的所有圖塊,然后利用GetBoundingBox方法獲得所有塊的邊界點坐標(biāo),對這些點逐個進(jìn)行比較,得出圖紙邊界點(左下點和右上點)的坐標(biāo),計算圖紙長寬比例Ckb,再用窗口打印方式(PlotType=acWindow)進(jìn)行打印;
如果前兩種方法都得不到或者得到的圖紙邊界長寬比例Ckb不是準(zhǔn)圖紙大小的長寬比例,則用第三種方法,讀取圖紙文件中的所有水平和豎直直線的端點坐標(biāo),然后對這些點逐個進(jìn)行比較,得出圖紙邊界點(左下點和右上點)的坐標(biāo),計算其長寬比Ckb,再用窗口打印方式(PlotType=acWindow)進(jìn)行打印(或輸出為其它格式文件)。
這樣,就結(jié)合了三種方法各自的優(yōu)點,以最快的速度,最廣的使用范圍實現(xiàn)批量打印。
②圖形方向(縱向/橫向)的確定
本發(fā)明通過①過程取得的圖形邊界的長寬比Ckb來確定圖紙的縱向布置還是橫向布置,當(dāng)Ckb>1,則設(shè)置圖形方向為橫向(PlotRotation=ac90degrees),否則,設(shè)置為縱向(PlotRotation=ac0degrees)。
③輸出圖紙大小的確定
輸出圖紙大小可以由用戶在人機(jī)界面上指定,也可以自動確定,自動確定時,如果選擇按圖樣目錄順序打印,則按打印順序處理模塊獲得的打印順序數(shù)組的第二維元素2(即Dysz(i,2))選擇圖紙大小,如果選擇按列表順序,則根據(jù)①過程取得的圖形邊界的長寬比Ckb和標(biāo)準(zhǔn)圖紙長寬比比較來確定,如長寬比為1.41414(橫向)或0.70714(縱向),則確定輸出圖紙A3圖紙。
此外,除上述幾個重要設(shè)定外,本發(fā)明的其余圖幅及打印設(shè)定都是按用戶在界面上指定的設(shè)置進(jìn)行設(shè)定,如果沒有指定則按本發(fā)明默認(rèn)的方式進(jìn)行設(shè)置,如默認(rèn)打印樣式為PCCAD.ctb樣式:StyleSheet="PCCAD.ctb";按比例縮放到圖紙大小:StandardScale=acScaleToFit;居中打印:CenterPlot=True;打印對象線寬:PlotWithLineweights=True等等,用戶可以用“一鍵設(shè)置”命令按鈕實現(xiàn)所有設(shè)置,并且只需設(shè)置一次便可自動實現(xiàn)批量打印。
綜上所述,本發(fā)明的打印裝置具有如下功能:
1、搜索、讀取文件功能
本發(fā)明提供了三種搜索方式,用戶可以根據(jù)需要指定相應(yīng)的搜索方式,以便快速、精確的搜索所有要打印的CAD圖紙文件,將其地址讀入計算機(jī)內(nèi)存,同時顯示在本發(fā)明的人機(jī)交互界面,并統(tǒng)計文件數(shù)量以便用戶確認(rèn),用戶可以批量導(dǎo)入、清空;也可添加、移除單個文件在打印隊列。
本功能解決了傳統(tǒng)打印方法的文件查找慢,易出現(xiàn)少打、漏打文件的問題。
2、文件批量操作、信息讀取功能
本發(fā)明所述的批量打印裝置,可以通過接口語言實現(xiàn)自動啟動AutoCAD(AutoCAD處于關(guān)閉狀態(tài)),或者連接AutoCAD(AutoCAD已經(jīng)啟動),建立內(nèi)部連接,按指定的順序自動尋址打開要打印的CAD文件,讀取其信息(以便自動設(shè)置打印選項),打印完成后關(guān)閉文件(也可以選擇不關(guān)閉)。此外,本發(fā)明還可以操作和讀取用戶指定的圖樣目錄(excel或CAD表)文件信息,以實現(xiàn)批量圖紙的按順序打印。
3、獨立于AutoCAD的打印設(shè)置功能
基于AutoCAD打印設(shè)置選項的缺陷(它僅適應(yīng)單張打印的設(shè)置),本發(fā)明針對批量打印和滿足不同的打印需求,提供了獨立于AutoCAD、更多、更簡潔的打印設(shè)置選項,以使用戶快速(多個文件只設(shè)置一次)、靈活的進(jìn)行打印設(shè)置。如用戶可以自由選取打印列表內(nèi)文件,或者AutoCAD當(dāng)前活動文檔,或者二者都進(jìn)行打印。
4、自動、高效識別圖框,自動設(shè)置圖紙縱/橫向、圖紙大小、打印信息統(tǒng)計功能
本發(fā)明公開了三種獲得圖紙文件打印邊界的方法,并按其各自特點,以最佳的方式將其組合,確保能夠最快速的計算、確定幾乎所有有效圖紙的打印邊界,并確定其圖形打印方向,可按用戶指定(包括手動指定和通過目錄文件指定)的圖紙大小,也可自動,為不同的圖紙設(shè)置不同的圖紙大小,進(jìn)行批量打印。
此外本發(fā)明在批量打印完成后會統(tǒng)計出共打印文件數(shù)量,和剩余文件(部分無圖框無圖元純文字型未能打印圖紙)數(shù)量,并將其顯示在本發(fā)明的人機(jī)交互界面,以便用戶確認(rèn),以免少打、漏打。
5、批量打印順序指定功能
本發(fā)明提供了三種打印順序供用戶自由選擇,按列表順序,按活動文檔順序,按圖樣目錄順序,解決了目前部分程序可批量但不能按指定順序打印的問題。
以上僅是本發(fā)明的優(yōu)選實施方式,本發(fā)明的保護(hù)范圍并不僅局限于上述實施例,凡屬于本發(fā)明思路下的技術(shù)方案均屬于本發(fā)明的保護(hù)范圍。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理前提下的若干改進(jìn)和潤飾,應(yīng)視為本發(fā)明的保護(hù)范圍。