張小鵬,王洪申,王學豐
(1. 蘭州理工大學 機電工程學院,甘肅 蘭州 730050; 2. 維都利閥門有限公司,浙江 溫州 325024)
SolidWorks是一款基于windows的三維CAD軟件,因其具有操作簡單、易學易用的特點而廣泛運用于各行各業(yè)[1]。閥門是工業(yè)生產中不可缺少的流體設備之一。球閥被廣泛應用在石油煉制、長輸管線、化工、造紙、制藥等行業(yè)。在國家標準中定義球閥為閥桿帶動球體、球體繞球閥軸線作旋轉運動的一類閥門[2]。球閥形狀特點是結構相對固定,同類球閥拓撲結構具有高度一致性,產品型號具有系列化特征,是進行參數(shù)化設計的理想對象。通過二次開發(fā)三維軟件的方法將同一型號的閥門參數(shù)歸納、整理,并通過可視化窗口統(tǒng)一輸入,自動生成三維模型,可提高閥門的設計效率,降低開發(fā)成本,縮短新產品的開發(fā)周期。
球閥是帶有圓形通道的啟閉件,通過手柄繞垂直于通道的軸線旋轉,球體隨著閥桿的轉動從而達到啟閉通道的作用[3]。設計時,閥體的流道孔中心與球體(啟閉作用)流道中心對準時為全開狀態(tài),通過閥桿傳力將球體繞轉軸轉動90°時,球閥將處于完全關閉狀態(tài),如圖1所示。球閥的結構使得它有以下幾點優(yōu)點:
1) 因球閥左右通道相同,故其安裝位置相對自由,介質的流向可以任意給定,流體阻力小;
2) 結構簡單,密封性能良好且容易維修;
3) 球閥適用于經常操作、啟閉迅速方便的場合,適用范圍廣。
圖1 球閥工程圖
SolidWorks的應用程序接口(application program interface,API)是一個基于對象的嵌入與鏈接(object linking and embedding, OLE)或組件對象模型(component object model, COM)的編程接口[4]。目前對于SolidWorks的二次開發(fā)大概分為兩種,SolidWorks內置宏和微軟的Visual Studio(支持VB.NET、C#、C++)。SolidWorks API是一個多層次的自上而下的樹形網絡結構,如圖2所示。因此,對于SolidWorks類對象的訪問也是通過自上而下訪問的方法。SldWorks是根目錄對象類,位于應用程序的底層,是訪問SolidWorks API所有對象的入口[5]。本文使用SolidWorks-API-SDK 2016提供的接口,通過Microsoft Visual Studio 2010進行二次開發(fā)。
圖2 SolidWorks API接口對象
基于SolidWorks的二次開發(fā)思路有兩種,一種是完全程序化參數(shù)建模,這種方法是一種自下而上的建模方法,由最底層的點、線、面構成圖形,該方法的缺陷是若零件較為復雜,則編程量太大,且專業(yè)要求較高。另一種方法是在三維模型的基礎上驅動尺寸,這種方法是一種自上而下的建模方法,即在保證零件結構不發(fā)生變化的情況下,建立好零件模板,運行時只需指定尺寸值,由尺寸自動定位到相應的尺寸變量。該方法的優(yōu)點是編程量少,特征間約束由模型自動產生,采用這種方法可以利用SolidWorks自身的參數(shù)化及編程技術優(yōu)勢,因此所需編寫的程序代碼相對簡單[6]。圖3為閥門參數(shù)化流程。
圖3 閥門參數(shù)化設計流程
作為參數(shù)化設計的基礎,零件的三維建模顯得尤為重要,建模的方法及順序會直接影響參數(shù)化設計的結果。為確保參數(shù)化的正確性,在建模過程中必須要添加合理的約束,以實現(xiàn)參數(shù)的全約束,包括幾何約束和工程約束。幾何約束分為結構約束和尺寸約束,如長度、寬度、角度等約束為尺寸約束;如平行、垂直等指幾何元素之間的拓撲關系的約束為結構約束[7]。繪制完成后,在特征樹中右鍵單擊【注解】,選中顯示特征尺寸,并在【立即視圖工具欄區(qū)】選中顯示尺寸名稱,也可以通過設計需要改變名稱。在球閥的設計過程中,涉及的主要參數(shù)包括法蘭尺寸、壁厚、球閥結構長度等,將這些參數(shù)作為全局變量,如表1所示。
表1 全局參數(shù) 單位:mm
全局變量可以用于驅動尺寸作為唯一的數(shù)值,通過SolidWorks自帶的方程式功能將參數(shù)之間建立關聯(lián),在SolidWorks中方程的形式是:因變量=自變量。
例如在方程式“D9@草圖1”=“D8@草圖1” / 2中,系統(tǒng)會根據(jù)尺寸D8求解尺寸D9,一旦方程式寫好并應用到模型之后,尺寸D9就不能直接修改,方程式建立完成之后的模型如圖4所示。
圖4 建立模型
在SolidWorks軟件中,配置管理器是SolidWorks中非常獨特的一部分功能,它提供了簡便的方法來開發(fā)和管理一組尺寸不同、特征相似的一系列零件。在工具欄【插入】中點擊設計表,在彈出的對話框中選擇上一步的全局尺寸作為參數(shù)添加到設計表中,如圖5所示。
圖5 系列零件表
根據(jù)上述步驟,通過SolidWorks二次開發(fā)接口,對配置管理進行二次開發(fā),創(chuàng)建人機交互對話框,輸入?yún)?shù)生成不同尺寸的零件,從而實現(xiàn)參數(shù)化。
在SolidWorks二次開發(fā)過程中,非模態(tài)對話框創(chuàng)建的過程如下:
1) 插入一個新的對話框,ID默認即可;
2) 可以直接雙擊對話框空白處或者在右鍵為對話框添加類,在彈出的類對話框中輸入類名(BallDlg),點擊確定;
3) 在工程.cpp文件中添加包含對話框頭文件的語句#include “FirstDlg.h”,并添加非模態(tài)對話框的初始化代碼:
BallDlg dlg=new BallDlg (AfxGetMainWnd());
4) 將設計好的對話框與SldWorks對象聯(lián)系起來,即為對話框添加成員函數(shù)。
在BallDlg.h中定義:
voidgetSW(ISldWorks *Sw);
在BallDlg.cpp中聲明:
void BallDlg::getSW(ISldWorks *Sw)
this->ball_iSldWorks_dlg=Sw;
}
添加如圖6所示控件,在資源管理器選項卡bitmap中,將球閥閥體的位圖加入到界面中。為生成三維圖按鈕添加事件處理程序,關鍵代碼如4.3節(jié)所述。
圖6 球閥參數(shù)輸入界面
UpdateData(TRUE);
CComBSTRfileName(_T("..\ball valve.SLDPRT")); //打開文件
CComPtr
VARIANT_BOOL retval=VARIANT_TRUE;
計劃建設是執(zhí)行實施的基礎,執(zhí)行實施是評價檢查的前提,評價檢查是優(yōu)化改進的關鍵,上一環(huán)是下一環(huán)有序開展的先決條件。優(yōu)化改進階段是內控閉環(huán)建設的核心和關鍵點,是內控閉環(huán)形成的重要環(huán)節(jié)。
m_iSldWorks_dlg->OpenDoc6(fileName,swDocPART,Options,NULL,&Errors,&Warnings,&m_iModelDoc); //打開文件
CComPtr
CComPtr
m_iModelDoc->get_ConfigurationManager(&pConfigurationManager); //獲得配置名
CString a0=L"D1@草圖2";
CString a1=L"D111@草圖14";
CString a2=L"D2@草圖14";
……
pConfigurationManager->ISetConfigurationParams ( Name, paramCount, paramNames, paramValues, &retval);
m_iModelDoc->ViewZoomtofit( ); //視圖設定
在本程序中,首先輸入配置的名稱和各尺寸的參數(shù)值,獲得當前模型的配置管理器對象并使用程序接口添加一個新的配置,然后通過程序更改三維模型的參數(shù),實現(xiàn)零件的參數(shù)化設計。表2說明了在SolidWorks API函數(shù)中打開文件函數(shù)OpenDoc6各參數(shù)的意義。
表2 SldWorks->OpenDoc6各參數(shù)的說明
在Addmenus()函數(shù)中,將自動生成的代碼改為
hret = icmdGroup->AddCommandItem2(L“閥體參數(shù)化”, -1, L“閥體參數(shù)化對話框”, L“閥體參數(shù)化”, 0, callback, enable, MAIN_ITEM_ID1, menuToolbarOption, &cmdIndex0)。
在程序中增加條件語句,對其進行判斷,不僅可以有效地提示用戶出現(xiàn)錯誤的類型和位置,還可以通過return()函數(shù)實現(xiàn)跳轉,避免SolidWorks出現(xiàn)運算錯誤而重啟。例如:
If(swPart=NULL)
{
AfxMessageBox(“閥體參數(shù)化設計失??!”);
Return;
}
將設計好的閥體參數(shù)輸入到可視化界面中,尺寸參數(shù)通過從人機交互界面讀取并驅動模型得到如圖7所示結果。
圖7 運行結果
本文介紹了在visual studio 2010環(huán)境下開發(fā)動態(tài)連接庫的方法,最終將編譯生成的DLL文件注冊到SolidWorks軟件中,實現(xiàn)了基于SolidWorks平臺的球閥閥體參數(shù)化設計,使同類球閥的設計難度降低,加快產品的設計效率。