Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

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