返回介绍

演示说明

发布于 2023-08-09 23:10:33 字数 3104 浏览 0 评论 0 收藏 0

下载地址:

https://mxtmpweb.mxdraw.f3322.net:3562/cpp/Tech-Database.zip

此实例将演示如何获取CAD图纸上常用的一些信息,如符号表(块表、层表、文字样式表、线型表、点样式表)、字典,演示程序在 MxDraw52\Src\MxDraw5.2\samples\Tech-Database 目录下即可编译运行, 运在行如下图:

15123700593494001.png

我们打开一张CAD图纸用作测试,首先我们得到当前活动的数据库,对于获取当前的数据库,我们可以使用如下的几种方式:

	//获得当前的数据库
	McDbDatabase * pDatabase = nullptr;
	{
		MxDraw::GetDatabase(MxDraw::GetCurOcxHandle());		//1方式
		acdbHostApplicationServices()->workingDatabase();	//2方式
		pDatabase = Mx::mcdbCurDwg();				//3方式
	}

再为当前的数据库添加一些内容,如在CAD图纸添加一些实体、图层、块引用,或者使用数据库来读取CAD图纸,比如调用McDbDatabase下的readDwgFile函数,该函数原型如下:

        // -------------------------------------------------------------------------
	// Summary:
	// 		读取DWG文件
	// Parameters:
	// 		pszFileName					-	DWG文件路径
	//		shmode						-	暂没有使用
	//		bAllowCPConversion			-	暂没有使用
	//		wszPassword					-	暂没有使用
	//      rc                          -    指定需要读取的内容,不需要读取的内容可以不读取,这样能提高读取dwg文件的速度,可以取如下值:
	// 										enum ReadContent
	// 										{
	// 											kReadAll		= 0xFFFFFFFF,
	//											kReadNull       = 0x0,				// 下面数据都不读取
	// 											kReadExData		= 0x1,
	// 											kReadHandle		= 0x2,
	// 											kReadBlockRefPreviewIcon	= 0x4,
	// 											kReadBlockLayoutName		= 0x8,
	// 											kReadObjectsDictionary		= 0x10,	// 是否读对象字典,如果不读,字典下所有数据都不会读取.
	// 											kReadGroupDict              = 0x20,	// 是否读取组字典
	// 											kReadLayoutDict             = 0x40,
	// 											kReadMlineStyleDict         = 0x80,
	// 											kReadImageDict				= 0x100,
	// 											kReadXrecord				= 0x200,
	// 											kReadDrawOrder				= 0x400,
	// 											kReadxData					= 0x800,
	// 											kReadExRecord               = 0x1000,
	// 											kReadExternalReference      = 0x2000,
	// 											kReadCustomEntity           = 0x4000  // 是否读取自定义实体,如果该为项为真,则自动让kReadHandle值也为真,因为自定义实体需要名柄支持.
	// 										}; 
	//		pInData						-	如果从内存打开文件,pInData指向内存数据。
	//		lInDataLength				-	内存数据的长度。
	// Returns:
	// 		如果成功返回Mcad::eOk,如果传递的数据非法则返回Mcad::eInvalidInput
	Mcad::ErrorStatus readDwgFile(LPCTSTR pszFileName,
		int shmode = 0x40,
		bool bAllowCPConversion = false,
		LPCTSTR wszPassword = NULL,int rc = Mcad::kReadAll,
		byte* pInData		= NULL,
		long lInDataLength	=0);

或者使用如下命令来打开CAD图纸文件:

acDocManager->sendStringToExecute(pDatabase->GetDocument(), L"OpenDwg");

此方式将以选择文件的方式来打开CAD图纸,如图:

15123710938977827.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文