|  | 
 
| 大神们好,我自己编了一个获取基准轴的二次开发程序,运行的时候为什么一直弹出一个选取一个项目的对话框呢? 可是项目已经选择了
 #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;
 }
 
 | 
 |