(9)ObjectARX2015 + vs2012创建面域
提示:看之前的博客(1)和(4),那里已经分析了创建一个图形对象的基本过程,在之前的基础上本节开始就要将着眼点放在创建实体的参数上。
(1)ObjectARX2015 + vs2012创建直线_qq_42981953的博客-CSDN博客
(4)ObjectARX2015 + vs2012扩展绘制直线的功能为绘制实体_qq_42981953的博客-CSDN博客
1. 说明
static Acad::ErrorStatus createFromCurves( const AcDbVoidPtrArray& curveSegments, //CurveSegments 是一个指向曲线实体的指针数组,用来定义面域的边界,作为面域边界的曲线必须首尾相连;AcDbVoidPtrArray& regions); //regions 是一个指针数组,返回指向新创建的面域的指针。
3. 步骤
(1) 创建面域
//面域
static AcDbObjectIdArray CreateRegion(AcDbObjectIdArray curveIds);
//创建面域
AcDbObjectIdArray CCreateEnt::CreateRegion(AcDbObjectIdArray curveIds)
{ AcDbObjectIdArray regionIds; // 生成的面域的ID数组AcDbVoidPtrArray curves; // 指向作为面域边界的曲线的指针的数组AcDbVoidPtrArray regions; // 指向创建的面域对象的指针的数组AcDbEntity *pEnt; // 临时指针,用来关闭边界曲线AcDbRegion *pRegion; // 临时对象,用来将面域添加到模型空间// 用curveIds初始化curvesfor (int i = 0; i < curveIds.length(); i++) { acdbOpenAcDbEntity(pEnt, curveIds.at(i), AcDb::kForRead); if (pEnt->isKindOf(AcDbCurve::desc())) { curves.append(static_cast<void*>(pEnt)); } } Acad::ErrorStatus es = AcDbRegion::createFromCurves(curves, regions); if (es == Acad::eOk) { // 将生成的面域添加到模型空间for (int i = 0; i < regions.length(); i++) { // 将空指针(可指向任何类型)转化为指向面域的指针pRegion = static_cast<AcDbRegion*>(regions[i]); pRegion->setDatabaseDefaults(); AcDbObjectId regionId; regionId = CCreateEnt::PostToModelSpace(pRegion); regionIds.append(regionId); } } else // 如果创建不成功,也要删除已经生成的面域{ for (int i = 0; i < regions.length(); i++) { delete (AcRxObject*)regions[i]; } } // 关闭作为边界的对象for (int i = 0; i < curves.length(); i++) { pEnt = static_cast<AcDbEntity*>(curves[i]); pEnt->close(); }return regionIds;
}
(2) 在acrxEntryPoint.cpp中添加
ACED_ARXCOMMAND_ENTRY_AUTO(CArxConfigApp, MidasMyGroup, MyDrawRegion, MyDrawRegion, ACRX_CMD_MODAL, NULL) //画多段线
//当前项目中注册一个命令 AddRegionstatic void MidasMyGroupMyDrawRegion() { // 使用选择集,提示用户选择作为面域边界的对象ads_name ss; int rt = acedSSGet(NULL, NULL, NULL, NULL, ss); // 提示用户选择对象AcDbObjectIdArray objIds; // 根据选择集中的对象构建边界曲线的ID数组if (rt == RTNORM) { long length; acedSSLength(ss, &length); // 获得选择集中的对象个数for (int i = 0; i < length; i++) { ads_name ent; acedSSName(ss, i, ent); AcDbObjectId objId; acdbGetObjectId(objId, ent); objIds.append(objId); } } acedSSFree(ss); // 及时释放选择集AcDbObjectIdArray regionIds;regionIds = CCreateEnt::CreateRegion(objIds); int number = regionIds.length(); if (number > 0) { acutPrintf(_T("\n已经创建%d个面域!"), number); } else { acutPrintf(_T("\n创建0个面域!")); }}
实现效果:
(1) 创建两个首尾相连的图形
(2) 输入命令 MyDrawRegion后回车键
(3) 选择所有线段
(4) 回车键
(9)ObjectARX2015 + vs2012创建面域相关推荐
- (15)ObjectARX2015 + vs2012创建三维实体
1. 说明 ObjectARX 中提供了三类创建三维实体的方法: (1)创建标准形状的实体 (2)拉伸面域创建实体 ...
- (14)ObjectARX2015 + vs2012创建和编辑对象时的动态拖动技术
提示:看之前的博客(1)(4)和(12),那里已经分析了创建一个图形对象的基本过程,在之前的基础上本节开始就要将着眼点放在创建实体的参数上. (1)ObjectARX2015 + vs2012创建直线 ...
- (6)ObjectARX2015 + vs2012创建圆弧
提示:看之前的博客(1)和(4),那里已经分析了创建一个图形对象的基本过程,在之前的基础上本节开始就要将着眼点放在创建实体的参数上. (1)ObjectARX2015 + vs2012创建直线_qq_ ...
- (7)ObjectARX2015 + vs2012创建多段线以及实体的旋转移动放缩
提示:看之前的博客(1)和(4),那里已经分析了创建一个图形对象的基本过程,在之前的基础上本节开始就要将着眼点放在创建实体的参数上. (1)ObjectARX2015 + vs2012创建直线_qq_ ...
- (12)ObjectARX2015 + vs2012创建尺寸标注
提示:看之前的博客(1)和(4),那里已经分析了创建一个图形对象的基本过程,在之前的基础上本节开始就要将着眼点放在创建实体的参数上. (1)ObjectARX2015 + vs2012创建直线_qq_ ...
- (24)ObjectARX2015 + vs2012创建字体样式
1. 说明 AutoCAD 中可以使用 STYLE 命令创建新的字体样式,包括 设置样式名. 选择字体文件. ...
- (17)ObjectARX2015 + vs2012创建块定义
1. 说明 本篇举例块定义中包含两条直线和一个圆. 2. 思路 所有的实体都保存在块表记录中,而块表记录则存储在块表中.实际上,用户在 AutoCAD 中定义块相当于增 ...
- 创建BDC域控制器时,提示“出站复制验证失败。在复制源域控制器上未启用出站复制”的解决办法...
创建BDC域控制器时,在完成角色添加后的部署界面,进行配置后的先决条件检查,提示失败如下: 后在现有DC上通过windows powershell(CMD管理员模式)运行repadmin /showr ...
- VS2012创建ATL工程及使用MFC测试COM组件
VS2012创建ATL工程及使用MFC测试COM组件 原创 2015年01月22日 16:23:21
最新文章
- 深度学习中的优化简介
- @excel注解_java bean 一对多,多对一 poi导出excel表格
- DDD 领域驱动设计:贫血模型、充血模型的深入解读
- 帮中国修长城前,英特尔还用AI追踪北极熊、保护鲸鱼
- 亲密关系沟通-【信任感】-巩固信任感的沟通方法
- 源码之前,了无秘密(一)——iterator adapter
- 后端类型/状态/标识校验限定法
- pom中子模块project报红,插件运行Process terminated
- Python入门经典. 以解决计算问题为导向的Python编程实践
- BCDboot.exe
- Access入门简单教程
- sht30温湿度传感器中文手册_DHT11温湿度传感器编程思路以及代码的实现
- 混合移动开发 相关技术梳理(自用)
- Requested setting DATABASES, but settings are not configured. You must either define the environment
- 计算机中应用g,CH340g使用说明详解 - 全文
- 基因数据处理54之bwa-mem运行paird-end(1千万条100bp的reads)
- Word2019中Visio对象图片插入题注时自动删除标签与编号前的空格,编号后添加空格
- 03-多线程下载网图
- 可以设置时间的计时器
- Google play billing Alpha / Beta 测试
热门文章
- 低成本,高利润,高复购
- 心是一块田 要靠自己播种
- 小米旗舰机2999元?雷军说很痛苦
- PowerShell_零基础自学课程_6_PS中获取帮助信息详解、管道、格式化输
- 通过英雄联盟塞拉斯大招学习策略模式和命令模式
- Falco: Fast likelihood based collision avoidance with extension to human guided navigation
- 学计算机文化基础,第一学期计算机文化基础-5次作业
- 2021美赛D题艺术家思路整理
- 执行查询报memory is temporarily unavailable
- 短视频APP+不同类型社交应用发展分析+化妆品电商