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