羅年猛, 肖祖安, 朱 林
(華中科技大學(xué)國家企業(yè)信息化應(yīng)用支撐軟件工程技術(shù)研究中心,湖北 武漢 430074)
在工業(yè)生產(chǎn)實踐中,如何有效的管理大量的工程圖紙,并提高其重復(fù)利用的效率成了非常棘手的問題[1]。PDM(Product Data Management,產(chǎn)品數(shù)據(jù)管理),作為對企業(yè)設(shè)計過程管理,已經(jīng)在國外一些著名企業(yè)中得到廣泛的應(yīng)用,但是在國內(nèi),部分企業(yè)的PDM在應(yīng)用中困難重重,周期長,數(shù)據(jù)采集和處理難,缺乏準確性,PDM實施成功率低成了普遍現(xiàn)象,這樣的企業(yè)在我國為數(shù)不少,大多是一些中小型企業(yè),它們把CAD僅僅作為繪圖工具來使用,經(jīng)過多年的積累,存在大量無序的電子文檔,企業(yè)一方面需要把這些寶貴的信息整理成可查閱的電子資料庫,而另一方面實施PDM等管理軟件又存在高成本、高風(fēng)險等問題。而且企業(yè)往往需要進行大量的改造,投入很多的人力,這不是所有中小企業(yè)都可以承受的,但是他們又迫切的想擺脫手工編制 BOM(Bill Of Material,物料清單)的繁瑣。因此,這些企業(yè)急需一種簡單易用的“圖紙BOM管理系統(tǒng)”。它不需要PDM、PLM中過于約束的功能、繁瑣的流程管理,只需要實現(xiàn)零件圖紙的查看、產(chǎn)品結(jié)構(gòu)的管理、BOM 數(shù)據(jù)的提取和輸出等基本功能[2]。因此,本文提出了一種簡潔、高效的圖紙BOM管理的方法,從邏輯上對圖紙進行劃分,以某一產(chǎn)品(或產(chǎn)品的某一部件)的所有圖紙(一套圖紙)為對象,幫助設(shè)計者管理和維護該套圖紙,并且方便輸出各種形式的BOM數(shù)據(jù)報表。
1.1.1 系統(tǒng)需要具備的功能
利用計算機來輔助企業(yè)生產(chǎn)管理,首先要使計算機能夠獲取產(chǎn)品的構(gòu)成及相關(guān)的物料,為了便于計算機識別,必須把用圖示表達的產(chǎn)品結(jié)構(gòu)轉(zhuǎn)化成某種數(shù)據(jù)格式,這種以數(shù)據(jù)格式來描述產(chǎn)品結(jié)構(gòu)的文件就是物料清單,即是BOM[3]。在設(shè)計過程中,BOM 的數(shù)據(jù)來源主要是整套產(chǎn)品設(shè)計圖紙中的標題欄和明細表中的信息。標題欄主要記錄了該零件或是部件的名稱、圖號等信息;明細表則記錄了部件或子部件所引用的零件的名稱和數(shù)量等信息。故圖紙中的標題欄和明細表不僅反映了該零件(或部件)的物料信息,還反映了零件之間的結(jié)構(gòu)層次關(guān)系。在國內(nèi)一些中小型制造企業(yè)中,設(shè)計圖紙的無序化、BOM 報表的手工編制和人工管理嚴重的阻礙了知識的共享和重用,工作人員大量的時間和精力都花在了重復(fù)的勞動上,制約了企業(yè)的發(fā)展,降低了企業(yè)的市場競爭力,故對于這些企業(yè)來說,如何有效的管理設(shè)計圖紙和BOM數(shù)據(jù)是其企業(yè)信息化的關(guān)鍵一步。
對于上面所描述情況,這些企業(yè)需要一種圖紙BOM管理系統(tǒng),來規(guī)范的管理他們的圖紙和BOM數(shù)據(jù),該系統(tǒng)必須具備如下4個功能:
1)實現(xiàn)圖紙的批量管理、快速查看和查找;
2)能夠從圖紙中提取所需的BOM信息;
3)直觀的生成產(chǎn)品結(jié)構(gòu),并且實現(xiàn)對產(chǎn)品結(jié)構(gòu)的管理;
4)生成多種形式的BOM報表。
最后,考慮到設(shè)計人員習(xí)慣于CAD繪圖環(huán)境并且要對圖紙進行快速查看,故該系統(tǒng)集成于CAD環(huán)境中。
1.1.2 系統(tǒng)的架構(gòu)設(shè)計
為了實現(xiàn)對圖紙數(shù)據(jù)的統(tǒng)一管理和存取,系統(tǒng)的底層采用數(shù)據(jù)庫支持,數(shù)據(jù)庫是現(xiàn)在應(yīng)用非常廣的數(shù)據(jù)管理技術(shù),常用的數(shù)據(jù)模型有如下3種:
1)層次模型(Hierarchical Model),使用樹形結(jié)構(gòu)來表示數(shù)據(jù)以及數(shù)據(jù)之間的聯(lián)系;
2)網(wǎng)狀模型(Network Model),使用網(wǎng)狀結(jié)構(gòu)表示數(shù)據(jù)以及數(shù)據(jù)之間的聯(lián)系;
3)關(guān)系模型(Relational Model),是一種理論最成熟,應(yīng)用最廣泛的數(shù)據(jù)模型。在關(guān)系模型中,數(shù)據(jù)存放在一種稱為二維表的邏輯單元中,整個數(shù)據(jù)庫又是由若干個相互關(guān)聯(lián)的二維表組成的。
與層次模型和網(wǎng)狀模型相比,關(guān)系模型結(jié)構(gòu)簡單,采用了人們習(xí)慣的表達形式,易于掌握。它以關(guān)系理論作為指導(dǎo),可以通過集合運算、謂詞演算來表示查詢。因此,本文的數(shù)據(jù)庫設(shè)計采用了關(guān)系模型[4]。
整個系統(tǒng)的架構(gòu)如圖1所示。
系統(tǒng)分為3個層次:底層數(shù)據(jù)、中間處理和CAD平臺。底層數(shù)據(jù)中,“工程圖紙”是原始數(shù)據(jù),圖紙中標題欄和明細表信息被提取到“圖紙數(shù)據(jù)庫”中,這些數(shù)據(jù)是生成BOM報表的基礎(chǔ)。然而,對于用戶來說,數(shù)據(jù)庫中的數(shù)據(jù)是與他們的操作直接相關(guān)的“原始數(shù)據(jù)”,數(shù)據(jù)庫中的圖紙數(shù)據(jù)和“工程圖紙”中的圖紙文件有一一對應(yīng)的關(guān)系,這個是為了方便用戶對圖紙進行查找和查看;“中間處理”主要是對數(shù)據(jù)庫中的數(shù)據(jù)再次抽取的過程,提取用戶需要的數(shù)據(jù)并且進行相關(guān)的解析,為最終的輸出做準備;“CAD平臺”則是用戶直接操作的環(huán)境,主要是實現(xiàn)數(shù)據(jù)的圖形化或是視圖化的過程。這樣的層次結(jié)構(gòu)使得圖紙數(shù)據(jù)和管理程序相對獨立,降低了整個系統(tǒng)的維護成本,同時,在保證數(shù)據(jù)完整性的前提下,管理程序以后的擴展也非常方便。
圖1 圖紙BOM管理系統(tǒng)的架構(gòu)
由1.1節(jié)可以得知,系統(tǒng)的主要功能是圖紙數(shù)據(jù)的提取和數(shù)據(jù)的導(dǎo)出,圖紙數(shù)據(jù)庫是整個數(shù)據(jù)流的樞紐,所以圖紙數(shù)據(jù)庫的設(shè)計、圖紙數(shù)據(jù)的提取和數(shù)據(jù)的導(dǎo)出是整個系統(tǒng)的關(guān)鍵,其中,數(shù)據(jù)的導(dǎo)出主要包括產(chǎn)品結(jié)構(gòu)的生成和BOM報表的輸出。
1.2.1 圖紙數(shù)據(jù)庫的設(shè)計
圖紙數(shù)據(jù)庫是整個系統(tǒng)數(shù)據(jù)的樞紐,是用戶操作的直接數(shù)據(jù)來源,故數(shù)據(jù)庫的設(shè)計對整個系統(tǒng)非常的關(guān)鍵。
由圖1可以看出,圖紙數(shù)據(jù)庫中首先必須包含如下數(shù)據(jù):
1)數(shù)據(jù)庫數(shù)據(jù)和圖紙的映射關(guān)系;
2)圖紙之間的結(jié)構(gòu)關(guān)系;
3)圖紙的BOM數(shù)據(jù)。
數(shù)據(jù)庫數(shù)據(jù)是整個系統(tǒng)的基礎(chǔ),但是如何有效的組織數(shù)據(jù)則直接影響到系統(tǒng)的檢索性能,故需要對原始圖紙數(shù)據(jù)進行合理的分類。在數(shù)據(jù)庫中主要采用如圖2所示的幾個表來存儲圖紙的主要信息。
圖2中,“圖紙定義文件表”、“定義文件和字段值映射關(guān)系表”和“字段屬性表”包括了整個圖紙的標題欄和明細表的定義屬性,包括各個屬性代表的名稱和在圖紙上的偏移坐標,這些定義信息是識別圖紙的基礎(chǔ)。工程上圖紙的管理通常是通過產(chǎn)品來劃分的,在這里系統(tǒng)以“項目”的概念來分別管理不同的產(chǎn)品的圖紙?!皥D紙信息表”中主要是標題欄的信息,它和“明細表信息”表中的明細表信息是“圖紙關(guān)系表”的數(shù)據(jù)來源,這3個表最終匯總成了“產(chǎn)品結(jié)構(gòu)信息”表。對于一個項目來說,主要的信息有:項目ID、圖紙ID、明細表信息ID、定義文件ID和字段屬性ID,在數(shù)據(jù)庫中對這些信息進行合理劃分,分別存放在不同的表中,用各自的ID 做索引值,來進行數(shù)據(jù)檢索。這樣的信息組織減少了數(shù)據(jù)冗余,提高了應(yīng)用程序的查詢效率,同時,數(shù)據(jù)的層次結(jié)構(gòu)簡潔清晰,方便用戶的管理和維護。
圖2 圖紙數(shù)據(jù)庫設(shè)計圖
1.2.2 圖紙的批量錄入
圖紙管理以“項目”為劃分,每個“項目”的圖紙都可以批量錄入,指定文件夾或是多個dwg文件都可以。對于單張圖紙的錄入過程如圖3所示,圖紙的批量錄入是循環(huán)執(zhí)行單張錄入的過程。
圖3 單張圖紙的錄入過程
圖3 “遍歷圖紙”是對圖紙中所有實體的迭代過程,從中找出標題欄和明細表,然后對整個標題欄和明細表的數(shù)據(jù)進行讀取,這是圖紙數(shù)據(jù)讀取的關(guān)鍵部分。對圖紙數(shù)據(jù)的讀取主要有3種方法:“模板匹配法”、“塊屬性定義”和“圖紙屬性定義文件”。其中,“模板匹配法”要求現(xiàn)有的圖形和預(yù)先定義的模板的形式完全一致,這樣就可以根據(jù)模板中的位置來提取圖紙中的數(shù)據(jù),該方法主要用于一些格式比較固定的純表格類數(shù)據(jù)的提取,對圖紙的要求非常嚴格[5];“塊屬性定義”是現(xiàn)在用的非常廣的一種圖紙數(shù)據(jù)提取方法,在AutoCAD中提供一種塊編輯器功能,可以對圖塊進行屬性定義或是在圖塊中填寫擴展數(shù)據(jù)來標識圖形,在獲取數(shù)據(jù)時對圖紙進行遍歷,找到之前定義的屬性塊,這樣就可以通過定義的屬性提取出填寫在圖紙中的數(shù)據(jù)[6];“圖紙屬性定義文件”則主要適合一些自由表格圖形的數(shù)據(jù)提取,通過在屬性表中定義的圖紙屬性和相應(yīng)的相對坐標及坐標偏移量就可以找到一個包容盒,這樣包容盒中的文字數(shù)據(jù)就可以很方便的提取了[7]。這里,系統(tǒng)提供了“塊屬性定義”和“圖紙屬性定義文件”這兩種方法來提取圖紙數(shù)據(jù)。下面主要是以“塊屬性定義”為例,圖紙中標題欄和明細表都被定義成帶屬性的塊,完整定義信息是由定義文件和保存在圖塊中的擴展數(shù)據(jù)組成的。圖紙的遍歷僅執(zhí)行一次,遍歷的算法過程如圖4所示。
圖4 圖紙的遍歷過程
“讀取標題欄信息是否成功”,是檢查遍歷的圖紙的結(jié)果中是否存在標題欄的ID,如果存在則讀取標題欄中保存的擴展數(shù)據(jù),找到相應(yīng)的定義文件,定義文件中保存了標題欄的字段的定義信息,然后根據(jù)定義信息可以得到標題欄中各個字段的填寫區(qū)域,從而可以獲取到標題欄中填寫的所有信息,例如:圖號、名稱、圖幅等。“讀取明細表信息是否成功”的過程也是類似的。程序的基本流程圖如圖5所示。
圖5 讀取標題欄定義的過程
“檢查是否存在遞歸包含”的作用是檢查一張圖紙是否在明細表中又包含了自己,如果存在遞歸包含則不會被添加到圖庫中,因為這在輸出產(chǎn)品結(jié)構(gòu)樹時會引起一個類似死循環(huán)的結(jié)構(gòu)。如果要添加的文件已經(jīng)存在圖紙數(shù)據(jù)庫中,則刪除原來已經(jīng)保存在數(shù)據(jù)庫中的相關(guān)圖紙信息,重新添加一次。
1.2.3 產(chǎn)品結(jié)構(gòu)樹輸出
在圖紙的標題欄和明細表信息的錄入時,系統(tǒng)會在圖庫數(shù)據(jù)庫中新建1個“圖紙關(guān)系表”(如果已經(jīng)存在,則或刪除重建),用來管理錄入圖庫中的圖紙之間的關(guān)系。“圖紙關(guān)系表”中主要記錄了3個字段:項目ID(根據(jù)項目新建的順序,從1開始順序取值)、圖紙ID(按照圖紙?zhí)砑拥捻樞?,?開始順序取值)、父圖紙ID。圖紙的父子關(guān)系主要是根據(jù)圖紙中的明細表的引用關(guān)系來確定的:如果a圖紙的明細表中引用了b圖紙,則認為b圖是a圖的零件,a圖是b圖的父親。產(chǎn)品結(jié)構(gòu)樹的輸出過程如圖6所示。
圖6 產(chǎn)品結(jié)構(gòu)樹輸出過程
“建立文檔父子關(guān)系”是產(chǎn)品結(jié)構(gòu)樹的關(guān)鍵步驟,其過程主要分為3步:
1)從“圖紙信息表”中獲取圖紙ID;
2)根據(jù)圖紙ID在相應(yīng)的“明細表信息表”中查詢該圖紙明細表中所引用的圖紙的ID,保存到一個數(shù)組中;
3)根據(jù)獲得的圖紙 ID數(shù)組逐個的查詢,這樣就得到了文檔的父子關(guān)系,然后添加到“圖紙關(guān)系表”中;
“檢查是否存在遞歸包含”的依據(jù)是“圖紙關(guān)系表”中圖紙ID和其父圖ID是否相等,如果相等,則認為是存在遞歸包含,不相等接著進行下一步,插入到結(jié)構(gòu)樹的相應(yīng)位置進行顯示。
1.2.4 BOM報表輸出
BOM報表可以輸出多種格式:txt、xls、dbf和dwg。圖紙的數(shù)據(jù)包含標題欄和明細表信息,數(shù)據(jù)按照產(chǎn)品結(jié)構(gòu)樹的層次來輸出。BOM 報表輸出的數(shù)據(jù)來自“產(chǎn)品結(jié)構(gòu)信息”表,這個表中的數(shù)據(jù)是“圖紙信息表”和“明細表信息表”的綜合,包含的數(shù)據(jù)量非常大,考慮到整個系統(tǒng)的性能,“產(chǎn)品結(jié)構(gòu)信息”表不會自動刷新,用戶在需要時手動刷新。txt、xls和dbf格式都是按照順序直接寫出數(shù)據(jù),是比較通用的格式,而dwg格式報表則是把數(shù)據(jù)填寫在dwg格式的表格中,這是很多管理軟件沒有的報表格式,dwg格式的報表在工業(yè)實際中應(yīng)用非常廣泛,符合設(shè)計人員的使用習(xí)慣,方便修改和維護。dwg格式報表需要預(yù)先定義一個報表格式和相應(yīng)的表格定義文件,系統(tǒng)會根據(jù)dwg表格模板和定義文件中定義的字段選擇性的提取“產(chǎn)品結(jié)構(gòu)信息”表中的數(shù)據(jù)填寫到表格中,從而輸出dwg報表。
圖紙BOM管理首先是要建立圖庫數(shù)據(jù)庫,數(shù)據(jù)庫中主要包含圖紙的定義信息,和各個用于存儲圖紙信息的數(shù)據(jù)表,這些信息都是以后圖紙的信息提取和保存的基礎(chǔ)。然后可以新建項目、添加圖紙,新建的項目和添加的圖紙信息都會被保存到先前建立的數(shù)據(jù)庫中,系統(tǒng)最終會根據(jù)圖紙的信息生成一個產(chǎn)品結(jié)構(gòu)樹,可以對樹中的任意一張圖紙進行查看,填寫等操作,對于每個項目都可以輸出報表,選擇輸出報表,可以得到如表1所示的報表數(shù)據(jù)。
針對這個網(wǎng)格中數(shù)據(jù),可以輸出成多種格式:txt、dbf和dwg。對于dwg格式的報表需要預(yù)先定制好輸出的表格形式,表2是輸出的dwg報表。
圖紙BOM管理系統(tǒng)已經(jīng)在多個企業(yè)使用,如:成都成工工程機械有限公司等,系統(tǒng)直接集成在CAD環(huán)境中,操作簡單直觀,符合設(shè)計人員的使用習(xí)慣,提高了圖紙數(shù)據(jù)的重復(fù)利用率,減少了設(shè)計者的重復(fù)勞動,得到了用戶的一致好評。未來該圖紙BOM管理可以朝著網(wǎng)絡(luò)協(xié)同方面發(fā)展,實現(xiàn)多用戶并行工作和圖紙數(shù)據(jù)的完全共享,這將又會是一次大的飛躍。
表1 報表數(shù)據(jù)
表2 輸出dwg報表
[1] 葉 濤,郭 暉. 基于AutoCAD的圖庫管理系統(tǒng)設(shè)計與實現(xiàn)技術(shù)[J]. 武漢理工大學(xué)學(xué)報,2007,29(2):51-54.
[2] 楊曉鎮(zhèn). 產(chǎn)品設(shè)計 BOM 信息自動生成及管理的研究[D]. 大連: 大連理工大學(xué),2007.
[3] 林 婭. 制造 BOM 的數(shù)據(jù)存儲和查詢優(yōu)化技術(shù)研究及軟件研發(fā)[D]. 重慶: 重慶大學(xué),2007.
[4] 何玉潔. 數(shù)據(jù)庫基礎(chǔ)及應(yīng)用技術(shù)[M]. 北京: 清華大學(xué)出版社,2002: 7-15.
[5] 劉建民. 工程圖檔信息管理系統(tǒng)的設(shè)計與實現(xiàn)[D].天津: 天津大學(xué),2005.
[6] 張良棟,王 杰. CAD圖中明細表信息的提取和BOM 生成方法的研究[J]. 制造業(yè)自動化,2004,24(12): 46-49.
[7] 龔 雄,趙建軍,陳立平. OpenDWG技術(shù)在工程圖管理中的應(yīng)用[J]. 工程圖學(xué)學(xué)報,2005,26(6): 6-10.