張興旺 高 浩 張志立
(1.上海置信電氣有限公司,上海 200335;2.南瑞集團有限公司/國網電力科學研究院有限公司,江蘇 南京 211103)
SolidWorks軟件是一種現代機械產品設計軟件,輸出的三維模型和二維工程圖可以直接交付給生產人員,具有性能優異、功能強大、可靠性高等優點,被廣泛應用在電力設備的結構設計中。同時該軟件操作簡單,支持VB、C#等語言的二次開發,通過二次開發可以實現標準化零部件的參數化設計,支撐三維模型和二維工程圖的快速輸出,達到縮短設計周期、提高設計質量和效率的目的。
當前,關于SolidWorks的二次開發軟件對于設計人員還主要存在兩個方面的不足:一方面是軟件針對某系列結構一致性產品進行開發,缺乏靈活性,當設計人員需對新結構產品進行參數化設計時,就需要重新進行軟件的開發;另一方面是當前的二次開發軟件重點關注三維模型的輸出,而缺乏對二維工程圖的支持,雖然可以快速獲得三維模型,但技術人員還要花費大量的時間對二維工程圖進行調整,影響了出圖效率和質量。
本文基于C#語言對SolidWorks軟件進行了二次開發,同時結合Excel的強大數據處理能力,實現了變壓器產品結構的參數化設計。軟件采用模塊化設計理念,并設有產品庫,具有靈活的可擴展性,設計人員可自由部署已標準化產品至產品庫中,以實現對不同種類、不同系列產品的參數化設計配置,無須重新開發新的軟件。同時,軟件可實現二維工程圖中標注尺寸、技術要求、明細欄內容的自動調整,大大提高了設計人員的出圖效率和圖紙質量。
SolidWorks二次開發[1]主要是基于C#(或VB等)語言和官方提供的API(Application Programming Interface)接口,開發出在Windows系統使用的EXE界面程序,該程序在運行時調用SolidWorks進行自動建模,無須再對SolidWorks進行人工操作,同時Excel也擁有對C#開發完善的接口支持[2],因此本文采用C#設計EXE界面程序語言的開發方式。
SolidWorks常用二次開發建模方法有兩種[3]:一種是傳統的編程法,程序的運行實際上是整個模型重建的過程,這種方法使用的代碼量很大,編程人員需要將每一步建模過程程序化,開發工作量巨大;另一種方法是尺寸驅動法,先建立標準的模型文件,將其中的尺寸提取出來作為變量參數,當更改設計參數后,通過程序修改對應的變量參數實現模型的變更,這種方法相對簡潔,需編寫的代碼大大減少,同時提升了軟件的可靠性。因此,本文采用實用性更強的尺寸驅動法進行SolidWorks的二次開發。
軟件主要包括添加新產品種類和參數化設置兩項功能,圖1為軟件初始界面,左側為所添加產品類別,右側為所選擇產品名稱和產品預覽圖片。

圖1 軟件界面
用戶可以通過添加新產品功能自行增添新產品的模型,并通過參數界面對產品庫中已經添加好的變壓器產品結構進行參數化設計。
軟件的可擴展性是指用戶可以根據需要自由添加變壓器新產品,而無須更改軟件源碼,新產品的添加流程如圖2所示,主要包括基準模型信息的自動提取和三維結構參數化設計規則的導入。

圖2 新產品添加流程圖
2.2.1 基準模型信息的自動提取
首先設計人員需繪制新產品全部的基準模型,包括三維模型和二維工程圖,然后將基準模型導入軟件,通過軟件自動生成該產品的Excel配置表。點擊軟件界面的“添加新產品”即可彈出添加新產品界面,如圖3所示。選擇總裝基準模型和配置表位置后,軟件會自動調用SolidWorks打開總裝基準模型,提取基準模型信息并寫入到配置表中。提取基準模型信息依賴SolidWorks提供的API接口實現,首先需要遍歷模型中所有的零件與裝配尺寸,并獲取零件的屬性信息,然后再遍歷每個零件的尺寸信息,如果是子裝配體,還需遍歷子裝配體下級的零件與裝配尺寸。遍歷零件主要采用API接口中ModelDoc2類的FirstFeature、GetNextFeature方法,并結合C#語言中的遞歸函數,以此實現對模型零件按層級和裝配順序進行遍歷;遍歷尺寸采用接口中GetFirstDisplay-Dimension和GetNextDisplayDimension方法,將零件的所有尺寸信息都提取出來。

圖3 新產品添加界面
在遍歷零件和裝配尺寸的過程中,軟件獲取的零件信息和尺寸信息將自動寫入到產品配置表中,如圖4所示,“D2@草圖1”即為相應尺寸標注在SolidWorks中的名稱,除常規尺寸以外,其他裝配參數也可以通過軟件自動獲取,如陣列數量、陣列距離、旋轉角度等。

圖4 新產品添加界面
通過三維基準模型信息的自動提取,即可獲得如圖5所示的產品Excel配置表。

圖5 三維基準模型信息
每個零組件在表格中占有4列,頂部零件信息包括文件名、文件層級、配置名稱、壓縮狀態、隱藏狀態等,下方是所有的模型尺寸信息,包括尺寸名稱、原尺寸值和尺寸類型。
2.2.2 三維結構設計規則的導入
基于軟件自動生成的產品配置表的基礎上,設計人員還需將結構設計規則導入到表格中。首先添加主參數信息,主參數是基礎模型所有結構尺寸的驅動參數,在表格的最左側進行添加,每個零組件的配置、壓縮、隱藏和新尺寸值通過函數關系與主參數或其他零組件的尺寸進行關聯,如圖6所示。

圖6 添加主參數
鐵芯零件含有多個配置信息,如圖7所示,需通過Excel函數設置多重判斷條件,以實現配置的自動選擇,如需對壓縮狀態和隱藏狀態進行更改,則通過“Y”和“N”的判斷選擇來實現,尺寸參數則通過關聯公式實現新參數值的計算。在軟件進行參數化設計時,會讀取所設置的配置、壓縮、隱藏信息對零件進行更改,并將新尺寸信息寫入零件,從而達到零組件參數化變更的效果。

圖7 零件規則輸入
2.2.3 工程圖信息的自動提取
軟件的產品配置表有兩個工作表,第一個工作表名稱為三維模型信息表,用來存放前文提到的三維尺寸信息,第二個工作表名稱為工程圖信息表,用來存放工程圖的信息。程序運行時,根據總裝基準模型所在的文件夾地址,篩選所有的工程圖(文件擴展名為SLDDRW),調用SolidWorks依次打開二維工程圖,首先獲取當前工程圖名稱,接著遍歷該工程圖下所有視圖,獲取視圖的比例,然后獲取視圖下所有尺寸標注和注釋的名稱及坐標,讀取完成后自動填入表格中。如圖8所示,表格前幾列分別為文件名、圖紙名、視圖名、尺寸標注名和注釋名,尺寸標注名和注釋名的后面兩列用于填寫標注和注釋的橫縱坐標(x,y)。

圖8 二維圖紙信息
2.2.4 二維工程圖規則導入
現階段常規參數化設計中一般只包含三維結構規則,而缺乏對二維工程圖的參數化支撐,本文通過Excel表格配置實現了對工程圖的參數化設計。本文工程圖的參數化主要包括兩個功能,一個是視圖比例的自動調整,另一個是尺寸標注位置的自動調整。基于圖8生成的配置表,視圖比例的數據通過Excel函數與結構數據關聯。
參數化設計中,由于三維結構比例的變化,工程圖中原有的尺寸標注位置發生變化,導致圖紙中尺寸標注混亂,需人工進行逐個調整。本文通過添加輔助注釋,結合Excel函數實現了對尺寸標注的參數化定位。如圖9所示,要將標注“231”的位置調整到圖中的位置,首先添加一個指向圖中頂點的注釋z1,該注釋永遠指向頂點的位置,通過API接口的GetAttachPos()方法獲取注釋的坐標,即所指向的頂點的坐標,結合頂點的坐標和三維結構尺寸,就可實現標注的定位。若注釋z1的坐標為(x,y),箱壁短邊長度為L,則標注的坐標為。注釋建立好后可設置為隱藏狀態,以滿足工程圖的繪制規范。

圖9 二維圖紙信息
通過建立輔助注釋,將標注的坐標與注釋的坐標關聯起來,并用Excel函數寫入表格中。如圖10所示,在程序運行時,先讀取各個注釋的坐標并寫入表格中,則可得到與之關聯的標注坐標,隨后程序再讀取標注的名稱,將對應的坐標值通過SetPosition2()方法寫入到工程圖中,通過坐標的參數化設計,實現尺寸標注位置的自動調整。

圖10 標注坐標參數化流程
2.2.5 軟件動態加載
完成三維基準模型與二維工程圖的規則導入后,需將新產品配置到軟件中。軟件的配置通過軟件配置表實現,如圖11所示,軟件配置表包含所有已添加產品的信息。第一列為產品類別,對應軟件左側的標簽,第二、三列為產品名稱和預覽圖片地址,對應軟件內的產品預覽圖,第四列為產品總裝基準模型的地址,最后一列是該產品的產品配置表地址。

圖11 標注坐標參數化流程
軟件運行時首先讀取軟件配置表中所有產品信息,動態生成軟件界面。每個產品包含一個單選框控件,在選擇所需設計對應產品后,即可進入其參數化設置界面,在參數化設置界面選擇好輸出文件保存地址,并在主參數列按照參數名稱輸入所需參數數值,然后點擊“開始參數化”按鈕,即可自動生成所需設計產品的三維模型和二維工程圖。
本文對基于SolidWorks和Excel的參數化設計進行了探討,并通過二次開發實現了對SolidWorks軟件功能的擴展應用。本文基于C#語言對SolidWorks進行二次開發,借助Excel強大的數據處理功能,同時通過對SolidWorks API接口的靈活應用,實現了對變壓器產品結構三維模型和二維工程圖的參數化設計,并采用可重用性、可維護性開發理念,提高了軟件支撐產品種類的可擴展性,最終實現了針對不同種類、不同系列變壓器產品結構三維模型和二維工程圖的快速輸出,可大大提高變壓器產品結構設計效率和正確率。本軟件已應用到實際設計和生產中,非常方便和可靠。
參數化設計以其高效、準確的優勢已被各領域所采用,本文以變壓器產品的參數化設計為樣例,提出了支撐三維模型屬性自動采集、產品系列可拓展支撐、工程圖個性化定制的參數化設計軟件開發實例,為變壓器領域和其他領域的參數化設計工作提供了參考。