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

215 lines
5.1 KiB
C++

#include "stdafx.h"
#include "AecDbBalcony.h"
#include "AecDbXDrawPointer.h"
Adesk::UInt32 AecDbBalcony::kCurrentVersionNumber = 1;
ACRX_DXF_DEFINE_MEMBERS (AecDbBalcony, AecDbEwPipeBase,
AcDb::kDHL_CURRENT, AcDb::kMReleaseCurrent,
AcDbProxyEntity::kNoOperation | AcDbProxyEntity::kDisableProxyWarning,
AEC_DBBALCONY,
"AecDbBalcony"
"|Product Desc: shanghua earthworm app obj"
"|Company: shanghua inc"
"|WEB Address: www.shanghuasoft.com")
AecDbBalcony::AecDbBalcony(void)
{
m_mapSpecXData.SetAt(KEY_NAME, _T("阳台"));
}
AecDbBalcony::~AecDbBalcony(void)
{
}
void AecDbBalcony::SetBalconyData(const BalconyData& data)
{
AssertWriteEnabled();
m_mapSpecXData.SetAt(KEY_REDGE,data.nRailEdge);
m_mapSpecXData.SetAt(KEY_HEIGHT,data.dRailHeight);
m_mapSpecXData.SetAt(KEY_Width,data.dRailWidth);
m_mapSpecXData.SetAt(KEY_THICKT1,data.dSlabThick);
m_mapSpecXData.SetAt(KEY_THICKT2,data.dGirderThick);
m_mapSpecXData.SetAt(KEY_OPENING,data.bAddOpening);
m_mapSpecXData.SetAt(KEY_HEIGHT,data.duFrame);
m_mapSpecXData.SetAt(KEY_HEIGHT1,data.dvFrame);
m_mapSpecXData.SetAt(KEY_HEIGHT2,data.dWinHeight);
m_mapSpecXData.SetAt(KEY_BOMEL,data.dBomEl);
m_mapSpecXData.SetAt(KEY_BEAMH,data.dBeamH);
m_mapSpecXData.SetAt(KEY_MATERIAL,data.m_sMaterial);
m_mapSpecXData.SetAt(KEY_FACTORY,data.m_sFactory);
m_mapSpecXData.SetAt(KEY_NO,data.m_sNo);
//截面
SetSection(data.dGirderThick,data.dRailHeight,data.dRailHeight * 0.5,kMid);
}
void AecDbBalcony::GetBalconyData(BalconyData& data) const
{
assertReadEnabled();
m_mapSpecXData.GetAt(KEY_REDGE,data.nRailEdge);
m_mapSpecXData.GetAt(KEY_HEIGHT,data.dRailHeight);
m_mapSpecXData.GetAt(KEY_Width,data.dRailWidth);
m_mapSpecXData.GetAt(KEY_THICKT1,data.dSlabThick);
m_mapSpecXData.GetAt(KEY_THICKT2,data.dGirderThick);
m_mapSpecXData.GetAt(KEY_OPENING,data.bAddOpening);
m_mapSpecXData.GetAt(KEY_HEIGHT,data.duFrame);
m_mapSpecXData.GetAt(KEY_HEIGHT1,data.dvFrame);
m_mapSpecXData.GetAt(KEY_HEIGHT2,data.dWinHeight);
m_mapSpecXData.GetAt(KEY_BOMEL,data.dBomEl);
m_mapSpecXData.GetAt(KEY_BEAMH,data.dBeamH);
m_mapSpecXData.GetAt(KEY_MATERIAL,data.m_sMaterial);
m_mapSpecXData.GetAt(KEY_FACTORY,data.m_sFactory);
m_mapSpecXData.GetAt(KEY_NO,data.m_sNo);
}
Acad::ErrorStatus AecDbBalcony::dwgInFields(AcDbDwgFiler* pFiler)
{
AssertWriteEnabled();
//----- Read parent class information first.
Acad::ErrorStatus es = AecDbEwPipeBase::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 > AecDbBalcony::kCurrentVersionNumber )
return (Acad::eMakeMeProxy);
return pFiler->filerStatus();
}
Acad::ErrorStatus AecDbBalcony::dwgOutFields(AcDbDwgFiler* pFiler) const
{
assertReadEnabled();
//----- Save parent class information first.
Acad::ErrorStatus es = AecDbEwPipeBase::dwgOutFields (pFiler) ;
if ( es != Acad::eOk )
return (es) ;
//----- Object version number needs to be saved first
if ( (es =pFiler->writeUInt32 (AecDbBalcony::kCurrentVersionNumber)) != Acad::eOk )
return (es) ;
return pFiler->filerStatus();
}
Acad::ErrorStatus AecDbBalcony::dxfInFields(AcDbDxfFiler* pFiler)
{
return Acad::eOk;
}
Acad::ErrorStatus AecDbBalcony::dxfOutFields(AcDbDxfFiler* pFiler) const
{
return Acad::eOk;
}
void AecDbBalcony::subList() const
{
acutPrintf(_T("\n阳台:"));
AecDbEwPipeBase::subList();
}
Acad::ErrorStatus AecDbBalcony::subTransformBy(const AcGeMatrix3d &xform)
{
AecDbEwPipeBase::subTransformBy(xform);
double dBomEl = 0;
m_mapSpecXData.GetAt(KEY_BOMEL, dBomEl);
AcGePoint3d pt(0, 0, dBomEl);
pt.transformBy(xform);
m_mapSpecXData.SetAt(KEY_BOMEL, pt.z);
return Acad::eOk;
}
Acad::ErrorStatus AecDbBalcony::Draw2d(AcGiDraw &dc) const
{
assertReadEnabled();
if ( dc.IsDragging() )
{
//return Acad::eOk;
}
//图层
AcDbObjectId idLay = dc.GetLayerId();
dc.SetLayer(layerId());
int nCrBk = dc.GetColor();
int nColor = nCrBk;
if ( m_mapSpecXData.GetAt(_T("COLOR"),nColor) )
{
dc.SetColor(nColor);
}
if ( Draw2DBuffers(dc))
{
dc.SetLayer(idLay);
dc.SetColor(nCrBk);
return Acad::eOk;
}
AecDbXDrawPointer aecDbXDraw(this,_T("AecDbBalconyDraw"));
aecDbXDraw.Draw2d(dc);
AcDbVoidPtrArray arEntPtrs;
dc.Get2dBuffer(arEntPtrs);
Add2DBuffer(arEntPtrs);
dc.SetLayer(idLay);
dc.SetColor(nCrBk);
return Acad::eOk;
}
Acad::ErrorStatus AecDbBalcony::Draw3d(AcGiDraw &dc) const
{
assertReadEnabled();
if ( dc.IsDragging() )
{
//return Acad::eOk;
}
//图层
AcDbObjectId idLay = dc.GetLayerId();
dc.SetLayer(layerId());
int nCrBk = dc.GetColor();
int nColor = nCrBk;
if ( m_mapSpecXData.GetAt(_T("COLOR"),nColor) )
{
dc.SetColor(nColor);
}
if ( Draw3DBuffers(dc))
{
dc.SetLayer(idLay);
dc.SetColor(nCrBk);
return Acad::eOk;
}
AecDbXDrawPointer aecDbXDraw(this,_T("AecDbBalconyDraw"));
aecDbXDraw.Draw3d(dc);
AcDbVoidPtrArray arEntPtrs;
dc.Get3dBuffer(arEntPtrs);
Add3DBuffer(arEntPtrs);
dc.SetLayer(idLay);
dc.SetColor(nCrBk);
return Acad::eOk;
}