|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
) J# t) g; f2 x; Q( KNX二次开发源码分享:报告装配加载状态,设置装配加载
+ m5 Z- G& D" q% Y# Y, `$ }+ E/ L
获取Load Options 并进行处理!
! k+ J2 t. A) a. G' }+ H+ S; Z+ a# P& V' h* u+ l0 S& s, x$ A" m
[mw_shl_code=c,true]#include <stdio.h>5 V) j0 I; X! K
#include <string.h>
+ {/ h& Y$ e" a: b% t#include <uf.h>
+ d7 }3 g2 j4 K7 G#include <uf_ui.h>
C$ p) T5 K8 F# W#include <uf_assem.h>. g$ _7 ~2 c% I& p# o% Q
. u3 J$ p& v# v* V. I' }* p#include <stdarg.h>% T" \) R% z9 R/ M, m% l' q6 `
) n/ v/ L$ {& I
static void ECHO(char *format, ...)
4 ?! L7 X5 x, Z3 P{
; i' i% I% i) X1 @0 \; E# ? char msg[UF_UI_MAX_STRING_LEN+1];
7 I+ q3 E& M% Y* A va_list args;
: Q- N$ K3 L5 B7 L' Y+ q va_start(args, format);# m) r+ P$ P& w" X9 g$ U0 c$ H4 y7 q
vsprintf(msg, format, args);
0 e' U) s8 J$ L9 E& _ I, ^ va_end(args);
3 _( `. C, {8 Q, B6 a9 V1 G8 a( I UF_UI_open_listing_window();
4 t5 e: P( C+ y UF_UI_write_listing_window(msg);3 i3 B, e/ G8 x4 [/ G2 ]" R
UF_print_syslog(msg, FALSE);
; Z8 l; l/ T) H0 A* v}! @# ~: T: W! A/ y# H
* n! t+ y$ {% _6 V% ~( `#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))
4 Q5 r$ ]2 I8 e1 j6 B6 |9 U. Q) \% W- c& {5 L$ a+ B
static int report_error( char *file, int line, char *call, int irc)
R; l5 N4 S. @' C{
: F' s% o0 L- e6 Z' N9 x if (irc)
q* E! s: Z2 ]9 Q# U0 P {5 e0 G+ s- x3 W$ I, J1 t
char err[133];
( z7 c9 q( j; h% q8 Y5 I: X$ E' L+ S- q+ G- M1 C* K
UF_get_fail_message(irc, err);
+ X8 b4 E5 _2 k r- |. x+ n ECHO("*** ERROR code %d at line %d in %s:\n",. e; H$ I$ U3 z# p2 r4 M1 U
irc, line, file);
" f. h- K( `7 J; w/ L4 } ECHO("+++ %s\n", err);- Y0 i) K6 {4 h$ L2 M0 w9 Y
ECHO("%s;\n", call);
3 ?( w3 A) l3 q8 g. r6 V. M }
* V- `* X. C' k. B. ~5 a+ Y1 c) E4 s0 z9 B8 {. ^* p- x
return(irc);
+ U8 o% Q( r% W$ Q' l}
; C8 {0 R- e3 s$ ?9 ~1 Q! s/ @1 @
static void report_assem_search_directories(void)1 {' ?; N9 V$ |
{
' d1 o- n5 w( B1 b' r& h: o7 v6 w char
6 N" \. u0 @) a4 I **dir_list;
( T- s, Y0 A. j, n8 Q! j int
& z6 F* d% i) F4 ^7 ? h1 P, ]- L2 w ii,
! |2 }: Z! I/ k( x. \6 g num_dir = 0;3 y1 [6 g7 ^4 A( _! h3 l* q0 ~
logical
1 X0 g4 G0 c# q: g( k0 {* |. P6 q *subs;" ?' z' o& o8 R8 |& u
0 ]0 F- N1 ]2 Y- y9 b& A, e UF_CALL(UF_ASSEM_ask_search_directories(&num_dir, &dir_list, &subs));6 v1 y) Q: R$ b8 x5 h
for (ii = 0; ii < num_dir; ii++)
+ D' Y5 B& S3 A; c5 F, [/ y {
& r# Y" y. F3 Y% R" V8 @+ ? ECHO("%s", dir_list[ii]);
: [* }: f e% \7 ^0 _6 W' Y4 y if (subs[ii]) ECHO("...");
. M5 _& w1 _$ r u- p! F ECHO("\n");( R! A! W$ b0 z7 Z- f
}% `3 L' v8 @% z9 y; ?4 t- _9 Y' G
UF_free_string_array(num_dir, dir_list);
" d+ q0 y+ A+ j6 E2 V, B3 W UF_free(subs);
# p* n* |4 t5 W2 m}
! `+ H6 ~- g! P+ a, S5 a+ ^
! _1 x2 C) ]4 H3 W' C1 n+ Mstatic void report_assem_options(void)
8 Z+ ?2 c4 K3 L# a) T{5 i3 A6 ?+ x) S+ o6 ~6 ~- l8 t
UF_ASSEM_options_t
5 v8 A, d" i3 ? assem_opts;
1 o- b8 ^5 G6 n2 S$ b& a9 ?, B" s
- j$ W& V0 ]& }5 L$ o1 h. I UF_CALL(UF_ASSEM_ask_assem_options(&assem_opts));
% Q0 B, p! `% S- q/ Q
# y Q7 B- C0 C1 {( I4 ?( o ECHO("Part Versions\n");( v) V$ N5 }( a- ~
swiTCh (assem_opts.load_options)0 N, b. |! F x+ d! v# t8 p" `& q; _
{3 H) w- L5 E2 A# q
case UF_ASSEM_load_from_directory:# C2 _, a+ t1 ~3 c
ECHO(" Load = From Folder\n");7 f- `; Q( c: P" a' H5 ^
break;
: P# T" a, t: u7 U+ P. l, M8 v case UF_ASSEM_load_from_search_dirs:
* P! Y8 n }: z6 f% ^- n* j% I- R4 w ECHO(" Load = From Search Folders\n");* J- h {# Z0 a6 I7 w
break;& m$ C' @( R3 k5 ^: x; k: q$ m
case UF_ASSEM_load_as_saved:
- O/ g+ x& A z/ R( c ECHO(" Load = As Saved\n");: p# i/ @ L1 S2 z
break;( @0 ~2 \* j( A1 B# \! h; v
default:
! I$ Y R$ c; m6 W! A ECHO(" assem_opts.load_options = unknown value (%d)",* c* r; L! J1 ^0 N) e7 Q2 a8 W
assem_opts.load_options);) W8 C: L! j% C1 u4 [
break;
' I3 l* Z4 q3 |' D2 m% m3 E }
+ Z6 b, Y% x, _* B; v; r z( ]2 ~. n1 w& E( Y
switch (assem_opts.load_latest)% \- b; J4 L6 o2 j5 p# h
{' {: z4 K- ~' B, B2 U! q# `& T
case UF_ASSEM_load_exact_version:4 q5 M( U3 ~. A2 x* _7 D
ECHO(" Load Latest = Off\n");
& U' t, x( ^3 R+ h8 F, `! B break;; E5 T* P% W) ?7 }6 \/ n7 \
case UF_ASSEM_load_latest_version:* L3 t N& f6 ]/ l& W
ECHO(" Load Latest = On\n");0 A" ?1 g+ k0 }7 g/ t) ?
break;
2 ^" C( ~( s3 o3 z default:1 n0 j. C {% m+ ^" |+ H f( p
ECHO(" assem_opts.load_latest = unknown value (%d)",
9 e9 }8 E; B# v5 O- S( i* ? assem_opts.load_latest);8 o9 r+ e1 f, b+ s# [
break;
. ~) l+ I. s- M$ e }# T/ _2 {: n) ^6 |0 k) W- h5 i
* o- ~ Y4 ?6 r* w
if (assem_opts.load_options == UF_ASSEM_load_from_search_dirs)2 {, D5 ]( a# u2 y
report_assem_search_directories();
0 i3 d S% B- W* a+ m |7 v* j( T& l) v& `3 G: v1 y
ECHO("Scope\n");
- }- v N5 n6 c& J( c+ }6 ~ switch(assem_opts.load_components)
0 W* V, ]0 k. T) ~7 ] {& f7 ]9 W( l! f( u& m
case UF_ASSEM_dont_load_components:5 u, B- e# G4 a, g8 W
ECHO(" Load = Structure Only\n");6 T5 c4 a* ~* J# [; H3 Q
break;
" C' O2 A+ W! ?5 w case UF_ASSEM_do_load_components:5 o) h2 c' e" R
ECHO(" Load = All Components\n");
4 u/ G, `0 l2 J% p break;
9 O F6 m+ Q1 ~8 |/ l" S7 C case UF_ASSEM_use_last_component_set:& Y9 N7 W4 `( X7 H4 _- b
ECHO(" Load = As Saved\n");
8 C7 E. `4 B2 P0 f6 X; p break;5 R: J7 d" b* N
case UF_ASSEM_use_last_filter:: }8 e' E8 i' h7 ~" {5 G
ECHO(" Load = Re-evaluate Last Component Group\n");7 i3 s' ^$ R; u+ L! S5 ?
break;9 f" a4 Z/ x- f/ E9 P) Q( r A
case UF_ASSEM_specify_filter:" d3 h0 U& |( n( q, I4 b
ECHO(" Load = Specify Component Group\n");( h/ i2 L. ^; X! e: W+ c! E
break;$ E% I) z' f5 m
default:+ Z9 Y0 |0 C' p) c @$ `
ECHO(" assem_opts.load_components = unknown value (%d)",
# u7 A1 j) i. w, ~ `) Q4 J5 |* J assem_opts.load_components);
9 K; L- J8 |* K( A) k break;
' s, w: m' Q. ]$ {! V2 a k8 m6 a% S }
: c. W3 X6 V( V" M) C- m' _* I8 Z8 V! a8 T
switch(assem_opts.load_fully)
" g2 T2 _% ^0 v( q4 Z { W# Z" m( G0 [7 G2 J
case UF_ASSEM_load_components_partially:! M) m" P/ K% h. i$ R2 \) g5 c& E
ECHO(" Use Partial Loading = On\n");
, f* ?' P4 M/ y6 ? h1 V break;
: \7 z) a& z3 c/ }* V f! |7 F1 K case UF_ASSEM_load_components_fully:
6 U3 n2 }3 f N( q* l. w) [' C7 Y I ECHO(" Use Partial Loading = Off\n");
! e4 s- x* R, o+ g break;) I2 u0 c' V S0 @: J) e6 n- [
default:
+ G) v# b" K- l5 F# @ ECHO(" assem_opts.load_fully = unknown value (%d)",
8 O, t1 W4 o4 ]0 u7 ~1 x9 v0 _ assem_opts.load_fully);
* p% y0 I* t" W8 ~6 \' @ break;* i* W6 W5 F+ p5 o! r' z( A
}
8 {' W+ E( w4 l9 v; m
6 S5 |6 w& f, A switch (assem_opts.load_wave_data)
: S# b6 }* f) n {# u2 j c0 h; h5 K* J( x
case UF_ASSEM_load_wave_data:+ d$ A, g/ w0 [6 O
ECHO(" Load Interpart Data = On\n");1 p, d0 o" Y" e% h
break;
* J: q# x5 F/ n! D$ U( V# |+ M. q case UF_ASSEM_default_load_behaviour:
: ?8 E4 g8 f7 I* ]) d# I! i" p! C ECHO(" Load Interpart Data = Off\n");% B; K( ]- P9 t+ E) g; g9 B( i% X
break;" E3 S% n( N% M* z
default:
- H- g# h- o0 C* s" i0 o ECHO(" assem_opts.load_wave_data = unknown value (%d)",
( l, v! G- ~% y! |- w2 R0 q- S assem_opts.load_wave_data);
5 B- f# O) G O: x' i break;1 u- [$ ~% w" M9 P7 |- h0 D
}" X" F( w v# x+ l; o$ `
: ^& L9 i9 z! z8 U z$ f1 ^; U switch (assem_opts.load_wave_parents)
& J4 ]9 U* x6 u$ Z; H' l; h6 b {
% z, m8 ]* X0 z case UF_ASSEM_none:
8 A! v7 \2 C: F ECHO(" Load Parents = None\n");) u( b0 C. G( _& p) K/ D' ]/ B
break;
; R3 c% U- v9 d- ]" n case UF_ASSEM_immediate:
: n+ h2 ?( s0 G" u$ e' f8 L, C ECHO(" Load Parents = Immediate Level Only\n");
! Y; P' a+ [8 c$ |- j- J# n break;2 f9 W9 D: {* \5 z5 i0 s6 i7 L0 ]
case UF_ASSEM_all:
9 @4 _' q) e2 n' o& B5 U ECHO(" Load Parents = All Levels\n");0 H* v( K2 |- C1 w3 q5 @
break;
! K3 c- |5 y* F8 T5 @ default:
9 p: I {! A, B ECHO(" assem_opts.load_wave_parents = unknown value (%d)",2 l* a; @ Y4 ^
assem_opts.load_wave_parents);- e5 p* V0 V) m1 b4 E- m3 M
break;' l* r3 {! I* s, w3 q9 D. b
}
7 A( M% M; w8 J: J* |& t% [* r% `, m) e2 f7 |0 k
ECHO("Load Behavior\n");
4 `# z% F& k' h# ?' K switch (assem_opts.load_substitution)
8 g, L9 U% I2 Z- } {
) T# t* A: _: Q- g case UF_ASSEM_do_allow_substitution:
2 Y; v' O& ?7 U1 g* d" _" f9 U% l ECHO(" Allow Replacement = On\n");- d6 ^ ^% B ^( V, X1 _1 ]# d- G
break;
' M( Z6 |9 R' N case UF_ASSEM_dont_allow_substitution:
, k! L1 Y; {' T' Q+ P/ t ECHO(" Allow Replacement = Off\n");
3 n0 }- y; r5 U+ _ break;
4 p* B1 [7 ?' V! @/ H' X2 e/ c default:
3 g1 ~8 D+ b( z6 m ECHO(" assem_opts.load_substitution = unknown value (%d)",
! K- k6 f% B- l# D" Q. G4 L assem_opts.load_substitution);8 \5 Q3 H. `' M# ]
break;
/ l* ?, b' I2 e7 j0 @* H' L. i3 c* h }. f, N/ f3 R. }
# M' x7 ^8 ~1 x8 f! n switch (assem_opts.auto_regen_pfm_option)
1 }. w7 ]$ H1 A* O+ \ {
H' e' J' C! b8 \; j, X8 \ case UF_ASSEM_auto_generate_pfm:
3 {" u9 B9 `+ C/ K2 r! T3 T+ S ECHO(" Generate Missing Part Family Members = On\n");
s- B7 ]4 L4 E) G& B break;7 x! i0 t, [) T" I. ~9 ^. @
case UF_ASSEM_dont_auto_generate_pfm:
1 P" d4 y, \3 T5 L* q ECHO(" Generate Missing Part Family Members = Off\n");
2 @, P2 {8 O% s; @: y6 X1 K break;" `; f* M* F$ c
default:' X) w% s. Z7 e( `5 L
ECHO(" assem_opts.auto_regen_pfm_option = unknown value (%d)",
: E! g2 `3 ~- L2 f4 i0 W& C- x: }$ k assem_opts.auto_regen_pfm_option);3 z) x* p6 b; Z7 b" D
break;
5 v# |; t( K' E1 }1 L* H% t }
( l8 ~5 Z5 E# T3 W+ R3 X$ M
' g8 f3 U4 b2 h4 I: G switch (assem_opts.failure_action), ?; p9 o5 }9 M N( ~7 n
{
, Z/ |" s8 i+ ]: ? case UF_ASSEM_do_abort_on_failure:. c9 H" K1 _$ h1 e
ECHO(" Cancel Load on Failure = On\n");
+ Y% r3 @5 E# A. B& k; v% j break;6 e( s2 B! q8 |
case UF_ASSEM_dont_abort_on_failure:
- b1 O; e. _& _" m% D ECHO(" Cancel Load on Failure = Off\n");+ O5 _) L# k1 W: W) k% |
break;2 }, x p/ N9 T0 C) I3 P- A- ?2 ^% o
default:7 V9 L5 ~& H: a1 ]8 l
ECHO(" assem_opts.failure_action = unknown value (%d)",$ [' U; h6 N ?* ?
assem_opts.failure_action);( [! B7 A0 ~- O
break;' y, I4 |% Y, [; }9 ^# W, z
}
7 u ~2 X- O8 f/ a2 H: e- ?( ?4 y/ }5 B2 P6 a& f
ECHO("Reference Sets\n");
9 f+ M! c# p" Q) z/ D1 O& c0 u switch (assem_opts.apply_to_all_levels)4 @) Z+ P. r( ^0 N9 w
{# K4 }# |& ], T
case UF_ASSEM_do_apply_to_all_levels:) r" G! o8 F4 [) ]
ECHO(" Apply to All Assembly Levels = On\n");
& I) L" s9 G, m% Q2 q break;& F0 e- A/ J G$ @8 H
case UF_ASSEM_dont_apply_to_all_levels:+ L7 e' ~4 v$ O, G
ECHO(" Apply to All Assembly Levels = Off\n");
7 F4 f7 y3 ^ J break;
2 y& F7 v( a2 W: L* x6 }6 j$ O default:% m! U: |" G: t& R2 R+ r
ECHO(" assem_opts.apply_to_all_levels = unknown value (%d)",
9 q& I) ]6 ^; c# c! O5 g assem_opts.apply_to_all_levels);
" R/ J5 y' S8 f- O& h break;
U6 T& J( i; h/ b }
. ~ j. z5 X% v) D+ x- q1 A3 t, u* u- y: _9 E S: G
ECHO("Preferences-> Assembly (misc)\n");
+ k+ X8 G3 T& T" j" ?) C switch(assem_opts.emphasize)/ K" `0 t, |; V; R' z
{
& ~$ {3 ~' p% f7 a case UF_ASSEM_do_not_emphasize_wp:0 }; W: w7 ~! g
ECHO(" Work Part-> Emphasize = Off\n");
9 l$ z& J+ _& Z9 I: w; L break;: u5 O( R3 q5 J* i: X) Y s
case UF_ASSEM_emphasize_wp:- C# @# s+ B8 Y4 E3 Q) u$ U# t
ECHO(" Work Part-> Emphasize = On\n");, o5 b ~9 [/ C$ W( p
break;& {, {: B, p5 ^2 M
default:& T" E, Z# O$ r- I, o; Y
ECHO(" assem_opts.emphasize = unknown value (%d)",( u7 T- m H/ t; V1 K6 i" f. A1 H
assem_opts.emphasize);
! a+ i2 k. U- ~; o+ j1 C; p break;
, b2 M$ p1 C" v) F7 B3 X' e0 Q }
' O5 v# W& m6 ~! A+ y
6 v3 ^& ~5 ^! ^ switch(assem_opts.maintain_work_part)3 l+ |! W) d6 a+ v
{
" ?; L* L/ A# e/ W case UF_ASSEM_do_maintain_work_part:0 b% h" F% ?7 A- B
ECHO(" Work Part-> Maintain = On\n");
7 i! ~ j2 Z5 y. q' R7 { break;! y' Z2 ~: ?+ c
case UF_ASSEM_dont_maintain_work_part:
! p+ _6 \# V) A+ O) ~6 O ECHO(" Work Part-> Maintain = Off\n");
* l( g7 K3 Z$ _2 H* d0 O1 Q+ h ~ break;5 E4 b& \- ]! D
default:, \# s4 D. f4 E
ECHO("assem_opts.maintain_work_part = unknown value (%d)",1 S" M6 `; ^' ^
assem_opts.maintain_work_part);0 O9 i8 ?' w( [! P6 z
break;
6 c0 F+ g; c; N/ H }7 h& {9 `3 F* B) {
switch(assem_opts.update)3 n! k5 e! M( ~- {
{1 [5 l% e- o( w
case UF_ASSEM_no_update_report:' E0 O* K9 N+ F! j2 k5 V! Z
ECHO(" Display Update Report = Off\n");
" e0 W! x: X2 j' u$ r, t; Y4 J break;- q# i; X2 S3 f* e, _* a
case UF_ASSEM_update_report:. k% y; t9 o. F! z
ECHO(" Do Not Display Update Report = On\n");
6 R, N# e' B3 T break;0 i* W$ G) y0 i3 {( V
default:
) ]1 A, X8 f1 @' M ECHO(" assem_opts.update = unknown value (%d)",7 {0 ^9 f2 Q- R" z& j4 n
assem_opts.update);
3 v6 `- V* f% X2 z9 C break; n9 g( K- A% b8 c+ m
}7 E( X9 X, n0 o3 ^, h
}2 T0 Q( [" E1 o. v: _1 }3 O
; P6 G! H. _. P
static void load_specified_load_options_def_file(void)
* E9 q8 N* h, J* }# r{5 G7 `+ |+ J# O. x2 E
int, V2 s8 u* j# S e: C
resp;
F! ?$ c' u$ x5 c char
0 F: w# k6 f# W( w( b- q3 v! l# ]0 Z filter[MAX_FSPEC_SIZE+1] = { "*.def" },4 ^5 b2 o1 i. r9 X
fspec[MAX_FSPEC_SIZE+1] = { "" };6 v: k4 e( e" U
5 `2 @5 S' T: H* o a" N% U( j/ X
if (!UF_CALL(UF_UI_create_filebox("Enter load options file to restore",4 ~2 k5 S. j% w4 V& T+ k, N" @
"Restore Load Options File", filter, "", fspec, &resp)) &&
& x. p% a; W/ D0 R (resp == UF_UI_OK))
7 [3 r9 W( E# a$ W5 @0 l UF_CALL(UF_ASSEM_restore_load_options(fspec));
. p% E* y3 ?* U% P0 u' P}' V% Y: Y1 M( F
/ }; l! k; z8 k) Y9 j2 S7 o
static void do_it(void)
6 p1 S5 e5 \- V3 ]3 p" b ]{+ E' p/ {9 ~) F9 s* L
ECHO("Current load options:\n");, v) f! K1 u8 ^; _7 F3 k& W
report_assem_options();
- e$ Y$ B9 X2 k( j/ g
. e/ f& S+ ]! J8 t- j* g! {. p4 F load_specified_load_options_def_file();
" e/ ~; J1 z# ?- {' A) w" r! G- ?0 J6 Z( x
ECHO("\nNewly restored load options:\n");! u! f. n/ _0 L4 v2 {" C+ ?
report_assem_options();7 y2 Q: k4 }( k8 V- D6 ~6 s
}% ^5 c- C$ ^. B5 k
# `5 N# D* ~1 Q `4 A
/*ARGSUSED*/1 {$ S; e, C( t& t
void ufusr(char *param, int *retcode, int paramLen) x7 D% k. V, E/ n8 k; O
{" P8 N4 U, ^- u! Q! {% b; z# U _
if (UF_CALL(UF_initialize())) return;% v; Y% A$ ~% V \* x5 B4 W: o
do_it();2 [# Z7 L* E" b- Q, m
UF_terminate();1 V. ^/ u. Y, |% V4 z/ e w- E
}: q/ M ^- `9 e7 u/ k# `7 |) P
- F6 v. @% ^+ ?4 @3 M5 z. ^int ufusr_ask_unload(void)
: I3 q$ D+ k1 ?+ _" S0 @7 j{7 C# i9 } |1 u7 f& n, O
return (UF_UNLOAD_IMMEDIATELY);
) y3 h4 [! a. \% S, P( [}[/mw_shl_code]; V8 o" Y/ { a
|
|