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

332 lines
6.7 KiB
C++

#include "stdafx.h"
#include "AecFloorViewDataRecord.h"
Adesk::UInt32 AecFloorViewDataRecord::kCurrentVersionNumber = 3;
ACRX_DXF_DEFINE_MEMBERS(AecFloorViewDataRecord, AcDbObject,
AcDb::kDHL_CURRENT, AcDb::kMReleaseCurrent,
AcDbProxyEntity::kNoOperation | AcDbProxyEntity::kDisableProxyWarning,
AEC_FVREC,
"AecFloorViewDataRecord"
"|Product Desc: shanghua earthworm app obj"
"|Company: shanghua inc"
"|WEB Address: www.shanghuasoft.com")
AecFloorViewDataRecord::AecFloorViewDataRecord()
{
m_sProName = _T("");
m_nFocusOn = 1;
}
AecFloorViewDataRecord::~AecFloorViewDataRecord()
{
}
void AecFloorViewDataRecord::SetProjectName(LPCTSTR pszName)
{
assertWriteEnabled();
m_sProName = pszName;
}
void AecFloorViewDataRecord::GetProjectName(CString &sName) const
{
assertReadEnabled();
sName = m_sProName;
}
void AecFloorViewDataRecord::SetBomEl(double dBomEl)
{
assertWriteEnabled();
m_dBomEl = dBomEl;
}
double AecFloorViewDataRecord::GetBomEl() const
{
assertReadEnabled();
return m_dBomEl;
}
bool AecFloorViewDataRecord::SetActive(int nIndex,Adesk::Int16 nActive)
{
assertWriteEnabled();
if (nIndex > -1 && nIndex < m_arDatas.length())
{
FloorViewData &fv = m_arDatas.at(nIndex);
fv.m_nActive = nActive;
m_nFocusOn = 1;
return true;
}
return false;
}
bool AecFloorViewDataRecord::SetActive(LPCTSTR pszName, Adesk::Int16 nActive)
{
assertWriteEnabled();
for (int i = 0; i < m_arDatas.length(); i++)
{
FloorViewData &rc = m_arDatas.at(i);
if (_tcscmp(rc.m_szName, pszName) == 0)
{
rc.m_nActive = nActive;
m_nFocusOn = 1;
}
else
{
rc.m_nActive = nActive ? 0 : 1;
}
}
return true;
}
Adesk::Int16 AecFloorViewDataRecord::IsActive(int nIndex) const
{
assertReadEnabled();
if (nIndex > -1 && nIndex < m_arDatas.length())
{
const FloorViewData &fv = m_arDatas.at(nIndex);
return fv.m_nActive;
}
return 0;
}
Adesk::Int32 AecFloorViewDataRecord::GetActiveID(CString &sID) const
{
for (int i = 0; i < m_arDatas.length(); i++)
{
const FloorViewData &rc = m_arDatas.at(i);
if (rc.m_nActive)
{
sID = rc.m_szID;
return i;
}
}
return -1;
}
void AecFloorViewDataRecord::SetBasePoint(AcGePoint3d &ptBase)
{
assertWriteEnabled();
m_ptBase = ptBase;
}
void AecFloorViewDataRecord::GetBasePoint(AcGePoint3d &ptBase) const
{
assertReadEnabled();
ptBase = m_ptBase;
}
void AecFloorViewDataRecord::SetRem(LPCTSTR pszRem)
{
assertWriteEnabled();
m_sRem = pszRem;
}
void AecFloorViewDataRecord::GetRem(CString &sRem) const
{
assertReadEnabled();
sRem = m_sRem;
}
bool AecFloorViewDataRecord::AddFloorViewRecord(FloorViewData &rc)
{
assertWriteEnabled();
int nRec = -1;
if ( (nRec = FindFloorViewRecord(rc.m_szName) ) != -1)
{
//已经存在
acutPrintf(_T("\n楼层记录%s已经存在!"), rc.m_szName);
return false;
}
m_arDatas.append(rc);
return true;
}
bool AecFloorViewDataRecord::ModifyFloorViewRecord(const FloorViewData &rc)
{
assertWriteEnabled();
int nRec = -1;
if ((nRec = FindFloorViewRecord(rc.m_szName)) != -1)
{
m_arDatas.setAt(nRec, rc);
return true;
}
return false;
}
int AecFloorViewDataRecord::FindFloorViewRecord(LPCTSTR pszName) const
{
assertReadEnabled();
if (pszName == NULL)
return -1;
for (int i = 0;i < m_arDatas.length();i++)
{
const FloorViewData &rc = m_arDatas.at(i);
if (_tcscmp(rc.m_szName, pszName) == 0)
return i;
}
return -1;
}
bool AecFloorViewDataRecord::RemoveFloorViewRecord(LPCTSTR pszName)
{
assertWriteEnabled();
if (pszName == NULL)
return false;
for (int i = 0; i < m_arDatas.length(); i++)
{
FloorViewData &rc = m_arDatas.at(i);
if (_tcscmp(rc.m_szName, pszName) == 0)
{
m_arDatas.removeAt(i);
return true;
}
}
return false;
}
bool AecFloorViewDataRecord::GetFloorViewRecord(LPCTSTR pszName, FloorViewData &vData) const
{
assertReadEnabled();
if (pszName == NULL)
return false;
for (int i = 0; i < m_arDatas.length(); i++)
{
const FloorViewData &rc = m_arDatas.at(i);
if (_tcscmp(rc.m_szName, pszName) == 0)
{
memcpy(&vData, &rc, sizeof(FloorViewData));
return true;
}
}
return false;
}
int AecFloorViewDataRecord::GetCount() const
{
assertReadEnabled();
return m_arDatas.length();
}
bool AecFloorViewDataRecord::GetFloorViewRecord(int nIndex, FloorViewData &rc) const
{
assertReadEnabled();
if (nIndex > -1 && nIndex < m_arDatas.length())
{
rc = m_arDatas.at(nIndex);
return true;
}
return false;
}
void AecFloorViewDataRecord::SetFocusOn(bool bSetOn)
{
assertWriteEnabled();
m_nFocusOn = bSetOn ? 1 : 0;
}
Adesk::Int16 AecFloorViewDataRecord::IsFocusOn() const
{
assertReadEnabled();
return m_nFocusOn;
}
Acad::ErrorStatus AecFloorViewDataRecord::dwgInFields(AcDbDwgFiler *pFiler)
{
assertWriteEnabled();
//----- Read parent class information first.
Acad::ErrorStatus es = AcDbObject::dwgInFields(pFiler);
if (es != Acad::eOk)
return (es);
//----- Object version number needs to be read first
Adesk::UInt32 version = 0;
if ((es = pFiler->readUInt32(&version)) != Acad::eOk)
return (es);
if (version > AecFloorViewDataRecord::kCurrentVersionNumber)
return (Acad::eMakeMeProxy);
TCHAR* pszTmp = NULL;
pFiler->readString(&pszTmp);
if (pszTmp != NULL)
{
m_sProName = pszTmp;
acutDelString(pszTmp);
}
pFiler->readPoint3d(&m_ptBase);
pszTmp = NULL;
pFiler->readString(&pszTmp);
if (pszTmp != NULL)
{
m_sRem = pszTmp;
acutDelString(pszTmp);
}
Adesk::Int32 nLen = 0;
pFiler->readInt32(&nLen);
FloorViewData data;
memset(&data, 0, sizeof(FloorViewData));
m_arDatas.removeAll();
for (int i = 0;i < nLen;i++)
{
pFiler->readBytes(&data,sizeof(FloorViewData));
m_arDatas.append(data);
}
pFiler->readInt16(&m_nFocusOn);
if (version > 2)
pFiler->readDouble(&m_dBomEl);
return pFiler->filerStatus();
}
Acad::ErrorStatus AecFloorViewDataRecord::dwgOutFields(AcDbDwgFiler *pFiler) const
{
assertReadEnabled();
//----- Save parent class information first.
Acad::ErrorStatus es = AcDbObject::dwgOutFields(pFiler);
if (es != Acad::eOk)
return (es);
//----- Object version number needs to be saved first
if ((es = pFiler->writeUInt32(AecFloorViewDataRecord::kCurrentVersionNumber)) != Acad::eOk)
return (es);
pFiler->writeString((LPCTSTR)m_sProName);
pFiler->writePoint3d(m_ptBase);
pFiler->writeString((LPCTSTR)m_sRem);
Adesk::Int32 nLen = m_arDatas.length();
pFiler->writeInt32(nLen);
for (int i = 0;i < m_arDatas.length();i++)
{
const FloorViewData &data = m_arDatas.at(i);
pFiler->writeBytes(&data, sizeof(FloorViewData));
}
pFiler->writeInt16(m_nFocusOn);
pFiler->writeDouble(m_dBomEl);
return pFiler->filerStatus();
}
Acad::ErrorStatus AecFloorViewDataRecord::dxfInFields(AcDbDxfFiler *pFiler)
{
return Acad::eOk;
}
Acad::ErrorStatus AecFloorViewDataRecord::dxfOutFields(AcDbDxfFiler *pFiler) const
{
return Acad::eOk;
}