77范文网 - 专业文章范例文档资料分享平台

UG二次开发(2)

来源:网络收集 时间:2019-06-11 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

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)在线全文阅读。

UG二次开发(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/655591.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: