1 j1 f% b. Y2 s& ?( v! y# {$ r
UF_terminate ();
找到input_cb的位置,假如下面的代码。
int MY_input_cb ( int dialog_id, void * client_data,
UF_STYLER_item_value_type_p_t callback_data) {
- L4 T0 e% ~. ]4 i7 J& A9 [5 E* J% F\/ x8 C\' Z$ U4 x: f4 B1 ^9 P& ?
UF_STYLER_item_value_type_t value;
+ Z; f- d5 d9 Z int irc;
( _( {) g+ n5 }( [! C% a
6 x7 K: y: D) r+ P- f. r+ ~5 q char string[133];
5 ]# v$ @ \\5 f) n- W& {
5 l5 }/ _+ q6 {+ `, l /* Make sure User Function is available. */ if ( UF_initialize() != 0)
/ v1 O* b& d; f; j9 G
return ( UF_UI_CB_CONTINUE_DIALOG );
$ |- Y! P2 |9 U8 o$ ~0 M8 S
, V: E: R8 a- S+ f6 `) ?8 {3 o6 @ /* read your input */
2 H% k! `8 W* ^$ I' N/ s value.item_id=MY_ITEM;
. X6 O# L7 }0 s- O value.indicator=UF_STYLER_STRING_VALUE; value.item_attr=UF_STYLER_VALUE;
' a7 G' n+ V4 V4 V UF_STYLER_ask_value(dialog_id, &value);
! n0 U% E) ^( w$ S$ ]/ }3 {
+ k, w$ j& Z) ^3 w5 [- h, o strcpy(string, value.value.string); UF_STYLER_free_value(&value);
/** add it to the single list */ value.item_id=MY_ITEM_LIST;
; A1 g3 [ ^; q9 |8 |, j8 K
value.item_attr = UF_STYLER_LIST_INSERT;
2 r- f& N! K! y. n/ f6 b1 P
value.subitem_index = UF_STYLER_NO_SUB_INDEX; value.indicator = UF_STYLER_STRING_VALUE; value.value.string = string;
irc = UF_STYLER_set_value(dialog_id, &value); if(irc)
9 X8 `, b) y- A' X1 j, ]- E& b8 a) Z# _+ R. c2 ~- m+ i$ I; k: p' Y& ?. h/ |) a% S7 z
{
char message[132];
/ ?, @/ S9 n2 G4 y* T0 f I
[% h+ A; O; x' X/ w, T UF_get_fail_message(irc, message); } UF_terminate ();
4 ~& D* a* `1 x. f$ h
再ok_cb假如下面的代码。
/ _5 [% `! A4 S; b
9 S0 o) U. r4 {- ^. r; M* Z! _) Iint irc, i;
3 X# W3 }% c4 k/ k5 l W( A. }7 p UF_STYLER_item_value_type_t value;
/* Make sure User Function is available. */ if ( UF_initialize() != 0)
5 a5 b4 \\$ Z! U6 J* u! P+ P6 v1 Y9 p% T* \\$ c- c) s$ I
- o( q, Q( q' I& z- u! C# l return ( UF_UI_CB_CONTINUE_DIALOG );
2 v8 ]1 g- b, M* f( o) ]; Y; E6 D
UF_UI_open_listing_window();
value.item_id=MY_ITEM_LIST;
\
/ q* m9 K' g0 H' @$ O, n value.indicator=UF_STYLER_STRING_PTR_VALUE; value.item_attr=UF_STYLER_SUBITEM_VALUES; UF_STYLER_ask_value(dialog_id, &value); for(i = 0; i < value.count; i++) {
, n+ Z0 `: P b4 L+ |, d! k8 @
UF_UI_write_listing_window(value.value.strings); UF_UI_write_listing_window(\ 6 M' R5 ^; ]/ n* D, i} 8 I1 q' `! u. K! h* y UF_STYLER_free_value( &value ); UF_terminate ();
至此,我们介绍了几个回调函数的简单使用方法,下面看一下运行结果。
/ i+ s- g7 M4 R; E$ M( ~% A) l: x$ z w6 ?. b$ k
刚打开对话框的结果。
输入一个字符串,回车。它显示在下面的single list中。
对不起,a minor change on code. int MY_ok_cb ( int dialog_id, void * client_data,
& s8 W6 y6 F, u( B0 K* n! f7 {\
UF_STYLER_item_value_type_p_t callback_data) {
9 {9 [3 l9 d% n* z( C
5 S/ V2 T* z9 d& \\9 Q# O int irc, i;
$ V4 B* V. a4 e UF_STYLER_item_value_type_t value;
/* Make sure User Function is available. */
, E1 G' U1 O7 G if ( UF_initialize() != 0)
! K7 r( u) R+ ^0 n8 }$ [' [/ u
return ( UF_UI_CB_CONTINUE_DIALOG );
8 l& v5 B/ r/ y\
7 D4 J O( _# l( _ UF_UI_open_listing_window();
4 T3 O2 t: y8 [2 @
1 z: m- K' m2 l value.item_id=MY_ITEM_LIST;
value.indicator=UF_STYLER_STRING_PTR_VALUE; value.item_attr=UF_STYLER_SUBITEM_VALUES; irc = UF_STYLER_ask_value(dialog_id, &value); for(i = 0; i < value.count; i++) {
/ K4 p4 l) J; L; u- p) q j
# Y. W4 j$ E, _1 ^% O\ UF_UI_write_listing_window(value.value.strings); UF_UI_write_listing_window(\ } 5 K. q: q9 k\ UF_STYLER_free_value( &value ); 点击Ok后,所有的字符串显示在list window 中。
( R' t& }5 M5 @7 R清华书中uistyler部分的程序去掉了原来的注释,使得简单的事变复杂了。
8 l! k. m# \\% s. @7 [; F/ `2 U
我没有在ug/NX下开发。在18版中,建立VC工程时可以选择UG APPLICATION WIZARD,那么后面的设置就可以变简单了。 Lcfq
ug/NX建立VC工程时有Ungraphics NX AppWizard V1也很好用。
to eastcamel
.men可以执行很多类型的可执行程序,比如.exe,.dll, .dlg .macro等
( F) C1 o) c/ f& K) z3 H& J4 {+ O+ L% o
action没必要一定是my_first.dll,这是他给你的一个例子,如果你用UISTyler生成了my_first.dlg,那么你就可以在action后写上my_first.dlg。
1 G* m% P, K/ O1 ]$ I8 V: z5 p* b* Q2 o& t9 u0 c
; g8 p\to visionphone
论坛是交流问题的地方,不是教学,
7 y- x8 p) h; }1 h9 k e# a. `: r- u F9 A8
关于menuscript开发下拉菜单,包括菜单的级联在清华那一本书上已经很清楚了,还能找得出比他更清楚的资料吗?另外menuscript已经简单得不能再简单了,还能找得出比他更简单的编程方法吗?
现在在试一个把物体平移的功能.我看了UG/open 里面的函数帮助,也仔细研究了清华出的那本书,他里面是先将所选对象的坐标矩正进行正则化处理,然后为正则化矩正给出一个新的ID,最后创建一个零时坐标系.然后就用uf5943,uf5947两个函数进行平移了.
而现在我自己做的时候,也采用上面相同的步骤,但我调试时发现我选取的对象没有矩阵ID,当然也就得不到坐标系统矩阵.我后面采用获取工作坐标系的ID,然后获取其矩阵ID的方法,但调试后仍得不到平移结果.
@( Z. N) N0 K8 1 Z; e, A!
, y q; Z1 x1 }6 K$ B3 d请指教:下面是我的一段代码;
i_ret=UF_CSYS_ask_wcs (&wcs_id );
UF_CSYS_ask_csys_info (wcs_id,&matrix_id,csys_origin); UF_CSYS_ask_matrix_values (matrix_id,matrix_values); UF_MTX3_ortho_normalize(matrix_values);
i_ret=UF_CSYS_create_matrix(matrix_values,&new_matrix_id);
i_ret=UF_CSYS_create_temp_csys(csys_origin,new_matrix_id,&temp_csys_id);
. x( _5 \\5 j2 @5 X1 Z- e) i; o1 h% M, M/ h# [( A! [
FTN(uf5943) (Dxyz,D_target );
FTN(uf5947) (D_target,&temp_csys_id,&one,&one,&zero,&two,NULL,NULL,&resp);
* W3 N1 P, u\, c( |1 y1 b. q$ Z# H6 t* {
程序的前后两段好像没有什么联系?Dxyz和D_target在哪赋值?
平移的例子
) l1 \\. g8 R; R: J, }% P; l8 U( ` O& R5 @5
\double matrix[16];
+ D' f' _) X+ h* y* Q' N
+ B3 a! f$ \\: i+ L8 R$ ~% i int count=1, copyFlag=2, layer=2, curveFlag=2, rtState;
+ W% ?; y5 S& d; t+ {% ]) ~
m! p2 H! v6 W U/ Z0 F2 b2 K0 W- J+ m UF_MTX4_identity( matrix );
UF_MTX4_edit_translation( matrix, vec );
FTN(uf5947)(matrix, &srcObj, &count, ©Flag, &layer,
) T6 A1 ?) A\ &curveFlag, copyedObj, NULL, &rtState);
return rtState;
. B' M1 h) t+ ~: D) W% h
我刚刚接触UG的二次开发,按以上过程试了一下(只是在创建工程时,选择的是UG/OPEN WIZAND V18),结果调试通过,只是运行时,马上出来对话框,菜单却找不着,恳请解答一下!
找到文件UGII\\menus\\custom_dirs.dat添加用户路径
' z7 Y% H& e, q+ A# s* x& e: V7 l6 w! U9 e
- h5 ^! q& V2 }7 W# Customer modifications can follow on here
你的starup所在位置路径比如e:\\project_insession\\standard_part;
# U- r. h4 s4 E6 f*
也可以在UGII\%ugii_env.dat内把#UGII_USER_DIR=${HOME}改为UGII_USER_DIR=你的starup所在位置路径比如e:\\project_insession\\standard_part。
在平移的问题中,Dxyz是一个Input量,它定义了对象在x,y,z方向上的平移值。
double Dxyz[3]={50,80,0};
至于D_target,它是uf5943函数中的一个输出量,是uf5947函数中的一个输入矩阵值,其中就包含了Dxyz定义的平移量。
. C. @: h; I6 h0 T$ V1 ?6 {
FTN(uf5943) (Dxyz,D_target );
FTN(uf5947) (D_target,&temp_csys_id,&one,&one,&zero,&two,NULL,NULL,&resp);
- U# ]# {$ s# `0 后来我跟踪调试了resp的值,显示为0,表示成功了。但我用UG里面的工具检查一点的坐标,却一点变化也没有。
; L( c+ H+ b1 @$ _0 {4 E4
后来我调试了ZZZ兄的一段代码,发现copy是成功的,但我定义为move,即把UF_MTX4_identity( matrix ); UF_MTX4_edit_translation( matrix, vec );
9 v8 k7 d v- o( h! }
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库UG二次开发(2)在线全文阅读。
相关推荐: