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