找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5535|回复: 4

[求助] 什么一直弹出一个选取一个项目的对话框呢?

[复制链接]

4

主题

8

回帖

0

威望

实习生

积分
13
发表于 2018-4-19 10:05 | 显示全部楼层 |阅读模式
大神们好,我自己编了一个获取基准轴的二次开发程序,运行的时候为什么一直弹出一个选取一个项目的对话框呢?
可是项目已经选择了
#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;
}

3

主题

66

回帖

0

威望

助工

积分
73
发表于 2018-4-19 22:41 | 显示全部楼层
太高级了,看的一脸懵逼
回复

使用道具 举报

0

主题

14

回帖

0

威望

实习生

积分
17
QQ
发表于 2018-5-22 13:17 | 显示全部楼层
使用ProAxisDataGet()试试
回复

使用道具 举报

21

主题

311

回帖

6

威望

工程师

积分
410
发表于 2018-5-22 14:52 | 显示全部楼层
err = ProSelect("axis", 1, NULL, NULL, NULL, NULL, &sels, &nSel);这一行是选中心轴
回复

使用道具 举报

4

主题

8

回帖

0

威望

实习生

积分
13
 楼主| 发表于 2018-5-24 20:17 | 显示全部楼层
已解决!谢谢大家
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

本站为非营利性站点,部分资源为网友搜集或发布,仅供学习和研究使用,如用于商业用途,请购买正版。站内所发布的资源,如有侵犯你的权益,请发邮件联系我们,本站将立即改正或删除。

手机版|小黑屋|野火论坛(©2007~2024) ( 苏ICP备11036728号-2 )苏公网安备 32039102000103号|站长QQ28016688

GMT+8, 2024-11-22 14:10 , Processed in 0.122797 second(s), 21 queries .

快速回复 返回顶部 返回列表