【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
//-----------------------------------------------------------------------------
//*****************************************************************************
//-----------------------------------------------------------------------------

 

posted on 2012-12-22 16:11  wangyao1052  阅读(1131)  评论(1编辑  收藏  举报

导航