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