标题: ug/cam 二次开发中关于udop函数调用的问题 [打印本页] 作者: beiliya 时间: 2005-3-13 00:46 标题: ug/cam 二次开发中关于udop函数调用的问题 偶是ug二次开发入门级人物,请问各位大侠,如何实现对一个exit函数UDOP的调用?我在ufd_cam_udop.c中看到必须定义一个环境变量指向udop调用时候指向的动态库。请问:
1.如何制作这个环境变量,是直接在”我的电脑“右键建立系统环境变量,还是在ug_env.dat中插入一个环境变量?
2.我用两种方式同时建立了一个环境变量USER_DEFINED_OPERATION;
USER_DEFINED_OPEARATION=C:\Documents and Settings\wrq1\My Documents\Visual Studio Projects\NX3 Open Wizard22\Debug\NX3 Open Wizard23.dll,(dll文件是用ufd_cam_udop.c编译而成)而且通过ug的log文件也看到了它的值;但是我在启动ug以后加入一个”MILL_USER"类型的操作后在,“exit name”对话诓或者“退出名称”(中文版)中输入USER_DEFINED_OPERATION,然后点积generate图标出现错误如下图示。请问如果我像调用这个函数我的操作是否错误?
3. 由于工作中需要自己计算刀位,用UF_PATH_create_linear_motion(UF_PATH_id_t path_id,....)的时候必须知道PATH 的id号,除了用
在udop调用中使用以下几个函数(这是ufd_cam_udop中例句)
ugzhon
extern void udop(char *param, int *status, int parm_len)
{
char op_name[UF_OPER_OPNAME_LEN];
UF_UDOP_id_t udop_id;
UF_UDOP_purpose_t purpose;
UF_OPER_id_t oper_id;
UF_PATH_id_t path_id;
/***** Convert UG/Open API param to CAM exit id ******/
UF_CAM_exit_id_t exit_id = (UF_CAM_exit_id_t)param;
/***** Using the exit_id to get the udop identifier ******/
UF_initialize();
UF_UDOP_ask_udop( exit_id, [$udop_id)]
/***** Using the udop_id to get the oper identifier ******/
UF_UDOP_ask_oper( udop_id, [$oper_id)]
/***** Using the udop_id to get the pupose of the call ******/
UF_UDOP_ask_purpose( udop_id, [$purpose)]
/***** Using the oper_id to get the name of the oper ******/
UF_OPER_ask_name( oper_id, op_name);
/***** Using the oper_id to get the path identifier ******/
UF_OPER_ask_path( oper_id, [$path_id)]
除了这种方法,对于其它的非“MILL USER"类型的opertaion是否可以容许用户自己定义它们刀位具体值呢?作者: beiliya 时间: 2005-3-13 00:49
这是图片作者: beiliya 时间: 2005-3-13 00:52
图作者: jdbc2kdsp 时间: 2005-3-14 08:43
user defined operation没用过,也从来没用过exit_id
每个主程序都应该有UF_terminate()结尾
另外,好像主程序名称不能随便定义吧作者: jiang1lingling 时间: 2008-6-23 15:00
kankan
thanks作者: 蓝墨水瓶 时间: 2008-11-14 10:09
哦,原来是这个样子的啊,好像不会,我也在弄这个呢...作者: zjs 时间: 2008-12-4 20:35
我也在搞这个东西,这是UG的答案,希望对你有用
/*************************************************************************//
//* *//
//* This is basic example of how to write a UDOP entry in CS *//
//* To use this after you build the dll as cs_udop.dll *//
//* 1) Put the dll in a folder - for example c:\my_udops\ *//
//* 2) Create an system environment variable MYCORP_UDOP_2 and set it to *//
//* c:\my_udops\cs_udop.dll *//
//* 3) Now in NX CAM create a MILL_USER and in the UI enter MYCORP_UDOP_2 *//
//* for the "CAM API Exit Name in the user interface *//
//* press either "User Parameters" or "Generate" to see the results *//
//* *//
//*************************************************************************//作者: dianzi24 时间: 2008-12-6 16:37
MILL USER使用的环境变量是写在ug_env.dat里的。
自己想写刀位只能写在MILL USER的udop里,UG自带的操作样板里不能写进东西。作者: zjs 时间: 2008-12-7 08:49
问题是找不到UG自带的操作样板的UF_OPER_id_t * oper_id,高手请出点主意作者: dianzi24 时间: 2008-12-8 08:26
UG的操作样板不会允许你往里面写刀位的,不要走弯路,MILL USER就是专门提供给用户写自己的刀位的,我一直用它,能写出来和UG一样的,还能写出来UG没有的。多研究研究它,满足你的要求应该没问题。作者: zjs 时间: 2008-12-8 22:39
UG的操作样板是可以写刀位,只是在菜单操作,ugopen 可能不行。
MILL USER不可以选几何体,并以此为基础进行碰撞检查。碰撞检查算法很复杂,只能靠UG作者: dianzi24 时间: 2008-12-9 08:32
我一直在MILL USER里写,倒是从来没想过要在UG样板里用函数写。可以选择并保存几何体,虽然麻烦但能实现,碰撞检查没做过,确实复杂,也许有其他牛人能做。作者: zjs 时间: 2008-12-13 10:31
如果不能在MILL USER内实现碰撞检查,这样的做法是没有溶合到UG。
对于UG样板进行修改主要目的是由UG生成程序,然后对其进行优化--如在尖角处加上园弧过度。作者: 春泉 时间: 2008-12-13 19:14
实现碰撞检查不难,只是分析的时间会比较长作者: 春泉 时间: 2008-12-13 19:23
“对于UG样板进行修改主要目的是由UG生成程序,然后对其进行优化--如在尖角处加上园弧过度。”