吳翠平,丁清珍,路 陽,張俱嘉,郭永昌
(中國礦業大學 (北京)化學與環境工程學院,北京 100083)
隨著設計技術的發展和工程建設機械化程度與人力成本的提高,選煤廠工程建設、運行維護、技術改造等對選煤設計圖的完整性 (完備性)、可維護性等方面提出了更高要求。CAD平面設計已很難滿足選煤廠工程設計技術難度高、設計周期短的需求,需要一種更好的設計思路和設計軟件來滿足客戶需求,三維設計能有效地解決這個問題,選煤工程設計即將迎來設計模式的變革。
目前三維繪圖軟件不斷開發和完善為煤炭工程設計提供了良好的軟件繪圖環境[1]。在國內煤炭行業中,采礦工程設計較早地采用了三維繪圖技術[2-3],目前部分選煤設計單位已采用三維設計軟件進行工程設計,如泰戈特公司采用三維技術進行車間布置和管道設計[4-5]。設計圖是工程師的表達語言,三維設計能直接將設計者腦海中的模型形象、逼真地反映在計算機屏幕上,能有效解決選煤廠CAD二維設計過程中難以避免的碰撞干涉問題,提高設計效率,更能為選煤廠的施工建設和日后維護與改造提供便利[6]。
文章以選煤廠工業場地設計輔助繪圖為目的,針對三維繪圖軟件SolidWorks進行二次開發,以探索三維繪圖應用于選煤廠輔助設計的可行性。
SolidWorks具有非常開放的體系結構,通過提供數百個應用程序接口 (Application Program Interface,簡稱API)函數作為二次開發接口[7],用戶借助高級編程語言作為開發平臺,在設計友好操作界面的同時,通過在程序中調用API函數來訪問和操作SolidWorks,從而實現三維模型的建立。
SolidWorks對象模型體系采用自上而下的多層次樹狀網絡結構,根為Solidworks對象,Solidworks中的其他對象都是其子對象。為了得到一個特定的對象,必須先從根對象Solidworks起,沿樹狀結構對其子對象進行遍歷。
目前對SolidWorks軟件有兩種開發方式,一種是基于OLE(對象的鏈接與嵌入)自動化技術,另一種是基于COM(組件對象模型)規范。OLE自動化技術可以實現在一個應用程序內部控制另一個應用程序提供的對象,特別是能夠訪問這些對象的屬性和方法。COM規范是OLE技術更高層次的發展,提供了客戶和組件之間的二進制通訊規范。通過COM規范,可以把應用程序組件像搭積木一樣隨意“裝配”起來,從而構建適合用戶的特定的應用程序組件。面向對象的編程語言VB可支持OLE和COM技術,故采用VB作為SolidWorks的二次開發工具[8]。
通過編程調用API函數對SolidWorks進行二次開發有兩種方式[9]:一是完全編程方式,即通過調用API函數在編程環境中實現SolidWorks建模操作。該方法能保證三維模型完全實現參數驅動,對復雜零件的建模精度較高,但編程工作量大,工作效率低,且對開發人員要求較高;二是設計變量與編程技術相結合方式,由SolidWorks中建立的模型確定設計變量,在程序中調用API函數修改模型的設計變量,通過重建得到最終模型。相對于完全編程方式,設計變量與編程技術相結合方式將初始建模中的大量編程工作轉移到SolidWorks內進行,大大減輕了工作量,提高了開發效率。
為此,二次開發采用設計變量與VB編程相結合的方式。首先,在SolidWorks環境中,按照正確的設計關系繪制某一尺寸的建/構筑物模型,并將其保存;根據用戶需要分析并確定模型的設計變量,通過VB編程調用API對象,獲取并修改標準模型中相關約束變量的參數值[10],使其幾何元素和特征的幾何或拓撲關系發生改變,并引起相關圖形元素和關系的聯動,從而完成參數化的零件建模;最后將程序置于SolidWorks的菜單或工具條中。如果變量化參數數值范圍明確,則可以基于Access等建立變量參數數據庫,并在Visual Basic中通過Data或Adodc數據控件實現對數據的調用。
分析總結選煤廠工業場地建/構筑物的類型和幾何特征,在Access下建立選煤工業場地建/構筑物數據庫;以VB作為開發平臺設計用戶界面,在界面中設置數據控件,并與尺寸參數數據庫中相應數據建立連接。輔助繪圖程序運行時,根據用戶選擇的標準件規格,自動打開數據庫中對應的標準件尺寸參數表,并查詢其參數尺寸,再將所得數據返回給設計變量,然后根據變量值更改標準件模型庫中模板模型的相應尺寸,進而重新生成所需的建/構筑物模型。三維輔助設計系統實現流程如圖1所示。

圖1 三維輔助設計系統實現流程Fig.1 Realization process of 3D aided design system
根據選煤廠工業場地內某一類建/構筑物的結構特征,建立三維實體模型。實際上是建立這一類建/構筑物的參數化設計模板,將其放入標準件庫中,以便通過程序更改其尺寸參數,進而生成新尺寸的目標建/構筑物模型。
在進行三維實體建模前,首先要分析其結構特征,以確定尺寸變量和它們之間的約束關系,再命名尺寸變量名稱,建立驅動變量表、變量之間的關聯關系,以便賦予尺寸變量不同參數值來驅動SolidWorks,進而重新生成該標準件的三維實體模型,實現標準件的尺寸更新。建模時要特別注意草圖的定位、幾何約束關系等,以避免在使用VB進行參數化設計時出現問題 (如實體變形、草圖過定義等),導致參數化設計失敗。
以主廠房為例,在SolidWorks中進行建模,在前視基準面上建立草圖,并確定其尺寸變量 (圖2),標注其長、寬尺寸,并確定為尺寸變量,通過“拉伸”、“拉伸切除”、“陣列”命令生成主廠房建筑模型 (圖3)。

圖2 主廠房俯視草圖Fig.2 The sketch of top view of the main plant

圖3 主廠房建筑模型Fig.3 Building model of the main plant
用戶界面包括選擇菜單界面 (圖4)和窗體操作界面 (圖5)兩部分。用戶在SolidWorks菜單中單擊選擇所需類型的建/構筑物模型,程序會自動彈出該模型的操作界面。此時,用戶可在窗體操作界面的文本框中輸入主廠房的相應數據,也可從數據庫中導入數據,該數據通過編程與模型尺寸變量建立連接,點擊“繪制”按鈕即可實現按輸入數據重建模型。

圖4 選擇菜單界面Fig.4 Selection menu interface

圖5 窗體操作界面Fig.5 User operation interface
用戶界面設計部分代碼為:

要將上述界面中輸入的參數轉變為SolidWorks的實體尺寸,還需要調用SolidWorks的API函數。在VB中通過調用API函數對象來訪問SolidWorks環境中所建工業場地建/構筑物模型的各種參數,包括各種尺寸、各實體表面、實體邊界、實體特征等,甚至可以創建、復制、修改模型的實體特征。在Solidworks環境中能夠執行的操作,在二次開發中均可通過Solidworks提供的API函數功能來實現。
要通過參數驅動修改模型尺寸變量,先要通過編程打開標準件庫中的模型文件,其實現代碼如下:

其中OpenDoc6函數用于打開模型文件,ActivateDoc2函數用于激活當前實體模型。假設用戶界面中某個輸入框用一個變量名代替,例如a=combo1.Text,此時需要調用API函數來訪問模型中的尺寸變量,代碼如下:

其中SelectByID2函數用于選擇建/構筑物模型實體,例如選擇面、邊、特征、草圖等,System-Value為賦值函數,再調用EditRebuild函數即可實現模型的重建。
選煤廠工業場地的總平面三維工程圖能直觀地展示場地整體布局,進而提高施工建設效率。在SolidWorks中生成的工程圖與建/構筑物模型存在關聯,設計人員只需對建/構筑物模型進行修改,工程圖就會自動做出相應改變,從而節省了大量設計時間。通過二次開發技術繪制的選煤廠工業場地總平面圖如圖6所示。

圖6 選煤廠工業場地總平面圖Fig.6 General layout of industry site of coal preparation plant
利用面向對象的開發工具VB對SolidWorks進行二次開發,建立選煤廠工業場地建/構筑物模型庫,即可通過可視化用戶界面直接訪問并操作SolidWorks,實現了選煤廠工業場地建/構筑模型的變量化尺寸驅動建模。
通過變量化尺寸驅動建模,在設計選煤廠工業場地時可以根據需要直接調用并修改模型庫中的模型尺寸,實現以“搭積木”的方式完成選煤廠工業場地總平面三維布置,可免去了繁瑣的繪圖工作,從而有效提高設計效率。
[1]衛玉花,樊民強.計算機在選煤廠設計與技術管理中的應用 [J].選煤技術,2005(1):41-43.
[2]賈衛華.AutoCAD二次開發技術在煤礦中的應用[J].煤炭技術,2013,31(10):199-200.
[3]龐冬冬,馬海峰,龐大偉.煤礦三維立體礦圖的繪制方法及對比分析 [J].煤炭技術,2014,33(7):272-274.
[4]王建剛.選煤工程三維參數化設計技術及二次開發[J].煤炭加工與綜合利用,2013(S1):59-61.
[5]曾躍林,劉 珊.三維設計技術在選煤廠設計中的綜合應用 [J].煤炭加工與綜合利用,2013(S1):62-67.
[6]劉先春,周慶華.三維模型在選礦廠設計中的應用[J].有色金屬設計,2009,36(1):38-40.
[7]葉煒威,余才佳.Solidworks 2006實體建模與二次開發教程[M].北京:國防工業出版社,2006.
[8]田文濤,賀小華.基于VB技術的SolidWorks二次開發與應用 [J].計算機工程與科學,2009,31(7):65-67,76.
[9]徐格寧,朱映東.基于SolidWorks二次開發的變量化三維建模方法 [J].中國工程機械學報,2009,7(1):41-45.
[10]劉志海,魯 青,李桂莉,等.VB開發Solidworks實現機械產品參數化設計 [J].煤礦機械,2008,29(7):180-183.