LOGO
帮助文档
旧版文档
其它语言快速入门视频演示工程实例环境配置获取控件运行控件建mfc对话框工程设置vc++的inc和lib路径初始化控件创建窗口、打开dwg图纸效果展示参考例程
其它语言快速入门
视频演示

工程实例
环境配置

使用VS进行开发,需要先安装VS2010SP1服务包,如下所示:


dd.png


dd1.png


再安装其他版本的VS,如本次演示中使用的VS2017,我们下载安装VS2017必须安装如下图所示的选项。


dd2.png

获取控件

点击此处下载梦想CAD控件安装包。


.xz.png

运行控件

运行CAD控件安装包(自解压程序),此演示使用VC2010语言开发,如果想在除VC2010外的其他语言(如C#、VB...)、网页、或C++其他版本下使用,则需要使用控件的ActiveX版。

建mfc对话框工程

点击运行VS2017,启动后点击 左上角【文件(F)】->【新建(N)】->【项目(P)】,若正确安装VS将显示如下界面:


blob.png


可在 名称(N) 文本框内键输入项目名字,在 位置(L) 文本框内选择 控件下的sample目录:MxDraw52\Src\MxDraw5.2\samples,如下:

blob.png

MxDraw52\Src\MxDraw5.2\samples,点击确定按钮,选择“ 基于对话框 ”。如下所示:


blob.png

设置vc++的inc和lib路径

打开工程,点工程属性窗口,在属性窗口中, 将设置平台工具集为“ Visual Studio 2010 (v100)  ”,字符集为“ 使用 Unicode 字符集 ”。根据需求设置输出目录到控件 \Bin\vc100x64d 目录下,在此实例中我们输出到DEBUG/ 64 版。或将生成的EXE拷贝至上述目录下,亦可将上述目录下的环境文件拷贝至EXE所在目录下。如下所示:


blob.png


设置包含目录为控件 \Src\MxDraw5.2\MxInc ; 设置库目录为控件 \Src\MxDraw5.2\libvc100

如下所示:


blob.png

或者打开控件sample目录下的Edit工程,将其设置直接复制即可,如下:


blob.png

初始化控件

stdafx.h 中加入包含CAD控件头文件代码。


#include "..\..\..\MxInc\MxDraw.h"


CViewApp::InitInstance() 中加入对初始化控件函数的调用。


BOOL CHelloMxDrawApp::InitInstance()
{
	INITCOMMONCONTROLSEX InitCtrls;
	InitCtrls.dwSize = sizeof(InitCtrls);
	InitCtrls.dwICC = ICC_WIN95_CLASSES;
	InitCommonControlsEx(&InitCtrls);

	CWinApp::InitInstance();

	AfxEnableControlContainer();

	CShellManager *pShellManager = new CShellManager;

	CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));

	SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
	//////////////////////////////////////////////////////////////////////////
	MxDraw::InitMxDraw();//注册控件
	//////////////////////////////////////////////////////////////////////////
	CHelloMxDrawByCPPDlg dlg;
	m_pMainWnd = &dlg;
	INT_PTR nResponse = dlg.DoModal();
	if (nResponse == IDOK)
	{
	}
	else if (nResponse == IDCANCEL)
	{
	}
	else if (nResponse == -1)
	{
		TRACE(traceAppMsg, 0, "警告: 对话框创建失败,应用程序将意外终止。\n");
		TRACE(traceAppMsg, 0, "警告: 如果您在对话框上使用 MFC 控件,则无法 #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS。\n");
	}

	if (pShellManager != NULL)
	{
		delete pShellManager;
	}

#if !defined(_AFXDLL) && !defined(_AFX_NO_MFC_CONTROLS_IN_DIALOGS)
	ControlBarCleanUp();
#endif
	//////////////////////////////////////////////////////////////////////////
	MxDraw::UnInitMxDraw();//释放控件
	//////////////////////////////////////////////////////////////////////////
	return FALSE;
}


HelloMxDrawDlg.h 中生成的Dialog类中添加控件窗口句柄的成员变量。


MxDraw::MXDRAWOCXHANDLE m_hDrawOcx;
创建窗口、打开dwg图纸

在面板中添加一个Group Box来制定CAD控件界面大小、添加两个按钮,分别为“打开DWG”和“Hello World”,如下:


blob.png


Group Box设置为不可见:


blob.png


包含资源文件


#include "resource.h"


在HelloMxDrawDlg.cpp的 OnInitDialog() 函数中添加如下代码:


	// TODO: 在此添加额外的初始化代码
	CRect rcPos;
	GetDlgItem(IDC_RANGE_STATIC)->GetWindowRect(rcPos);
	ScreenToClient(rcPos);
	m_hDrawOcx = MxDraw::CreateMxDraw(this, rcPos, MxDraw::kShowCmdLineWindow);
	ASSERT(m_hDrawOcx != NULL);


为“打开DWG”按钮增加单击事件,在事件中添加如下代码:


	// TODO: 在此添加控件通知处理程序代码
	CFileDialog openDlg(TRUE, _T("dwg"), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("dwg(*.dwg) | *.dwg||"), this);

	CString sFileName;

	//打开对话的初始路径
	openDlg.m_ofn.lpstrInitialDir = _T("C:\\");

	//显示打开文件的对话框
	if (openDlg.DoModal() == IDOK)
		sFileName = openDlg.GetPathName();
	else
		return;

	//打开dwg文件,并显示
	if (!MxDraw::ReadDwg(m_hDrawOcx, sFileName))
	{
		CString sError;
		sError.Format(_T("打开dwg文件%s失败"), sFileName);
		AfxMessageBox(sError);
	}


为“Hello World”按钮增加单击事件,在事件中添加如下代码:


void CHelloMxDrawByCPPDlg::OnBnClickedHelloworldButton()
{
	// 通过 新建(读取空文件) 来清空当前空间  
	MxDraw::ReadDwg(MxDraw::GetCurOcxHandle(), _T(""));

	// 定义文字对象。
	McDbText * pText = new McDbText(
		McGePoint3d(100, 100, 0),	//文字位置
		L"Hello World",				//文字内容
		McDbObjectId::kNull,		//文字样式,为空则取当前默认样式
		200.0						//文字高度
	);

	// 设置文字颜色.
	pText->setColorIndex(Mx::mcedRGB2Index(RGB(255, 0, 0)));

	// 添加当前图形数据库中
	MrxDbgUtils::addToCurrentSpaceAndClose(pText);

	// 显示居中.
	Mx::ZoomE();

	// 刷新
	MxDraw::UpdateDisplay(MxDraw::GetCurOcxHandle());

}
效果展示

至此就是在VC++完成的一个用控件“ 打开DWG ”的入门功能,我们编译生成exe文件,    如果我们设置了输出到控件 \Bin\vc100x64d\... 直接运行即可;    或者将CAD控件 \Bin\vc100x64d\ 下的文件拷贝至生成的EXE所在目录下。运行效果如下:


hw.png

参考例程

更多的实例代码在CAD控件 \Src\MxDraw5.2\samples 下可找到。如Edit,MxDrawCADTools,MxDrawOcx,ExApp,CustomEntity,MxExpressTools。