zoukankan      html  css  js  c++  java
  • 【ProToolkit范例之二】获取当前模型的名称并显示

    函数:ShowCurrModelName

    注意:ShowCurrModelName_Access函数保证只有在ProE有打开Part档或Asm档时命令才有效

    源码下载:http://download.csdn.net/detail/wangyao1052/4917016

    //-----------------------------------------------------------------------------
    //*****************************************************************************
    //-----------------------------------------------------------------------------
    #pragma region
    
    #include <ProToolkit.h>
    #include <ProUtil.h>
    #include <ProMenuBar.h>
    #include <ProMenu.h>
    #include <ProMode.h>
    #include <ProMdl.h>
    #include <ProSolid.h>
    #include <ProAsmcomp.h> 
    #include <ProArray.h>
    #include <ProModelitem.h>
    #include <ProLayer.h>
    
    // 函数声明
    uiCmdAccessState TestAccess(uiCmdAccessMode access_mode);
    uiCmdAccessState ShowCurrModelName_Access(uiCmdAccessMode access_mode);
    
    int Test(uiCmdCmdId  command,
             uiCmdValue *p_value,
             void       *p_push_command_data);
    int ShowCurrModelName(uiCmdCmdId  command,
                          uiCmdValue *p_value,
                          void       *p_push_command_data);
    
    extern "C" int user_initialize()
    {
        ProError err;
        ProFamilyName MsgFile;
        ProStringToWstring(MsgFile, "Test_Msg.txt");
    
        // 添加菜单TestMenu
        err = ProMenubarMenuAdd("TestMenu", "TestMenu", "Help", PRO_B_TRUE, MsgFile);
    
        // 添加命令和Menu Item
        uiCmdCmdId cmd_id1;
        err = ProCmdActionAdd("Test", Test, uiProeImmediate, TestAccess, 
            PRO_B_FALSE, PRO_B_FALSE, &cmd_id1);
        err = ProMenubarmenuPushbuttonAdd("TestMenu", "Test", "Test", "Test_Help",
            NULL, PRO_B_TRUE, cmd_id1, MsgFile);
    
        uiCmdCmdId cmd_id2;
        err = ProCmdActionAdd("ShowCurrModelName", ShowCurrModelName, uiProeImmediate, 
            ShowCurrModelName_Access, 
            PRO_B_FALSE, PRO_B_FALSE, &cmd_id2);
        err = ProMenubarmenuPushbuttonAdd("TestMenu", "ShowCurrModelName", "ShowCurrModelName", 
            "ShowCurrModelName_Help", NULL, PRO_B_TRUE, cmd_id2, MsgFile);
    
        return 0;
    }
    
    
    extern "C" void user_terminate()
    {     
    }
    
    int Test(uiCmdCmdId  command,
             uiCmdValue *p_value,
             void       *p_push_command_data)
    {
        AfxMessageBox(TEXT("Just For Test"));
        return 0;
    }
    
    //
    //获取当前模型的名称并显示
    //
    int ShowCurrModelName(uiCmdCmdId  command,
                          uiCmdValue *p_value,
                          void       *p_push_command_data)
    {
        ProError err;
        ProMdl mdl;
    
        err = ProMdlCurrentGet(&mdl);
        if (PRO_TK_NO_ERROR != err)
            return -1;
    
        ProName name;
        err = ProMdlNameGet(mdl, name);
    
        CString cstrName = name;
        AfxMessageBox(cstrName);
    
        return 0;
    }
    
    uiCmdAccessState TestAccess(uiCmdAccessMode access_mode)
    {
        return ACCESS_AVAILABLE;
        /*
        ProError err;
        ProMode  mode;
    
        err = ProModeCurrentGet(&mode);
        if (err != PRO_TK_NO_ERROR)
        {
            return ACCESS_UNAVAILABLE;
        }
    
        if (mode == PRO_MODE_PART 
            || mode == PRO_MODE_ASSEMBLY)
        {
            return ACCESS_AVAILABLE;
        }
        else
        {
            return ACCESS_UNAVAILABLE;
        }
        */
    }
    
    //
    // 只在Part和Asm状态下才能访问
    //
    uiCmdAccessState ShowCurrModelName_Access(uiCmdAccessMode access_mode)
    {
        ProError err;
        ProMode  mode;
    
        err = ProModeCurrentGet(&mode);
        if (err != PRO_TK_NO_ERROR)
        {
            return ACCESS_UNAVAILABLE;
        }
    
        if (mode == PRO_MODE_PART 
            || mode == PRO_MODE_ASSEMBLY)
        {
            return ACCESS_AVAILABLE;
        }
        else
        {
            return ACCESS_UNAVAILABLE;
        }
    }
    
    #pragma endregion
    //-----------------------------------------------------------------------------
    //*****************************************************************************
    //-----------------------------------------------------------------------------
  • 相关阅读:
    统计nginx日志里访问次数最多的前十个IP
    while 格式化输出 运算符 字符编码
    Python 软件安装
    Python 基础
    Typora 基础的使用方法
    Django ORM (四) annotate,F,Q 查询
    Django 惰性机制
    Django ORM (三) 查询,删除,更新操作
    Django ORM (二) 增加操作
    Django ORM (一) 创建数据库和模型常用的字段类型参数及Field 重要参数介绍
  • 原文地址:https://www.cnblogs.com/Hisin/p/2829193.html
Copyright © 2011-2022 走看看