332 lines
6.7 KiB
C++
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;
|
|
} |