ObjectARX_面域
2019独角兽企业重金招聘Python工程师标准>>>
与cad里执行REGION命令相似
具体的实现:
void ZffCHAP2AddRegion()
{
// 使用选择集,提示用户选择作为面域边界的对象
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("\n已经创建%d个面域!", number);
}
else
{
acutPrintf("\n创建0个面域!");
}
}
创建面域:
AcDbObjectIdArray CCreateEnt::CreateRegion(const AcDbObjectIdArray& curveIds)
{
AcDbObjectIdArray regionIds; // 生成的面域的ID数组
AcDbVoidPtrArray curves; // 指向作为面域边界的曲线的指针的数组
AcDbVoidPtrArray regions; // 指向创建的面域对象的指针的数组
AcDbEntity *pEnt; // 临时指针,用来关闭边界曲线
AcDbRegion *pRegion; // 临时对象,用来将面域添加到模型空间
// 用curveIds初始化curves
for (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 (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 (i = 0; i < regions.length(); i++)
{
delete (AcRxObject*)regions[i];
}
}
// 关闭作为边界的对象
for (i = 0; i < curves.length(); i++)
{
pEnt = static_cast<AcDbEntity*>(curves[i]);
pEnt->close();
}
return regionIds;
}
转载于:https://my.oschina.net/u/2930533/blog/1591427
ObjectARX_面域相关推荐
- RFC2616中文版
转自:https://www.cnblogs.com/k1988/archive/2010/01/12/2165683.html 本备忘录的状态本文件规定了互联网社区的互联网标准跟踪协议,并要求对改进 ...
- 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题
继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...
- kotlin设置CORS跨域资源共享,java设置允许跨域,服务端如何设置 springboot中设置跨域资源共享
CORS通信过程,都是浏览器或http插件自动完成,不需要 用户/开发人员 参与.对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码是完全一样的.浏览器一旦发现AJAX请求跨源,就会自动添 ...
- 三层交换机原理:01路由器如何隔离广播域?
前言: 当网络规模较大的时候,需要设备来隔离广播域,防止网络中因产生广播风暴而导致网络效率降低,而二层交换机不能隔离广播域,所以需要三层路由器设备来隔离广播域! 但三层路由器为什么能够隔离广播域,是如 ...
- 无监督域对抗算法:ICCV2019论文解析
无监督域对抗算法:ICCV2019论文解析 Drop to Adapt: Learning Discriminative Features for Unsupervised Domain Adapta ...
- CVPR2019目标检测论文看点:并域上的广义交
CVPR2019目标检测论文看点:并域上的广义交 Generalized Intersection over Union Generalized Intersection over Union: A ...
- 关于上传文件的跨域问题
在进行新框架开发的过程中,需要自定义页面组件实现脱离表单的文件(图片)上传,考虑过wex5自带的attachmentsimple的自定义写法很难受,就改用了第三方插件webuploader来实现选择文 ...
- 170222、使用Spring Session和Redis解决分布式Session跨域共享问题
使用Spring Session和Redis解决分布式Session跨域共享问题 原创 2017-02-27 徐刘根 Java后端技术 前言 对于分布式使用Nginx+Tomcat实现负载均衡,最常用 ...
- angularjs post 跨域
web api搞好了:用Ajax妥妥的:但是前端用的AngulagJS,也懒得再换为Ajax了: 但是问题来了:提示: 已拦截跨源请求:同源策略禁止读取位于 http://x.x.x.x:port/a ...
最新文章
- java上机练习01
- java 管道设计_使用管道流实现Java 8阶段构建器
- basler相机参数简要中文说明_你知道相机曝光模式怎么用么?6种相机曝光模式详解及应用...
- python心理学实验程序_psychopy coder模式编写心理试验程序 字符程序和记录反应时...
- python导入csv文件中特定列-如何使用标头完整的python导入csv文件,其中第一列为非数字...
- c语言经典算法——查找一个整数数组中第二大数
- LeetCode 40 组合总和 II
- 加密的病历单(信息学奥赛一本通-T1137)
- 什么是hypernetworks? hypernetworks简单介绍
- 新手如何使用docker搭建web服务环境
- 毕啸南专栏 | 对话阿里王坚:数据价值是新大陆,新技术将重构互联网
- Ubuntu firefox无法加载视频
- Linux嵌入式系统的电子相册代码,基于嵌入式Linux和Qt编程实现数码相框的设计
- 密立根油滴实验数据处理(C++实现)
- 苹果xsmax登录id服务器无响应,iPhone XS Max无法开机了这几招轻松解决!
- 民宿OTA运营有哪些指标数据最重要
- Vue源码之计算属性watcher
- 联通开4g没显示无服务器,为什么显示4g却没网络
- 基于Springboot+Vue实现前后端分离商城管理系统
- @Configuration(proxyBeanMethods = false) 设置这个为false有啥用