- MxDraw 云图
- 快速入门
- 前端 mxdraw 和 mxcad 库预览编辑图纸
- 后台使用 Node.js 调用梦想 API
- CAD 与 GIS 集成说明
- 梦想云图 Node.JS 服务
- iOS 开发
- 安卓开发
- 网页 CAD 开发
- 网页快速入门 aspaps.netphpjava
- 图形数据库
- 参数化绘图
- 交互绘图
- 选择集
- 扩展数据
- 自定义实体
- 自定义命令
- 光栅图处理
- 图面搜索
- 控件事件
- 打印控制
- 界面控制
- COM 开发
- 视频教程
- VB 快速入门
- Delphi 快速入门
- CSharp 快速入门
- java 快速入门
- QT 快速入门
- 易语言快速入门
- Powerbuilder 快速入门
- wpf 控件入门
- 图形数据库
- 参数化绘图
- 交互绘图
- 选择集
- 扩展数据
- 自定义命令
- 自定义实体
- 打印控制
- 控件事件
- 图面搜索
- 光栅图处理
- 界面控制
- C++ 开发
- C++ bulider 快速入门
- C++ 快速入门(VS2010)
- C++ 快速入门(com 接口)
- 图纸数据库
- 参数化绘图
- 交互绘图
- 选择集
- 扩展程序
- 扩展数据
- 自定义函数
- 自定义实体
- 光栅图处理
- 图面搜索
- 控件事件
- 界面控制
- 常见问题
- 试用技术服务申请
- 会员下载最新程序
- 备用下载
- 控件安装运行说明
- 控件最新更新
- 控件功能简介
- 控件图形数据库
- 控件界面控制
- 控件命令执行原理
- 控件系统变量说明
- 控件常见问题说明
- 修改对象属性
- 网页加载 CAD 图纸的两个方案
- MxDraw3D 控件
- 前端基础工程化知识
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
块
块在MxDrawCAD控件下为一个实体类:
class ARXDLL McDbBlockReference : public McDbEntity
通过调用
// ------------------------------------------------------------------------- // Summary: // 构造函数 // ------------------------------------------------------------------------- McDbBlockReference(); // ------------------------------------------------------------------------- // Summary: // 构造函数 // Parameters: // position - 块引用插入点 // blockTableRec - 引用的块表记录id // ------------------------------------------------------------------------- McDbBlockReference(const McGePoint3d& position, McDbObjectId blockTableRec)
进行实例化,在此实例中,我们通过导入图纸的方式来添加图块,代码如下:
Mcad::ErrorStatus sErrorStu(Mcad::eOk); //获取当前数据库 auto pCurDatabase = MxDraw::GetDatabase(MxDraw::GetCurOcxHandle()); //引入一些块,供使用 { //获取准备好的文件,将该文件中所有图块插入到当前数据库 McDbDatabase mBlockBase; wchar_t pBlockPath[200] = {}; { wchar_t pTempPath[200] = {}; auto sPath = GetCommandLine(); sPath++; size_t iRank(wcslen(sPath)); for (; iRank > 0; iRank--) { if (L'/' == sPath[iRank] || L'\\' == sPath[iRank]) { wmemcpy(pTempPath, sPath, iRank); break; } } //获取路径 wsprintf(pBlockPath, L"%s%s", pTempPath, L"\\管道安装大样图.dwg"); //插入当前该你数据库 sErrorStu = mBlockBase.readDwgFile(pBlockPath); } if (Mcad::eOk == sErrorStu) { McDbObjectId mID; sErrorStu = pCurDatabase->insert(mID, nullptr, &mBlockBase); if (Mcad::eOk != sErrorStu) { MxDraw::MxMessageBox(L"导入图块成功!"); } } }
在导入之前,我们可以看到的是“插入图块”界面没有任何可用图块,如下图:
我们点击“块”按钮,代码执行到此处:
可以看到的是我们读取到了“pBlockPath”该路径中的一张dwg图纸,即为此图纸:
我们继续执行,可以看到视区会出现如下图块,这便是我们下段代码添加的第一个图块,
代码如下:
//插入一个图块 { McDbBlockTable * pTable; pCurDatabase->getBlockTable(pTable, McDb::kForRead); McDbBlockTableIterator * pIterator; pTable->newIterator(pIterator); std::auto_ptr<McDbBlockTableIterator> spIterator(pIterator);//该迭代器的生命周期绑定到智能指针 if (pIterator) { McDbObjectId mBlockTableID; //遍历所有记录 for (; !pIterator->done(); pIterator->step()) { //获取ID pIterator->getRecordId(mBlockTableID); McDbObjectPointer<McDbBlockTableRecord> spBlockRec(mBlockTableID, McDb::kForRead); auto d = spBlockRec.openStatus(); if (Mcad::eOk == spBlockRec.openStatus()) { McDbBlockReference* pBlock = new McDbBlockReference; auto mLayerID = CreateLayer(pBlock); pBlock->setBlockTableRecord(spBlockRec->objectId()); pBlock->setPosition(McGePoint3d(0, 0, 0)); pBlock->setScaleFactors(1.0); pBlock->setRotation(1.0); pBlock->setLayer(mLayerID); AddToSpaceAndPutToView(pBlock); break; } } } }
我们再次打开“插入图块”界面:
可以看到的是添加了一些图块,这些图块真是我们添加的bin目录下的图纸里的图块
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论