|
1 引言" v; _0 t; x h" n. K4 _" p# n
傳統(tǒng)的藥筒設計是一個相當煩瑣的過程,設計人員被動地往返于公式和手冊之間,,借助計算器一點一點地計算,。這當中有任何失誤都必須從頭再來,,即使計算過程中沒有任何失誤,當計算結(jié)果不合適時,,一切也必須從頭再來,。一個熟練的設計人員,在藥筒設計過程中,,簡單的計算一遍就需要一個星期以上時間,。如何使這一設計過程變的簡單、直觀,,對設計人員來說十分迫切,。針對這一問題,本文給出了基于Pro/ENGINEER快速建模并結(jié)合炮用發(fā)射藥筒理論設計的約束條件,,給出了快速設計的方法及實例,。 ]9 l! C/ K% T; Y& Y2 K: n( O# r
2 炮用發(fā)射藥筒結(jié)構(gòu)分析及建模的約束方程
4 D* E7 V( T4 g8 {
2 z6 T- M6 s3 C N 藥筒的設計與火炮、彈丸及裝藥設計密切相關(guān),。本文以配制式火炮為例,。藥筒的設計主要受藥室形狀及彈丸結(jié)構(gòu)限制[1]。
" `8 b: `9 N4 r9 L6 g( `5 X# G 圖 1 火炮藥室結(jié)構(gòu)示意圖 主要結(jié)構(gòu)尺寸計算公式如下:
/ [; C& Q) w: ff1 : Dk=Dd-2U0k f2 : Lk=(0.20 ~ 0.30)d f3 : d k=Dk-2tk ! q) o' `' f% ]. n
f4 : Dy=Dj f7 : Dj=Da-2U0j f8 : Ly=La
3 x: I+ b1 P1 F6 yf9 : td=(0.06 ~ 0.15)Dj f10 : ty=Sp-x08 a$ t8 n Q8 I$ t, t$ {
式中:- _. x3 U0 i/ h9 ~2 Q& Q
Dk—筒口部外徑,; U0k—口部初始間隙,;' s' r6 n) b9 t: [, j! r4 c8 }
dk—口部內(nèi)徑,; la —接際部初始間隙;
& R* ?0 r) q6 B/ xDj—接際部直徑; Lk—口部長度3 q$ W3 W2 E2 W0 q. R: M, ]3 q( Q
U0j—接際部初始間隙,; Ly—筒體外部長度
, k2 O8 x% h$ otd—底部厚度,; ty.—底緣厚度;
- t5 M `5 F7 F& tSp—炮栓鏡面至藥室尾端面距離,; x0—藥筒地平面與栓體鏡面的初始間隙,; " h" w9 H2 v) P( Z$ j2 |
這些方程中共有12個已知參數(shù)(Dd、U0k,、d,、Dj、U0x,、lb,、la、Da ,、U0j ,、La、Sp,、x0)和8個未知參數(shù)(Dk,、dk、Dy,、Dj,、Ly、td,、ty,、Lk),已知參數(shù)由設計者給定,。當改變了已知參數(shù)時未知參數(shù)也隨之改變,。 % K. }* c! s: G w% ~8 T/ T8 X
可以通過約束圖利用圖解法解出未知變量[2]。藥筒的結(jié)構(gòu)尺寸示意圖如圖3所示,。
5 @7 r& }! i7 [' i6 Y; M9 V
: p- Q% K$ A% U l; X圖2 方程約束網(wǎng)絡圖 - S& F3 b) z; q: O9 |* c" V
圖3 藥筒的結(jié)構(gòu)尺寸示意圖 3 快速建模實現(xiàn)方法( C R w& B7 A3 O
快速建模就是通過輸入?yún)?shù),,由Pro/ENGINEER系統(tǒng)快速產(chǎn)生模型的過程,模型的相關(guān)屬性也可自動給出,。Pro/ENGINEER提供了強大的用戶二次開發(fā)程序包Pro/Toolkit,,通過它可以直接對Pro/ENGINEER的數(shù)據(jù)庫進行操作。本文即以Pro/Toolkit為開發(fā)工具,,實現(xiàn)了藥筒的快速設計與建模,。Pro/ENGINEER的快速建模二次開發(fā)包括以下幾部分[3]。6 B6 h- K8 J: P. X, q& g5 a5 f
3.1 用戶接口
( P. M8 {- Y# C 用戶接口是人機交互的界面,,它包括菜單及菜單文件兩部分,。菜單文件擴展名為*.mnu或*.aux,。*.mnu菜單完全獨立于已有菜單,*.aux則附加于已有菜單,。菜單文件有固定格式,每組數(shù)據(jù)分三行,,每一個菜單按鈕對應一組數(shù)據(jù),。菜單文件為純文本文件。$ O9 e) z2 ]8 |, B+ m
3.2 信息文件% O3 w: ^$ x4 ^- j/ G1 `. j
信息文件包括了類型無關(guān)菜單以及數(shù)據(jù)輸入提示等所有文本信息,,它和菜單文件一樣,,也是使用表單的形式,每四行為一組,。使用表結(jié)構(gòu)的好處是當需要改動程序顯示時,,可以只改動信息文件,而不必改動原程序,。
; k" z8 V* l5 m4 x2 W3.3 程序接口
P0 p0 T2 v% z2 K2 R* w& o在Pro/Toolkit中,,其函數(shù)結(jié)構(gòu)一般如下:1 U& D X7 n5 a. q+ p. i g- Y
User_Appone() { } 用戶功能函數(shù)
5 |: J7 i- w# O: H# sUser_Apptwo() { }
( N* W6 m: H+ u+ c5 ^% t......
: f" J0 N h' |User_initialize() { ...... } 程序入口, l9 |4 U0 ^1 I# k" Z. x' G
User_terminate() { ...... } 程序出口
! t4 c4 L) R! x% h8 ]4 |4 q 其中,入口函數(shù)和出口函數(shù)是必須的,,其他函數(shù)則是用戶定義函數(shù),,用以實現(xiàn)一定的功能。
3 ^9 ?* ~& s/ V, m0 l" a3.4 注冊文件' V) u4 ?8 g" \8 C% H* W/ }6 ]7 i
注冊文件用以指明程序運行模式,、資源位置以及程序運行版本等,。其中,運行方式包括多線程和動態(tài)連接庫兩種,。第一種方法的好處是調(diào)試比較容易,。第二種方法的優(yōu)點是運行速度較快,生成的文件比較小,。
^( I; \* f, W' A3 R% ~3 E3.5 編譯平臺
) F) k* y- n2 i# b 程序的編譯需要第三方編譯平臺,,如TC、Mircosoft C等,。選用了Mircosoft公司的Visual C++ 6.0作為編譯平臺,。利用Visual C++ 6.0的強大功能使得數(shù)據(jù)管理方便,調(diào)試輕松直觀[4],。
% K+ l2 Z' C4 p4 藥筒的快速建模
" Q$ l' f* @% M6 u! T& d! n (1)在參數(shù)輸入方面,,使用了菜單結(jié)合對話框的方式,參數(shù)輸入方便直觀,。菜單結(jié)構(gòu)如圖4所示,。Yaotong Design是在Pro/ENGINEER的Part菜單上添加的系統(tǒng)菜單,這樣既可以實現(xiàn)用戶特定功能,,又可以利用Pro/ENGINEER平臺的強大功能,,方便用戶設計,。在模型的實現(xiàn)方面,采用了基于UDF的二次開發(fā)技術(shù),,可以顯著地降低開發(fā)的工作量,,提高開發(fā)靈活性。
& {& @) y2 S3 r! V/ g / ?. t. h9 Y# }
圖4 藥筒設計菜單系統(tǒng) (2)模型的接口程序和實現(xiàn)程序,。以下為藥筒快速建模程序入口和出口,,它注冊了菜單文件以及響應函數(shù)。& J; A8 ?4 h$ k" C9 P* A5 \
user_initialize()& r. w9 E$ Q7 J$ P* Z# B1 I
{ int menu_id ,,err;( g, z; [1 z9 t: o& H4 S: K0 }! u
ProMenuFileRegister("PART",,"part. mnu",&menu_id);
$ e: C# |4 X: A! fProMenuAuxfileRegister("PART",,"part.aux",,&menu_id); $ x. v& s7 r" D2 W
err=ProMenubuttonActionSet("part","_YaotongDesign",,(ProMenubuttonAction)UserYaotongSystem,,NULL,0); : L) [/ x. w3 X3 l! D/ {; Y' K
return(0); }/ U% ^5 O7 T+ m
void user_terminate(){} ,; 5 H! K6 C4 w6 H
以下為藥筒建模實現(xiàn)程序,,它定義了UDF文件及驅(qū)動參數(shù)等。+ o' Q. K3 h! s9 A9 E
UserYaotongCreate(){ ......3 x/ E! H( A# ^# i# |
ProStringToWstring(data.name,,"yaotongudf.gph"); 指定UDF文件
! s* @: a5 \% c' G5 g- X( C( m& _ data.n_var_dims=15;4 M; s' F& F5 h
data.var_dims=(Pro_udf_var_dim*)calloc(15,,sizeof(Pro_udf_var_dim));7 I D* f, b9 T
ProStringToWstring(data.var_dims[0].name,"YTJ_zg"); 變量賦值
$ q& D! i/ b0 w8 E2 Q, W data.var_dims[0].type=PROUDFVAR_DIM;
% v$ e$ H) k0 X% |7 t data.var_dims[0].value=_YTJ_zg; * }( [ V) R1 Q- D" G3 i4 \
......
1 ^6 {" H) n/ }' t data.n_references=0; 指定參考基準
1 U; Q: I# t5 V8 e0 ~. ]/ z data.dependency=PROUDFDEP_INDEPENDENT; 指定模型獨立性5 J: |5 @: D7 n& V
prodb_create_group(p_model,,&data,,NULL,NULL,,0); 創(chuàng)建模型
f- t0 Y, Z# b: ]; P) M& | ProWindowRepaint(PRO_VALUE_UNUSED); 顯示模型
5 ^% O# t% z2 y2 T, y4 h8 z# l free(data.var_dims);
$ O2 \" B/ i ~( t" ~0 s. X: L: V2 U return(0); }
' ~0 }7 ?1 w' ^5 w9 ]& l& g# h) _+ s通過以上方法產(chǎn)生的模型如圖5所示,。
& d) i" N& z! C+ _ ' l ?7 Z3 M/ v# I0 C* ]5 s+ K, a
圖5 藥筒實體模型
/ }( M0 s" e7 x% t! P圖6 藥筒幾何參數(shù)輸入界面 在藥筒模型生成以后,可以通過以下兩種方法修改編輯藥筒的尺寸:(1)可以直接用鼠標雙擊需要修改的特征,,選中需要修改的尺寸即可進行交互式尺寸修改和編輯,。修改后的效果可以迅速從模型上反映出來。(2)通過幾何參數(shù)輸入對話框輸入要修改結(jié)構(gòu)的尺寸數(shù)值來完成對尺寸的修改,。參數(shù)輸入對話框如圖6所示,,直接輸入需要修改參數(shù)的新數(shù)值即可。 ( O2 V& K0 h! h/ x4 N# [. }
5 結(jié)束語3 N. |" |$ D x- f N9 D4 F
利用快速建模技術(shù),,可以大幅度提高設計效率,,減輕設計人員的勞動強度,縮短產(chǎn)品設計周期,,可使產(chǎn)品的設計變的直觀,、輕松,,可在產(chǎn)品設計的初期易于發(fā)現(xiàn)設計缺陷。產(chǎn)品可以方便地通過PDM系統(tǒng)進行管理 |
|