原帖地址:http://www.ugufun.com/?p=131
; u) z/ x' f& n7 [" U8 D7 u+ H6 L
1 l. e. t7 U* C8 p2 t* h所有的ug对象类型都通过它们唯一的标识tag来引用,这些UG对象分类如下:
( w* q% j8 D7 A: u0 S2 x( y# s- s3 z. j% ?
Parts
& s1 ]) h7 S* P( K0 m' BUF objects(uf_object_types.h中说明的)
* ~* Q" A- _/ D. r# u2 BExpressions(表达式)* m1 E* L& g8 u9 S1 v8 B F6 ~
对每一类对象,都有UG/OPEN API中明确的函数对它们进行操作。
5 j8 ], V# _9 P" E6 \" u7 Y3 A; \. }! k- ~! X% U! {0 L
Parts
9 h! G! Z; x1 k% A) d& v对每一个加载到UG环境中的part文件,都有一个关联的part object代表它, 也为每一个part object分配一个tag(标记符)。
: i; Z: G m; @9 m
* R t" q: ^# L$ T. y( \# I1 P一个UG part 文件 (以 .prt 扩展名的二进制文件) 是UF objects, expressions, and Parasolid objects永久保存之地。另外UG part 文件还包含下列内容:
! J) Y+ \9 V% l: X$ x' J
/ E9 W' p) U! Q: r, q6 f) N创建part的计算机类型
' O e# z7 @0 @% a8 D3 R保存part的UG版本( u/ e: l# V7 I- i( {' f9 ^
part的历史 (i.e. a log of when the part was saved, by what program, etc.)
9 t9 |! _6 d, T状态、描述和用户区的可永久保存在part文件中的信息。' z2 w1 d& H, |9 Z0 X0 E9 u6 n1 K9 t
在part中查询objects。
7 s7 v0 [( s) Q/ G4 {* ]7 s对Parts操作的函数2 m6 G8 [* S+ w
UF_OBJ_cycle_objs_in_part
3 r' G! w; y7 y! \) K: G# V2 t5 R+ l4 `3 r$ C# Z" T
访问part的属性。
* r1 d6 w) \; }. E8 P: M4 EUF_ATTR_ask_part_attrs: x! W8 y! C: K+ z7 Y8 |
6 h9 C# [* m# `. F2 [0 R关闭和再打开part。2 j: h2 Q; s) w/ ?' K3 I
UF_PART_close 和 UF_PART_reopen6 I' c3 X& r. K7 ^$ {+ M# I5 P
8 n+ W% d$ j& U! N/ {9 J) ?) l! M
获取part的文件名。
) _: y2 h" H: @8 FUF_PART_ask_part_name7 R) T: L; l7 S" K! I6 \
8 ?8 ~& z0 B$ n1 @4 t% _5 e6 y
查询其它信息。
, x: B' k/ `! K" T. ]0 k' R3 VUF_PART_ask_customer_area, UF_PART_ask_description, UF_PART_ask_status
1 \( b: X$ q! G' R4 y3 |7 l; @- m0 T& E% z2 Z# j+ n
设置状态、描述等信息。; j. H8 f8 i( m1 \/ D, e
UF_PART_set_customer_area, UF_PART_set_description, UF_PART_set_status
8 |/ W( }1 r) ]
! g+ G* u8 C! H# V8 ~0 s. N7 a: S查询part的历史。
- x- w4 {. h+ d- I0 \! e* p% \UF_PART_ask_part_history 等 x: d2 |" L( ^8 A
6 f3 x2 W; a0 O* z( D& ~0 rcompressing parts。
* ^( N. l- q& w! `/ ~0 vUF_PART_ask_compression_flags 和 UF_PART_set_compression_flags
, i) c5 p0 y- o; H! g6 O- W- J. X: J# I. @# J; w6 l# m) b
装配意义下的part对象* D4 ~9 y1 i1 F/ J
装配概念和术语# X) x) {; R5 S8 @- f% u: p
在装配环境中总保持只有一个part是当前活动的,它叫work part. 用户创建的所有UF对象、表达式等都是在work part中创建。
2 S5 [# p6 R8 i8 q6 H
( }3 |& D ?0 {8 I此外还有一个叫display part的概念. 在UG的某一应用(如Modeling)时display part 和 work part 可以不同。
& |# Z' A) t. s$ `7 Q0 N5 E( _ D( U" I2 c* j: `8 T
一个装配件(assembly part)包含components(组件). Components 是其它的UG的parts 并且这些parts可以被装配在它们自己中。2 z" ]( {7 {4 i/ s# g$ U
/ f* j2 j9 U1 M$ d: }( C' X
Components 通过 instances 在 assembly 中存在。 instance 描述component在assembly中的方位(父子关系)。
2 i4 ]& p0 S5 c6 \% m& P8 ^4 j5 K7 I G& v( _1 m$ ^0 s
例如: if we have a car that has two axle sub-assemblies (a front and a rear) and each axle sub-assembly has two wheels (a left and a right), then the car assembly has two instances of the axle sub-assembly, and the axle sub-assembly has two instances of wheel. The instances of the axle sub-assembly in the car describe how to position the axles in the car. The instances of the wheels in the axle sub-assembly describe how to position the wheels in the axle sub-assembly.3 h2 `$ {8 J/ x( |
( w) ]4 N7 p4 P9 s# w2 @
另外还有part occurrences。part occurrence 描述在全局的assembly中怎样定位一个单独的component。1 `6 }! \9 K7 X% F
2 J) O1 ^) C8 U; dFor example: in the car assembly above, there would be four part occurrences for the wheels. The part occurrence in the car for the right front wheel would be created from the combination of the orientation of the front axle to the car and the orientation of the right wheel to the axle.' W+ [, ?0 S5 c: K/ N+ d& W
- p4 @# S) o, y
Instances 和 part occurrences 也是由tags标识。 特别地,它们是UG对象中UF object中的part类: instance 是 UF_occ_instance_type,part occurrence是UF_component_type,UF_part_occurrence_subtype.因此, instance和part occurrences 共享 适用于 UF objects的函数。
: y& e( h; r# I( p! x2 T
5 X8 c$ t6 Q6 c! Z' A, V# f" [1 R# O$ p0 X, x7 n& W" p$ g
! C C1 H& \5 D; d+ O
查询display part 或 work part 。' a P& Y" s' `- a# B9 ~
UF_PART_ask_display_part 和 UF_ASSEM_ask_work_part
0 a& h# t0 U. d2 x. \1 [
# V: z9 \% ?2 \$ d2 B) l设置 display part 或 work part 。
1 _( c% D* z7 V# Q5 M. s; wUF_PART_set_display_part 和UF_ASSEM_set_work_part
" ~0 D, E2 V$ \5 T; U/ t1 I' }& b" y, x' J3 z" D {4 S: O
These routines set the display or work part. There is a side effect when the display part is set and restrictions on setting the work part:4 A. i1 \+ F p$ X& L2 O: Q" g+ L, b
# y' d" Q- E$ Z/ eAs a byproduct of setting the display part, Unigraphics resets the work part at the same time. There is one exception to this rule: if the new display part contains the old work part and the Retain Work Part assembly preference is set, the work part does not change as a result of this action.
4 R; D, Q4 K: V; W% OYou are not allowed to set the work part in interactive Unigraphics while in certain application modules. If an application module does not support setting the work part in interactive Unigraphics, you cannot set the work part using UF_ASSEM_set_work_part.
# A s; a6 O1 |# V/ h' J2 H增加一个 part 到一个 assembly中。* c" z0 }( F6 t1 m
UF_ASSEM_add_part_to_assembly [对存在的part] 或 UF_ASSEM_create_component_part [对新的 part]
& H6 O4 }0 ?# h- E( L; A/ D) @# A5 f4 Q, I$ y
从一个 occurrence tag 得到part tag。+ X, G# J& k, @& Y
UF_ASSEM_ask_prototype_of_occ
6 `0 C& Z3 m6 x( v
; w8 q1 B3 p- u/ r4 ] W! i( T在一个part中查找 instances。5 J) f1 G; p- B- u7 n
UF_ASSEM_cycle_inst_of_part% u1 |' m- U/ a+ f* O9 y f
|