Pro/TOOLKIT二次開發(fā)的高效構(gòu)建組件

2013-08-11  by:逆向工程中心-設(shè)備設(shè)計(jì)組  來(lái)源:仿真在線

Pro/TOOLKIT二次開發(fā)的高效構(gòu)建組件

 

0引言

    日益激烈的市場(chǎng)競(jìng)爭(zhēng)要求現(xiàn)代企業(yè)必須低成本、高效率地開發(fā)新產(chǎn)品,全面提高對(duì)市場(chǎng)的快速響應(yīng)能力。要高效率地設(shè)計(jì)三維產(chǎn)品,則離不開CAD/CAM系統(tǒng)的支持,具有技術(shù)成熟、功能強(qiáng)大的proeNGINEER(以下簡(jiǎn)稱proe)參數(shù)化造型系統(tǒng)在設(shè)計(jì)和制造業(yè)中得到了日益廣泛的應(yīng)用,proe作為通用的三維CAD/CAM系統(tǒng)在功能上基本能夠滿足產(chǎn)品三維設(shè)計(jì)要求,但要高效地進(jìn)行產(chǎn)品設(shè)計(jì)以滿足更高層次的要求,還需要借助于其自帶的高級(jí)開發(fā)工具包Pro/TOOLKIT。

    Pro/TOOLKIT是美國(guó)PTC公司為proe系統(tǒng)提供的二次開發(fā)工具包。即應(yīng)用程序接口(API),其主要目的是讓用戶或第三方通過(guò)C程序代碼擴(kuò)充proe系統(tǒng)的功能,開發(fā)基于proe系統(tǒng)的應(yīng)用程序模塊,將proe的通用性與專業(yè)性完美地結(jié)合起來(lái),從而滿足用戶更高層次的需求。

    組件是許多元件按照一定規(guī)則的組合以滿足用戶實(shí)際的需要。本文以構(gòu)建模座為例,詳細(xì)地介紹了組件構(gòu)建的技術(shù)過(guò)程、所需要用到的函數(shù)及核心代碼。

1 proe二次開發(fā)技術(shù)實(shí)現(xiàn)

    1.1 開發(fā)環(huán)境

    Pro/TOOLKIT支持在Windows 2000/NT/XP操作系統(tǒng)中使用C和C++語(yǔ)言設(shè)計(jì)程序,采用Microsoft Visual C++6.0作為編譯器和連接器,并可以在Microsoft Visual C++6.0的集成環(huán)境下完成程序的設(shè)計(jì)、調(diào)試和編譯。

    1.2 技術(shù)實(shí)現(xiàn)

    proe為應(yīng)用程序提供兩種工作模式:同步模式和異步模式,同步模式首先開啟proe,通過(guò)注冊(cè)文件來(lái)運(yùn)行編譯后的可執(zhí)行文件;異步模式通過(guò)運(yùn)行編譯后的可執(zhí)行文件來(lái)開啟proe,不需要編寫注冊(cè)文件;本文采用的是同步模式。使用Pro/TOOLKIT開發(fā)應(yīng)用程序包含三個(gè)步驟,分別是:編寫源文件、生成可執(zhí)行文件以及Pro/TOOLKIT應(yīng)用程序在proe中的注冊(cè)并運(yùn)行;

第一步同于一般的VC源程序的編輯,由于Pro/TOOLKIT不能兼容C++代碼,所以在用VC6.0新建程序文件時(shí)必須顯式指定文件的后綴名為.c,若沒(méi)有指定則會(huì)默認(rèn)為.cpp,從而使程序不能正常運(yùn)行;

第二步在編譯時(shí)需要再添加三個(gè)庫(kù)文件,否則編譯時(shí)會(huì)出現(xiàn)類型識(shí)別錯(cuò)誤,具體操作為:選擇Project/Settings..菜單,選擇“Link”選項(xiàng)卡,在“Category:”(類型)下拉列表中選擇General(通用),在“ObjecL/Library modules”下加入mpr.lib,protoolkit.lib, wsock32.lib;

第三步是在proe中注冊(cè)并運(yùn)行,要使程序在proe中運(yùn)行,需要在同一目錄下編寫一個(gè)名為protk.dat的注冊(cè)文件,然后通過(guò)注冊(cè)文件使可執(zhí)行文件在proe中運(yùn)行。

    1.3 創(chuàng)建Pro/TOOLKIT應(yīng)用程序

    按照proe環(huán)境運(yùn)行的要求,所有的Pro/TOOLKIT程序都是采用以下結(jié)構(gòu)設(shè)計(jì):

    #include"ProToolkit. h"

    ……;

        int user_initialize(){

         ……;  
             
         return 0;}

    void user_ terminate(){……;}

    所有Pro/TOOLKIT應(yīng)用程序都必須包含函數(shù)user_initialize()和函數(shù)user_terminate(),這兩個(gè)函數(shù)是Pro/TOOLKIT的開發(fā)人員編寫的原始函數(shù)。函數(shù)user_initialize()是Pro/TOOLKIT應(yīng)用程序的入口點(diǎn),所有的初始化過(guò)程在這個(gè)函數(shù)內(nèi)完成,函數(shù)初始化成功返回值為0,否則系統(tǒng)會(huì)返回相應(yīng)的提示。proe結(jié)束,用戶確認(rèn)退出時(shí),應(yīng)用程序調(diào)用user_terminate(),該函數(shù)的返回值為void。

2 構(gòu)建組件

    組件是由許多元件按照一定規(guī)則的組合,在組件中添加元件最關(guān)鍵的問(wèn)題是元件的方向、元件的坐標(biāo)以及元件參數(shù)的大小。本算法通過(guò)給定三個(gè)坐標(biāo)值(即元件坐標(biāo)面分別與組件坐標(biāo)面的偏距值)來(lái)限定元件在組件中的具體位置,克服了相鄰元件相互關(guān)聯(lián)的局限性,每個(gè)元件在組件中都相互獨(dú)立,使得在構(gòu)建過(guò)程中可以非常靈活地替換元件,提高了組件的容錯(cuò)性;通過(guò)參數(shù)化來(lái)調(diào)整元件實(shí)體模型尺寸的大小,給定具體的參數(shù)值即可再生多種尺寸的元件;通過(guò)調(diào)整面與面的對(duì)齊方式來(lái)約束元件在組件中的方向。

    下面以構(gòu)建模座為例分別詳細(xì)介紹:當(dāng)新建一個(gè)空組件時(shí),proe會(huì)出現(xiàn)如圖1所示的一個(gè)三維空間,即一個(gè)三維坐標(biāo)平面;在添加第一個(gè)元件(即上底板)時(shí),如圖2所示,當(dāng)限定圖2所示元件的三個(gè)坐標(biāo)面front,right,top分別與圖1所示的三個(gè)坐標(biāo)平面asm_front,asm_right,asm_top平行對(duì)齊,并給定相應(yīng)面與面之間的偏距,則此元件在組件(即這個(gè)三維空間)中的確切位置就確定了,再分別設(shè)定元件的方向和元件實(shí)體模型尺寸值后即完成了把元件添加到組件中的過(guò)程。

    (1)方向。組件的三個(gè)坐標(biāo)平面是固定的,所以當(dāng)我們需要調(diào)整元件的方向時(shí)可以選擇元件的不同平面分別與組件的三個(gè)平面對(duì)齊;當(dāng)用圖2中元件的三個(gè)面right,front,top與圖1中組件的三個(gè)面asm_front,asm_right,asm_top分別對(duì)齊時(shí),元件的放置方式則會(huì)改變,變成Front面的正向朝左。根據(jù)排列組合原理,三個(gè)面與另外三個(gè)面分別對(duì)齊總共有3×2×1種,則元件在組件中放置的方式一共可以有6種。在proe中常用的對(duì)齊方式一共有兩種,分別是對(duì)齊(align)與匹配(mate);proe中規(guī)定了組件的三個(gè)坐標(biāo)面的正方向,若對(duì)齊方式選擇mate,則匹配的兩個(gè)平面相互平行且正方向相反;若對(duì)齊方式選擇align,則對(duì)齊的兩個(gè)平面相互平行且正方向相同。如圖3所示,螺絲的front面的正向朝前,當(dāng)用組件的坐標(biāo)面asm_front與螺絲的坐標(biāo)面front對(duì)齊時(shí),螺絲按圖3所示放置;當(dāng)用組件的坐標(biāo)面asm_front與螺絲的坐標(biāo)面front匹配時(shí),螺絲則按圖4所示放置,此時(shí)螺絲的front面的正向朝后。螺絲的其他四種放置方式(即front面正向朝左、右、上、下)都可以通過(guò)調(diào)整元件坐標(biāo)面分別與組件的坐標(biāo)面對(duì)齊來(lái)實(shí)現(xiàn)。

(2)坐標(biāo)。在構(gòu)建組件的過(guò)程中,不可能每一個(gè)元件的平面都與組件平面重合,這就要通過(guò)設(shè)定偏距來(lái)解決,也即是設(shè)定元件的坐標(biāo)值。以構(gòu)造模座為例,最多只能有一個(gè)元件的坐標(biāo)面與組件坐標(biāo)面完全重合。設(shè)定坐標(biāo)的方法:先設(shè)定函數(shù)ProAsmcompconstraintTypeSet的第二個(gè)參數(shù)為PRO_ASM_ALIGN_OFF或者PRO_ASM_MATE_OFF(對(duì)齊方式若是align則選擇前者、若是mate則選后者),然后再通過(guò)函數(shù)ProAsmcompconstraintOffsetSet()來(lái)設(shè)定具體的偏距值的大小。一次只能設(shè)定一組對(duì)齊平面的偏距,在模座構(gòu)造中需要設(shè)定三次才能限定好單個(gè)元件在模座中的具體位置。給定元件的三個(gè)坐標(biāo)值后,元件在組件中的具體位置也就固定。

    (3)參數(shù)化。在構(gòu)建組件時(shí)元件的尺寸大小需根據(jù)實(shí)際需要來(lái)設(shè)定。按照效率優(yōu)先原則不可能在proe中把每一個(gè)需要的尺寸都設(shè)計(jì)好;每種元件只需要設(shè)計(jì)一個(gè),然后可以在程序中把具體尺寸賦給相應(yīng)的參數(shù)來(lái)自動(dòng)再生所需的元件。以模座為例,當(dāng)設(shè)定好圖2所示的元件的長(zhǎng)、寬、高三個(gè)參數(shù)后,只要給定不同的參數(shù)值,模座的上底板、下底板、模腳、A/B板等都可以通過(guò)此元件再生來(lái)生成,這就極大地提高了設(shè)計(jì)效率。需要設(shè)定參數(shù)的名稱以及各個(gè)參數(shù)之間的約束關(guān)系,設(shè)定好參數(shù)名稱后可以調(diào)用函數(shù)ProParameter ValueSet()來(lái)設(shè)定具體的參數(shù)值的大小。

3 構(gòu)建組件所需要的函數(shù)及核心代碼

    下面列舉出在本方法構(gòu)建組件時(shí)所用到的函數(shù)及其功能:

    (1)ProAsmcompAasemble():用來(lái)向組件或二級(jí)組件的初位置添加元件;

    (2)ProArrayAlloc():用來(lái)申請(qǐng)內(nèi)存空間;

    (3)PmAsmcomppathlnit():用來(lái)初始化ProAsmcompath的結(jié)構(gòu);

    (4)ProModelitemByNamelnit():用來(lái)獲取單個(gè)模型的成員句柄;

    (5)ProSelectionAlloc():用來(lái)申請(qǐng)空間以及將成員句柄填入到數(shù)組;

    (6)ProAsmcompconstraintA11oc():用來(lái)中請(qǐng)組件約束結(jié)構(gòu)的內(nèi)存空;

    (7)ProAsmcompconstraintTypeSet():用來(lái)按照約束條件設(shè)置約束;

    (8)ProAsmcompconstraintOffsetSet():用來(lái)設(shè)置偏距值;

    (9)ProAsmcompconstraintAsmreferenceSet():用來(lái)給組件按照具體約束設(shè)置好約束引用和方向;

    (10)ProAsmcompconstraintCompreferenceSet():用來(lái)給元件按照具體約束設(shè)置好約束引用和方向;

    (11)ProArray0bjectAdd():用來(lái)向?qū)ο髷?shù)組中添加設(shè)置好的約束引用和方向;

    (12)ProAsmcompConstraintsSet():用來(lái)向組件中添加約束數(shù)組;

    (13)ProArrayFree():用來(lái)釋放ProArray結(jié)構(gòu)。

核心代碼:

Pro/TOOLKIT二次開發(fā)的高效構(gòu)建組件proe產(chǎn)品設(shè)計(jì)圖圖片1

    程序執(zhí)行后會(huì)將名為name_prt[1]的元件添加到組件中,并限定此元件的三個(gè)坐標(biāo)面front、top、right分別與組件的三個(gè)坐標(biāo)面asm_front、asm_top、asm_right對(duì)齊,且偏距分別為0。當(dāng)要調(diào)入其他的元件,只需要修改參數(shù)name_prt[1]。當(dāng)依次調(diào)入構(gòu)建模座所需要的元件時(shí)即可生成一個(gè)完整的模座。極大地提高了模座的設(shè)計(jì)效率,有效地縮短了模具的設(shè)計(jì)周期。


開放分享:優(yōu)質(zhì)有限元技術(shù)文章,助你自學(xué)成才

相關(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) 運(yùn)動(dòng)仿真 

編輯
在線報(bào)名:
  • 客服在線請(qǐng)直接聯(lián)系我們的客服,您也可以通過(guò)下面的方式進(jìn)行在線報(bào)名,我們會(huì)及時(shí)給您回復(fù)電話,謝謝!
驗(yàn)證碼

全國(guó)服務(wù)熱線

1358-032-9919

廣州公司:
廣州市環(huán)市中路306號(hào)金鷹大廈3800
電話:13580329919
          135-8032-9919
培訓(xùn)QQ咨詢:點(diǎn)擊咨詢 點(diǎn)擊咨詢
項(xiàng)目QQ咨詢:點(diǎn)擊咨詢
email:kf@1cae.com