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之分批存储相连实体的更多相关文章

  1. iOS开发笔记9:NSUserDefaults存储自定义实体对象

    NSUserDefaults常常用来本地存储一些简单的数据,例如用户信息等等,NSUserDefaults支持floats.doubles.integers.Booleans.URLs.NSData. ...

  2. 读取Excel文件存储在实体类中

    1.Maven文件 <!--读取Excel的架包--> <dependency> <groupId>org.apache.poi</groupId> & ...

  3. C#/AutoCAD 2018/ObjectArx/二次开发再说实体(六)

    这些函数对大家很有用,如果想获取详细源代码请加云幽学院yunyou.ke.qq.com报名免费课程,如果想学习更系统.更全面的知识请报名收费课程,有大量开发案例共享. 1.获取模型空间中所有实体 #r ...

  4. 关于SubSonic3.0插件使用Json反序列化获得的实体进行更新操作时,只能执行添加而不能执行修改(编辑)操作的处理

    由于目前开发的项目使用云计算技术,客户端只进行UI与相关事件的功能开发,而所有的计算与处理都放到了服务器端,客户端与数据库没有任何关联,所以服务器端与客户端使用我们自己开发的通讯加密方式进行,而具体的 ...

  5. Entity Framework 实体框架的形成之旅--数据传输模型DTO和实体模型Entity的分离与联合

    在使用Entity Framework 实体框架的时候,我们大多数时候操作的都是实体模型Entity,这个和数据库操作上下文结合,可以利用LINQ等各种方便手段,实现起来非常方便,一切看起来很美好.但 ...

  6. Android数据存储——SQLite数据库(模板)

    本篇整合Android使用数据库,要保存一个实体类的样本. 首先看一下数据库语句: ORM:关系对象映射 添加数据: ContentValues values = new ContentValues( ...

  7. KBEngine warring项目源码阅读(三) 实体文件与Account处理

    上一篇开始,我们就提到了一个概念,并且进行了初步的运用,这个概念就是实体. KBE中的实体是一个很重要的概念,可以说,有了实体就有了一切. 我们首先接着上一章的内容,来看Account.def对应的实 ...

  8. [转]Azure 表存储和 Windows Azure SQL Database - 比较与对照

    本文转自:https://msdn.microsoft.com/library/azure/jj553018 更新时间: 2014年10月 作者:Valery Mizonov 和 Seth Manhe ...

  9. EBS OAF开发中实体对象和视图对象的属性设置器

    EBS OAF开发中实体对象和视图对象的属性设置器 (版权声明.本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) 源文: Home > Oracle ...

随机推荐

  1. Touching segments(数据结构)

    题目链接 Problem Statement Your Maths professor is a very nice guy, but he sometimes comes up with not s ...

  2. mysql基础教程(四)-----事务、视图、存储过程和函数、流程控制

    事务 概念 事务由单独单元的一个或多个SQL语句组成,在这 个单元中,每个MySQL语句是相互依赖的.而整个单独单 元作为一个不可分割的整体,如果单元中某条SQL语句一 旦执行失败或产生错误,整个单元 ...

  3. spring cloud深入学习(十)-----配置中心和消息总线(配置中心终结版)

    如果需要客户端获取到最新的配置信息需要执行refresh,我们可以利用webhook的机制每次提交代码发送请求来刷新客户端,当客户端越来越多的时候,需要每个客户端都执行一遍,这种方案就不太适合了.使用 ...

  4. js 给链接 url或href或js、css、图片等解决浏览器缓存

    一. 添加时间戳 情况一.链接是常量 var rand = new Date().getTime(); var aLen=document.getElementsByTagName("a&q ...

  5. SpringCloud微服务实战三:Hystix的基本概念

    1.说到隔离.熔断.降级,最出名的就是 Netflix 开源的 Hystrix 组件,Hystix官方对它描述为:Hystrix是一个延迟和容错库,旨在隔离远程系统.服务和第三方库,阻止级联故障,在复 ...

  6. RabbitMq知识点总结

    一.RabbitMQ简介 AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间 ...

  7. sqoop的数据抽取过程记录

    今天公司抽取了4千万的表大概十几G 用sqoop抽取是30--40分钟 开了两个map.模型是oracle----hdfs(hive).以前只抽过几十万级别,所以千万级别感觉还是spilt做好切分和定 ...

  8. java导入导出excel

    maven <!--POI--> <dependency> <groupId>org.apache.poi</groupId> <artifact ...

  9. Leetcode102. Binary Tree Level Order Traversal二叉树的层次遍历

    给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其 ...

  10. Leetcode459.Repeated Substring Pattern重复的子字符串

    给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成.给定的字符串只含有小写英文字母,并且长度不超过10000. 示例 1: 输入: "abab" 输出: True 解释 ...