iCAx开思工具箱
标题: UG二次开发实例讲解(UG CAM在开发者请留下联系方式) [打印本页]
作者: huangjiuchao 时间: 2011-10-26 12:30
标题: UG二次开发实例讲解(UG CAM在开发者请留下联系方式)
1。建立两个目录。
建立第一个目录 E:\my_first_UG,在这个目录下建立两个新的目录:E:\my_first_UG\application和E:\my_first_UG\startup。
建立第二个目录E:\my_source,用存放你的源代码。
2。设置环境变量。
再Windows中设置一个新的环境变量:UGII_USER_DIR=E:\my_first_UG。
3。打开UG,进入UIStyler应用(在Application菜单的最后)。
4。设计一个对话框。
1)在"Dialog Title"一栏填入:First Dialog,按Apply(每次输入完成后,都要按Apply,为避免啰嗦,以后不再提及)。
2)在"Cue"一栏输入:%……%¥%¥¥##*%*(*(*—*—((,什么都行,呵呵。
3)在"Prefix Name"中,把CHANGE改为MY。
4)加入四个控件。String,Push Button,Label和Single Select List
编辑对话框的各个控件。
1)改变String控件的标题,标识和长度。
Label “String” -> “Input an item”.
Identifier "STR_0" -> "ITEM"
Width in... 0 -> 20
2) 改变Push Button控件的标题,标识和回调函数的名字。
Label "Push Button" -> "Import"
Identifier "ACTION_1" -> "IMPORT"
callbacks "action_1_act_cb" -> import_cb
把"Creates Dialog"激活。
3)改变Label控件的标题和single select list 的标识。改变single select list可见项的个数。
Label Label -> Items List
Identifier "LIST_2" -> "ITEM_LIST"
Number 3 -> 6.
6. 保存对话框。
点击save图标,把对话框保存在E:\my_first_UG\application目录下, 文件名位first_dlg,生成三个文件。
(现在可以推出UG乐)。
7。建立一个vc的工程。
1)把\application下的*.c和*.h文件移动到E:\my_source目录下(文件可以改名字)。
2)建立一个新工程,选择Win32 DLL。
3)把c源文件和头文件加入到工程中。
8。设置vc的环境。
Project -> Settings -> C/C++ -> Category ....加上头文件。
Project -> Settings -> Link....
改变输出文件名,加入连接库文件(ug17之前的库名字不同)
Tools ->Options...->Directories
Include files 和 Libray files 加入UG UFopen的路径。
打开first_dlg.c文件,找到menu script样板的位置。
复制这个样板到一个空的文本文件。
把文件保存到E:\my_first_UG\startup目录下,文件名位first.men(注意后缀)。
找到 #ifdef MENUBAR_COMMENTED_OUT,
把他和他对应的 #endif 删掉。
找到#ifdef DISPLAY_FROM_USER_EXIT,
把他和他对应的#endif删掉。
找到 <enter a valid user exit here>, 把它改为ufusr。
现在可以编译连接,试一下了, 呵呵。
运行UG,点击菜单。啊!!怎么不行??秀大了,呵呵
打开first.men文件,把ACTIONS后面的名字改为libmy_first(DLL文件的名字)。
现在一个空架子已经打起来了。剩下的就是要加入自己的内容。
就上面的例子讲讲下面这些回调函数(看清华那本书搞得我头大)谢谢!
好吧,下面将一下这些回调函数的应用。
Apply_c,Ok_cb和cancel_cb分别是点击OK, APPLY和cancel按钮时,执行的动作,它们的应用在后面的例子中介绍。
constructor 和 Destructor本分别是对话框显示之前和退出之后执行的动作。
在对话框显示之前,可能需要进行很多操作,譬如说:设置对话框的选择方式,就是说在对话框打开后,用户可以选择什么物体,面,实体等。
在对话框消失之后,也需要进行一些操作,譬如说:释放申请的空间,把加亮的体恢复等。下面我就用例子介绍一下这些回调函数的应用。
添加回调函数。
首先进入UG,UIstyler,打开前面生成的对话框first_dlg.dlg,在相应的位置添加几个回调函数的名字(每一个都要回车或按Apply)。
cancel_cb
construct_cb
destruct_cb
ok_cb
为“Input an Item”田家一个回调函数input_cb。
保存后,退出。
时代码已经改变,要把相应的改变加到vc的工程中去,(推荐一个工具Araxis Merge)。
ZZZ斑竹辛苦了!
小弟正要搞一个UG二次开发的项目,以后有问题还请多多指教了:)
请问工具Araxis Merge哪里可以得到,可以简单说一下怎么用的吗,我VC还不太熟,谢谢
我的EMAIL:wgwang_sz@163.com
QQ:43801603
打开first_dlg.c,找到construct_cb的位置,在其中添加以下代码。
int MY_construct_cb ( int dialog_id,
void * client_data,
UF_STYLER_item_value_type_p_t callback_data)
{
int irc;
UF_STYLER_item_value_type_t value;
char string[133] = "Input a string here.";
/* Make sure User Function is available. */
if ( UF_initialize() != 0)
return ( UF_UI_CB_CONTINUE_DIALOG );
value.item_id=MY_ITEM;
value.item_attr=UF_STYLER_VALUE;
value.value.string = string;
irc = UF_STYLER_set_value(dialog_id, &value);
if(irc)
{
char message[132];
UF_get_fail_message(irc, message);
}
UF_terminate ();
找到input_cb的位置,假如下面的代码。
int MY_input_cb ( int dialog_id,
void * client_data,
UF_STYLER_item_value_type_p_t callback_data)
{
UF_STYLER_item_value_type_t value;
int irc;
char string[133];
/* Make sure User Function is available. */
if ( UF_initialize() != 0)
return ( UF_UI_CB_CONTINUE_DIALOG );
/* read your input */
value.item_id=MY_ITEM;
value.indicator=UF_STYLER_STRING_VALUE;
value.item_attr=UF_STYLER_VALUE;
UF_STYLER_ask_value(dialog_id, &value);
strcpy(string, value.value.string);
UF_STYLER_free_value(&value);
/** add it to the single list */
value.item_id=MY_ITEM_LIST;
value.item_attr = UF_STYLER_LIST_INSERT;
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)
{
char message[132];
UF_get_fail_message(irc, message);
} UF_terminate ();
再ok_cb假如下面的代码。
int irc, i;
UF_STYLER_item_value_type_t value;
/* Make sure User Function is available. */
if ( UF_initialize() != 0)
return ( UF_UI_CB_CONTINUE_DIALOG );
UF_UI_open_listing_window();
value.item_id=MY_ITEM_LIST;
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++)
{
UF_UI_write_listing_window(value.value.strings
Knight74 wrote:
现在我调试我的程序发现不能进行move 操作之后,和我的同学讨论了一下,他的意见是复杂的物体带有了许多参数,如果要把带参数的整个Object进行move操作,之需要把根feature进行平移,而其他的特征会自动跟着平移.下面着段程序就是要获得根feature的操作.
uf_list_p_t cmtag;
int ug_type,ug_subtype;
int N_features;
i_ret=UF_OBJ_ask_type_and_subtype (*Object_selected,&ug_type,&ug_subtype );
i_ret=UF_MODL_ask_object (ug_type,ug_subtype,&body_object );
i_ret=UF_MODL_ask_body_feats (body_object,&cmtag );
i_ret=UF_MODL_ask_list_count(cmtag,&N_features);
但进行调试时候.老是cmtag的值为空,请问斑竹对这几个函数熟悉不?
下面的这张图片是我在交互界面下进行Transform时出来的警告信息.
body_object一定要初始化为NULL_TAG.
Knight74 wrote:
请问斑竹,知道计算两个object之间的距离函数吗?这个函数可以计算两个object之间的最短距离。
另外,感谢斑竹上面的提醒。今天有时间我把第3中在UG中平移物体的方法写上去。是通过移动特征来移动物体。
求助
//-------------------[6] Chamfer 4 edges of block2-------------------
uf_list_p_t edge_list1,edge_list2;
tag_t chamfer_id,edge;
double end_point[3] = {0, 0,0};
double direction_z[ 3 ]= {0, 0, 1};
int dir_edge;
char * angle1="45.0";
int subtype=1,*is_parallel=NULL;
UF_MODL_create_list(&edge_list1);
UF_MODL_create_list(&edge_list2);
UF_MODL_ask_feat_edges (block2, &edge_list1 );
UF_MODL_ask_list_count(edge_list1,&num);
for (i=0; i<num; i++)
{
UF_MODL_ask_list_item(edge_list1,i,&edge);
该贴已经同步到 huangjiuchao的微博
作者: huangjiuchao 时间: 2011-10-26 12:32
正在做cam方向的开发,如有开发者请多多交流!
作者: zhangcanwei 时间: 2011-10-31 10:38
标题: 资料
CAM方面的开发?楼主都有哪些CAM开发方面的资料?希望能相互交流
我的联系方式 zhangcw1990@163.com
作者: boxi2279 时间: 2011-10-31 19:46
相互学习
作者: huangjiuchao 时间: 2011-11-1 09:57
zhangcanwei 发表于 2011-10-31 10:38
CAM方面的开发?楼主都有哪些CAM开发方面的资料?希望能相互交流
我的联系方式 zhangcw1990@163.com
huangjiuchao@163.com 希望能一起交流!
作者: 安SONE 时间: 2011-11-1 13:57
不胜感激 438126612@qq.com
作者: 安SONE 时间: 2011-11-1 13:58
438126612@qq.com 感激不尽
作者: SWORDINHAND 时间: 2012-2-3 14:28
顶顶顶顶顶顶顶
作者: jimk 时间: 2012-4-16 23:03
学习一下
作者: wsdone 时间: 2012-6-10 01:49
顶啊,我现在也在刚做这一块,入门是做一个EXCEL程序单的, 正在进行中...
作者: liuenhaoh 时间: 2013-8-4 18:51
我也是做cam开发的,616233306@qq.com
作者: zhangyueping 时间: 2013-11-20 12:51
專門做UG CAM開發的,QQ 66783341
欢迎光临 iCAx开思工具箱 (https://t.icax.org/) |
Powered by Discuz! X3.3 |