李中凱,殷文衛
(中國礦業大學機電工程學院,江蘇 徐州 221116)
近年來,設計結構矩陣DSM(Design Structure Matrix)已被設計人員用作復雜系統建模和分析的工具,并已成功應用于許多研究和實踐領域[1]。DSM具有簡單、緊湊和形象化等優勢,并且通過適當的分析手段,能夠支持開發方案的集成和分解問題[2],已廣泛應用于產品開發、項目規劃管理和成本預算、時間優化管理等[3]。在提升產品的研發能力,降低整個項目的過程研發周期和成本,增加產品的競爭力方面發揮了重要的作用。
產品結構的DSM包含大量知識,且產品分解和結構關系可以從不同方面進行解釋,因而難以構建DSM。不同設計人員會選擇不同方式或角度來構建模型的DSM,因此缺乏一種程式化的生成方案。而且在很多模塊化設計方法中,DSM都是設計人員手工建立的。手工建立過程復雜繁瑣,構造過程也會出現人為因素的錯誤。同時,DSM內部元素的取值也有不同方法,造成DSM的構建結果的主觀性較強。因此,Tilstra等人[4]提出了一種標準化的方法用于構建產品DSM,以提高建模人員之間的一致性。在模型構建中保持一致性和減少工作量的需求推動了從現有數據庫中自動提取DSM的方法的發展。Wilschut等人[5]介紹了一種構建多域矩陣的方法,該矩陣是根據文本的功能規范生成的。根據Wilschut的說法,功能規范的固定語法允許自動推導組件之間、組件功能之間以及系統參數之間的依賴關系,根據這些依賴關系從而構建出多域矩陣,構建多域矩陣方法還可以支持現有工程產品的DSM的建模。上述DSM生成技術復雜,難以重現,且自動化程度不高,應用領域較窄。隨著技術的進步,設計人員還可以從計算機輔助設計CAD(Computer Aided Design)模型或其他標準化框架中自動提取DSM[6]。例如,Li等人[7]提出了一種從CAD模型提取DSM信息的技術,以解決CAD模型的分層模塊化問題。但是,該技術缺乏裝配過程中冗余信息的處理,影響了DSM生成的準確性。針對上述問題,本文研究了從CAD模型中提取DSM的方法,并利用SolidWorks API(Application Programming Interface)成功設計了從CAD模型文件中自動提取DSM的系統。
SolidWorks二次開發能夠提高產品設計效率,縮短開發周期,將設計人員從繁多的計算中解放出來,使其更多地從事創新活動。二次開發的關鍵在于對SolidWorks API的應用。API是一種軟件開發工具,通過在另一個應用程序中提供一種編程語言的代碼來實現不同應用程序之間的集成。Reddy等人[8]將傳統的軸承設計在SolidWorks中進行二次開發,實現了軸承的快速參數化建模,并且基于Visual Basic開發出良好的用戶界面。Wang等人[9]介紹了一種使用專業自動化設計軟件進行核心鉆機夾頭自動設計的新方法。利用這個方法開發的SolidWorks二次開發軟件只需輸入工作要求的幾個參數,就可以快速完成卡盤零件和裝配的設計。汪林等人[10]利用SolidWorks提供的API接口,采用異步模式對機械產品進行二次開發,并在VC++開發環境下實現整個裝配體的參數化建模。
SolidWorks使用特征建模方法生成產品的形狀和歷史,因此API可以提取模型的特征。 Hasan等人[11]提出了一種利用SW-API識別產品特征的新方法,該方法可以自動識別SW-CAD文件中裝配設計中的裝配知識、幾何知識和非幾何知識。Wang等人[12]使用SolidWorks API設計了一種命名和識別拓撲實體全名的算法,該算法為每個組件賦予特定的ID,直接提取拓撲實體的信息,而無需遍歷特征量。從裝配體提取這些非幾何知識,中外學者進行了一些研究,如馬飛等人[13]利用SolidWorks提供的API,采用Visual Basic進行二次開發,較好地解決了CADCAPP集成系統中非幾何特征信息自動提取問題。何桂華等人[14]分析SolidWorks中模型搭建過程中裝配約束信息建模與儲存的方法,成功提出了一種裝配約束識別與提取新技術。
本文的主要目的是研究DSM的自動生成技術。通過CAD模型分析確定了組件之間連接所需的信息;利用SolidWorks API提取和遍歷CAD模型的特征信息;提取的信息被分類并存儲在數據庫中。然后,分析組裝的部件之間的幾何關系,以確定各種類型的配合對部件之間的連接關系的影響程度;建立了相應的分析和比較規則。 最后,利用Visual Basic成功設計了DSM自動生成系統,并以一些不同結構的CAD模型為例驗證了所開發系統的有效性。
本文研究的是基于零件的DSM,這種DSM是組成子系統、零件,以及之間關系的系統結構模型,用于描述各組成部分之間的依賴關系。從模型中所提取的DSM,描述的依賴關系是模型中各零件之間連接或物理接觸關系。這種DSM可以讓設計者快速了解剛入手的產品所有零件組成和它們之間的連接關系,并可以用于模塊化設計和產品復雜度分析。
該系統的開發思路是從SolidWorks中提取和分析3D模型裝配過程的關鍵知識,從而設計基于Visual Basic的DSM自動生成系統。 具體的開發過程如圖1所示。

Figure 1 Development process of the system圖1 系統開發流程

Figure 3 Mate function圖3 配合功能
在開發過程的初始階段分析CAD模型,獲取裝配過程的關鍵特征信息。利用遍歷算法和API提取模型在設計特征樹中的裝配信息。然后,根據一定的規則分析各部件之間的配合關系,從而得出部件之間是否存在接觸關系。在系統設計階段,使用Visual Basic實現初始階段的分析與過程。第1步是建立系統的人機界面和交互式軟件的界面,編寫各種功能和分析規則的程序代碼,設計DSM自動生成系統。在測試階段,使用多個CAD模型作為測試對象來啟動DSM自動生成系統以獲得DSM,然后將DSM與手動創建的DSM(根據部件的實際接觸關系)進行比較。根據比較結果,對設計階段的分析規則進行修正。最后通過多次測試和修改提高系統的適用性和準確性。
系統以能夠實現模型的DSM自動生成為主要目標,因此系統應該具備的主要功能是DSM自動構建功能。完整的系統除了要有主要功能還需具備多個子功能,用來支持或者輔助主要功能。圖2所示為DSM自動生成系統框架。

Figure 2 Framework of system function圖2 系統功能框圖
通過系統功能分析可知,這些功能的實現需要不同的開發工具。SolidWorks 三維設計軟件為用戶提供豐富的API函數接口和模型展示窗口,同時用戶可以使用任意支持COM或OLE語言的開發工具進行二次開發[15]。本文采用Visual Basic編程工具對系統進行開發,Access數據庫作為信息的臨時存取庫,系統整理后的數據和DSM保存在Excel文件中,供用戶查看調用。
CAD模型是由各個部件或零件組裝而成的。如圖3所示,在SolidWorks中設計人員通過配合功能將各個部件進行組裝,從而得到一個完整的裝配體,因此CAD裝配模型包含關于相關零件、零件之間的連接關系,以及零件間使用的配合類型等信息。各個部件之間使用的配合類型與部件之間接觸關系會存在某種映射規律,本文研究的就是如何從裝配體中各種配合關系推理出零件之間接觸關系,從而得到模型結構的DSM。
我們對SolidWorks中裝配體的研究發現,SolidWorks中CAD模型的特征信息都會存放在FeatureManager設計樹中,而有關零件之間的配合關系等信息會存放在設計樹下的Mates中,如圖4所示。我們通過SolidWorks的API訪問FeatureManager設計樹,對其進行遍歷獲取特征對象Mates節點,然后再對Mates進行遍歷獲取該特征下所有信息。

Figure 4 FeatureManager design tree圖4 FeatureManager 設計樹

Figure 5 VBA program flow chart and mate informaiton圖5 遍歷程序流程圖及配合信息
SolidWorks API幫助中有詳細的關鍵字使用說明和程序代碼實例,使用關鍵字能夠對SolidWorks進行二次開發實現某種功能。圖5所示是API幫助中遍歷Mates特征內信息的程序流程圖。 通過對該程序進行修改可以得到構建DSM所需的信息,避免冗余信息的干擾。首先,通過API中關鍵字訪問模型設計結構樹文件。該文件的第1個特征是通過關鍵字Firstfeature獲得的,特征名稱由關鍵字GetTypeName 獲取。然后通過利用關鍵字GetNextFeature和循環結構遍歷所有設計結構樹的模型特征。當獲得Mates特征節點之后,程序將利用關鍵字GetNextSubFeature和循環結構遍歷提取該節點的所有特征。程序可以在SolidWorks的VBA中運行,獲得的裝配等信息呈現在立即窗口中。立即窗口展示的信息包括零件名稱和零件之間所使用的配合類型。
一個完整的裝配體中各個組成零件聯系是靠各種配合關系實現的,配合使裝配體零件之間生成幾何關系。在SolidWorks中主要配合類型分為3種:標準配合、高級配合和機械配合。
本文研究的配合關系主要為標準配合,標準配合包括角度、重合、同心、距離、鎖定、平行、垂直和相切配合。如重合配合迫使2個平面變成共平面,面可沿彼此移動,但不能分離開;同軸心配合迫使2個圓柱面變成同心,面可沿共同軸移動,但不能遠離此軸。因此,單個或多個配合使2個零件間產生一定的幾何關系。研究零件所具有的配合就可以推導出零件間有無連接關系。

Figure 6 Hydraulic assembly 圖6 液壓裝配體
圖6是一個簡單的液壓支架模型。從該模型中可以很容易地發現,在組裝過程中通常使用重合配合和同心配合。底座和底座連桿通過重合配合連接,使底座連桿可沿底座上的導槽滑動。基底連桿和頂部連桿之間的鉸鏈連接通過使用重合配合和同心配合來實現。并且液壓缸和基礎連桿以及頂部連桿之間的連接通過重合配合和同心配合實現。除了同心配合和重合配合外,還有一個距離配合,它定義了頂梁上連接器的位置。當然,距離配合屬于高級配合,用于限制運動部件的活動范圍,例如,限制底梁在底座中的滑動范圍,或指定液壓缸活塞桿的泵在缸中抽送距離。根據零件之間的配合類型,可以看出每個配合后面都會有不同數字,如重合1、重合2等,這種配合出現的方式大大提高了零件之間分析的可靠性,如2個零件會出現多個配合,但是每個配合后的數字都不一樣,分析時不會相互干擾。
表1所示是簡易液壓支架中各個零件之間的連接關系和零件之間出現的配合類型。從表1中可以看出,零件之間沒有配合使用則沒有連接關系,有連接關系的都存在2種以上的配合。因此,我們可以設定2種初步的分析規則。
規則A:只要零件之間使用了某種配合,就可以確定存在連接關系。
規則B:零件之間必須使用2種以上的配合才能確定存在連接關系。

Table 1 Connection relationships and mate types表1 連接關系與配合類型表
然而,在實際工程設計中,由于設計人員的設計經驗和裝配習慣,上面提出的2種分析規則很難反映大型復雜模型的實際DSM。因此,考慮到設計經驗和對各種配合類型的分析,不同類型的配合根據權重分為不同的級別,以確定不同類型的配合對連接關系的影響。對配合類型的分析可以知道,同心配合通常應用于運動部件,例如活塞之間的配合,旋轉支架和支撐件的連接,以確保運動部件之間的連接。相切配合的功能類似于同心配合的功能,這表明2個零件的表面總是相切的。這2種類型的配合對連接關系有很大影響。雖然更常用的是重合配合,但這種配合的功能并不能保證2個部件之間具有物理接觸。因為當零件表面與另一零件的延伸表面重合時,2個零件之間基本沒有接觸。因此,設計師通常使用多個重合配合或其他配合來限制零件之間的自由度,以使它們具有實質的接觸關系。距離、平行和垂直配合用于限制零件之間的位置關系,這些配合對零件之間的接觸關系影響較小。基于上述分析和實際工程經驗,通過多個模型的各零件之間使用的配合類型與零件連接關系的分析,確定配合類型對連接關系的影響的權重。權重表如表2所示,其中包括每種影響程度下配合類型的權重。根據表2可以設置規則以根據權重值確定連接關系。

Table 2 Weight list of mate type表2 配合類型權重表
根據權重表設置規則C:將零件之間使用的配合類型的權重進行累加,如果總權重不小于1,則2零件之間彼此連接。 如果總權重小于1,則沒有連接。
DSM自動生成系統的實現前提是模型中信息數據的提取和存放,方便后續數據處理和分析。通過圖5中立即窗口顯示的配合信息可以發現,對Mates中某個特征進行遍歷時,這個特征會被提取2次。因為1個配合被作用在2個不同的零件上,2次循環分別將不同的零件名稱和其它信息提取出來。因此,原始程序的數據格式影響系統的分析效率,需要修改原始程序,使數據格式符合系統的分析原則。

Figure 7 Flow chart of data extraction 圖7 數據提取流程圖

Figure 8 Data format圖8 數據格式
為了方便分析,首先在Access中建立個數據庫。數據庫以零件名稱作為儲存對象,每條數據都保存著該零件出現的配合類型。 在后續分析中每個零件都會進行相互對比。因為當2個零件使用同一種配合類型時,其配合類型后的數字是相同的, 采用這種分析方法提高了分析效率。修改后的數據提取流程圖如圖7所示。當Mates節點不為空時,將訪問Mates的第1個子特征。每個子特征有2組數據,即2組零件名稱及其配合類型。第1次調用Subroutine1時,由于數據庫中沒有數據,數據存儲格式由Subroutine1創建,2組數據按照存儲格式存儲在數據庫中。然后在遍歷Mates的后續特征時調用Subroutine2。Subroutine2將2組數據中的零件名稱與數據庫數據中的零件名稱進行比較。如果數據庫中具有相同的零件,則配合類型將存儲在此零件數據中。如果沒有相同的零件,則創建新數據,并將零件名稱和配合類型存儲在數據中。
數據存儲在數據庫中后,系統的分析程序將對其進行處理和分析。如圖8所示,以液壓組件為例,根據上述數據存儲規則,獲得模型零件配合類型數據。數據按表中序號的順序進行比較。以D1與D2的比較和分析為例,將D1與D2中的所有配合類型一一進行比較。 當2個零件存在相同的配合類型時,系統根據分析規則的不同將2個零件間相同的配合類型按照對應的權重進行累加。2條數據比較完成后,對得到的權重和進行分析,從而實現連接關系的預測。D1與整個列表完成比較之后,將D2與數據庫中的其他數據進行比較。依次類推,從而完成對所有數據的比較和分析。 將3種分析規則嵌入系統的分析程序中,通過程序對數據的比較和分析,得到所有零件間的連接關系預測,系統將這些預測結果轉化為DSM存入表格中, 供設計人員查看和修改。DSM中數值0表示零件之間無連接關系,數值1表示有連接關系。3個分析規則中每種配合類型的權重值是不同的。規則A將每種匹配類型的權重值設置為1;規則B將匹配類型的權重值設置為0.5;規則C根據表2的權重進行設置。當2個零件具有相同的配對類型時,累加2個零件的配合類型的權重以獲得總權重。當2個零件的總權重不小于1時,表示零件之間存在連接關系。然后將連接關系轉換為DSM儲存在Excel文件中。
無論模型的復雜程度如何,DSM自動生成系統都應該能夠構建準確的DSM。本節根據規則A、B和C對礦用救生艙和液壓支架2種不同3D模型進行DSM自動生成測試。并將系統自動生成的DSM與實際模型的DSM進行比較和分析,根據分析結果完成系統的調試和分析規則的修改。

Figure 9 DSMs of rescue capsule comparison using three rules圖9 救生艙模型根據3種規則生成的 DSM與手工建立的DSM對比
圖9所示是救生艙CAD模型分別根據3個規則生成的DSM與實際DSM之間的比較。DSM中對角線元素與測試無關。 DSM中的值0表示部件之間沒有連接,值1表示存在連接。將自動生成的DSM與手動建立的DSM(完全正確的DSM)進行比較,并將與手動建立的DSM不同的元素標記出來。通過比較發現,分別根據3個規則自動生成的礦用救生艙模型的DSM與手動建立的DSM存在較大差異。根據規則A、B生成的DSM出現了不同程度的錯誤,但是根據規則C生成的DSM與手動建立的DSM一致。檢查救生艙的CAD模型,發現一些配合類型只是用來限制2個零件之間的位置關系。由于設計師的習慣,使用了一些多余的配合。通過分析和推理總結出2個結論:(1)規則A和規則B容易受到裝配習慣的影響,因此根據這2個規則生成的DSM有明顯的誤差;(2)規則C優于規則A和規則B,可以減少設計習慣帶來的誤差。
為了進一步對DSM自動生成系統進行測試,將液壓支架作為測試對象,因為液壓支架模型更復雜并且具有更多的部件。圖10是根據規則A和規則B生成的液壓支架的DSM。從圖10中可以看出,自動生成的DSM出現了不同的錯誤,根據規則B生成的DSM的精度低于根據規則A生成的DSM的精度。通過對模型檢查發現,7個液壓缸的各個零件在模型裝配過程中獨立組裝在模型上,結果出現了太多的裝配零件。此外,模型僅使用單個配合來組裝液壓缸零件。例如,在液壓缸套和液壓桿之間僅使用同心配合,并且沒有其他配合用于輔助限定位置。結合圖9和圖10可以發現,根據規則B生成的救生艙模型DSM的精度較高,而根據規則A生成的液壓支架DSM的精度較高,因此不能說明規則A和規則B中哪個生成的DSM具有更高的精度。這是因為設計人員組裝液壓支架模型時,某些部件主要使用單一配合類型,很少使用其他配合。因此,根據規則B生成的DSM會出現較大的誤差。但是,在實際裝配過程中,模型越復雜,使用的配合就越多。因此,根據規則A和規則B生成的DSM易受到設計習慣的影響。同時,可以證明結論1是正確的。

Figure 10 DSMs of hydraulic support comparison using rule A and rule B圖10 根據不同規則生成的液壓支架 DSM與手工建立的DSM對比
系統生成的DSM精度受到設計人員裝配習慣的影響,而結論2中的規則C可以減少設計習慣帶來的生成精度的影響。 以下使用規則C來測試和分析液壓支架,生成的DSM如圖11所示。與手動建立的DSM相比,根據規則C生成的DSM沒有錯誤。這是因為不同配合類型的權重值在規則C中是不同的,因此部件之間存在配合類型數量變化,對系統生成的DSM影響將減小, 但規則A和規則B則對配合類型和配合類型使用數量的影響更大。因此,規則C可以有效地減小設計習慣對DSM的影響,提高生成的DSM的準確性。 這證明結論2是正確的,且更適用于DSM自動生成系統。
DSM生成系統具有簡潔、易操作的人機界面,用戶首先打開SolidWorks選擇需要分析的模型,然后啟動DSM自動生成系統,按照界面的按鈕和提示即可生成模型的DSM。以某種型號的礦用救生艙為例,點擊遍歷按鈕后模型信息會呈現在一覽表中,可以對表中數據進行操作,也可以將表中數據從數據庫導出至Excel中。之后點擊按鈕“Generate DSM”,模型的DSM就會呈現在DSM展示窗口,同時也可將DSM導入Excel,圖12是系統運行的人機界面。
本文介紹了基于Visual Basic的3D模型DSM自動生成系統的設計,并使用不同復雜度的模型進行測試,比較和分析了根據3個規則生成的DSM。測試表明根據不同類型的配合設置不同權重值的規則C適用于該系統。無論模型的大小和復雜程度,利用本文設計的系統都可以快速生成DSM,大大降低了設計人員的勞動強度,縮短了產品的設計周期,提高了設計效率。
本文對標準配合進行了詳細研究,而高級配合和機械配合涉及較少,因此難以保證DSM對更復雜模型的準確性。在未來的工作中,將為所有類型的配合設置更精確的權重值,從而確保生成DSM的準確性。

Figure 11 Hydraulic support (Rule C)圖11 根據規則C生成的液壓支架DSM

Figure 12 System interface圖12 系統界面