紀忠華 黃詩君 張茜
【摘要】標準件在產(chǎn)品設計的過程中占有很大比例,標準件庫的開發(fā)是減少重復設計,提高設計效率的重要手段。基于UG,利用Journal及其他二次開發(fā)工具制作熱流道系統(tǒng)的標準件庫,開發(fā)效率高,并實現(xiàn)復雜功能,滿足開發(fā)要求。
【關鍵詞】標準件庫;UG;二次開發(fā);熱流道
1.引言
UnigraphicsNX7.0(簡稱UGNX7.0)是當今世界上最先進和高度集成的、面向制造行業(yè)的CAD/CAE/CAM軟件系統(tǒng),被廣泛應用于機械、模具等領域。NX7.0提供了強大的二次開發(fā)接口,支持Java、C++、C#等多種高級編程語言,為自動化和自定義NX提供了一個廣發(fā)而靈活的環(huán)境。
熱流道行業(yè)中,在標準的建立上仍有所不足,在進行產(chǎn)品開發(fā)中,建立企業(yè)的標準件庫,是減少錯誤并提高設計效率的最佳手段。
2.UGNX7.0二次開發(fā)語言及工具
C++作為一門高級語言,不僅具有強大的函數(shù)/類庫,而且與NX的最底層經(jīng)典NXOpen C更是完美兼容,用C++作為開發(fā)語言更是支持.NET和Java兩大語言的范型,面向對象技術,不僅為開發(fā)人員帶來諸多便利,更是增加了代碼的可讀性,為后期程序的優(yōu)化作準備。
西門子公司為NX設計了許多二次開發(fā)工具,BlockUIStyler使界面的開發(fā)變得更加方便,MenuScript定義了菜單的腳本語言,并可以創(chuàng)建工具欄。NX系統(tǒng)內嵌的Journal日志功能更是大大降低了二次開發(fā)的代碼量。
3.標準件庫的開發(fā)
標準件庫的開發(fā)利用MenuScript建立工具欄,BlockUIStyler做出界面后生成.hpp和.cpp文件。在VisualStudio 2008(以下簡稱VS2008)中讀取NX7.0 C++模板文件,建立并把生成的.hpp和.cpp文件導入,進行代碼的編輯。
開發(fā)應用程序項目目錄有startup,
application和prt。其中,文件夾startup中存放動態(tài)鏈接庫(*.dll)和工具條腳本文件(*.tbr),application中存放對話框文件(*.dlx)、圖標位圖文件(*.bmp)和圖像文件(*.jpg),prt用于存放圖形模板文件。
具體開發(fā)配置如圖1。
應用程序開過過程中需要調試,調試通過“UG->文件->執(zhí)行->NX Open”執(zhí)行debug編譯成功的*.dll文件。程序發(fā)布時需使用release版程序,保證程序的健壯性,并為應用程序配置可執(zhí)行路徑。
圖1
3.1 建立工具欄
以記事本格式編寫腳本文件,編寫完成后更改格式為.tbr,部分腳本內容如下:
TITLE 標準件庫導入
VERSION 170
BUTTON fenliuban
LABEL 分流板
BITMAP
ACTION fenliubanpeijian.dll
BUTTON qiyougang
LABEL 汽/油缸
BITMAP
ACTION qiyougang.dll
……
工具欄設計效果如圖2所示。
3.2 設計界面
進入NX7.0的塊樣式編輯器模塊(Block UI Styler),設計各級界面(這里以分流板配件及主射咀作一二級界面為例)如圖3、圖4所示。
圖2
圖3
圖4
界面設計完成,將生成的.hpp和.cpp文件導入VS2008的UG二次開發(fā)模板中,界面的跳轉在主界面的回調函數(shù)update_cb()中完成,主要代碼如下:
Intfenliubanpeijian::update_cb(NXOpen
::BlockStyler::UIBlock* block)
{
try
{
if(block == btZhushezui)
{
zhushezui *zsz=new zhushezui;//跳轉至主射咀界面
zsz->Show();
}
}
要完成界面的跳轉還需要在主界面代碼中添加子界面程序的頭文件,具體頭文件代碼如下:
#include”fenliubanpeijian.hpp”
#include”fangzhuanxiao.hpp”
#include”fareguanjietou.hpp”
#include”luosi.hpp”
#include”redianou.hpp”
#include”yalijiezi.hpp”
#include”zhongxinding.hpp”
#include”zhushezui.hpp”
3.3 子界面功能設計
標準件庫中部件的導入是通過現(xiàn)有部件的名稱及型號進行調用、判斷進而選擇模型文件。導入方向與模型WCS方向一致,可根據(jù)需要在目標文件中修改WCS方向再進行調用,調用位置根據(jù)“指定原始點”確定,模型方向通過“指定原始點”與“指定方向點”確定,程序附帶一個-Z軸移動距離功能,方便用戶進行面操作之后的移動。代碼在子界面程序的apply函數(shù)中的try函數(shù)中添加,主要代碼如下:
partImporter1->SetFileName
(“\\\\192.168.1.3\\rui\\UGkaifa\\reliudao-3D\\01-fenliubanpeijian\\zhushezui\\”+str+”.prt”);//獲取標準件文件名稱
......
NXMatrix *nXMatrix1;
WCS* wcs=workPart->WCS();
NXObject *nullNXObject(NULL);
//--------------------------//通過“指定原始點”與“指定方向點”重新定義要導入部件的WCS方向
//----------------------------
Point3d opoint=point0->GetProperties()
->GetPoint(“Point”);
Point3d pointY,originp(0,0,0);
pointY=point01->GetProperties()->GetPoint(“Point”);
Vector3d vecz(0,0,1),vecy(pointY.X-opoint.X,pointY.Y-opoint.Y,pointY.Z-opoint.Z);
Direction *directionY,*directionZ;
directionY=workPart->Directions()->CreateDirection(originp,vecy,SmartObject::
UpdateOptionWithinModeling);
directionZ=workPart->Directions()->CreateDirection(originp,vecz,SmartObject::
UpdateOptionWithinModeling);
Point *point1;
point1=workPart->Points()->CreatePoint
(opoint);
Xform *xform1;
xform1=workPart->Xforms()->CreateXformBy
PointYDirZDir(point1,directionY,directionZ,
SmartObject::UpdateOptionWithinModeling,
1.0);//建立坐標系
......
double dble=double0->GetProperties()->GetDouble("Value");
Point3d destinationPoint2(destinationPoint1.X,destinationPoint1.Y,destinationPoint1.Z-dble);//設置-Z軸的移動距離
(篇幅原因只簡述部分代碼)
3.4 配置程序執(zhí)行路徑
開發(fā)完成后,將程序發(fā)布,需要將程序打包,并制定程序說明書,說明程序的配置及使用方法。開發(fā)環(huán)境通過配置文件方法進行配置,將配置文件(“$(UGII_BASE_DIR)\ UGII\menus\custom_dirs.dat”)用記事本格式打開,并將程序執(zhí)行路徑添加到最后一行,如圖5所示。
圖5
配置程序之后重新啟動UG主程序,在菜單項中即可找到自定義程序入口。
4.結論
通過UG二次開發(fā)技術,研究并建立了熱流道系統(tǒng)的標準件庫,極大程序地減少了標準件重復設計的時間,系統(tǒng)界面簡便且人性化。系統(tǒng)簡便實用,降低了設計者的勞動強度,對設計效率有很大提高。
參考文獻
[1]唐杰,張祥林.C++在UG二次開發(fā)中的應用[J].現(xiàn)代機械,2007(1):80-82.
[2]王藝樹,張毅,梁強.基于UG的參數(shù)化標準件庫的研究與實現(xiàn)[J].信息與技術,2009,38(2):127-129.
[3]周臨震,李青祝,秦珂.基于UGNX系統(tǒng)的二次開發(fā)[M].江蘇大學出版社,2012.
[4]UGS公司.NX7.5 HelpLibrary[Z].2010.
作者簡介:紀忠華(1990—),男,江蘇東臺人,廣東工業(yè)大學碩士研究生在讀,研究方向:NX二次開發(fā)。