- 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 McDbLine : public McDbCurve
通过调用直线类的构造函数
// ------------------------------------------------------------------------- // Summary: // 构造函数 // ------------------------------------------------------------------------- McDbLine(); // ------------------------------------------------------------------------- // Summary: // 由两个点构造函数 // Parameters: // start - 直线的开点 // end - 直线的结束 // ------------------------------------------------------------------------- McDbLine(const McGePoint3d& start, const McGePoint3d& end);
或使用如下的方式来初始化直线实体:
McDbLine * pLine = new McDbLine;
通过设置函数来改变它的属性,如下:
McDbLine * pLine = new McDbLine(McGePoint3d(0, 0, 0), McGePoint3d(1, 1, 1));
使用通用模板函数来进行设置,该函数代码如下:
template<typename T> inline void CParamDrawDlg::SetEnt(unsigned short iColorIndex, LPCTSTR pszNewVal, T * pEnt, std::function<void(McDbObjectId)> SetLayer, std::function<void(T*)> SetEnt) { //获取到设置的相关层 auto mLayerID = CreateLayer(pEnt); //把实体设置成红色,且加入到新层中去 pEnt->setColorIndex(iColorIndex); pEnt->setAlwaysShowLineWeight(true); pEnt->setLineWeight(McDb::kLnWt018); pEnt->setLinetype(pszNewVal); pEnt->setLayer(mLayerID); //对于层进行更多的设置 if (SetLayer) { SetLayer(mLayerID); } //对于实体进行更多的设置 if (SetEnt) { SetEnt(pEnt); } AddToSpaceAndPutToView(pEnt); }
初始化“直线”并调用它:
{ McDbLine * pEnt = new McDbLine(McGePoint3d(0, 0, 0), McGePoint3d(1, 1, 0)); SetEnt(256, _T("ByLayer"), pEnt);//颜色随层,线型随层 } { McDbLine * pEnt = new McDbLine(McGePoint3d(0, 1, 0), McGePoint3d(1, 2, 0)); SetEnt(0, _T("ByBlock"), pEnt);//颜色随块,线型随块 } { McDbLine * pEnt = new McDbLine(McGePoint3d(0, 2, 0), McGePoint3d(1, 3, 0)); SetEnt(2, _T("BORDER"), pEnt);//黄色,BORDER线型 }
在上述代码中,在将直线实体放入模型空间之前,将直线设置为红色并将该实体类型放入新加入的图层中,在添加模型空间并关闭实体之后,便不能再修改它的属性,但可以通过以打开的方式来修改它,在参数化绘制“文字”时,我调用代码示例如下:
{ McDbText * pEnt = new McDbText(McGePoint3d(0, 0, 0), _T("测试1"), McDbObjectId::kNull, 5.0, 1.0); SetEnt(256, _T("ByLayer"), pEnt);//颜色随层,线型随层 } { McDbText * pEnt = new McDbText(McGePoint3d(10, 0, 0), _T("测试2")); SetEnt<McDbText>(0, _T("ByBlock"), pEnt, nullptr, [](McDbText * pFuncEnt) { pFuncEnt->setAlignmentPoint(McGePoint3d(1, 1, 0)); pFuncEnt->setHeight(10); pFuncEnt->setHorizontalMode(McDb::kTextRight); pFuncEnt->setOblique(0.5); });//颜色随层,线型随层 } { McDbText * pEnt = new McDbText(McGePoint3d(20, 0, 0), _T("测试3")); SetEnt<McDbText>(2, _T("BORDER"), pEnt, [](McDbObjectId mLayerID) { McDbObjectPointer<McDbLayerTableRecord> spLayer(mLayerID, McDb::kForWrite); spLayer->setIsLocked(true); spLayer->setBright(100); // spLayer->setIsFrozen(true); spLayer->setIsLocked(true); }, [](McDbText * pFuncEnt) { pFuncEnt->setWidthFactor(2); pFuncEnt->setColorIndex(4); pFuncEnt->setHeight(10); pFuncEnt->setRotation(1); });//颜色随层,线型随层 }
这里我们在第三个文字的SetEnt函数中添加了设置图层并打开层表记录,调用调用代码如下:
McDbObjectPointer<McDbLayerTableRecord> spLayer(mLayerID, McDb::kForWrite); spLayer->setIsLocked(true); spLayer->setBright(100); // spLayer->setIsFrozen(true); spLayer->setIsLocked(true);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论