999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

船舶設計中大批量圖紙文件有關信息的自動提取

2011-08-11 01:47:18張宗科
船舶 2011年4期
關鍵詞:圖紙程序信息

張宗科

(中國船舶工業集團公司第七○八研究所 上海200011)

0 引 言

通常而言,一條船的設計階段包括方案設計、技術設計、施工設計與完工設計。在專業分工組成上,分為總體、結構、舾裝、輪機、電氣、空調、觀導等專業。圖紙文件目錄是船舶設計各專業圖紙文件的一份明細,它由總體專業加以匯總,其中所需的圖紙文件有關信息見圖1。一般在各設計階段的最后幾天才能提交,這樣留給總體專業匯總的時間非常緊迫,特別是對于軍船等時間節點要求“后墻不倒”而言,更是迫切。對于一條船來說,少則有幾百份設計圖紙文件,多則有上千份,因此匯總圖紙文件目錄是件十分繁瑣的事。有時歸檔的蠟紙打印好,對照圖紙實物逐份校對后,還要對圖紙文件目錄進行返工。如何利用各專業最終完成的圖紙文件將匯總目錄所需信息自動提取出來,從而減少人工工作量將是一件非常有意義的事。

圖1 圖紙文件目錄中所需的圖紙文件有關信息

1 實現思路

AutoCAD作為工程技術人員使用的繪圖工具,具有多種二次開發方式,如內嵌的AutoLISP/Visual LISP開發語言、VBA,以及ObjectARX與Visual Basic。利用VB編程對AutoCAD進行二次開發,不僅可將AutoCAD當作自己VB程序中的一個圖形窗口,而且可實現使用AutoCAD直接繪圖自身所不能或不易實現的功能和效果。Word與Excel內嵌了功能強大的VBA開發工具,在同作為Micorsoft公司產品的VB眼中看來,操控Word與Excel更是得心應手。

七○八所軍船中心在圖紙文件設繪中都采用了標準圖框,這為圖紙文件信息的自動提取奠定了基礎[1,2]。在設計過程中,各專業圖紙文件存放于自己專業的文件夾內,進而組合形成一個不同設計階段的文件夾。根據選定的設計階段文件夾,利用批處理命令“dir*.*/b/a:d->listDir.dat”獲得子文件夾的名稱,再由“dir*.dwg/b/s->listdwg.dat”、“dir*.doc/b/s->listDoc.dat”、“dir*.xls/b/s->listXls.dat” 得到子文件夾(不同專業)下三類文件的名稱。或者由Dir(MyPath,vbDirectory)與(GetAttr(MyPath&MyName)And vbDirectory)=vbDirectory來找到某個文件夾下面子文件夾的名稱列表,再由 Dir(MyPath,vbNormal)與 (GetAttr (MyPath&MyName)And vbNormal)=vbNormal,(InStr(MyName,".dwg")>0)來找到子文件夾下AutoCAD文件的列表。用VB分別控制AutoCAD、Word與Excel,將圖紙文件的有關信息提取出來,如圖紙代號、名稱、張數、面積、密級等,從而為圖樣和技術文件目錄的匯總提供基礎。同時還可獲得每份圖紙的編制、校對、審核、標檢與審定人員的名字,以及圖紙會簽的信息。

程序自動將每個專業的圖紙文件信息形成一個數據文件,并且將其中有問題的圖紙文件以備注方式標出錯誤種類,如頁數、面積有誤等。在Excel中打開該文件,對圖紙代號所在的列進行“有標題行”的升序排序,即可得到滿足打印條件的“全船圖樣及技術文件目錄”文件。

2 實現方法

2.1 AutoCAD文件

七○八所軍船中心在圖紙設繪中采用了統一的圖框格式,每份圖紙文件信息(如文件名、圖號、頁數、面積、密級等)均作為Block的Attributes包含其中。本文仔細分析了圖框的格式及組成,利用VB編程操控AutoCAD將每份圖紙的信息自動提取出來,并輸出到文件中加以匯總[3]。同時可自動驗證原圖紙中的反向圖號、總面積、總頁數等信息是否有誤。對于產品名稱 (PRODUCT-NAME)、圖紙名稱(DRAW-NAME)、密級(STANDBY4)等信息,有時由于特殊字符的存在或字數太多太長,并不是作為Attribute的屬性值而存在,則利用圖框中該位置處(區位框四周打×者)與當前Pixel_Unit獲得相關信息,用CP方式進行選擇。若該區域存在格式Block以外的對象,則自動提取出來,并作為相應tag的value輸出到文件內。將frame_title_c/ce的組成部分插入到文件中時,先后關系不變,但以insert為基點,用塊信息 Xscale、Yscale、Zscale 進行縮放,見圖2。產品名、文件名、密級的選取定位,需要Line0、Line2、Line3中的有關信息。 frame_title_c與frame_title_ce略有不同,Block中的成員編號70相應于71號,其后依次相應減1。

圖2 七○八所統一圖框的圖紙信息欄

用VB控制AutoCAD提取dwg文件有關信息的流程,參見圖3。提取出每份dwg文件的信息后,程序中可檢查各頁圖紙的面積之和與總面積是否一致,若有誤,則給出錯誤提示標識。同時可獲得dwg文件所標出的重量信息,用于重量重心計算書的校對。

2.2 Word文件

Word文件主要包括計算書、說明書、明細表等,分為豎式與橫式兩種,其中豎式封面見圖4。

圖3 使用統一圖框的圖紙信息提取流程

圖4 七○八所統一圖框的豎式Word文件封面首頁

利用VB編程,經Active OCX CreateObject方式創建Word應用,打開相應的word文件,盡可能將首頁內容選中并copy至剪貼板上,然后paste至記事本文件內或者Excel文件內進行下一步的信息處理。自動提取出有關信息,如文件名、圖號、總頁數與面積等。

當Word文件由兩個及多個Section組成時,封面首頁為第一個Section,利用其相關信息,可選中整個封面頁,將該頁內容copy至剪切板,paste并保存到temp.dat中,再對此文本文件進行處理,提取出有關信息來,不過需要Delay合適的時間間隔。

若Word文件僅由一個Section組成,可通過翻轉到文件最后一頁最后一行,由插入numPages域的方式來獲取頁數,由此得到封面首頁的近似wdStory end值,將包含封面首頁在內盡可能少的內容copy至剪切板[4]。

用VB控制Word提取doc文件有關信息的流程,參見圖5。

圖5 使用統一圖框的Word文件信息提取流程

2.3 Excel文件

Excel文件主要包括重量重心計算書、電纜冊、設備明細表等,其中“封面”sheet見圖6。

利用VB編程,經CreateObject方式創建Excel應用,打開*.xls文件。判斷sheet Name中是否有“封面”。 若有,則經 xls.Application.Sheets("封面").Select,激活“封面”sheet,由 ActiveSheet.UsedRange.Rows.Count來獲得已經應用的范圍,取得iRowBegin與iColBegin。利用Set foundCell=ExcelSheet.Application.ActiveSheet.UsedRange.Find (What: ="Area",After: =ExcelSheet.Application.ActiveCell,LookIn:=xlFormulas,LookAt: =xlPart,SearchOrder: =xlByRows,Search Direction: =xlNext,MatchCase: =False,MatchByte: =False,SearchFormat:=False)得到各感興趣 cell的位置,再將所需信息提取出來。

用VB控制Excel提取xls文件有關信息的流程,參見圖7。

圖7 使用統一圖框的Excel文件信息提取流程

下面談一下Excel打印時在頁面上的任意位置處自動插入頁碼的實現方法。

船舶設計中的“全船電纜冊”,少則十幾頁、多則幾百頁,此Excel格式的文件要求打印出的每頁具有相同的表頭,且在表頭的同一位置處需插入頁碼。Excel文件可利用“Print title”功能,使得打印出的每頁文件具有相同格式的表頭;分頁由Excel自動完成,可方便添加或刪除任意行,而不像Word中必須重新手動調整分頁位置;當然也可在分頁預覽狀態,按需手工調整分頁符的位置。相對于Word文件中的頁碼“所見即所得”,Excel文件中的頁碼只有在打印預覽或輸出時才顯示出來,這使得調整其位置較為不便。

在打印區域之內的任意位置,設定頁碼可用兩種方式:利用頁面設置中的頁碼按鈕,以自定義方式將頁碼插入;利用VBA中的HPageBreaks與VPageBreaks屬性,將取得的頁碼插入到Excel文件的相應cell中。

2.3.1 自定義頁碼方式

在Print Preview中,頁碼垂向的位置調整,可通過按下“頁邊距”按鈕,然后拖曳頁眉的頁邊距(為頁眉頂端到頁面頂端的距離)控制柄到所需的位置,調整頁眉頂端到頁面頂端的距離。頁碼的默認位置,在頁面的水平方向是固定的,如LeftHeader左邊距左邊界為 0.75 inch (54 pt),CenterHeader處于頁面水平方向的正中間,RightHeader右邊距右邊界為0.75 inch(54 pt)。水平方向的位置調整,可通過“頁眉/頁腳”中的“自定義頁眉”選項中的左、中、右三個文本框內設置相應的頁碼。其中右邊的設置頁碼框內頁碼位置不能調整,而左、中兩個文本框內頁碼的位置可添加空格鍵的方式調整(即向右側移動),這樣可在生成的打印輸出頁面的任意位置處設置頁碼。Excel中行高的尺寸由長度單位磅(pt)給出,(1 pt=1/72 inch或0.035 cm),而列寬是單元格中0~9號標準字體(工作表的默認文本字體,標準字體決定了“常規”單元格樣式的默認字體)平均數的倍數 (the average number of digits 0 through 9 of the standard font that fit in a cell)。如標準字體為“宋體”,字形為“常規”時,0-9號標準字體的平均數中的1相當于6磅。在“頁面設置”中設定起始頁碼,通過增減空格或換行來調整頁碼在頁面上的位置,此外可經設定空行相應的字體大小來微調頁碼的位置。

2.3.2 給指定的單元格賦值方式

相對于只能在輸出頁面上的某一位置設定頁碼“&P”的限制,可以將通過其他途徑獲得的頁碼值直接賦值給Excel中的cell,從而實現頁碼的自動設置。正常情況下可由ActiveSheet的(1+HPageBreaks.Count)與(1+VPageBreaks.Count)相乘得到總頁碼,其余情形下總頁碼的獲取詳見程序中。根據PageSetup的Order值 (xlDownThenOver或xlOver ThenDown),得到預覽(或輸出)時的先后順序,從而確定以HPageBreaks或VPageBreaks為內循環設置頁碼數。“&P”僅在預覽或打印輸出時才能轉換成具體的數值,在程序中不能參加運算。而由此方式獲得的頁碼與“&P”不同,它僅僅是一個循環計數,故可參加程序的運算,如將頁碼設置為羅馬數字的“I、II、III…”及其他的個性化頁碼(將“頁碼”設置為僅有偶數值)。而頁碼字符的大小及頁碼之間的對齊方式,可由其所依附的Cell的單元格格式中的“字體(Font)”與“文本對齊”(Text Alignment)選項來設置,因而也更為靈活。

程序中的具體實現方式,由InputBox選擇頁碼相應的指定Cell,并由另一InputBox輸入需打印的總頁數及首頁頁碼數值,其余由程序自動完成。不過由于本文假設的Excel文件在預覽或輸出時具有相同的表頭,程序是對每一頁進行循環得到頁碼數,進而將其值賦給指定的Cell。(對于非相同的標題行,最好由第一種方式設置頁碼)。效果可由Adobe Acrobat(完全版)安裝后自帶的Acrobat Distiller虛擬打印機生成pdf格式文件加以檢驗,不過需給定多個文件名(每頁一個文件);直接打印到物理打印機則無此問題。

2.3.3 設置頁碼兩種方法的比較

自定義頁碼方式保證了打印輸出時頁碼的一致性,并對整個WorkSheet或打印區域起作用;但位置及對齊方式可能會影響到文件的美觀,且有時調整會較費時。利用本文程序中第二種方法插入頁碼,對具有統一標題頭的文件,操作較為方便,且可設置個性化頁碼(如甲、乙、丙、丁等);但當生成的Excel文件橫向有較多頁時,需以(1+VpageBreaks.Count)為外循環數,對橫向的每一頁列都需指定標題行中插入頁碼的Cell位置。

3 重量重心的有關處理

整船的重量重心計算書由各專業提交的分項重量重心匯總而成,而各專業提交的分項方式不盡相同。如結構分項為船體、艙棚、駕駛室、主機基座、支架等;舾裝分項為錨及系泊設備布置圖、方向舵系布置圖、門/窗/蓋/梯/欄桿布置圖、消防救生設備布置圖、艙室布置圖、油漆、供應品等;輪機分項為發動機、軸系、油箱、水箱等;電氣分項為主配電板、充放電板、駕控臺、燈具、蓄電池、電纜及附件等。相對而言,舾裝專業各布置圖相應的重量可按圖索驥,由程序直接從圖紙信息欄中提取出來。

如何判斷驗證各專業的分項重量分布是否有誤,是一項費力的工作。將各重量位置直接在總圖上表示出來,不失為直觀的輔助手段,合理與否盡可一目了然。本文利用VB編程,直接將重量重心計算書中不同sheet(專業)的重量分項名稱及其坐標表示在總布置圖上,其中每個sheet放在一Layer內(Layer名為 sheet之 name),這樣便于操作[5]。 此外,某項重量在俯視圖與側視圖上的標識各有一個,以對應三維坐標。為方便對照,程序中將該對標識自動加以編組,形成一個Group。另,為便于調整某一重量Layer中字體大小,編寫了LISP輔助程序,只要任選一個標識text,即可對該標識所在Layer內的所有標識更改文字大小。

4 結 語

本文編程在AutoCAD中進行二次開發,輔助實現CAD圖紙中有關文件信息的自動提取,對Word與Excel文件信息提取亦開發出相應程序,可減少人工統計的工作量,為總體專業省出寶貴的時間,以完成快速性、續航力、完整穩性、破艙穩性等有關圖紙的計算編制。編程自動提取不僅可避免人工統計時出現失誤,同時可對原文件信息加以驗證,糾正原圖紙中的一些基本失誤。此外,對重量重心分布位置的判讀校驗提供了有效的輔助手段。

[1]錢浩.AutoCAD圖紙批量打印程序的開發與應用[J].船舶,2006,17(1):61-63.

[2]徐天曉.利用VB二次開發AutoCAD提升打印功能[J].船舶,2009,20(3):61-64.

[3]張晉西.Visual Basic與AutoCAD二次開發[M].清華大學出版社,2002.2.

[4]顧經宇.其實你還沒懂Word[M].上海科學技術出版社,2002.

[5]二代龍震工作室.AutoCAD VBA函數庫查詢詞典[M].中國鐵道出版社,2003.

猜你喜歡
圖紙程序信息
淺談汽車線束產品圖紙管理
看圖紙
當代工人(2019年20期)2019-12-13 08:26:11
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
“程序猿”的生活什么樣
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
酒店室內裝修圖紙深化設計淺析
河南科技(2014年12期)2014-02-27 14:10:44
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 国产成人在线无码免费视频| 国产又色又爽又黄| 伊人大杳蕉中文无码| 在线a网站| 成人毛片在线播放| 亚洲精品国产综合99| 97久久免费视频| 久久超级碰| 国产性爱网站| 国产成人高清亚洲一区久久| 国产乱论视频| 亚洲午夜18| 国产亚洲视频免费播放| 精品国产成人三级在线观看| 亚洲天堂.com| 亚洲毛片一级带毛片基地| 亚洲国产欧美国产综合久久| 午夜国产在线观看| 日韩成人在线一区二区| 99精品在线看| 亚洲av无码久久无遮挡| 成年片色大黄全免费网站久久| 欧美在线国产| 亚洲国产精品无码久久一线| 国产呦视频免费视频在线观看| 日本少妇又色又爽又高潮| 久久黄色视频影| 爽爽影院十八禁在线观看| 国产青青草视频| 亚洲精品人成网线在线 | 女人18毛片一级毛片在线| 伊人91视频| 国产成人精品18| 理论片一区| 又污又黄又无遮挡网站| 成人欧美在线观看| a级毛片一区二区免费视频| 日韩欧美国产精品| 尤物特级无码毛片免费| 亚洲天堂视频在线观看免费| 国产三级韩国三级理| 国产精品开放后亚洲| 精品福利网| 国内精品小视频在线| 亚洲男人的天堂网| 国产免费精彩视频| 国产乱人乱偷精品视频a人人澡| 亚洲欧美日韩动漫| 久青草网站| 国产一级片网址| 综合久久五月天| 欧洲极品无码一区二区三区| 伊人天堂网| 国产精品亚洲αv天堂无码| 福利姬国产精品一区在线| 久久精品aⅴ无码中文字幕 | 国产一级毛片yw| 亚洲无码精品在线播放| 人人爽人人爽人人片| 九九九久久国产精品| 久久精品人人做人人| 欧洲熟妇精品视频| 亚洲欧美极品| 91小视频在线播放| 亚洲欧美日韩成人在线| 国产成人福利在线视老湿机| 久久久受www免费人成| 婷婷综合缴情亚洲五月伊| 日本一本正道综合久久dvd| 国产欧美日本在线观看| 中文字幕1区2区| 夜夜高潮夜夜爽国产伦精品| 亚洲日韩精品无码专区| 天天色天天操综合网| 日韩欧美中文字幕一本| 国产福利微拍精品一区二区| 一区二区在线视频免费观看| 伊人大杳蕉中文无码| 国产精品福利尤物youwu| 国产欧美日韩综合在线第一| 成人一区专区在线观看| 毛片一区二区在线看|