|
// 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",¶m_1);
ProParameterInit(&feature,L"CUBE_H",¶m_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(¶m_1,&value_1);
ProParameterValueSet(¶m_2,&value_2);
ProSolidRegenerate((ProSolid)part,PRO_B_TRUE);
ProUIDialogExit(dialog,1);
}
void Cancel_Action(char*dialog,char*component,ProAppData data)
{
ProUIDialogExit(dialog,1);
}
这个问题困扰我好久了,麻烦论坛里面的各位大神给一点点的指导,谢谢啦 |
|