109 lines
2.5 KiB
C++
109 lines
2.5 KiB
C++
#include "StdAfx.h"
|
|
#include "DbGroupIdConfig.h"
|
|
|
|
namespace
|
|
{
|
|
int GetVectorSize(std::vector<std::pair<IdGroup, int> > vec)
|
|
{
|
|
int nNum = 0;
|
|
std::vector<std::pair<IdGroup, int> >::const_iterator it = vec.begin();
|
|
for (; it != vec.end(); it++)
|
|
{
|
|
if (it->second == 0)
|
|
{
|
|
continue;
|
|
}
|
|
nNum++;
|
|
}
|
|
return nNum;
|
|
}
|
|
}
|
|
|
|
ACRX_DXF_DEFINE_MEMBERS(ATSGroupIdConfig, AcDbObject,AcDb::kDHL_CURRENT,
|
|
AcDb::kMReleaseCurrent,1, ATS_GROUPIDCONFIG,"ATS_GROUPIDCONFIG图形无法解析, 请下载上华软件|网址: www.shanghuasoft.com");
|
|
|
|
Acad::ErrorStatus TDbGroupIdConfig::dwgInFields (AcDbDwgFiler *pFiler)
|
|
{
|
|
Acad::ErrorStatus es=Acad::eOk;
|
|
es = AcDbObject::dwgInFields(pFiler);
|
|
if(es != Acad::eOk)
|
|
return es;
|
|
|
|
Adesk::UInt16 nNum;
|
|
pFiler->readItem(&nNum);
|
|
m_vecIdGroup.clear();
|
|
for (int i = 0; i < nNum; i++)
|
|
{
|
|
IdGroup group;
|
|
AcDbSoftPointerId id1, id2, id3;
|
|
pFiler->readItem(&id1);
|
|
pFiler->readItem(&id2);
|
|
pFiler->readItem(&id3);
|
|
group.idBlk1 = id1;
|
|
group.idBlk2 = id2;
|
|
group.idValve = id3;
|
|
// cet 2014.7.31 add 下层遮挡
|
|
Adesk::UInt16 nSize = 0;
|
|
pFiler->readItem(&nSize);
|
|
AcDbSoftPointerId idTemp;
|
|
for (int j = 0; j < nSize; ++j)
|
|
{
|
|
pFiler->readItem(&idTemp);
|
|
group.vecNextId.push_back(idTemp);
|
|
}
|
|
m_vecIdGroup.push_back(std::make_pair(group, 1));
|
|
}
|
|
return es;
|
|
}
|
|
|
|
Acad::ErrorStatus TDbGroupIdConfig::dwgOutFields (AcDbDwgFiler *pFiler) const
|
|
{
|
|
Acad::ErrorStatus es=Acad::eOk;
|
|
es = AcDbObject::dwgOutFields(pFiler);
|
|
if(es != Acad::eOk)
|
|
return es;
|
|
// cet 2015.9.10 modify 统计最终存储数据数量
|
|
// Adesk::UInt16 nNum = GetVectorSize(m_vecIdGroup);
|
|
Adesk::UInt16 nNum = 0;
|
|
std::vector<std::pair<IdGroup, int> >::const_iterator it = m_vecIdGroup.begin();
|
|
for (; it != m_vecIdGroup.end(); it++)
|
|
{
|
|
if (it->second == 0)
|
|
{
|
|
continue;
|
|
}
|
|
++nNum;
|
|
}
|
|
pFiler->writeItem(nNum);
|
|
it = m_vecIdGroup.begin();
|
|
for (; it != m_vecIdGroup.end(); it++)
|
|
{
|
|
if (it->second == 0)
|
|
{
|
|
continue;
|
|
}
|
|
pFiler->writeItem((AcDbSoftPointerId)it->first.idBlk1);
|
|
pFiler->writeItem((AcDbSoftPointerId)it->first.idBlk2);
|
|
pFiler->writeItem((AcDbSoftPointerId)it->first.idValve);
|
|
// cet 2014.7.31 add 下层遮挡
|
|
nNum = it->first.vecNextId.size();
|
|
pFiler->writeItem(nNum); // cet 2015.9.10 modify 读写对应类型不一致,可能出错
|
|
for (int i = 0; i < nNum; ++i)
|
|
{
|
|
pFiler->writeItem((AcDbSoftPointerId)it->first.vecNextId[i]);
|
|
}
|
|
}
|
|
return es;
|
|
}
|
|
|
|
void InitGroupIdConfig(BOOL bTrue)
|
|
{
|
|
if(bTrue)
|
|
{
|
|
TDbGroupIdConfig::rxInit();
|
|
}
|
|
else
|
|
{
|
|
deleteAcRxClass(TDbGroupIdConfig::desc());
|
|
}
|
|
} |