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

188 lines
4.1 KiB
C++

#include "stdafx.h"
#include "AecDbXStep.h"
#include "AecDbXDrawPointer.h"
Adesk::UInt32 AecDbXStep::kCurrentVersionNumber = 1;
ACRX_DXF_DEFINE_MEMBERS(AecDbXStep, AecDbBaseStair,
AcDb::kDHL_CURRENT, AcDb::kMReleaseCurrent,
AcDbProxyEntity::kNoOperation | AcDbProxyEntity::kDisableProxyWarning,
AEC_DBXSTEP,
"AecDbXStep"
"|Product Desc: shanghua earthworm app obj"
"|Company: shanghua inc"
"|WEB Address: www.shanghuasoft.com")
AecDbXStep::AecDbXStep(void)
{
m_mapSpecXData.SetAt(KEY_NAME, _T("台阶"));
}
AecDbXStep::~AecDbXStep(void)
{
}
void AecDbXStep::SetXStepData(const XStepData &data)
{
AssertWriteEnabled();
m_mapSpecXData.SetAt(KEY_W, data.dW);
m_mapSpecXData.SetAt(KEY_STEEPW, data.dSteepW);
m_mapSpecXData.SetAt(KEY_STEEPH, data.dSteepH);
m_mapSpecXData.SetAt(KEY_SSTEEPS, data.nSteepS);
m_mapSpecXData.SetAt(KEY_EL, data.dBaseEl);
m_mapSpecXData.SetAt(KEY_W2, data.dBaseW);
m_mapSpecXData.SetAt(KEY_OFFSETDIR, data.nBaseA);
m_mapSpecXData.SetAt(KEY_BSHAPE, data.nStpStyle);
m_mapSpecXData.SetAt(KEY_UPGRADE, data.nStrStyle);
//仅仅占位
SetSection(data.dSteepW, data.dSteepH);
}
void AecDbXStep::GetXStepData(XStepData &data) const
{
assertReadEnabled();
m_mapSpecXData.GetAt(KEY_W, data.dW);
m_mapSpecXData.GetAt(KEY_STEEPW, data.dSteepW);
m_mapSpecXData.GetAt(KEY_STEEPH, data.dSteepH);
m_mapSpecXData.GetAt(KEY_SSTEEPS, data.nSteepS);
m_mapSpecXData.GetAt(KEY_EL, data.dBaseEl);
m_mapSpecXData.GetAt(KEY_W2, data.dBaseW);
m_mapSpecXData.GetAt(KEY_OFFSETDIR, data.nBaseA);
m_mapSpecXData.GetAt(KEY_BSHAPE, data.nStpStyle);
m_mapSpecXData.GetAt(KEY_UPGRADE, data.nStrStyle);
}
Acad::ErrorStatus AecDbXStep::dwgInFields(AcDbDwgFiler *pFiler)
{
AssertWriteEnabled();
//----- Read parent class information first.
Acad::ErrorStatus es = AecDbBaseStair::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 > AecDbXStep::kCurrentVersionNumber)
return (Acad::eMakeMeProxy);
return pFiler->filerStatus();
}
Acad::ErrorStatus AecDbXStep::dwgOutFields(AcDbDwgFiler *pFiler) const
{
assertReadEnabled();
//----- Save parent class information first.
Acad::ErrorStatus es = AecDbBaseStair::dwgOutFields(pFiler);
if (es != Acad::eOk)
return (es);
//----- Object version number needs to be saved first
if ((es = pFiler->writeUInt32(AecDbXStep::kCurrentVersionNumber)) != Acad::eOk)
return (es);
return pFiler->filerStatus();
}
Acad::ErrorStatus AecDbXStep::dxfInFields(AcDbDxfFiler *pFiler)
{
return Acad::eOk;
}
Acad::ErrorStatus AecDbXStep::dxfOutFields(AcDbDxfFiler *pFiler) const
{
return Acad::eOk;
}
void AecDbXStep::subList() const
{
assertReadEnabled();
acutPrintf(_T("\n台阶"));
AecDbBaseStair::subList();
}
Acad::ErrorStatus AecDbXStep::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("AecDbXStepDraw"));
aecDbXDraw.Draw2d(dc);
AcDbVoidPtrArray arEntPtrs;
dc.Get2dBuffer(arEntPtrs);
Add2DBuffer(arEntPtrs);
dc.SetLayer(idLay);
dc.SetColor(nCrBk);
return Acad::eOk;
}
Acad::ErrorStatus AecDbXStep::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("AecDbXStepDraw"));
aecDbXDraw.Draw3d(dc);
AcDbVoidPtrArray arEntPtrs;
dc.Get3dBuffer(arEntPtrs);
Add3DBuffer(arEntPtrs);
dc.SetLayer(idLay);
dc.SetColor(nCrBk);
return Acad::eOk;
}