NX CAM二次开发——创建操作2(添加刀具和几何)

文章详细描述了在NXOpen_Wizard19.c文件中,如何通过UnigraphicsAPI进行应用的显式激活,包括初始化、创建加工设置、几何体和刀具等操作,以及处理卸载时的回调函数。
摘要由CSDN通过智能技术生成

/*****************************************************************************
**
** NXOpen_Wizard19.c
**
** Description:
**     Contains Unigraphics entry points for the application.
**
*****************************************************************************/

/* Include files */
#include <stdarg.h>
#include <stdio.h>
#include <uf.h>
#include <uf_ui_types.h>
#include <uf_ui.h>
#include <uf_assem.h>
#include <uf_ncgroup.h>
#include <uf_setup.h>
#include <uf_ui_ont.h>
#include <uf_obj.h>
#include <uf_oper.h>
#include <uf_param.h>
#include <uf_param_indices.h>
#include <uf_cutter.h>
static void ECHO(char *format, ...)
{
    char msg[UF_UI_MAX_STRING_BUFSIZE];
    va_list args;
    va_start(args, format);
    vsnprintf_s(msg, sizeof(msg), _TRUNCATE, format, args);
    va_end(args);
    UF_UI_open_listing_window();
    UF_UI_write_listing_window(msg);
    UF_print_syslog(msg, FALSE);
}

#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))

static int report_error( char *file, int line, char *call, int irc)
{
    if (irc)
    {
        char err[133];

        UF_get_fail_message(irc, err);
        ECHO("*** ERROR code %d at line %d in %s:\n",
            irc, line, file);
        ECHO("+++ %s\n", err);
        ECHO("%s;\n", call);
    }

    return(irc);
}


/*****************************************************************************
**  Activation Methods
*****************************************************************************/
/*  Explicit Activation
**      This entry point is used to activate the application explicitly, as in
**      "File->Execute UG/Open->User Function..." */
extern DllExport void ufusr( char *parm, int *returnCode, int rlen )
{
    /* Initialize the API environment */
    if( UF_CALL(UF_initialize()) ) 
    {
        /* Failed to initialize */
        return;
    }
    
    /* TODO: Add your application code here */

    //创建加工设置
    UF_SETUP_create(UF_ASSEM_ask_work_part(), "mill_planar");

    //获取当前NX的加工设置TAG
    tag_t setup_tag = NULL_TAG;
    UF_SETUP_ask_setup(&setup_tag);
    if (setup_tag == NULL_TAG)
    {
        uc1601("提示:请先初始化加工环境!", 1);
        return;
    }

    //获取几何视图的根节点
    tag_t geom_group = NULL_TAG;
    UF_SETUP_ask_geom_root(setup_tag, &geom_group);

    //创建加工坐标系
    tag_t mcsTag = NULL_TAG;
    UF_NCGEOM_create("mill_planar", "MCS", &mcsTag);

    //添加成员
    UF_NCGROUP_accept_member(geom_group, mcsTag);

    //修改加工坐标系的名称
    UF_OBJ_set_name(mcsTag, "MyMCS");

    //创建几何体
    tag_t workpieceTag = NULL_TAG;
    UF_NCGEOM_create("mill_planar", "WORKPIECE", &workpieceTag);

    //添加workpiece到加工坐标系下
    UF_NCGROUP_accept_member(mcsTag, workpieceTag);

    //修改workpiece的名称
    UF_OBJ_set_name(workpieceTag, "MyWorkPiece");

    
    //获取程序视图的根节点
    tag_t prog_group = NULL_TAG;
    UF_SETUP_ask_program_root(setup_tag, &prog_group);

    //创建操作
    tag_t operTag = NULL_TAG;

    UF_OPER_create("mill_contour", "CAVITY_MILL", &operTag);

    //添加工序操作到程序组
    UF_NCGROUP_accept_member(prog_group, operTag);

    //修改加工坐标系的名称
    UF_OBJ_set_name(operTag, "Myoper");

    //创建新刀具,获取新刀具的Tag
    tag_t  NewToolObject = null_tag;
    UF_CUTTER_create("mill_planar", "Mill", &NewToolObject);

    //设定刀具名称
    const char * ToolName = "D10";
    UF_OBJ_set_name(NewToolObject, ToolName);

    //以下设置刀具的直径、总长、锥度、刀具号、旋转方向、刀柄等参数

    //设置刀具的直径
    UF_PARAM_set_double_value(NewToolObject, UF_PARAM_TL_DIAMETER, 10);

    //设置刀具的总长
    UF_PARAM_set_double_value(NewToolObject, UF_PARAM_TL_HEIGHT, 100.0);

    //设置刀具的刃长
    UF_PARAM_set_double_value(NewToolObject, UF_PARAM_TL_FLUTE_LN, 50.0);
    
    tag_t ToolRootGroup = null_tag;
    UF_SETUP_ask_mct_root(setup_tag, &ToolRootGroup);

    UF_NCGROUP_accept_member(ToolRootGroup, NewToolObject);

//添加工序操作的对应参数

    //将几何和刀具添加到操作中
       UF_NCGROUP_accept_member(workpieceTag, operTag);
    UF_NCGROUP_accept_member(NewToolObject, operTag);
     /*_NCGROUP_accept_member(programGroupName, operTag);*/

    //刷新加工导航器
    UF_UI_ONT_refresh();

    
    


    /* Terminate the API environment */
    UF_CALL(UF_terminate());
}

/*****************************************************************************
**  Utilities
*****************************************************************************/

/* Unload Handler
**     This function specifies when to unload your application from Unigraphics.
**     If your application registers a callback (from a MenuScript item or a
**     User Defined Object for example), this function MUST return
**     "UF_UNLOAD_UG_TERMINATE". */
extern int ufusr_ask_unload( void )
{
    return( UF_UNLOAD_IMMEDIATELY );
}

  • 32
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值