|
1 引言
]( O2 n2 C1 d7 n0 }0 P 傳統的藥筒設計是一個相當煩瑣的過程,設計人員被動地往返于公式和手冊之間,借助計算器一點一點地計算。這當中有任何失誤都必須從頭再來,即使計算過程中沒有任何失誤,當計算結果不合適時,一切也必須從頭再來。一個熟練的設計人員,在藥筒設計過程中,簡單的計算一遍就需要一個星期以上時間。如何使這一設計過程變的簡單、直觀,對設計人員來說十分迫切。針對這一問題,本文給出了基于Pro/ENGINEER快速建模并結合炮用發射藥筒理論設計的約束條件,給出了快速設計的方法及實例。
% `7 h: h) h8 f) z E/ |$ Y7 v2 炮用發射藥筒結構分析及建模的約束方程
r) {' I0 D$ J$ j' |* z % W. G. `; _" Q
藥筒的設計與火炮、彈丸及裝藥設計密切相關。本文以配制式火炮為例。藥筒的設計主要受藥室形狀及彈丸結構限制[1]。
" ], m% p8 c7 T& ?# ~( u 圖 1 火炮藥室結構示意圖 主要結構尺寸計算公式如下: 1 q/ A. ?+ l* i9 J, [6 {" n
f1 : Dk=Dd-2U0k f2 : Lk=(0.20 ~ 0.30)d f3 : d k=Dk-2tk
8 h* j* w! l; G2 ~& x7 ~f4 : Dy=Dj f7 : Dj=Da-2U0j f8 : Ly=La$ _5 b5 x4 D' m! u ~6 X/ S- q
f9 : td=(0.06 ~ 0.15)Dj f10 : ty=Sp-x0
3 I2 j& N8 `- J" w' E/ `) w5 o% G式中: Q( E6 ^ a2 h
Dk—筒口部外徑; U0k—口部初始間隙;/ V; R+ y# h+ o% h2 m* [8 d6 ?
dk—口部內徑; la —接際部初始間隙; 2 A5 M+ b0 G6 Z2 |/ x% _3 [
Dj—接際部直徑; Lk—口部長度3 f+ M7 x: l- ~& `
U0j—接際部初始間隙; Ly—筒體外部長度3 z/ p3 N) m# r9 X9 {8 r% y' \
td—底部厚度; ty.—底緣厚度;
- H0 e) x* M& W! @* ~Sp—炮栓鏡面至藥室尾端面距離; x0—藥筒地平面與栓體鏡面的初始間隙;
& F! d9 @& g$ m$ t" ~' k. X1 a 這些方程中共有12個已知參數(Dd、U0k、d、Dj、U0x、lb、la、Da 、U0j 、La、Sp、x0)和8個未知參數(Dk、dk、Dy、Dj、Ly、td、ty、Lk),已知參數由設計者給定。當改變了已知參數時未知參數也隨之改變。 1 D* o$ z0 W, a+ H1 b9 O: z. } T# V) h
可以通過約束圖利用圖解法解出未知變量[2]。藥筒的結構尺寸示意圖如圖3所示。( Y9 m1 x; ?$ ^; O# ?
$ E2 p' r# j6 p( T圖2 方程約束網絡圖 d ?6 M# j; B- x/ z, ~
圖3 藥筒的結構尺寸示意圖 3 快速建模實現方法
) S8 \- Z) G0 y; t; A. r p# o 快速建模就是通過輸入參數,由Pro/ENGINEER系統快速產生模型的過程,模型的相關屬性也可自動給出。Pro/ENGINEER提供了強大的用戶二次開發程序包Pro/Toolkit,通過它可以直接對Pro/ENGINEER的數據庫進行操作。本文即以Pro/Toolkit為開發工具,實現了藥筒的快速設計與建模。Pro/ENGINEER的快速建模二次開發包括以下幾部分[3]。
6 L: ?" Y( t) G9 i: y: b6 |3.1 用戶接口
! m* a2 I6 o- C& J$ ~ 用戶接口是人機交互的界面,它包括菜單及菜單文件兩部分。菜單文件擴展名為*.mnu或*.aux。*.mnu菜單完全獨立于已有菜單,*.aux則附加于已有菜單。菜單文件有固定格式,每組數據分三行,每一個菜單按鈕對應一組數據。菜單文件為純文本文件。
: Q4 v" i# G! B3.2 信息文件
1 N) H9 ?, G0 X' [3 C2 u2 u3 C 信息文件包括了類型無關菜單以及數據輸入提示等所有文本信息,它和菜單文件一樣,也是使用表單的形式,每四行為一組。使用表結構的好處是當需要改動程序顯示時,可以只改動信息文件,而不必改動原程序。
5 D; {1 @2 O! x) O* t6 ]3.3 程序接口
9 q$ I# k4 o1 u在Pro/Toolkit中,其函數結構一般如下:
3 _6 r+ a4 J& x7 n3 VUser_Appone() { } 用戶功能函數
4 D1 }( J$ G5 F$ s% n# CUser_Apptwo() { }; x/ @5 K/ K( {" `& K
......
2 ^; O. n' o6 m+ S, C) h8 mUser_initialize() { ...... } 程序入口6 {* c8 }' g& v2 O
User_terminate() { ...... } 程序出口
M0 W5 g: f3 i( N% ~1 u 其中,入口函數和出口函數是必須的,其他函數則是用戶定義函數,用以實現一定的功能。
/ | Z3 c8 {+ p( k9 y. O3.4 注冊文件0 t! S" B" b" P% i: H- l% K v9 H
注冊文件用以指明程序運行模式、資源位置以及程序運行版本等。其中,運行方式包括多線程和動態連接庫兩種。第一種方法的好處是調試比較容易。第二種方法的優點是運行速度較快,生成的文件比較小。
! r. J1 ?' V, }: U# A3.5 編譯平臺2 W( a! }) v6 k8 f6 D5 j# q4 ~
程序的編譯需要第三方編譯平臺,如TC、Mircosoft C等。選用了Mircosoft公司的Visual C++ 6.0作為編譯平臺。利用Visual C++ 6.0的強大功能使得數據管理方便,調試輕松直觀[4]。
; a/ a2 X! h9 [( Z6 j4 藥筒的快速建模
/ T6 ^3 ^3 o4 h# h5 V1 l- Q (1)在參數輸入方面,使用了菜單結合對話框的方式,參數輸入方便直觀。菜單結構如圖4所示。Yaotong Design是在Pro/ENGINEER的Part菜單上添加的系統菜單,這樣既可以實現用戶特定功能,又可以利用Pro/ENGINEER平臺的強大功能,方便用戶設計。在模型的實現方面,采用了基于UDF的二次開發技術,可以顯著地降低開發的工作量,提高開發靈活性。
3 U% t* _8 _8 _# `
, s [ {2 l- P5 p( t/ p圖4 藥筒設計菜單系統 (2)模型的接口程序和實現程序。以下為藥筒快速建模程序入口和出口,它注冊了菜單文件以及響應函數。
* ?) h* q: i! L: Q; `: t3 A0 ]user_initialize()
+ U; ]. f5 X6 t+ G8 k, Q" [0 b{ int menu_id ,err;* D4 i5 Y8 x+ b0 d( k; f: K; k$ x0 G
ProMenuFileRegister("PART","part. mnu",&menu_id); + W( W, {2 F. e# a3 E7 w
ProMenuAuxfileRegister("PART","part.aux",&menu_id); ' ]# d; K& F; l
err=ProMenubuttonActionSet("part","_YaotongDesign",(ProMenubuttonAction)UserYaotongSystem,NULL,0); / x& D* O5 d, z- z( e
return(0); }8 t7 C. m# _( X, e
void user_terminate(){} ;
' v( Q& \' E. N( y3 k' C以下為藥筒建模實現程序,它定義了UDF文件及驅動參數等。, e( A: ?* K/ \- x0 [2 l9 e
UserYaotongCreate(){ ......" p. [: c' f/ r \( T+ K
ProStringToWstring(data.name,"yaotongudf.gph"); 指定UDF文件
@- K6 D/ B3 k+ m# x( t+ w8 i data.n_var_dims=15;
" S" |2 v; j* A/ E1 z9 M data.var_dims=(Pro_udf_var_dim*)calloc(15,sizeof(Pro_udf_var_dim));$ T9 |, `" l9 T8 J9 m& u; y
ProStringToWstring(data.var_dims[0].name,"YTJ_zg"); 變量賦值
# z! Z( s z- h1 J8 ~ data.var_dims[0].type=PROUDFVAR_DIM;
8 n% A/ \ k1 s data.var_dims[0].value=_YTJ_zg;
C- d5 G) B. k* P/ z' L# m ......) B" g# @' [: t# b
data.n_references=0; 指定參考基準 2 t d: f9 e- M! U. C: v( p( [8 b
data.dependency=PROUDFDEP_INDEPENDENT; 指定模型獨立性
& O0 U9 M' U) k9 M prodb_create_group(p_model,&data,NULL,NULL,0); 創建模型
2 |9 {6 t4 h# T- t5 S" C; L8 q5 L ProWindowRepaint(PRO_VALUE_UNUSED); 顯示模型
0 t/ H* Y, o6 n. [8 a$ p) I: p1 ~$ N5 d4 m free(data.var_dims);
% j: j7 j: H6 w, r7 K return(0); }
8 W. X+ E: z1 ]7 d通過以上方法產生的模型如圖5所示。
# }/ I& u$ E: H: A* q5 Y & `$ t2 @8 h0 H# o' w3 I
圖5 藥筒實體模型
/ q/ x: ?9 T7 l: l) I) o圖6 藥筒幾何參數輸入界面 在藥筒模型生成以后,可以通過以下兩種方法修改編輯藥筒的尺寸:(1)可以直接用鼠標雙擊需要修改的特征,選中需要修改的尺寸即可進行交互式尺寸修改和編輯。修改后的效果可以迅速從模型上反映出來。(2)通過幾何參數輸入對話框輸入要修改結構的尺寸數值來完成對尺寸的修改。參數輸入對話框如圖6所示,直接輸入需要修改參數的新數值即可。 " k( c( N; C8 s- A) V
5 結束語2 I# G8 c- [0 u) ^! U
利用快速建模技術,可以大幅度提高設計效率,減輕設計人員的勞動強度,縮短產品設計周期,可使產品的設計變的直觀、輕松,可在產品設計的初期易于發現設計缺陷。產品可以方便地通過PDM系統進行管理 |
|