iCAx开思网
标题:
哪位高手帮忙解释一下下面这段proe二次开发代码的含义。谢谢!
[打印本页]
作者:
hejun3721
时间:
2008-10-24 00:42
标题:
哪位高手帮忙解释一下下面这段proe二次开发代码的含义。谢谢!
下面这段代码摘自一个二次开发的例子,在下有很多不明白的地方,希望哪位高手帮忙解释一下,越详细越好。先谢谢了!
// NewMdlDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "Ch2_Dlg2.h"
#include "NewMdlDlg.h"
#include <
roToolkit.h>
#include <
roUtil.h>
#include <
roSolid.h>
#include <
roMdl.h>
#include <
roDrawing.h>
#include <ProWindows.h>
// CNewMdlDlg 对话框
IMPLEMENT_DYNAMIC(CNewMdlDlg, CDialog)
CNewMdlDlg::CNewMdlDlg(CWnd* pParent)
: CDialog(CNewMdlDlg::IDD, pParent)
, m_nRadioBtn(0)
, m_csMdlName(_T(""))
{
}
CNewMdlDlg::~CNewMdlDlg()
{
}
void CNewMdlDlg:
oDataExchange(CDataExchange* pDX)
{
CDialog:
oDataExchange(pDX);
DDX_Radio(pDX, IDC_RADIO_PART, m_nRadioBtn);
DDX_Text(pDX, IDC_EDIT1, m_csMdlName);
}
BEGIN_MESSAGE_MAP(CNewMdlDlg, CDialog)
ON_BN_CLICKED(IDOK, OnBnClickedOk)
END_MESSAGE_MAP()
// CNewMdlDlg 消息处理程序
/************************************************************************/
/* 【确定】的事务处理程序 */
/************************************************************************/
void CNewMdlDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
if (!m_csMdlName.IsEmpty()) {
AfxMessageBox("请输入名称!");
return;
}
switch(m_nRadioBtn) {
case 0:
if (!NewPartMdl(m_csMdlName)) {
return;
}
break;
case 1:
if (!NewAsmMdl(m_csMdlName)) {
return;
}
break;
case 2:
if (!NewDrawingMdl(m_csMdlName)) {
return;
}
break;
default:
break;
}
OnOK();
}
/************************************************************************/
/*函数:NewPartMdl 新建零件模型 */
/************************************************************************/
bool CNewMdlDlg::NewPartMdl(CString csName)
{
ProError status;
ProLine buff;
ProMdl model;
int w_id;
ProStringToWstring(buff,csName.GetBuffer());
status = ProSolidCreate(buff, PRO_PART, (ProSolid *)&model);
if (status!=PRO_TK_NO_ERROR)
{
AfxMessageBox("文件已存在或文件名不合法!");
return false;
}
if (status==PRO_TK_NO_ERROR) {
ProMdlDisplay(model);
ProMdlWindowGet(model,&w_id);
ProWindowActivate(w_id);
}
return true;
}
/************************************************************************/
/*函数:NewAsmMdl 新建组件模型 */
/************************************************************************/
bool CNewMdlDlg::NewAsmMdl(CString csName)
{
ProError status;
ProLine buff;
ProMdl model;
int w_id;
ProStringToWstring(buff,csName.GetBuffer());
status = ProSolidCreate(buff,PRO_ASSEMBLY,(ProSolid *)&model);
if (status!=PRO_TK_NO_ERROR)
{
AfxMessageBox("文件已存在或文件名不合法!");
return false;
}
if (status==PRO_TK_NO_ERROR) {
ProMdlDisplay(model);
ProMdlWindowGet(model,&w_id);
ProWindowActivate(w_id);
}
}
/************************************************************************/
/*函数:NewAsmMdl 新建工程图模型 */
/************************************************************************/
bool CNewMdlDlg::NewDrawingMdl(CString csName)
{
ProMdl solid_mdl;
ProMdldata data;
ProModel model;
ProName dwg_template;
ProName name;
ProDrawing drawing;
ProError status;
ProDwgcreateOptions option=PRODWGCREATE_DISPLAY_DRAWING|PRODWGCRTERR_TEMPLATE_USED ;
ProDwgcreateErrs errors;
char strtmp[PRO_PATH_SIZE];
status=ProMdlCurrentGet(&solid_mdl);
if (status!=PRO_TK_NO_ERROR) {
AfxMessageBox("当前没有三维模型,不能生成二维模型!");
return false;
}
status=ProMdlDataGet(solid_mdl,&data);
ProWstringToString(strtmp,data.name);
ProStringToWstring(model.name,strtmp);
ProWstringToString(strtmp,data.type);
ProStringToWstring(model.type,strtmp);
//设置绘图模版名
ProStringToWstring(dwg_template,"c_drawing");
ProStringToWstring(name,csName.GetBuffer());
ProDrawingFromTmpltCreate(name,dwg_template,&model,option,&drawing,&errors);
return true;
}
作者:
loveat2009
时间:
2008-10-27 17:02
這是編程方面的,應該先了解程序的命令單詞較好.
作者:
jianxiao123
时间:
2008-11-25 22:52
这是PROE二次开发技术基础里面的代码啊
这本书有解释的
作者:
jianxiao123
时间:
2008-11-25 22:55
原书见电子工业出版社的浙大旭日科技编写的“PROE二次开发技术基础”
作者:
guangwen_d
时间:
2008-11-27 20:56
是用VC通过Pro/Toolkit开发ProE方面的程序
欢迎光临 iCAx开思网 (https://www.icax.org/)
Powered by Discuz! X3.3