CAD圖紙明細表及數據庫管理的研究與實踐
2013-05-20 by:廣州有限元分析、培訓中心-1CAE.COM 來源:仿真在線
本文詳細介紹了如何開發應用AutoCAD來自動提取CAD圖紙明細表及管理數據庫,其切切實實的為設計工作節約了大量的時間。
尹勝安 來源:e-works
關鍵字:工程圖 明細表 自動提取 AutoCAD 數據庫管理
制造企業工程技術人員在利用CAD進行產品設計時產生大量的DWG文件,每一個DWG文件中包含一張或數張圖紙,設計的基礎資料如:工程項目、圖號、設備(物料)名稱、型號規格、材質、數量、重量、備注等等文本信息都記錄在圖紙標題欄明細表中。設計工作完成后,工藝編制、成本預算、物料消耗、物流采購、計劃調度、車間生產等項管理業務都將依據圖紙進行操作。在通常的管理中,各業務部門往往通過人工的方式從CAD圖紙或紙質圖紙明細表中獲取技術文件數據,再利用WORD或EXCEL進行手工二次錄入,編制各自需要的明細表、經過匯總,生成相應的報表,并在此基礎上產生工藝技術文件通俗簡稱為(工單),按不同的用途也有的稱之為物料消耗單、物料清單BOM等。這種單頁面的文本制作方式雖然使用了電腦操作,但并未能擺脫繁重的手工錄入和編輯工作,不能進行數據的自動處理,存在圖紙與制表數據不一致、差錯率高、工作量大、編制周期長、效率低下、查詢繁瑣、數據不能共享等多種弊端。因此,采用自動提取CAD明細表與進行數據庫管理的方法是克服以上弊端提高企業設計、技術、管理效率和工作質量的有效途徑。
AutoCAD是AutoDesk公司開發的通用CAD工作平臺,在機械、造船、電子、汽車、測繪、建筑等許多行業中得到廣泛的應用,其完善的圖形繪制和編輯功能,多種接口文件,較強的數據交換能力,特別是開放的二次開發功能給用戶提供了有力的技術支撐。
Microsoft VBA (Visual Basic for Application) 是一個面向對象的可視化編程環境,它是由Visual Basic派生而來,AutoCAD內嵌的VBA提供了與Visual Basic相似的豐富的開發能力。AutoCAD從R14版開始增加了作為ActiveX Automation服務器應用程序的功能,這是一個功能強大的接口,它提供了一系列開放的對象,通過這些對象,VBA應用程序便可以對AutoCAD進行編程控制。AutoCAD2000及以后版本其功能進一步擴充,強化了AutoCAD與數據庫的通訊能力,能夠使AutoCAD與其它應用程序(例如Microsoft Excel、Word、Access)直接共享數據。它是對AutoCAD進行二次開發的一種強有力的手段。
筆者以AutoCAD2004為背景,應用VBA開發工具和Access數據庫技術成功地實現了自動提取CAD圖紙明細表與進行數據庫管理的研究目標并取得較好的實用效果。
一、自動提取AUTOCAD圖紙明細表
工程技術圖紙的右下角區域一般都布置著標題明細欄,記載著圖形總體和明細的特征信息和基本技術要數,它是所有派生技術文件的信息源頭和依據,CAD圖紙繼承了這個慣例。我國國家技術標準GB/T10609.1~2-1989對圖紙標題明細欄的形式、內容、尺寸都作了具體規定。雖然各企業圖紙標題明細欄樣式不盡相同,但大同小異,基本結構一致。標題欄記載著圖形的外部信息,明細欄記載著圖形內在的詳細要素和彼此的關聯。
(圖一)
明細欄由若干明細行組成,明細行則由各欄目組合。
自動提取AUTOCAD圖紙明細表的信息其實質就是針對明細行對各欄目進行提取數據的操作。
提取明細行數據的方法概括起來,通常有坐標定位法和塊行取值法兩種:
1.坐標定位法:即先點選起始明細行左下角坐標與末尾明細行右上角坐標所在的位置,確定提取數據的區域范圍,對該區域范圍內的所有實體對象進行逐一掃描,讀出文字對象(TEXT、MTEXT)的(X、Y)坐標屬性和字符串屬性。通過文字對應坐標值的分析確定該文字在明細表中的位置,實現自動提取數據的操作。這種方法對單圖的DWG文件效果較好,但對多圖的DWG文件和不規則的標題明細欄操作起來就很復雜且取數的精度也較難控制,實用效果不夠理想,這種方法對以往標題欄未作規范要求的老圖紙其作用顯而易見。
2.塊行取值法:即利用AutoCAD塊行屬性特征來提取明細欄的信息。
在AutoCAD內部對象模型(AutoCAD Object Model)以層次結構組織起來,頂層可編程的Application對象啟動AutoCAD應用程序的一個實例,通過Application對象定位到其它對象;第2層是Document和Preference對象,Document對象代表當前在AutoCAD應用程序窗口中打開并操作的一個AutoCAD圖形文件,Preference對象對應于Preference對話框包含AutoCAD當前的配置信息;第3層是Document的集合對象,如ModelSpace,PaperSpace,Blocks對象等等,通過集合對象我們就可以訪問當前圖形中的所有實體。
塊行取值法主要使用集合中Attribute和Block兩個對象。具體設計明細行時,沒有格式限制,唯一要求就是必須使一個Attribute對象對應明細行中的一個欄目項,將對應明細行中所有欄目的Attribute對象組合在一起放入Block對象中,該Block對象就是用戶定義的塊行(明細行)。將定義好的塊行依次插入(復制)到圖紙標題欄上方,組成圖紙明細欄。其操作如下:
·繪圖→塊→定義屬性(圖二、圖三)
·修改→對象→屬性→塊屬性管理器(圖四、圖五)
(圖二)
(圖三)
(圖四)
(圖五)
(圖六)
Attribute對象是具有交互功能的一種標簽,含有3個配置項:Tag,Value和Prompt。
Tag項是該Attribute對象的標志符,即Attribute對象的名字。例如Tag設置為"件號",表示該Attribute對應明細欄中的"件號"欄目。
Value項表示Attribute中包含的真實數值,如某個具體的件號值為"001"。在定義Attribute對象時,由于初始明細欄目中的具體內容不確定,則該屬性一般暫不輸入數據。待塊行建立后其輸入的數據就存儲在Attribute對象中,這樣通過程序訪問Attribute對象的Value 屬性就可以獲取其中的數據。
Prompt項表示Attribute的提示信息,引導用戶完成數據輸入操作。
Block對象是一個容器對象,該Block包含多個Attribute對象。在AutoCAD圖形中插入明細行后,只要點擊該行系統就會提示用戶輸入相應的值,并顯示在圖形標題明細欄中。
在開發中要注意區分Block和BlockRef(塊引用對象)、Attribute和AttributeRef(屬性引用對象)對象。在AutoCAD圖形中定義Block時,該 Block對應Block對象。將定義好的Block插入到另一個圖形中,就是基于Block的定義生成一個實例,該實例就是BlockRef對象;同樣,在AutoCAD圖形中定義Attribute時,該Attribute對應Attribute對象。將包含在Block中Attribute插入到另一個圖形中,就是基于Attribut e的定義生成實例,實例對應的就是AttributeRef對象。因此在從AutoCAD圖形的明細欄中自動提取管理信息時,涉及到的兩種對象是BlockRef和AttributeRef對象.
將按上述方法定義好的規范明細欄插入到AutoCAD圖形中后,通過ActiveX Automation 技術就能將明細欄中的信息提取出來。在Document的集合對象中Modelspace對象是一個特殊最大的BLOCK,包含圖紙中所有實體(圖形對象),由于BLOCK、Attribute允許嵌套,因此為搜索當前實體中的屬性信息提供了方便。基本算法上使用了遞歸調用掃描當前圖紙中的所有實體,通過實體的EntityType屬性判斷該實體是否是BlockRef對象,如果是,則判斷該BlockRef 對象中是否包含AttributeRef 對象。如果包含則獲取AttributeRef 對象的列表。然后掃描此列表,通過TagString和TextString屬性獲取每個AttributeRef對象中的數據,并同步寫入ACCESS數據庫;當掃描結束時,明細欄中所有AttributeRef對象中包含的信息都被提取出來,自動在ACCESS數據庫中即可形成初步的明細數據表。
在AUTOCAD中自動提取明細表數據解決方案思路如(圖七)所示:
(圖七)
二、VBA編程自動提取CAD圖紙明細表及進行數據庫管理的要點
本研究采用AutoCAD2004設計圖紙明細表,Access2003數據庫進行管理。系統設計可分為AutoCAD2004二次開發和數據庫管理兩個組成部分,使用VBA編程工具開發系統。
(一)AutoCAD2004二次開發
1.建立自定義菜單:啟動CAD→工具→自定義→編輯自定義文件→當前菜單→進入ACAD記事本→編輯→查找POP11→修改→保存
自定義菜單修改內容:
***POP11
**vba應用
ID_vba應用 [&vba應用]
ID_提取圖紙明細表 [->&提取圖紙明細表]
ID_保存為Excel表 [&保存為Excel表]^C^C_-vbarun m_excel.dtexcel
ID_保存為Access表 [&保存為Access數據庫]^C^C_-vbarun m_access.dtaccess
***POP12
注釋:
***POP11----第11項
**vba應用----別名
ID_vba應用 [&vba應用]----顯示"vba應用"菜單項
ID_提取圖紙明細表[->&提取圖紙明細表]----->表示有下級子菜單顯示"提取圖紙明細表"
ID_保存為Excel表[&保存到Excel表]^C^C_-vbarun m_excel.dtexcel
----顯示"保存到Excel表",并運行ACAD工程中的模塊m_excel中的宏(過程)dtexcel
(打開圖紙時操作菜單自動提取明細表到指定的Excel表)。
ID_保存為Access表[&保存為Access數據庫]^C^C_-vbarun m_access.dtaccess
----顯示"保存到Access表",并運行ACAD工程中的模塊m_access中的宏(過程)dtaccess
(打開圖紙時操作菜單自動提取明細表到指定的Access表)。
將編輯后的acad.dvb文件COPY到C:\Program files\autocad 2004\support\目錄中。
2.編制VBA提取圖紙明細表數據程序:
(1)提取數據到Excel表的程序要點
(2)提取數據到Access表的程序要點
(二)建立ACCESS數據庫管理信息系統
1.建立數據庫MDB應用文件:為了統一、集中、有效地管理數據,便于系統調試、更新和升級,將程序和數據分別存放在兩個MDB文件中,本例自動提取的CAD明細表數據存放在D:\產品數據庫。
2.設計信息管理系統:本系統在ACCESS 2003環境下應用VBA編程技術開發。設計信息管理系統時要著重考慮以下問題:
⑴明細表序號(件號)編碼的設計
明細表序號一方面反映圖紙的順序和相互關系,另一方面也是數據庫管理中進行排序、分類、匯總的依據,因此序號的編碼設計和處理尤為重要。在一般通常情況下圖紙明細表中的序號(件號)常采用1-999……數字逐一遞增的順序編碼。這種自然編碼的優點是符合人的思維習慣、容易記憶、維護方便,但存在不能自動排序的缺點。
例如:1、1.1、2、2.1、10、10.1、99、100按升序排列,其結果是:1、1.1、10、10.1、100、2、2.1、99這是因為在計算機內上述數字是按ASCII值排序的。
這種不定長的編碼方式給計算機查詢、排序、分類、匯總等操作和制作報表帶來很大麻煩,往往需要用手工的辦法人為的加以調整,十分不便,工作效率也很低。因此系統采用了新的編碼方法,即三位定長編碼。
圖紙明細表序號(件號)采用三位編碼逐級遞增的方式。例如:
裝配圖 001…002…010…099…100…999 一級序號
組部件圖 001001…002001…101001…101099 二級序號
零件圖 001001001…002001001…101099001 三級序號
上述編碼在實際操作中并無需記憶,只需在原來序號上加零即可。
實踐證明這種定長逐級遞增的編碼方式對提取明細表的數據進行排序、分類、匯總操作和制作報表時帶來極大的方便,不但大幅度提高系統自動化的能力,而且為應用數據庫技術打下良好堅實的基礎。通過程序可將圖紙明細表中的三位編碼自動轉換還原成報表上習慣常用的編碼。例如:
裝配圖 001…002…010…099…100…999
轉換為 1…2…10…99…100…999
組部件圖 001001…002001…101001…101099
轉換為 1-1…2-1…101-1…101-99
零件圖 001001001…002001001…101099001
轉換為 1-1-1…2-1-1…101-99-1
⑵自動修改數據庫表結構
從AUTOCAD圖紙明細表提取的數據保存在數據庫表中只是解決了數據庫數據源的問題,系統要完成數據邏輯的自動處理和滿足功能模塊運行、實現系統目標的需要還必須增加一些輔助字段,用以提高數據庫管理信息系統的自動化程度。因此系統設計時要解決自動修改數據庫表結構增加字段的技術性問題。例如:
本系統需要在數據庫表中自動增加"消耗用量"、 "物料分類"等字段。
如以下程序所示:
⑶理順和規范CAD圖紙明細表數據格式
傳統CAD圖紙明細表內的數據在大多數情況下反映了設計者個人的理解和自定義,應用數據庫管理時就存在一個規范數據格式的問題,否則計算機無法正常處理提取的數據。因此開發人員要設計一個規范的CAD圖紙標題欄明細表,對表頭各欄目給予明確的定義并對輸入的格式提出具體的規定和要求,設計人員應統一引用圖紙規范標題明細欄。
圖紙規范標題明細欄=標題欄+明細欄
其中:標題欄的格式內容與傳統的格式內容一樣,填寫方法仍然采用單行文本方式;明細欄增加了型號規格一欄,將傳統名稱欄中的型號規格內容填寫到此欄中。明細欄的填寫方法如前所述采用增強屬性編輯器(圖六)輸入。
cad制圖時必須規范、正確地填寫明細欄各欄的內容。例如:
A.件號欄:采用三位編碼逐級遞增的方式即:
裝配圖 001…010…099..100…999 一級件號
組部件圖 001001…002001…101001…101099 二級件號
零件圖 001001001…002001001…101099001 三級件號
系統具有編碼識別轉換功能,在明細欄制作和匯總時系統會自動將上述代碼轉換成習慣編碼。例如:
1 板材 3 標準緊固件
1-1 鋼板 δ=2 3-1 螺栓 M10×90
1-2 鋼板 δ=3 3-2 螺栓 M10×100
2 型材
2-1 扁鋼 50×16
※件號欄必須按圖紙的層次邏輯關系編制代碼,不允許空攔。
B.圖號或標準號欄:
應準確使用圖號,注意裝配圖、部件圖、零件圖之間的層次邏輯關系;按技術條件準確合理的選用技術標準。
※此欄可以是空欄。
C.名稱欄:
僅填寫物料的名稱,此欄中不再填寫物料的型號規格。原則上必須保證一種物料對應一個名稱,屬于原材料或標準件、基礎件的物料其名稱按對應技術標準中的名稱填寫。
例:鋼板、無縫鋼管、扁鋼、槽鋼、等邊角鋼、不等邊角鋼、工字鋼、平墊圈、彈簧墊圈、螺栓、螺母等
以便于物料分類和查詢,改變過去同一物料名稱五花八門的混亂現象。
系統具備自動識別功能,輸入名稱更新后系統會自動定義物料分類字段:
例如:
名稱:鋼板 物料分類:板材
名稱:扁鋼 物料分類:型材
名稱:螺栓 物料分類:標準緊固件
名稱:法蘭 物料分類:管道件
名稱欄不允許空攔。
D.型號規格欄:應正確表達物料型號規格的含義,規范書寫型號規格的格式。
例如鋼材形象符在實際使用中受中西文及取字方式的影響比較混亂,所有在圖紙明細表中不再使用,但必須在名稱欄內按設計手冊的材料名稱填寫清楚。例如:
名稱:鋼板 型號規格:δ=10(希臘小寫字母δ及等號與數字連用,表示板材厚度)
名稱:槽鋼 型號規格:25b
名稱:螺栓 型號規格:M16×60
名稱:扁鋼 型號規格:50×16 (寬、數學乘號、厚)。
名稱:槽鋼 型號規格:25b (槽鋼型號)表示,不要用形象字符如:【[ 等。
名稱:不等邊角鋼 型號規格:50×32×4 (長邊×短邊×邊厚)表示,不要用形象字符例:L、∠ 等。
名稱:無縫鋼管 型號規格:φ38×5 (希臘小寫字母φ、外徑、數學乘號、壁厚)。
名稱:工字鋼 型號規格:25b (工字鋼型號)表示,不要用形象字符例:Ι 等。
名稱:圓鋼 型號規格:φ40 (希臘小寫字母φ、外徑)表示。
名稱:螺栓 型號規格:M20×100 (大寫M、外徑、數學乘號、長度)
名稱:活接螺栓 型號規格:M20×100 (大寫M、外徑、數學乘號、長度)
名稱:細牙螺栓 型號規格:M10×1(大寫M、外徑、數學乘號、螺距)長度L=××在備注欄填寫。
※原則上按技術標準書寫,型號規格欄允許空攔。
E.數量欄:
整數用阿拉伯數字表示,小數用阿拉伯數字加英文狀態下"."表示。例:
名稱:鋼板 型號規格:δ=8 數量:101.8 KG
名稱:扁鋼 型號規格: 50×16 數量:10 件
名稱:圓鋼 型號規格:φ40 數量:100 KG
※數量欄數據必須唯一,不允許出現兩個以上數據,不允許有非計算字符存在(如:/ * ( )等),數量欄不允許空攔。
例:以下數量的表述格式是錯誤的
名稱:鋼板 型號規格:δ=8 數量:101.8/ 109.8 KG
名稱:扁鋼 型號規格: 50×16 數量:各10 件
名稱:圓鋼 型號規格:φ40 數量:(100) KG
F.材料欄:
保留過去圖紙材料欄的書寫方式。
本欄反映了物料結構性質、材質、性能級別、熱處理、特殊工藝等。例:
結構性質:部裝、部件、組件
材質:Q235-A、Q235-B、65Mn
性能級別:4.8級、8.8級、200HV等
※系統已作了部份規范,有待進一步完善和擴充,操作者也可在技術標準中自行選用,材料欄允許空攔。
G.單重欄:
整數用阿拉伯數字表示,小數用阿拉伯數字加英文狀態下"."表示。例:
名稱:鋼板 型號規格:δ=8 單重:101.8 KG
名稱:扁鋼 型號規格: 50×16 單重:10 KG
名稱:圓鋼 型號規格:φ40 單重:100 KG
※單重欄數據必須唯一,不允許出現兩個以上數據,不允許有非計算字符存在,單重欄允許空攔。
例:以下單重的表述格式是錯誤的
名稱:鋼板 型號規格:δ=8 單重:101.8/ 109.8 KG
名稱:扁鋼 型號規格: 50×16 單重:各10 KG
名稱:圓鋼 型號規格:φ40 單重:(100) KG
H. 總重欄:
整數用阿拉伯數字表示,小數用阿拉伯數字加英文狀態下"."表示。例:
名稱:鋼板 型號規格:δ=8 總重:101.8 KG
名稱:扁鋼 型號規格: 50×16 總重:100 KG
名稱:圓鋼 型號規格:φ40 總重:2000 KG
※總重欄數據必須唯一,不允許出現兩個以上數據,不允許有非計算字符存在,總重欄允許空攔。
例:以下總重的表述格式是錯誤的。
名稱:鋼板 型號規格:δ=8 總重:101.8/ 109.8 KG
名稱:扁鋼 型號規格: 50×16 總重:各10 KG
名稱:圓鋼 型號規格:φ40 總重:(100) KG
名稱:組件 型號規格: 總重: /
I.備注欄:
在此欄中表達需要簡單說明的事項或在其他欄無法表達的內容。例:
名稱:鋼板 型號規格:δ=16 總重:955 KG 備注:上板按2000板寬
名稱:扁鋼 型號規格: 50×16 總重:100 KG 備注:L=568 8PCS
名稱:圓鋼 型號規格:φ40 總重:52 KG 備注:拉桿L=2921 8PCS
名稱:鋼管 型號規格:φ32×3 總重:2 KG 備注:接管L=180 2PCS
名稱:鋼管 型號規格:φ299×10 總重:20.7 KG 備注:內筒體L=200
備注:外協(配套標準件)
※備注欄允許空攔。
開發人員在程序設計中要注意用空格處理空攔的NULL值,否則會引起取數程序中斷,造成取數不完全的結果。
⑷采用人性化的設計思路和方法技巧
數據庫管理功能模塊應簡明實用,采用人性化的設計思路盡可能的把需要記憶和重復操作的事情交給計算機去做。系統的輸入、查詢、編輯應有聯想功能,既考慮計算機程序的結構化又設法尊重人的工作習慣,兩者巧妙地結合,在程序設計的技巧上采取一些有效措施,完全可以做到小軟件解決大問題。
例如在系統中內嵌輸入聯動、指定位置插入、習慣編碼轉換、金屬材料重量隨機計算器、結構樹、數據庫自動壓縮等程序。
⑸優化和規范CAD圖紙明細表取數及工藝文件(簡稱工單)的業務流程
CAD圖紙明細表取數及工藝文件制作涉及各項業務和多個部門,因此設計開發時必須從系統的角度全面的考慮問題,以最短的路徑、最完善的功能、最可行的布局來安排業務流程。
參考例證如下:
三、結束語
筆者已經成功的完成了自動提取CAD明細表與數據庫管理信息系統的研究與實踐。從CAD提取明細表后其數據一方面進入EXCEL,使用EXCEL手工制作工藝文件;另一方面可自動進入數據庫系統按照程序制作工藝文件。經測試:在CPU2.8G內存1G的電腦上提取一套有350項明細表的圖紙數據進入數據庫只需5-8秒,整理數據8秒,從提取CAD數據到形成工藝明細編輯表及匯總表同步自動生成,前后總共不到半分鐘(不含工藝制作時間)。預計加上設備組件分解工藝展開下料設計和補充制作輸入物料消耗明細數據所需要的時間,上述CAD文件的工藝文件(工單)在1-3天內可以完成(傳統手工取數,人工編制一般需要5-7天)。
從企業發展的高度來看,這項工作有十分積極的現實和長遠意義。其意義就在于通過企業自身的努力,充分利用現有Microsoft office軟件的資源,以最優的性價比和最小的開發成本解決了制約CAD與工藝文件之間數據通信的瓶頸問題,減輕了人工制表的勞動強度,提高了工藝文件制作的效率和質量,縮短設備制造周期,強化和規范了企業技術和生產管理行為,同時也為逐步建立企業產品數據庫奠定了良好的基礎。
一旦建立起企業產品制造信息數據庫,那么項目控制、技術設計、制造工藝、生產計劃、采購供應、發貨外運、售后服務、成本核算等管理工作都將建立在這個統一的信息平臺上,就可以做到信息共享、數據一致、查詢快捷、便于決策。實現這個目標后,不但企業的信息化建設水平將有大幅度的提高,而且為企業提升核心競爭力提供了強有力的信息支撐。
筆者認為:在企業信息化建設中,依靠軟件商開發和購買大型管理軟件是必要的,但不是唯一的。信息系統的開發和應用切忌一味搞"大而全"、"高版本",而應針對應用的具體對象靈活的采取不同的開發方式。需要強調的是:充分地調動和挖掘本企業信息技術人員的積極性和創造性,有效地組織他們去攻克解決企業信息化道路上的難題和開發實用型專業化軟件工具顯得尤其重要,這才是企業信息化建設的真正動力和技術支撐。遺憾的是這個問題也正是當前許多企業在信息技術開發工作中的不足之處。
一切管理軟件都是工具,工具不是萬能的,關鍵還是人的創新精神和責任心。因此能否真正發揮軟件的作用解決企業的實際問題,還有待于依靠企業領導、管理人員、信息技術人員的同心協力,鼎力相助。這種信息系統開發的模式也是企業特別是中小型企業信息化建設的一條可借鑒的有效途徑。
任重道遠,立志于信息化工作的同仁們不斷努力啊!
相關標簽搜索:CAD圖紙明細表及數據庫管理的研究與實踐 AutoCAD培訓 AutoCAD培訓課程 AutoCAD圖紙設計 AutoCAD在線視頻 AutoCAD技術學習教程 AutoCAD軟件教程 AutoCAD資料下載 Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓 Abaqus培訓 Autoform培訓