找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5774|回复: 2

[求助] proe二次开发为什么不能把零件加载到内存中

[复制链接]

4

主题

6

回帖

0

威望

实习生

积分
11
发表于 2016-10-20 11:04 | 显示全部楼层 |阅读模式
// cctv.cpp : 定义 DLL 的初始化例程。
//

#include "stdafx.h"
#include "cctv.h"
#include "ProToolkit.h"
#include "ProUtil.h"
#include "ProMenubar.h"
#include "proMessage.h"
#include "ProUIDialog.h"
#include "ProUIPushbutton.h"
#include "ProMdl.h"
#include "ProModelitem.h"
#include <ProParameter.h>
#include <ProUIInputpanel.h>
#include <ProParameter.h>
#include <ProSolid.h>
#include <ProWindows.h>
#pragma comment(lib,"netapi32")

//函数申明
#ifdef _DEBUG
#define new DEBUG_NEW
#endif

//
//TODO: 如果此 DLL 相对于 MFC DLL 是动态链接的,
//                则从此 DLL 导出的任何调入
//                MFC 的函数必须将 AFX_MANAGE_STATE 宏添加到
//                该函数的最前面。
//
//                例如:
//
//                extern "C" BOOL PASCAL EXPORT ExportedFunction()
//                {
//                        AFX_MANAGE_STATE(AfxGetStaticModuleState());
//                        // 此处为普通函数体
//                }
//
//                此宏先于任何 MFC 调用
//                出现在每个函数中十分重要。这意味着
//                它必须作为函数中的第一个语句
//                出现,甚至先于所有对象变量声明,
//                这是因为它们的构造函数可能生成 MFC
//                DLL 调用。
//
//                有关其他详细信息,
//                请参阅 MFC 技术说明 33 和 58。
//

// CcctvApp

BEGIN_MESSAGE_MAP(CcctvApp, CWinApp)
END_MESSAGE_MAP()


// CcctvApp 构造

CcctvApp::CcctvApp()
{
        // TODO: 在此处添加构造代码,
        // 将所有重要的初始化放置在 InitInstance 中
}


// 唯一的一个 CcctvApp 对象

CcctvApp theApp;


// CcctvApp 初始化

BOOL CcctvApp::InitInstance()
{
        CWinApp::InitInstance();

        return TRUE;
}
static uiCmdAccessState TestAccessDfeault(uiCmdAccessMode access_mode)
{
        return(ACCESS_AVAILABLE);
}
//定义信息文件
ProFileName Msg;
int status;
//用户初始化函数
void func1();
void func2();
void OK_Action(char*,char*,ProAppData data);
void Cancel_Action(char*,char*,ProAppData data);

extern"C"int user_initialize()
{       
uiCmdCmdId Cmd_id1,Cmd_id2;
//设置信息文件名称
ProStringToWstring(Msg,"IconMessage.txt");
//在工具菜单右边添加新菜单Nmenu
ProMenubarMenuAdd("Nmenu","NewMenu","Help",PRO_B_TRUE,Msg);
//添加动作函数”命令1“
ProCmdActionAdd("CmdAct_1",(uiCmdCmdActFn)func1,2,TestAccessDfeault,PRO_B_TRUE,PRO_B_TRUE,&Cmd_id1);//注:在这里uiCmdPriority不能为default,应该为2huo
//添加动作函数”命令2“
ProCmdActionAdd("CmdAct_2",(uiCmdCmdActFn)func2,2,TestAccessDfeault,PRO_B_TRUE,PRO_B_TRUE,&Cmd_id2);
//在菜单上添加”Button1“
ProMenubarmenuPushbuttonAdd("Nmenu","Button1","FristButton","Please put the button1",NULL,PRO_B_TRUE,Cmd_id1,Msg);
//在菜单上添加“Button2“
ProMenubarmenuPushbuttonAdd("Nmenu","Button2","SecondButton","Please put the button2",NULL,PRO_B_TRUE,Cmd_id2,Msg);
return (0);
}
extern  "C" void user_terminate()
{  
AFX_MANAGE_STATE(AfxGetStaticModuleState());
}

//显示“用户按下按钮一”信息
void func1()
{
  ProUIDialogCreate("Simple","Simple");
  ProUIPushbuttonActivateActionSet("Simple","SP_OK",OK_Action,NULL);
  ProUIPushbuttonActivateActionSet("Simple","SP_Cancel",Cancel_Action,NULL);
  ProUIDialogActivate("Simple",&status);
  ProUIDialogDestroy("Simple");
}
void func2()
{  
AfxMessageBox(_T("齿轮"));
}

void OK_Action(char*dialog,char*component,ProAppData data)
{
ProError status;
ProMdl part;
int cube_id1;
ProFamilyName name1;
ProStringToWstring(name1,"E:\LIANXI\cube.prt.1");
ProModelitem feature;
ProParameter param_1;
ProParameter param_2;
ProParamvalue value_1;
ProParamvalue value_2;
double InputPanel_1_value,InputPanel_2_value;
status=ProMdlRetrieve(name1,(ProMdlType )PRO_PART ,&part);(就是在这里不能把我的零件加载到内存中,系统提示零件无法检索)
ProMdlDisplay(part);
ProMdlIdGet(part,&cube_id1);
ProModelitemInit(part,cube_id1,PRO_PART,&feature);
ProParameterInit(&feature,L"CUBE_L",&param_1);
ProParameterInit(&feature,L"CUBE_H",&param_2);
ProUIInputpanelDoubleGet("Simple","InputPanel_1",&InputPanel_1_value);
ProUIInputpanelDoubleGet("Simple","InputPanel_2",&InputPanel_2_value);
value_1.type =PRO_PARAM_DOUBLE;
value_1.value.i_val=InputPanel_1_value;
value_2.type =PRO_PARAM_DOUBLE;
value_2.value.i_val=InputPanel_2_value;
ProParameterValueSet(&param_1,&value_1);
ProParameterValueSet(&param_2,&value_2);
ProSolidRegenerate((ProSolid)part,PRO_B_TRUE);
ProUIDialogExit(dialog,1);
}

void Cancel_Action(char*dialog,char*component,ProAppData data)
{
ProUIDialogExit(dialog,1);
}
这个问题困扰我好久了,麻烦论坛里面的各位大神给一点点的指导,谢谢啦

21

主题

311

回帖

6

威望

工程师

积分
411
发表于 2018-12-21 18:54 | 显示全部楼层
ProStringToWstring(name1,"E:\LIANXI\cube.prt.1");  应该是两个\
回复

使用道具 举报

26

主题

732

回帖

7

威望

高工

积分
826
QQ
发表于 2019-3-5 23:17 | 显示全部楼层
应该要先设置工作目录吧!
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-25 17:06 , Processed in 0.263662 second(s), 22 queries .

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