Objectarx之分批存储相连实体
void CCommonFuntion::BatchStorageEnt(AcDbObjectIdArray& inputId, std::vector<std::vector<AcDbObjectId>>& outputId)
{
AcDbEntity *pEnt = NULL;
AcDbEntity *tempEnt = NULL;
if (inputId.length() == 1)
{
std::vector<AcDbObjectId> tempcompare;
tempcompare.push_back(inputId[0]);
outputId.push_back(tempcompare);
}
else
{
for (int i = 0; i < inputId.length(); i++)
{
bool tag = true;
if (Acad::eOk != acdbOpenObject(pEnt, inputId[i], AcDb::kForRead))
continue;
for (int j = 0; j < inputId.length(); j++)
{
std::vector<AcDbObjectId> tempcompare;
if (inputId[i] == inputId[j])
continue;
if (Acad::eOk != acdbOpenObject(tempEnt, inputId[j], AcDb::kForRead))
continue;
AcGePoint3dArray intersectPoints;
tempEnt->intersectWith(pEnt, AcDb::kOnBothOperands, intersectPoints);
if (intersectPoints.length() > 0)
{
tag = false;
bool ent_tag = true;
int ent_num = 0;
for (int k = 0; k < outputId.size(); k++)
{
if (std::find(outputId[k].begin(), outputId[k].end(), inputId[i]) != outputId[k].end())//存在实体ID
{
ent_tag = false;
ent_num = k;
break;
}
}
bool tement_tag = true;
int tempent_num = 0;
for (int k = 0; k < outputId.size(); k++)
{
if (std::find(outputId[k].begin(), outputId[k].end(), inputId[j]) != outputId[k].end())//存在实体ID
{
tement_tag = false;
tempent_num = k;
break;
}
}
if (ent_tag)
{
if (tement_tag)
{
tempcompare.push_back(inputId[i]);
tempcompare.push_back(inputId[j]);
outputId.push_back(tempcompare);
}
else
outputId[tempent_num].push_back(inputId[i]);
}
else
{
if (tement_tag)
outputId[ent_num].push_back(inputId[j]);
else
{
if (tempent_num != ent_num)
{
for (int Num = 0; Num < outputId[tempent_num].size(); Num++)
{
outputId[ent_num].push_back(outputId[tempent_num][Num]);
}
std::remove(outputId.begin(), outputId.end(), outputId[tempent_num]);
}
}
}
}
if (tempEnt)
tempEnt->close();
}
if (tag)
{
std::vector<AcDbObjectId> tempvector;
tempvector.push_back(inputId[i]);
outputId.push_back(tempvector);
}
if (pEnt)
pEnt->close();
}
}
}
Objectarx之分批存储相连实体的更多相关文章
- iOS开发笔记9:NSUserDefaults存储自定义实体对象
NSUserDefaults常常用来本地存储一些简单的数据,例如用户信息等等,NSUserDefaults支持floats.doubles.integers.Booleans.URLs.NSData. ...
- 读取Excel文件存储在实体类中
1.Maven文件 <!--读取Excel的架包--> <dependency> <groupId>org.apache.poi</groupId> & ...
- C#/AutoCAD 2018/ObjectArx/二次开发再说实体(六)
这些函数对大家很有用,如果想获取详细源代码请加云幽学院yunyou.ke.qq.com报名免费课程,如果想学习更系统.更全面的知识请报名收费课程,有大量开发案例共享. 1.获取模型空间中所有实体 #r ...
- 关于SubSonic3.0插件使用Json反序列化获得的实体进行更新操作时,只能执行添加而不能执行修改(编辑)操作的处理
由于目前开发的项目使用云计算技术,客户端只进行UI与相关事件的功能开发,而所有的计算与处理都放到了服务器端,客户端与数据库没有任何关联,所以服务器端与客户端使用我们自己开发的通讯加密方式进行,而具体的 ...
- Entity Framework 实体框架的形成之旅--数据传输模型DTO和实体模型Entity的分离与联合
在使用Entity Framework 实体框架的时候,我们大多数时候操作的都是实体模型Entity,这个和数据库操作上下文结合,可以利用LINQ等各种方便手段,实现起来非常方便,一切看起来很美好.但 ...
- Android数据存储——SQLite数据库(模板)
本篇整合Android使用数据库,要保存一个实体类的样本. 首先看一下数据库语句: ORM:关系对象映射 添加数据: ContentValues values = new ContentValues( ...
- KBEngine warring项目源码阅读(三) 实体文件与Account处理
上一篇开始,我们就提到了一个概念,并且进行了初步的运用,这个概念就是实体. KBE中的实体是一个很重要的概念,可以说,有了实体就有了一切. 我们首先接着上一章的内容,来看Account.def对应的实 ...
- [转]Azure 表存储和 Windows Azure SQL Database - 比较与对照
本文转自:https://msdn.microsoft.com/library/azure/jj553018 更新时间: 2014年10月 作者:Valery Mizonov 和 Seth Manhe ...
- EBS OAF开发中实体对象和视图对象的属性设置器
EBS OAF开发中实体对象和视图对象的属性设置器 (版权声明.本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) 源文: Home > Oracle ...
随机推荐
- c语言学习笔记 - 枚举类型
今天学习了c语言的枚举类型的使用,可能是PHP里没使用过,开始看的时候还是觉得有点怪,后来做了下例子才理解,这里做个笔记记录一下. #include <stdio.h> enum anim ...
- SQL有意思的面试题
1.中软国际 SQL行转列 变成 --数据准备create table t_test( year int, month int, sale int, primary key (year, mon ...
- php 怎样判断一段字符 有没有经过 urlencode 处理
有没有百分号 判断字符串 执行urldecode 之前和之后是否一致 一致就是没有经过urlencode 不一致就是经过urlencode的 自己方法:判断是否所有: if(strpos($cooki ...
- zepto.js按需载入模板对象
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/Joyhen/article/details/34412103 Zepto.js 是支持移动WebKi ...
- Eureka客户端无法连接服务注册中心
转载自:https://my.oschina.net/kousm/blog/2249003 服务端 application.yml配置 spring: application: name: eurek ...
- UVA1391/LA3713 Astronauts
题意:有A.B.C3个任务分配给n个宇航员,其中每个宇航员恰好分配一个任务.假设n个宇航员的平均年龄为x,只有年龄大于x的才能领取A任务:只有年龄严格小于x的才能领取B任务,而任务C没有限制.有m对宇 ...
- PYTHON__ ITERTOOLS模块
组成 总体,整体了解 无限迭代器 迭代器 参数 结果 例子 count() start, [step] start, start+step, start+2*step, ... count(10) - ...
- c++新特性实验(4)声明与定义:右值引用(C++11)
1.作用 c++11以前,临时对象.字面常量一般情况下不可以再次访问,也不可以修改.右值引用可以解决这个问题. 1.1 实验A #include <iostream> using name ...
- json字符串和对象的相互转换
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式. 同时,JSON是 JavaScript 原生格式,这 ...
- vim 简明教程(转自飘过的小牛)
vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的.下面的文章翻译自<Learn Vim Progress ...