|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
. [9 N0 s+ P, a8 QNX二次开发源码分享:报告装配加载状态,设置装配加载
3 d# {5 h7 b& u! m$ O6 s1 E& U7 m/ {! p! n7 F
获取Load Options 并进行处理!8 Z1 D7 n0 i" v# V
# ]' j( l" @& X% w) P[mw_shl_code=c,true]#include <stdio.h>* r& E- J; K* f' x
#include <string.h>
( w: u5 d' t/ z; |! R#include <uf.h>
' w5 K2 e# Q% X/ `9 l) ^' d e#include <uf_ui.h>
8 f5 D, s+ c, e' W- j- `2 G#include <uf_assem.h>
7 ?: u- U7 A/ Q7 @) C3 _
! x) H: l8 ~. B* ^1 J2 W#include <stdarg.h>! X( B' G. {# {, h- }$ Y7 f
6 e! c( { J3 [5 o [6 N0 k* f9 S' P! J
static void ECHO(char *format, ...)
3 c0 k% D6 [: i) Z" v r{
7 q& q. e! r$ J' S, _ char msg[UF_UI_MAX_STRING_LEN+1];( }. S7 u: C' ?5 R
va_list args;
5 |" |1 E1 I5 q* f7 A+ S va_start(args, format);
) _2 I# W" |% W- g/ Y vsprintf(msg, format, args);& p3 _1 g1 s" z! p& [2 |5 @
va_end(args);' e8 I- E- k0 N7 a" z- e
UF_UI_open_listing_window();
4 K+ M0 J* e, M$ [0 Z. w( c UF_UI_write_listing_window(msg);
; y3 U+ H# M3 m5 B% g UF_print_syslog(msg, FALSE);
* m9 r0 C- ]5 }; x" G}7 P/ z) f% f6 o% e
' b8 V4 g/ M; n" ]& H0 r0 j#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))# X3 s3 U# l3 ]
9 o. ]; j, s* n8 i5 ^
static int report_error( char *file, int line, char *call, int irc)) N; {, A& J8 B8 ~9 N1 O
{0 o3 f* p# U- s! R$ Z9 y) @# Q* r: w
if (irc)
/ `# D2 V6 b7 E4 Q1 Z {" N; S" n1 O# r* k- n) j3 ^
char err[133];
+ S0 B! D7 r3 J I! C
5 ~4 v% ?2 t6 [& U/ I UF_get_fail_message(irc, err);# V/ `& s$ X4 E) @/ B
ECHO("*** ERROR code %d at line %d in %s:\n",
4 j5 @7 }7 r& P5 s$ L6 W; {8 E irc, line, file);
7 n$ ?' Z$ r+ w% t4 m ECHO("+++ %s\n", err);
, S4 `6 F: O' _! O* \ ECHO("%s;\n", call);/ ~6 T. ^9 ]4 N" m2 z8 r
}
" \" H! b4 Y0 B$ F- U; b7 S( }' A, x
return(irc);; ?, o) A5 R9 @' s! L
}
}( `1 C; U6 [$ y* J' _# K8 J2 H
+ _0 S6 f& @7 G( Hstatic void report_assem_search_directories(void)6 S4 W8 z% q5 j7 y6 R# n7 i
{) _7 m* K% L- r' B
char
( x$ m# Y7 _' ^; d **dir_list;
; b) v3 ^% i; N8 @- B int
. G m7 N* W- \) @( f. m. [' h ii,( s1 x) y4 P" `
num_dir = 0;3 U8 x2 _! f" X/ k g! Q
logical) v. ~1 K/ b+ R8 ^ E X d7 a" D
*subs;
" q. x3 a/ z0 b, j% i
& A# b0 x$ Z$ W( s9 g UF_CALL(UF_ASSEM_ask_search_directories(&num_dir, &dir_list, &subs));1 ~& O6 X0 [7 K
for (ii = 0; ii < num_dir; ii++)4 a, Q* h/ ]- ~8 m' j* H+ W
{
& t) f- h0 _! e3 E0 C; {4 t( z ECHO("%s", dir_list[ii]);
. Q9 @: |" D0 H7 Y if (subs[ii]) ECHO("...");2 h4 E# z6 U# u" z! s
ECHO("\n");
% r* E3 L$ V& L7 P }$ z- P9 N# N6 j' E/ [( P) k( C7 ~
UF_free_string_array(num_dir, dir_list);6 ^1 g( ?9 m' k
UF_free(subs);
( q, B1 ~: L9 d% I}
1 s( b) K8 |* f h
/ V( U0 A+ F+ s$ z7 fstatic void report_assem_options(void)
/ U9 D4 m5 m* ?9 u{: v8 g s b$ W3 ?1 r
UF_ASSEM_options_t6 W4 B+ q1 f( c' N7 M1 ]0 T* H6 E& ]
assem_opts;; O5 b1 K& W( U: e0 D
# V) P3 Y- C% P& a
UF_CALL(UF_ASSEM_ask_assem_options(&assem_opts));8 G( L. y3 w7 \% Y5 V
7 U5 J A( Z; J3 { @" z. ]
ECHO("Part Versions\n");
" w( E( C- v* q. x9 q swiTCh (assem_opts.load_options)
5 a9 G& ^* B# d' y- X) k {. w9 S* y2 O9 `) d- ^
case UF_ASSEM_load_from_directory:
2 q8 `# E: B' r1 U% K1 b3 O {7 Y3 n ECHO(" Load = From Folder\n");
* I) B) s0 z* h break;! l0 o5 J" U3 ^) V R5 O2 ?# ]8 ^
case UF_ASSEM_load_from_search_dirs:1 c/ R( A: g2 g1 K
ECHO(" Load = From Search Folders\n");
$ t- w7 F/ V6 e9 G5 a0 w- F' z break;/ [$ n) u7 X u+ t I
case UF_ASSEM_load_as_saved:
4 r' L: Y6 d: |& r0 e3 c ECHO(" Load = As Saved\n");
7 n6 X% I L# e k6 s7 \ break; A/ D1 c: s4 e5 C9 y8 r
default:6 A, [3 a/ P( i3 k
ECHO(" assem_opts.load_options = unknown value (%d)",
% }2 e) E8 m( `- U; L. n. k assem_opts.load_options);
! k( ^9 S, p9 G' B- `) ^$ U break;
7 Q |6 }- o0 F9 y0 | }- j8 y$ g) L+ J. f/ }
$ g9 m; q' U8 _ switch (assem_opts.load_latest)
, S0 S( J) U. T( a X8 {! b {/ e! o7 l- h/ X/ b: h
case UF_ASSEM_load_exact_version:
1 A* s6 g- Y% U; B ECHO(" Load Latest = Off\n");2 U2 K! h# C9 H) X# y; f* A
break;+ d8 W% D3 T& a8 c" M$ o5 I; }7 Z
case UF_ASSEM_load_latest_version:
" W' t' t$ U& f# Z( `5 \ ECHO(" Load Latest = On\n");, G0 t6 u, h& e% A- g
break;7 k2 s$ P3 m- @8 R$ r; I8 ]! b5 m
default: ^3 A! J& b- e4 l. U! \3 |
ECHO(" assem_opts.load_latest = unknown value (%d)",+ k$ y, p# f$ Z5 @+ n) l- ~: U
assem_opts.load_latest);
- C2 E$ r5 Y% D break;5 ]9 B8 [3 p; j. @& }. n/ Z
}: Z# R2 z4 m3 J' _: ^3 f
# |1 r2 L4 t& Y2 C" I* | ]$ X
if (assem_opts.load_options == UF_ASSEM_load_from_search_dirs)! F+ f; W% r( h
report_assem_search_directories();( Y4 m4 S3 s% ]& |8 f! W2 r
5 g# E4 r6 Z* X2 y# U: E } ECHO("Scope\n");# o- ?" j, `$ b/ ]
switch(assem_opts.load_components)
% M6 i/ E2 j3 [% q {
, z2 X$ M s) y& B* v0 f3 l case UF_ASSEM_dont_load_components:, N8 M3 _5 c% i9 v- C$ H
ECHO(" Load = Structure Only\n");
, K1 }8 M$ M1 E! x2 G$ U% v) } break;
2 W) a, W! u4 o case UF_ASSEM_do_load_components:
) K1 J7 @% m3 e* o! T7 c ECHO(" Load = All Components\n");( J8 U* l' N4 x1 [; q& n! {3 k C
break;
% d+ S: M& Y" F! q+ Z% x5 z- d case UF_ASSEM_use_last_component_set:
5 n6 e3 s7 u' Y4 g ECHO(" Load = As Saved\n");
4 V+ |& F& v/ t1 C" L( L break;; O. p0 Z8 r) }6 N% G; h
case UF_ASSEM_use_last_filter:2 L* @8 D" J, O) M2 u7 a
ECHO(" Load = Re-evaluate Last Component Group\n");
: a1 e3 h' H8 E break;
: |1 r* o& q$ A- ^) c! p3 D case UF_ASSEM_specify_filter:+ z& \- |& [/ K6 \
ECHO(" Load = Specify Component Group\n");" S; r: \% ?7 w7 q e I
break;
9 B! D! @1 f" V6 C& J7 B default:3 W! g6 R. y1 G3 J' O: n
ECHO(" assem_opts.load_components = unknown value (%d)",2 @) W8 Z1 L3 |
assem_opts.load_components);0 R! D1 [1 |2 n9 o% R
break;7 k% h/ g( j. x) R: r0 j, U
}
# ^; K# H7 u/ I" b$ L' [
% c; {( p, s" \1 S! M9 y5 x% u5 M switch(assem_opts.load_fully)4 ~( R7 x+ V/ M( p
{2 B: F5 H/ r+ Q9 |
case UF_ASSEM_load_components_partially:
4 b x9 C# \+ f5 K: S ECHO(" Use Partial Loading = On\n");/ d. g6 d2 f" H3 W3 g G4 |$ x
break;
Y" |7 u: Z& G case UF_ASSEM_load_components_fully:- E, S! s9 N% I2 g" Q) M
ECHO(" Use Partial Loading = Off\n");! }9 F, T( v4 r. J7 |
break;
- S$ ]4 x" W* ~/ d; b4 r2 n default:
1 Z, J# R. J9 v4 s2 _ ECHO(" assem_opts.load_fully = unknown value (%d)",2 l& ~# r0 G8 ]. M7 ~+ k& }
assem_opts.load_fully);
( J' S" W( K; R/ b% M break;8 p) d5 J# G B8 q/ O+ R
}
) ?8 y0 e+ x1 W- f
! ~) _+ [6 G- q6 t; ]6 t1 V. ~ switch (assem_opts.load_wave_data)+ d& H/ P u! b" s/ Y8 s8 \, _
{' r6 ?5 N# W& A' W( r; _
case UF_ASSEM_load_wave_data:
. r. X. c n0 g) H ECHO(" Load Interpart Data = On\n");
/ a3 V/ |/ O# {8 l5 F: b, {7 {1 P break;8 X$ u6 H+ L+ x
case UF_ASSEM_default_load_behaviour:7 t& d0 W: k) \* @ M/ I
ECHO(" Load Interpart Data = Off\n");0 ~' A8 `' b$ G3 k/ a
break; \2 g' _: C- E6 D
default:: |+ {5 X2 {. f& b0 f6 x" i4 J
ECHO(" assem_opts.load_wave_data = unknown value (%d)",
6 Q9 @+ S* B& Q9 { assem_opts.load_wave_data);
" G0 |- |% m+ [ break;
$ c0 A5 o2 S. }3 ~" Y }$ N( x2 F% a' V5 E
8 e/ c& ~7 |) [; ? switch (assem_opts.load_wave_parents)( }! g; a0 S+ w, x
{/ @3 M/ z: Q* W% O. _
case UF_ASSEM_none:, \+ H7 E0 l, F
ECHO(" Load Parents = None\n");
, I9 \! r+ O5 ]- `, X+ e' E- r* ]9 ^ break;
, V* B2 ?2 q) r1 c: M! t) O& Y case UF_ASSEM_immediate:9 \* }. l0 g# E. u; u/ P% V0 S1 }
ECHO(" Load Parents = Immediate Level Only\n");
+ C- ~4 V4 |% v9 N: j break;/ A3 L7 g0 w# j8 C9 S
case UF_ASSEM_all:' O: w, |/ v0 N$ g* A( F
ECHO(" Load Parents = All Levels\n");' v( k! T9 O4 l4 D& k
break;5 c6 K9 n7 p" v: R) B; D5 @5 g" P
default:. b+ t9 i$ @5 E o6 y
ECHO(" assem_opts.load_wave_parents = unknown value (%d)",2 } i7 u; x4 P; P. p
assem_opts.load_wave_parents);, ^5 j2 C& _! p$ v
break;& h* y3 R* t8 f7 ]6 M+ X
}2 q; b" R3 Q" @3 S
* c" T; h8 W' Q5 O9 k* u ECHO("Load Behavior\n");% p, H d* k* [- ^8 @/ q: k
switch (assem_opts.load_substitution)/ f7 |' c% y1 e2 B( R; e4 c
{7 n& U% W% O" @$ c( z6 H
case UF_ASSEM_do_allow_substitution: `* F2 w: l/ K& e: z. t
ECHO(" Allow Replacement = On\n");: O/ @: R1 u% x- B. o
break;
5 V0 n, [7 Q; |8 ^0 u case UF_ASSEM_dont_allow_substitution:/ k8 j3 t% I/ Z0 ~4 ]
ECHO(" Allow Replacement = Off\n");
N2 |" Y5 z/ b0 K' I break;
4 A% G$ J. E& H& [. _9 U- E default:
8 W0 X4 ^% e6 h4 W9 m ECHO(" assem_opts.load_substitution = unknown value (%d)",
3 u7 L$ V0 G# Z% g assem_opts.load_substitution);
, I- `) y% a1 a l6 S; d break;
* @- r& I, p, ]6 U- J1 D }) T+ a8 |' B# W: n- x% f
; r6 c' Q& P3 j6 ^
switch (assem_opts.auto_regen_pfm_option)
! B- g7 X3 A3 {, E {
8 A1 s# s' m% M case UF_ASSEM_auto_generate_pfm:' e4 Y' S0 `/ Y' B! j& [( o
ECHO(" Generate Missing Part Family Members = On\n");! D+ d8 ~$ R9 ?7 c' e
break;
! Q5 I1 b! p( t, u case UF_ASSEM_dont_auto_generate_pfm:: N) \5 Q0 c9 J
ECHO(" Generate Missing Part Family Members = Off\n");9 v' C0 _3 k, A, d2 U, \4 O
break;7 `: z/ [) Z3 f! A$ N6 @
default:
0 K8 j4 S5 |1 _7 j1 `6 N ECHO(" assem_opts.auto_regen_pfm_option = unknown value (%d)",
, c0 j. Z, Q j$ H0 u- e assem_opts.auto_regen_pfm_option);
3 S+ I5 W- Z D* } break;
; t% k3 ~3 b3 J* I' _8 X) g; ?! o }, Y) y4 L/ j: ?2 V. y! E& ^* g* {
8 n8 { k! P6 J9 |& m5 \
switch (assem_opts.failure_action)
3 M2 O/ i9 ?/ i& L3 d {& j( T' ~% q6 l# K, w8 s
case UF_ASSEM_do_abort_on_failure:
6 T/ z0 K9 |7 ?, j ECHO(" Cancel Load on Failure = On\n");! t3 ]$ W7 K! o6 E9 E* P' E+ p
break;6 ]9 H# q" _* N% z
case UF_ASSEM_dont_abort_on_failure:
4 `! m7 c& b% C Q u$ u: x2 n ECHO(" Cancel Load on Failure = Off\n");
( Z- v& K5 v, @1 `( \ break;
9 f" T# W) K5 {1 q& f default:* y% I W! y2 Z8 e7 ?
ECHO(" assem_opts.failure_action = unknown value (%d)",
8 ^+ V% z% j/ S F+ X0 Z+ a, l f assem_opts.failure_action);
* e6 u7 c [" |4 e1 V& v. U break;6 ?. Y2 K& {3 E7 R* N. J
}
/ B2 h( p! w$ L- R; H0 ^3 p2 }& Q. E! D5 Z. @- ^6 T
ECHO("Reference Sets\n");1 I9 U* s' C0 t( d: r
switch (assem_opts.apply_to_all_levels)
3 o2 u" m! t0 u: D {
% F' g; v+ r( `# u1 K/ {8 D- V* ~% G case UF_ASSEM_do_apply_to_all_levels:
. w+ s0 @1 l# F ECHO(" Apply to All Assembly Levels = On\n");
7 p2 O' D, a3 R; g# I# v break;8 G4 L. ?# G# r4 T
case UF_ASSEM_dont_apply_to_all_levels:- m( `1 m4 o# {0 w8 q: U" u* a$ L
ECHO(" Apply to All Assembly Levels = Off\n");6 B# d% z4 u/ a2 n" ^& R( D
break;
1 x* R3 A: ~( L& X& L4 ?: X5 k default:2 u7 B( N( F Q! N/ q, P
ECHO(" assem_opts.apply_to_all_levels = unknown value (%d)",
) w7 W: N+ f8 v& x assem_opts.apply_to_all_levels);
+ r% m! t% B8 { break;
" d5 x+ H' i) a$ c1 h }
0 e8 y, C' C; A# Y- a! C I6 d- I# P F' h: {" F
ECHO("Preferences-> Assembly (misc)\n");# ]: c2 z+ U: \' ` ]! c
switch(assem_opts.emphasize)( Y0 v; ]$ z+ A* C- j1 Y7 c9 r3 }
{+ G, `+ r1 O0 h
case UF_ASSEM_do_not_emphasize_wp:& s w+ Y: y( M2 S
ECHO(" Work Part-> Emphasize = Off\n");9 o0 W( z0 t$ I8 v g
break;- q. F; e9 _& [# ^7 B3 x; K
case UF_ASSEM_emphasize_wp:
) S# J; V, a, `# p& E. c ECHO(" Work Part-> Emphasize = On\n");+ s- q$ y# g2 O' j8 L
break;
4 G' V# F. D g/ ?, B' W ? default:
: ^2 E% R$ Z: S7 M ECHO(" assem_opts.emphasize = unknown value (%d)",
d, d4 k* ]+ H. o assem_opts.emphasize);
( O9 c5 K Y/ s9 o; ^ break;
- d" y9 l! ~4 u; y }3 ]# b6 c; b$ R# S+ c4 [
7 i* y3 }+ V: D) k0 |
switch(assem_opts.maintain_work_part)" o& ~+ _; E# Y
{; N! }4 c. N# O' y" n
case UF_ASSEM_do_maintain_work_part:2 D9 F- U) M9 q/ R# S( K
ECHO(" Work Part-> Maintain = On\n");
( B' M/ ?9 W2 i# a break;; g( Y) d3 y# ]6 `6 n2 s; |3 b) h
case UF_ASSEM_dont_maintain_work_part:
9 h4 u& C* F+ N; S ECHO(" Work Part-> Maintain = Off\n");& p& \. n3 q$ x+ q( t% R a4 N+ K
break;1 b- [, n$ `- j1 U0 A
default:
. n. c9 J9 K* k9 } G& @ ECHO("assem_opts.maintain_work_part = unknown value (%d)",
5 Y: T6 j: M+ D3 r4 w \1 B+ ?4 C) l assem_opts.maintain_work_part);+ T6 F1 i+ J8 w: z5 `7 x1 i p
break;9 A" g% ]% [+ f" i, r2 }% L2 j
}
: }. c; l* J& P) F* ~3 b, [ switch(assem_opts.update)
3 D D% h6 U0 y2 H3 h* ?( a( l {
/ N7 O$ L% K- i2 E' P; I4 {( k case UF_ASSEM_no_update_report:9 O: L/ I6 V. y" i p }7 L
ECHO(" Display Update Report = Off\n"); F! a6 ^7 D4 @" n ~2 B/ Q
break;
! @4 S9 e p3 }) G* E; C G6 A case UF_ASSEM_update_report:
; m* k8 D) X: @, U/ c4 @8 y ECHO(" Do Not Display Update Report = On\n");
& I9 k: J# ^2 W+ Q* A1 d break;
( D0 f' S* j% T; n7 N default:0 N/ \, Y, }0 g* R$ v1 E- l ~
ECHO(" assem_opts.update = unknown value (%d)",
1 N9 ~, w/ ` A4 H. C0 o1 r$ g+ Y assem_opts.update);0 x0 |( x/ i4 d9 F0 H* V' k
break;% ]3 u1 u+ t" i( K
}
* P. V2 g! ]: W$ A( q$ t, B6 C}
. u% @% r4 t: A$ W3 {& R- d
; e& {. A. o5 Pstatic void load_specified_load_options_def_file(void)
7 [' h( w. J/ Y$ K; F{
+ c3 ?: f2 |1 c& y. j% I int7 ~/ \1 \, ]$ y- M2 V; {5 E, k# i
resp;, k8 _( d: n: ]2 [3 V
char) u7 l9 n6 }. Y
filter[MAX_FSPEC_SIZE+1] = { "*.def" },3 h( Y, h4 \" ^
fspec[MAX_FSPEC_SIZE+1] = { "" };
7 D: d' @: s) J6 d/ t3 c: \8 u) _0 _) l: t- |. s. x- l
if (!UF_CALL(UF_UI_create_filebox("Enter load options file to restore",) T, }, K& k8 V% G. |) k6 F, u- z
"Restore Load Options File", filter, "", fspec, &resp)) &&
4 k \' n' `3 ]+ X+ W1 m (resp == UF_UI_OK))
/ Z( m4 A) N( p, B8 q UF_CALL(UF_ASSEM_restore_load_options(fspec));6 `" J& L5 M# `6 v
} Y, r* N" t, m/ d) N
! X# M& a& e7 @" T( X' c
static void do_it(void)$ S0 T& p* G# l f3 f: K
{
, n: Q% K+ a0 q" a ECHO("Current load options:\n");) L4 s: y) H/ ?. i" \8 E
report_assem_options();
6 ~5 S2 T' D& L6 c# m1 d! x' H9 y) _' z- {* k* @. s3 T0 c u! P
load_specified_load_options_def_file();
/ U9 }+ a$ k+ z6 K7 N9 a0 d' {, k& d8 X- l: }7 l7 x2 v, {8 h; _
ECHO("\nNewly restored load options:\n");
- w) B6 w8 U7 s' v% {/ F: _" d report_assem_options();* j ] w+ X; J, L: {* u. E
}. }# G+ M1 g9 X
% r- r* Y2 D6 O7 u/*ARGSUSED*/ X) Y% v5 X9 l2 P, Q8 k
void ufusr(char *param, int *retcode, int paramLen)/ l4 m7 r- y$ q( t
{
' g- t/ [, w2 d if (UF_CALL(UF_initialize())) return;. r! p2 \. J, }" H5 Q
do_it();/ v9 Q% x. W, ]9 w
UF_terminate();
8 q3 M" X% \/ y5 X; T0 H2 h' w+ \}
+ V/ ~; E" l. U X- E4 k. q, N( p* Y R; C3 A0 }+ @
int ufusr_ask_unload(void)
" \* L! j! x# X i! c{" ^$ M1 n! J& i3 H: }
return (UF_UNLOAD_IMMEDIATELY);
# R) t2 Q9 k3 @% e}[/mw_shl_code]. k0 I9 E/ _# h4 [3 U. q0 ~# `( v* i: y
|
|