276 lines
5.2 KiB
C++
276 lines
5.2 KiB
C++
#include "stdafx.h"
|
|
#include "AecDbXApron.h"
|
|
#include "AecDbXDrawPointer.h"
|
|
|
|
Adesk::UInt32 AecDbXApron::kCurrentVersionNumber = 1;
|
|
|
|
ACRX_DXF_DEFINE_MEMBERS(AecDbXApron, AecDbEwPipeBase,
|
|
AcDb::kDHL_CURRENT, AcDb::kMReleaseCurrent,
|
|
AcDbProxyEntity::kNoOperation | AcDbProxyEntity::kDisableProxyWarning,
|
|
AEC_DBXAPRON,
|
|
"AecDbXApron"
|
|
"|Product Desc: shanghua earthworm app obj"
|
|
"|Company: shanghua inc"
|
|
"|WEB Address: www.shanghuasoft.com")
|
|
|
|
AecDbXApron::AecDbXApron(void)
|
|
{
|
|
m_mapSpecXData.SetAt(KEY_NAME, _T("散水"));
|
|
m_mapSpecXData.SetAt(KEY_THICKT1, 10.0);
|
|
m_mapSpecXData.SetAt(KEY_THICK, 20.0);
|
|
}
|
|
|
|
AecDbXApron::~AecDbXApron(void)
|
|
{
|
|
}
|
|
|
|
//板外侧厚
|
|
void AecDbXApron::SetOutSideThick(double dt)
|
|
{
|
|
AssertWriteEnabled();
|
|
m_mapSpecXData.SetAt(KEY_THICKT1, dt);
|
|
}
|
|
|
|
double AecDbXApron::GetOutSideThick() const
|
|
{
|
|
assertReadEnabled();
|
|
double dt = 10.0;
|
|
m_mapSpecXData.GetAt(KEY_THICKT1, dt);
|
|
return dt;
|
|
}
|
|
|
|
//板内侧厚
|
|
void AecDbXApron::SetInsideThick(double dt)
|
|
{
|
|
AssertWriteEnabled();
|
|
m_mapSpecXData.SetAt(KEY_THICK, dt);
|
|
}
|
|
|
|
double AecDbXApron::GetInsideThick() const
|
|
{
|
|
assertReadEnabled();
|
|
double dt = 20.0;
|
|
m_mapSpecXData.GetAt(KEY_THICK, dt);
|
|
return dt;
|
|
}
|
|
|
|
//段宽度
|
|
Acad::ErrorStatus AecDbXApron::SetWidth(int nIndex, double dW)
|
|
{
|
|
AssertWriteEnabled();
|
|
|
|
Acad::ErrorStatus es;
|
|
AcDbCurve *pCrv = GetNativeCurve();
|
|
if (pCrv != NULL)
|
|
{
|
|
AcDbPolyline *pPl = AcDbPolyline::cast(pCrv);
|
|
if (pPl != NULL)
|
|
{
|
|
es = pPl->setWidthsAt(nIndex, dW, dW);
|
|
}
|
|
}
|
|
return es;
|
|
}
|
|
|
|
double AecDbXApron::GetWidth(int nIndex) const
|
|
{
|
|
assertReadEnabled();
|
|
double dW = 0.0,dW2 = 0.0;
|
|
Acad::ErrorStatus es;
|
|
AcDbCurve *pCrv = GetNativeCurve();
|
|
if (pCrv != NULL)
|
|
{
|
|
AcDbPolyline *pPl = AcDbPolyline::cast(pCrv);
|
|
if (pPl != NULL)
|
|
{
|
|
es = pPl->getWidthsAt(nIndex, dW, dW2);
|
|
}
|
|
}
|
|
return dW;
|
|
}
|
|
|
|
int AecDbXApron::GetWidthSegCount() const
|
|
{
|
|
assertReadEnabled();
|
|
int nSegCount = 0;
|
|
AcDbCurve *pCrv = GetNativeCurve();
|
|
if (pCrv != NULL)
|
|
{
|
|
AcDbPolyline *pPl = AcDbPolyline::cast(pCrv);
|
|
if (pPl != NULL)
|
|
{
|
|
nSegCount = pPl->numVerts() - 1;
|
|
}
|
|
}
|
|
return nSegCount;
|
|
}
|
|
|
|
//统一宽度
|
|
Acad::ErrorStatus AecDbXApron::SetConstantWidth(double dW)
|
|
{
|
|
AssertWriteEnabled();
|
|
|
|
Acad::ErrorStatus es;
|
|
AcDbCurve *pCrv = GetNativeCurve();
|
|
if (pCrv != NULL)
|
|
{
|
|
AcDbPolyline *pPl = AcDbPolyline::cast(pCrv);
|
|
if (pPl != NULL)
|
|
{
|
|
es = pPl->setConstantWidth(dW);
|
|
}
|
|
}
|
|
return es;
|
|
}
|
|
|
|
void AecDbXApron::SetOffsetFromWall(double dOff)
|
|
{
|
|
AssertWriteEnabled();
|
|
m_mapSpecXData.SetAt(KEY_OFFSET, dOff);
|
|
}
|
|
|
|
double AecDbXApron::GetOffsetFromWall() const
|
|
{
|
|
assertReadEnabled();
|
|
double dOff = 0.0;
|
|
m_mapSpecXData.GetAt(KEY_OFFSET, dOff);
|
|
return dOff;
|
|
}
|
|
|
|
Acad::ErrorStatus AecDbXApron::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 > AecDbXApron::kCurrentVersionNumber)
|
|
return (Acad::eMakeMeProxy);
|
|
|
|
return pFiler->filerStatus();
|
|
}
|
|
|
|
Acad::ErrorStatus AecDbXApron::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(AecDbXApron::kCurrentVersionNumber)) != Acad::eOk)
|
|
return (es);
|
|
|
|
return pFiler->filerStatus();
|
|
}
|
|
|
|
Acad::ErrorStatus AecDbXApron::dxfInFields(AcDbDxfFiler *pFiler)
|
|
{
|
|
return Acad::eOk;
|
|
}
|
|
|
|
Acad::ErrorStatus AecDbXApron::dxfOutFields(AcDbDxfFiler *pFiler) const
|
|
{
|
|
return Acad::eOk;
|
|
}
|
|
|
|
void AecDbXApron::subList() const
|
|
{
|
|
assertReadEnabled();
|
|
acutPrintf(_T("\n散水"));
|
|
AecDbEwPipeBase::subList();
|
|
|
|
for (int i = 0;i < GetWidthSegCount();i++)
|
|
{
|
|
acutPrintf(_T("\n分段宽度:%.1f"), GetWidth(i));
|
|
}
|
|
}
|
|
|
|
Acad::ErrorStatus AecDbXApron::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("AecDbXApronDraw"));
|
|
aecDbXDraw.Draw2d(dc);
|
|
|
|
AcDbVoidPtrArray arEntPtrs;
|
|
dc.Get2dBuffer(arEntPtrs);
|
|
Add2DBuffer(arEntPtrs);
|
|
|
|
dc.SetLayer(idLay);
|
|
dc.SetColor(nCrBk);
|
|
return Acad::eOk;
|
|
}
|
|
|
|
Acad::ErrorStatus AecDbXApron::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("AecDbXApronDraw"));
|
|
aecDbXDraw.Draw3d(dc);
|
|
|
|
AcDbVoidPtrArray arEntPtrs;
|
|
dc.Get3dBuffer(arEntPtrs);
|
|
Add3DBuffer(arEntPtrs);
|
|
|
|
dc.SetLayer(idLay);
|
|
dc.SetColor(nCrBk);
|
|
|
|
return Acad::eOk;
|
|
}
|