iCAx开思网
标题:
PRO/E进去二次开发问题
[打印本页]
作者:
明月475672563
时间:
2008-5-19 09:16
标题:
PRO/E进去二次开发问题
大家好,我在对PRO/E进去二次开发过程中遇到了一个问题,希望能够得到大家的帮助。
我用的是VC++6.0,MFC,基于Pro/toolkit。在完成程序编译的时候,VC显示没有错误或警告。在运行应用程序的时候,文件注册后也可以顺利运行,但是就是读取不了模型样版的参数,输入新的参数也更新不了三维模型。
作者:
vin
时间:
2008-5-19 12:50
代码没看到帮不了你.
作者:
明月475672563
时间:
2008-5-20 10:28
标题:
回复 2楼 vin 的帖子
// DlgSuctionchamberfor.cpp : implementation file
//
#include "stdafx.h"
#include "jetpump.h"
#include "DlgSuctionchamberfor.h"
#include "DlgFlangefor.h"
#include "DlgScforwhorlEx.h"
#include "DlgScforwhorlIn.h"
#include "
roMdl.h"
#include "
roUtil.h"
#include "
roDimension.h"
#include "math.h"
#include "prowindows.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/*--------------------------------------------------------------------*\
Functions declaration
\*--------------------------------------------------------------------*/
int GetDimensionInf();
ProError DimValueUpdate();
void DimFree();
/*--------------------------------------------------------------------*\
Application global variables
\*--------------------------------------------------------------------*/
extern double d[200];
/////////////////////////////////////////////////////////////////////////////
// CDlgSuctionchamberfor dialog
CDlgSuctionchamberfor::CDlgSuctionchamberfor(CWnd* pParent /*=NULL*/)
: CDialog(CDlgSuctionchamberfor::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgSuctionchamberfor)
m_d1 = 0.0;
m_d2 = 0.0;
m_d3 = 0.0;
m_d4 = 0.0;
m_l1 = 0.0;
m_l2 = 0.0;
m_l3 = 0.0;
m_l4 = 0.0;
m_r = 0.0;
m_scfinf = _T("设计水平吸入室");
//}}AFX_DATA_INIT
}
void CDlgSuctionchamberfor:
oDataExchange(CDataExchange* pDX)
{
CDialog:
oDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgSuctionchamberfor)
DDX_Text(pDX, IDC_EDIT_D1, m_d1);
DDX_Text(pDX, IDC_EDIT_D2, m_d2);
DDX_Text(pDX, IDC_EDIT_D3, m_d3);
DDX_Text(pDX, IDC_EDIT_D4, m_d4);
DDX_Text(pDX, IDC_EDIT_L1, m_l1);
DDX_Text(pDX, IDC_EDIT_L2, m_l2);
DDX_Text(pDX, IDC_EDIT_L3, m_l3);
DDX_Text(pDX, IDC_EDIT_L4, m_l4);
DDX_Text(pDX, IDC_EDIT_R, m_r);
DDX_Text(pDX, IDC_STATIC_Inf, m_scfinf);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDlgSuctionchamberfor, CDialog)
//{{AFX_MSG_MAP(CDlgSuctionchamberfor)
ON_WM_MOVE()
ON_BN_CLICKED(IDC_Update, OnUpdate)
ON_BN_CLICKED(IDC_BUTTON_Flange, OnBUTTONFlange)
ON_BN_CLICKED(IDC_BUTTON_WhorlEx, OnBUTTONWhorlEx)
ON_BN_CLICKED(IDC_BUTTON_WhorlIn, OnBUTTONWhorlIn)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlgSuctionchamberfor message handlers
BOOL CDlgSuctionchamberfor::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
//调用自定义函数获得模型尺寸(地址及值)
int GetDimInfRult;
GetDimInfRult=GetDimensionInf();
//若调用成功则获得模型各参数
if (GetDimInfRult)
{
m_d1 = d[66];
m_d2 = d[59];
m_d3 = d[60];
m_d4 = d[49];
m_l1 = d[149];
m_l2 = d[152];
m_l3 = d[150];
m_l4 = d[151];
m_r = d[54];
m_scfinf = _T("设计水平吸入室");
UpdateData(false);
}
else
{
AfxMessageBox("无法获得当前模型尺寸或当前模型不存在!");
return false;
}
return true; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDlgSuctionchamberfor::OnMove(int x, int y)
{
// TODO: Add your message handler code here
ProWindowRepaint(PRO_VALUE_UNUSED); //刷新
}
void CDlgSuctionchamberfor::OnUpdate()
{
// TODO: Add your control notification handler code here
ProError status;
UpdateData(true);
//更新尺寸
d[66] = m_d1;
d[59] = m_d2;
d[60] = m_d3;
d[49] = m_d4;
d[149] = m_l1;
d[152] = m_l2;
d[150] = m_l3;
d[151] = m_l4;
d[54] = m_r;
//非驱动尺寸和其他尺寸的关系
d[0] =360;
d[64] =d[59];
d[87] =d[88];
//调用自定义函数更新模型
status=DimValueUpdate();
if(status==PRO_TK_NO_ERROR)
{
m_scfinf = _T("模型更新成功!");
}
else
{
AfxMessageBox("模型更新失败,请更改参数!");
m_scfinf = _T("模型更新失败,请更改参数!");
}
UpdateData(false);
}
void CDlgSuctionchamberfor::OnCancel()
{
// TODO: Add extra cleanup here
//调用自定义函数释放尺寸对象指针数组
DimFree();
//各变量清零
m_d1 = 0.0;
m_d2 = 0.0;
m_d3 = 0.0;
m_d4 = 0.0;
m_l1 = 0.0;
m_l2 = 0.0;
m_l3 = 0.0;
m_l4 = 0.0;
m_r = 0.0;
m_scfinf = _T("设计水平吸入室");
//关闭当前窗口
CDialog:
estroyWindow();
}
void CDlgSuctionchamberfor::OnBUTTONFlange()
{
// TODO: Add your control notification handler code here
AFX_MANAGE_STATE(AfxGetStaticModuleState());
int status;
CDlgFlangefor dlgflangefor;
status=dlgflangefor.DoModal();//创建对话框
if(status==0)
{
AfxMessageBox("对话框创建失败.");
}
}
void CDlgSuctionchamberfor::OnBUTTONWhorlEx()
{
// TODO: Add your control notification handler code here
AFX_MANAGE_STATE(AfxGetStaticModuleState());
int status;
CDlgScforwhorlEx dlgscforwhorlex;
status=dlgscforwhorlex.DoModal();//创建对话框
if(status==0)
{
AfxMessageBox("对话框创建失败.");
}
}
void CDlgSuctionchamberfor::OnBUTTONWhorlIn()
{
// TODO: Add your control notification handler code here
AFX_MANAGE_STATE(AfxGetStaticModuleState());
int status;
CDlgScforwhorlIn dlgscforwhorlin;
status=dlgscforwhorlin.DoModal();//创建对话框
if(status==0)
{
AfxMessageBox("对话框创建失败.");
}
}
作者:
vin
时间:
2008-5-20 10:37
这段代码只生成对话框,没有对模型进行操作,还要加入很多toolkit相对应函数才行呀.
作者:
明月475672563
时间:
2008-5-21 14:48
标题:
回复 4楼 vin 的帖子
你是说还要添加对模块操作的函数吗?你可以给我具体说明一下吗?
作者:
vin
时间:
2008-5-22 16:21
最简单的方法思路:从输入框中提取double数值,用ProModelitemInit();得到各特征数值控制句柄,ProDimensionValueSet();将double
值递给特征数值,ProSolidRegenerate();后生成新模型啦
欢迎光临 iCAx开思网 (https://www.icax.org/)
Powered by Discuz! X3.3