江 濤, 何法江
(上海工程技術大學 航空運輸學院, 上海 201620)
面對日益多樣化的用戶需求,Creo軟件本身的功能不可能滿足各種設計需要,特別是國外的CAD軟件在設計標準、規范上和國內存在差異。因此對于Creo的二次開發是必要的,開發出適合本單位的應用程序,提高產品的設計效率,加快產品更新速度[1-3]。基于這一點,為了使軟件能夠在企業特定產品設計中最大限度地發揮潛力,達到提高經濟效益的目的,就需要應用Creo2.0提供的二次開發工具Creo Parametric Toolkit進行二次開發,將其進一步充實、完善、改進,這一研究工作是Creo 2.0軟件應用過程中的重要任務[3-4]。
Creo設計助手的功能包括自動保存功能、批量轉檔功能(三維轉IGS、STP格式,二維轉PDF、DWG格式)、批量添加參數及關系功能和右鍵菜單(三維建模命令、曲面命令、曲線命令、基準命令、打開工作目錄)的拓展。解決了Creo軟件無法實現批量轉檔、批量添加參數及關系等實際操作上的問題,設計人員使用Creo建模時更加方便,達到提高工作效率、經濟效益的目的。
Creo Parametric Toolkit 是功能強大的二次開發工具,其開發模式分為2種,即:同步模式(Synchronous Mode)和異步模式(Asynchronous Mode)[5-6]。由于后者Creo Parametric Toolkit應用程序和Creo之間的通信方式為遙控程序,相比同步模式操作將使用較多的時間,且使用復雜,因此選用同步模式。選用動態連接模式與對應的開發環境Microsoft Visual Studio 2010進行開發。
考慮到待開發的設計助手包括的功能較多,統一調研設計調試較為復雜,因此決定逐一設計各個功能,最后將各功能集成即可。
在開發之前,需對Microsoft Visual Studio 2010(以下簡稱VS2010)進行環境搭建,以使Microsoft Visual Studio 2010 DLL庫與Creo建立連接。依次進行自動保存、批量轉檔、批量添加參數及關系的菜單設計和MFC對話框設計以及右鍵菜單的開發,將開發的各功能集成并調試和完善,最終完成設計助手的開發。具體技術路線如圖1所示。

圖1 技術路線圖
在開發時,先要進行環境搭建,目的是建立Microsoft Visual Studio 2010 DLL庫與Creo的連接。
新建一個MFC-DLL項目,在此創建名為123的項目。設置活動解決方案平臺為64位,右擊所創建的項目調出屬性頁,包含電腦上Creo開發包路徑。定義預處理器。接著選擇“多線程調試DLL”運行庫,包含電腦上Creo開發庫路徑。輸入附加依賴項。至此,開發環境已搭建完成,可正常使用Microsoft Visual Studio 2010進行開發。
(1)首先為自動保存功能添加一個菜單欄按鈕。然后添加入口函數和出口函數。 要添加菜單欄按鈕,需使用添加主菜單函數ProMenubarMenuAdd,該函數使用格式中各參數含義見表1。
表1 ProMenubarMenuAdd函數使用格式中各參數含義
Tab. 1 The meaning of parameters in the format of ProMenubarMenuAdd function

類型參數含義輸入ProMenuItemName 菜單的名稱(必須是唯一的)menu_name輸入ProMenuItemLabel菜單的標簽untranslated_menu_label輸入ProMenuItemName neigh-bor菜單欄中的相鄰菜單輸入ProBoolean定義是否將菜單添加到鄰居add_after_neighbor菜單的左側或右側PRO_B_TRUE指定在右側輸入ProFileName filename包含標簽的消息文件的名稱
添加好主菜單后,為創建的主菜單添加按鈕,需要用到函數ProMenubar-menuPushbuttonAdd,該函數使用格式中各參數含義見表2。

表2 ProMenubar-menuPushbuttonAdd函數使用格式中各參數含義
此后需對按鈕添加動作,使用ProCmdActionAdd函數,該函數使用格式中各參數的含義見表3。
(2)菜單按鈕代碼編寫完成后,需要在所創建的MFC-DLL文件中添加資源文件,用來將按鈕顯示在Creo菜單欄中。資源文件編寫后,仍需編寫注冊文件,才能在Creo輔助應用程序中載入所開發的二次開發工具。在編寫注冊文件前,需先在Microsoft Visual Studio 2010中生成MFC-DLL的解決方案,生成結束后會在MFC-DLL文件夾中自動創建對應的.dll文件。
(3)接著調用MFC對話框并設計MFC對話框。自動保存功能的對話框設計較為簡單,只需放置一個文本編輯框用來存儲用戶輸入的自動保存時間間隔,另外還需2個按鈕供用戶點擊開始和取消自動保存。由于要實現自動保存功能,即每隔一段時間當前Creo自動保存一次,因此需要調用時間計時器。設置時間計時器的動作函數為保存Creo當前模型,將其作為回調函數,每隔一段時間自動調用該函數即可完成自動保存。其中,時間間隔通過用戶輸入到界面的文本編輯框,再從文本編輯框中獲得數據。
表3 ProCmdActionAdd函數使用格式中各參數含義
Tab. 3 The meaning of parameters in the format of ProCmdActionAdd function

類型參數含義輸入char* action_name動作的名稱(必須是唯一的)輸入uiCmdCmdActFn action_cb回調函數輸入uiCmdPriority priority定義相對于在執行回調函數期間調用其他操作的操作優先級輸入uiCmdAccessFn access_func定義動作可訪問性的功能輸入ProBoolean allow_in_non_active_window定義此動作是否可以在非活動的Creo Parametric窗口中執行輸入ProBoolean allow_in_accessory_window定義此操作是否可以在附件Creo Parametric窗口中執行輸入uiCmdCmdId* action_id動作的標識符
(1)創建一個新的MFC-DLL文件,在此創建名為“1234”。同樣需進行開發環境搭建,搭建過程詳見2.1。環境搭建完成后在1234.cpp中創建菜單按鈕,過程詳見2.1。代碼編譯完成后需要進行資源文件和注冊文件的編寫。其中CreoMenubar2為菜單的名稱,textCreo_button2為按鈕的名稱,textCreo_bu-tton2h為按鈕幫助信息的內容。
(2)創建MFC對話框并使其通過點擊按鈕調用的過程詳見2.2,不做贅述。在此添加MFC的CDialog類名為DLG2。批量轉檔的對話框首先應存在一個列表控件用于存儲用戶選擇的需轉檔的文件名,并放置一個對應的選擇文件按鈕,同時為了優化用戶體驗,還應設置額外的按鈕用于清空列表控件。轉檔需要用戶設置所要轉成的類型,因此放置一個下拉菜單,存儲“IGS;STP;PDF;DWG;”字符串數據供用戶選擇。最后用戶需要選擇文件輸出目錄,用文本編輯框存放并放置一個對應的選擇目錄按鈕。
根據需轉檔的類型,使用的函數也不同。文件轉為dwg格式時使用的函數為Pro2dExport,該函數使用格式中各參數含義見表4。
表4 Pro2dExport函數使用格式中各參數含義
Tab. 4 The meaning of parameters in the format of Pro2dExport function

類型參數含義輸入ProImportExportFile format要導出的文件類型輸入ProPath filename要創建的導出文件的名稱和絕對路徑輸入ProMdl model要從中導出信息的2d模型輸入Pro2dExportdata data用于導出的說明,可以為NULL
(1)創建一個新的MFC-DLL文件,在此創建名為12345。同樣需進行開發環境搭建,搭建過程詳見2.1節。環境搭建完成后在12345.cpp中創建菜單按鈕,具體過程詳見2.2節。代碼編譯完成后則要進行資源文件和注冊文件的編寫。其中,CreoMenubar3為菜單的名稱,textCreo_button3為按鈕的名稱,textCre-o_button3h為按鈕幫助信息的內容。
(2)創建MFC對話框并使其通過點擊按鈕調用的過程詳見2.2節,不做贅述。在此添加MFC的CDialog類名為DLG3。批量添加參數及關系的對話框首先應存在3個列表空間,分別用于存儲用戶選擇的需添加參數和關系的模型名稱、用戶設置的參數名稱和參數值以及用戶輸入的關系式,每個列表控件下應有對應功能的按鈕供用戶點擊。為了優化用戶體驗,在模型列表下還應設置“清空列表”按鈕用于清空存放模型名稱的列表控件。同樣在參數列表下,應設置修改參數的功能按鈕以及可供用戶選擇參數類型的下拉菜單,下拉菜單中可選的參數類型為“字符串;實數;整數;”。
批量添加參數主要用到的函數為ProParameterCreate,功能為創建參數。該函數使用格式中各參數含義見表5。
表5 ProParameterCreate函數使用格式中各參數含義
Tab. 5 The meaning of parameters in the format of ProParameterCreate function

類型參數含義輸入ProModelitem* owner所有者(模型項目或實體)輸入ProName name參數的名稱輸入ProParamvalue* proval參數將保留的初始數據輸出ProParameter* param創建和初始化的句柄
在已創建好的MFC-DLL文件中,添加一個程序的源文件,在此命名為“P-OPMENU.cpp”。(開發環境已搭建完成)。
考慮到需使用戶體驗良好且界面整潔,決定將設置及打開工作目錄、樣條曲線命令對應按鈕添加到模型樹右鍵菜單中,將基準命令、曲面命令、三維建模命令對應按鈕添加到模型右鍵菜單中。要添加模型樹右鍵菜單,須在自定義的模型樹右鍵菜單入口函數中編寫代碼,所使用的添加方法及函數與添加菜單欄按鈕大致相同,添加模型右鍵菜單則需通過調用函數ProNotificationSet的方法,該函數的作用就是設置要為指定操作調用的通知函數,可以將彈出右鍵菜單的通知添加到會話中。該函數使用格式中各參數含義見表6。
表6 ProNotificationSet函數使用格式中各參數含義
Tab. 6 The meaning of parameters in the format of ProNotificationSet function

類型參數含義輸入ProNotifyType type將進行的操作輸入ProFunction notify_function需調用的動作函數
打開設計完成的自動保存功能DLL文件,創建2個MFC對話框用于批量轉檔和批量添加參數及關系功能的實現,添加新的.cpp源文件用于右鍵菜單的創建。為MFC控件添加對應的變量和類,復制粘貼前編寫代碼并編譯調試,修改或去除重定義或多余的變量并經反復編譯調試,最后,就是編寫資源文件,重新生成解決方案無問題,即功能集成完成。
打開Creo,點擊工具欄中的“應用程序”→“注冊”,找到.dat文件并加載,至此,基于Creo的設計助手二次開發全部完成。
Creo2.0作為一款設計軟件本身的功能已經相當完善,但在輔助設計方面還存在一些不足。因此本文在Creo原有功能的基礎上,開發了一套設計助手輔助工具。該助手以Microsoft Visual Studio 2010軟件為工具,利用Creo提供的二次開發工具Creo Parametric Toolkit進行開發。設計助手包括自動保存、批量轉檔(三維轉IGS、STP格式,二維轉PDF、DWG)、批量添加參數、批量添加關系、右鍵菜單拓展等內容,并結合MFC對話框設計出良好的人機交互界面,以達到方便工作人員操作,提高工作效率的目的。