|
大神们好,我自己编了一个获取基准轴的二次开发程序,运行的时候为什么一直弹出一个选取一个项目的对话框呢?
可是项目已经选择了
#include "stdafx.h"
#include "axis.h"
#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>
#include <ProWindows.h>
#include <string>
using std::string;
using std::wstring;
// 函数声明
uiCmdAccessState TestGetAxisData_Access(uiCmdAccessMode access_mode);
int TestGetAxisData(uiCmdCmdId command,
uiCmdValue *p_value,
void *p_push_command_data);
// Pro/TOOLKIT入口函数
extern "C" int user_initialize()
{
ProError err;
// 信息文件名称
ProFamilyName MsgFile;
ProStringToWstring(MsgFile, "Test_Msg.txt");
// 添加菜单:TestMenu
err = ProMenubarMenuAdd("TestMenu", "TestMenu", "Help", PRO_B_TRUE, MsgFile);
// 添加命令和菜单项
// 显示输出当前模型信息命令
uiCmdCmdId cmd_id1;
err = ProCmdActionAdd("TestGetAxisData", TestGetAxisData, uiCmdPrioDefault, TestGetAxisData_Access,
PRO_B_FALSE, PRO_B_FALSE, &cmd_id1);
err = ProMenubarmenuPushbuttonAdd("TestMenu", "TestGetAxisData", "TestGetAxisData", "TestGetAxisData_Help",
NULL, PRO_B_TRUE, cmd_id1, MsgFile);
return 0;
}
// Pro/TOOLKIT结束时调用的函数
extern "C" void user_terminate()
{
}
uiCmdAccessState TestGetAxisData_Access(uiCmdAccessMode access_mode)
{
return ACCESS_AVAILABLE;
}
// 获取轴的数据:轴的两个端点坐标
int TestGetAxisData(uiCmdCmdId command,
uiCmdValue *p_value,
void *p_push_command_data)
{
ProError err;
// 选择轴
ProSelection *sels;
int nSel = 0;
err = ProSelect("axis", 1, NULL, NULL, NULL, NULL, &sels, &nSel);
if (PRO_TK_NO_ERROR != err || 1 != nSel)
{
return -1;
}
// 获取选择的轴
ProGeomitem geomAxis;
err = ProSelectionModelitemGet(sels[0], &geomAxis);
// 获取轴的数据
ProGeomitemdata* geomdata;
err = ProGeomitemdataGet(&geomAxis, &geomdata);
// 输出轴的数据
CStringW cstrInfo;
cstrInfo.Format(L"轴的端点1: (%.2f, %.2f, %.2f) \n轴的端点2: (%.2f, %.2f, %.2f)",
geomdata->data.p_curve_data->line.end1[0],
geomdata->data.p_curve_data->line.end1[1],
geomdata->data.p_curve_data->line.end1[2],
geomdata->data.p_curve_data->line.end2[0],
geomdata->data.p_curve_data->line.end2[1],
geomdata->data.p_curve_data->line.end2[2]);
MessageBoxW(NULL, cstrInfo, L"icaxdev: Sample004", MB_OK);
// 释放数据
err = ProGeomitemdataFree(&geomdata);
return 0;
}
|
|