Pro/TOOLKIT二次開發(fā)的高效構(gòu)建組件
2013-08-11 by:逆向工程中心-設(shè)備設(shè)計組 來源:仿真在線
Pro/TOOLKIT二次開發(fā)的高效構(gòu)建組件
0引言
日益激烈的市場競爭要求現(xiàn)代企業(yè)必須低成本、高效率地開發(fā)新產(chǎn)品,全面提高對市場的快速響應(yīng)能力。要高效率地設(shè)計三維產(chǎn)品,則離不開CAD/CAM系統(tǒng)的支持,具有技術(shù)成熟、功能強(qiáng)大的proeNGINEER(以下簡稱proe)參數(shù)化造型系統(tǒng)在設(shè)計和制造業(yè)中得到了日益廣泛的應(yīng)用,proe作為通用的三維CAD/CAM系統(tǒng)在功能上基本能夠滿足產(chǎn)品三維設(shè)計要求,但要高效地進(jìn)行產(chǎn)品設(shè)計以滿足更高層次的要求,還需要借助于其自帶的高級開發(fā)工具包Pro/TOOLKIT。
Pro/TOOLKIT是美國PTC公司為proe系統(tǒng)提供的二次開發(fā)工具包。即應(yīng)用程序接口(API),其主要目的是讓用戶或第三方通過C程序代碼擴(kuò)充proe系統(tǒng)的功能,開發(fā)基于proe系統(tǒng)的應(yīng)用程序模塊,將proe的通用性與專業(yè)性完美地結(jié)合起來,從而滿足用戶更高層次的需求。
組件是許多元件按照一定規(guī)則的組合以滿足用戶實際的需要。本文以構(gòu)建模座為例,詳細(xì)地介紹了組件構(gòu)建的技術(shù)過程、所需要用到的函數(shù)及核心代碼。
1 proe二次開發(fā)技術(shù)實現(xiàn)
1.1 開發(fā)環(huán)境
Pro/TOOLKIT支持在Windows 2000/NT/XP操作系統(tǒng)中使用C和C++語言設(shè)計程序,采用Microsoft Visual C++6.0作為編譯器和連接器,并可以在Microsoft Visual C++6.0的集成環(huán)境下完成程序的設(shè)計、調(diào)試和編譯。
1.2 技術(shù)實現(xiàn)
proe為應(yīng)用程序提供兩種工作模式:同步模式和異步模式,同步模式首先開啟proe,通過注冊文件來運行編譯后的可執(zhí)行文件;異步模式通過運行編譯后的可執(zhí)行文件來開啟proe,不需要編寫注冊文件;本文采用的是同步模式。使用Pro/TOOLKIT開發(fā)應(yīng)用程序包含三個步驟,分別是:編寫源文件、生成可執(zhí)行文件以及Pro/TOOLKIT應(yīng)用程序在proe中的注冊并運行;
第一步同于一般的VC源程序的編輯,由于Pro/TOOLKIT不能兼容C++代碼,所以在用VC6.0新建程序文件時必須顯式指定文件的后綴名為.c,若沒有指定則會默認(rèn)為.cpp,從而使程序不能正常運行;
第二步在編譯時需要再添加三個庫文件,否則編譯時會出現(xiàn)類型識別錯誤,具體操作為:選擇Project/Settings..菜單,選擇“Link”選項卡,在“Category:”(類型)下拉列表中選擇General(通用),在“ObjecL/Library modules”下加入mpr.lib,protoolkit.lib, wsock32.lib;
第三步是在proe中注冊并運行,要使程序在proe中運行,需要在同一目錄下編寫一個名為protk.dat的注冊文件,然后通過注冊文件使可執(zhí)行文件在proe中運行。
1.3 創(chuàng)建Pro/TOOLKIT應(yīng)用程序
按照proe環(huán)境運行的要求,所有的Pro/TOOLKIT程序都是采用以下結(jié)構(gòu)設(shè)計:
#include"ProToolkit. h"
……;
int user_initialize(){
……;
return 0;}
void user_ terminate(){……;}
所有Pro/TOOLKIT應(yīng)用程序都必須包含函數(shù)user_initialize()和函數(shù)user_terminate(),這兩個函數(shù)是Pro/TOOLKIT的開發(fā)人員編寫的原始函數(shù)。函數(shù)user_initialize()是Pro/TOOLKIT應(yīng)用程序的入口點,所有的初始化過程在這個函數(shù)內(nèi)完成,函數(shù)初始化成功返回值為0,否則系統(tǒng)會返回相應(yīng)的提示。proe結(jié)束,用戶確認(rèn)退出時,應(yīng)用程序調(diào)用user_terminate(),該函數(shù)的返回值為void。
2 構(gòu)建組件
組件是由許多元件按照一定規(guī)則的組合,在組件中添加元件最關(guān)鍵的問題是元件的方向、元件的坐標(biāo)以及元件參數(shù)的大小。本算法通過給定三個坐標(biāo)值(即元件坐標(biāo)面分別與組件坐標(biāo)面的偏距值)來限定元件在組件中的具體位置,克服了相鄰元件相互關(guān)聯(lián)的局限性,每個元件在組件中都相互獨立,使得在構(gòu)建過程中可以非常靈活地替換元件,提高了組件的容錯性;通過參數(shù)化來調(diào)整元件實體模型尺寸的大小,給定具體的參數(shù)值即可再生多種尺寸的元件;通過調(diào)整面與面的對齊方式來約束元件在組件中的方向。
下面以構(gòu)建模座為例分別詳細(xì)介紹:當(dāng)新建一個空組件時,proe會出現(xiàn)如圖1所示的一個三維空間,即一個三維坐標(biāo)平面;在添加第一個元件(即上底板)時,如圖2所示,當(dāng)限定圖2所示元件的三個坐標(biāo)面front,right,top分別與圖1所示的三個坐標(biāo)平面asm_front,asm_right,asm_top平行對齊,并給定相應(yīng)面與面之間的偏距,則此元件在組件(即這個三維空間)中的確切位置就確定了,再分別設(shè)定元件的方向和元件實體模型尺寸值后即完成了把元件添加到組件中的過程。
(1)方向。組件的三個坐標(biāo)平面是固定的,所以當(dāng)我們需要調(diào)整元件的方向時可以選擇元件的不同平面分別與組件的三個平面對齊;當(dāng)用圖2中元件的三個面right,front,top與圖1中組件的三個面asm_front,asm_right,asm_top分別對齊時,元件的放置方式則會改變,變成Front面的正向朝左。根據(jù)排列組合原理,三個面與另外三個面分別對齊總共有3×2×1種,則元件在組件中放置的方式一共可以有6種。在proe中常用的對齊方式一共有兩種,分別是對齊(align)與匹配(mate);proe中規(guī)定了組件的三個坐標(biāo)面的正方向,若對齊方式選擇mate,則匹配的兩個平面相互平行且正方向相反;若對齊方式選擇align,則對齊的兩個平面相互平行且正方向相同。如圖3所示,螺絲的front面的正向朝前,當(dāng)用組件的坐標(biāo)面asm_front與螺絲的坐標(biāo)面front對齊時,螺絲按圖3所示放置;當(dāng)用組件的坐標(biāo)面asm_front與螺絲的坐標(biāo)面front匹配時,螺絲則按圖4所示放置,此時螺絲的front面的正向朝后。螺絲的其他四種放置方式(即front面正向朝左、右、上、下)都可以通過調(diào)整元件坐標(biāo)面分別與組件的坐標(biāo)面對齊來實現(xiàn)。
(2)坐標(biāo)。在構(gòu)建組件的過程中,不可能每一個元件的平面都與組件平面重合,這就要通過設(shè)定偏距來解決,也即是設(shè)定元件的坐標(biāo)值。以構(gòu)造模座為例,最多只能有一個元件的坐標(biāo)面與組件坐標(biāo)面完全重合。設(shè)定坐標(biāo)的方法:先設(shè)定函數(shù)ProAsmcompconstraintTypeSet的第二個參數(shù)為PRO_ASM_ALIGN_OFF或者PRO_ASM_MATE_OFF(對齊方式若是align則選擇前者、若是mate則選后者),然后再通過函數(shù)ProAsmcompconstraintOffsetSet()來設(shè)定具體的偏距值的大小。一次只能設(shè)定一組對齊平面的偏距,在模座構(gòu)造中需要設(shè)定三次才能限定好單個元件在模座中的具體位置。給定元件的三個坐標(biāo)值后,元件在組件中的具體位置也就固定。
(3)參數(shù)化。在構(gòu)建組件時元件的尺寸大小需根據(jù)實際需要來設(shè)定。按照效率優(yōu)先原則不可能在proe中把每一個需要的尺寸都設(shè)計好;每種元件只需要設(shè)計一個,然后可以在程序中把具體尺寸賦給相應(yīng)的參數(shù)來自動再生所需的元件。以模座為例,當(dāng)設(shè)定好圖2所示的元件的長、寬、高三個參數(shù)后,只要給定不同的參數(shù)值,模座的上底板、下底板、模腳、A/B板等都可以通過此元件再生來生成,這就極大地提高了設(shè)計效率。需要設(shè)定參數(shù)的名稱以及各個參數(shù)之間的約束關(guān)系,設(shè)定好參數(shù)名稱后可以調(diào)用函數(shù)ProParameter ValueSet()來設(shè)定具體的參數(shù)值的大小。
3 構(gòu)建組件所需要的函數(shù)及核心代碼
下面列舉出在本方法構(gòu)建組件時所用到的函數(shù)及其功能:
(1)ProAsmcompAasemble():用來向組件或二級組件的初位置添加元件;
(2)ProArrayAlloc():用來申請內(nèi)存空間;
(3)PmAsmcomppathlnit():用來初始化ProAsmcompath的結(jié)構(gòu);
(4)ProModelitemByNamelnit():用來獲取單個模型的成員句柄;
(5)ProSelectionAlloc():用來申請空間以及將成員句柄填入到數(shù)組;
(6)ProAsmcompconstraintA11oc():用來中請組件約束結(jié)構(gòu)的內(nèi)存空;
(7)ProAsmcompconstraintTypeSet():用來按照約束條件設(shè)置約束;
(8)ProAsmcompconstraintOffsetSet():用來設(shè)置偏距值;
(9)ProAsmcompconstraintAsmreferenceSet():用來給組件按照具體約束設(shè)置好約束引用和方向;
(10)ProAsmcompconstraintCompreferenceSet():用來給元件按照具體約束設(shè)置好約束引用和方向;
(11)ProArray0bjectAdd():用來向?qū)ο髷?shù)組中添加設(shè)置好的約束引用和方向;
(12)ProAsmcompConstraintsSet():用來向組件中添加約束數(shù)組;
(13)ProArrayFree():用來釋放ProArray結(jié)構(gòu)。
核心代碼:
程序執(zhí)行后會將名為name_prt[1]的元件添加到組件中,并限定此元件的三個坐標(biāo)面front、top、right分別與組件的三個坐標(biāo)面asm_front、asm_top、asm_right對齊,且偏距分別為0。當(dāng)要調(diào)入其他的元件,只需要修改參數(shù)name_prt[1]。當(dāng)依次調(diào)入構(gòu)建模座所需要的元件時即可生成一個完整的模座。極大地提高了模座的設(shè)計效率,有效地縮短了模具的設(shè)計周期。
相關(guān)標(biāo)簽搜索:Pro/TOOLKIT二次開發(fā)的高效構(gòu)建組件 Pro/TOOLKIT二次開發(fā)的高效構(gòu)建組件 Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓(xùn) Abaqus培訓(xùn) Autoform培訓(xùn) 有限元培訓(xùn) Solidworks培訓(xùn) UG模具培訓(xùn) PROE培訓(xùn) 運動仿真