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();
}
}
}

最新文章

  1. 【bb平台刷课记】wireshark结合实例学抓包
  2. contiki-rtimer
  3. java.lang.ClassCastException: com.bjsxt.registration.model.User_$$_javassist_0 cannot be cast to javassist.util.proxy.Proxy
  4. 【英语】Bingo口语笔记(11) - 表示“身体抱恙”
  5. Configure the handler mapping priority in Spring MVC
  6. poj 1681 Painter&#39;s Problem
  7. 【Tarjan,LCA】【3-21个人赛】【problemD】
  8. Deep Belief Network简介
  9. 2017-4-26 winform tab和无边框窗体制作
  10. Docker入门之二镜像
  11. Android Studio使用手记
  12. NFS的搭建及配置
  13. Qt之excel 操作使用说明
  14. go语言中结构struct
  15. 008.KVM-VNC管理
  16. 03: zabbix API接口 对 主机、主机组、模板、应用集、监控项、触发器等增删改查
  17. Android开发——布局性能优化的一些技巧(二)
  18. Thread中的join使用
  19. 修改Linux内核参数,减少TCP连接中的TIME-WAIT
  20. es6 中的generator函数控制流程

热门文章

  1. SPSS统计分析案例:无空白列重复正交试验设计方差分析
  2. Java中String类的常见面试题
  3. Python学习之函数(多层函数)、re模块的正则匹配--计算复杂加减乘除
  4. linux下用eclipse开发mapreduce遇到的问题
  5. HDFS应用实例
  6. ubuntu 16.04 换源
  7. 【python之路25】正则表达式
  8. 访问树中的所有元素(DOM)
  9. HDU 4584
  10. http请求生命周期流程