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

189 lines
3.6 KiB
C++

#include "stdafx.h"
#include "AcGiDraw.h"
AcGiDraw::AcGiDraw(void)
: m_p3DBufPtrs(NULL)
, m_p2DBufPtrs(NULL)
{
m_plan = AcGePlane::kXYPlane;
}
AcGiDraw::~AcGiDraw(void)
{
}
AcGePoint3d AcGiDraw::Align2Base(AcGiDraw::TextAlignment nAlign, AcGePoint3d ptAlign, AcGePoint3d ext)
{
AcGePoint3d ptBase = ptAlign;
// 换算基点
switch(nAlign)
{
case AcGiDraw::kTopLeft:
ptBase.y -= ext.y;
break;
case AcGiDraw::kTopCenter:
ptBase.y -= ext.y;
ptBase.x -= ext.x / 2.0;
break;
case AcGiDraw::kTopRight:
ptBase.y -= ext.y;
ptBase.x -= ext.x;
break;
case AcGiDraw::kMiddleLeft:
ptBase.y -= ext.y / 2.0;
break;
case AcGiDraw::kMiddleCenter:
ptBase.y -= ext.y / 2.0;
ptBase.x -= ext.x / 2.0;
break;
case AcGiDraw::kMiddleRight:
ptBase.y -= ext.y / 2.0;
ptBase.x -= ext.x;
break;
case AcGiDraw::kBottomLeft:
ptBase.y += (ext.z - ext.y);
break;
case AcGiDraw::kBottomCenter:
ptBase.y += (ext.z - ext.y);
ptBase.x -= ext.x / 2.0;
break;
case AcGiDraw::kBottomRight:
ptBase.y += (ext.z - ext.y);
ptBase.x -= ext.x;
break;
case AcGiDraw::kLeft:
break;
case AcGiDraw::kCenter:
ptBase.x -= ext.x / 2.0;
break;
case AcGiDraw::kRight:
ptBase.x -= ext.x;
break;
case AcGiDraw::kMiddle:
ptBase.x -= ext.x / 2;
ptBase.y -= ext.z / 2.0;
ptBase.y += (ext.z - ext.y);
break;
default:
ASSERT(0);
}
return ptBase;
}
AcGePoint3d AcGiDraw::Base2Align(AcGiDraw::TextAlignment nAlign, AcGePoint3d ptBase, AcGePoint3d ext)
{
AcGePoint3d ptAlign = ptBase;
// 换算基点
switch(nAlign)
{
case AcGiDraw::kTopLeft:
ptAlign.y += ext.y;
break;
case AcGiDraw::kTopCenter:
ptAlign.y += ext.y;
ptAlign.x += ext.x / 2.0;
break;
case AcGiDraw::kTopRight:
ptAlign.y += ext.y;
ptAlign.x += ext.x;
break;
case AcGiDraw::kMiddleLeft:
ptAlign.y += ext.y / 2.0;
break;
case AcGiDraw::kMiddleCenter:
ptAlign.y += ext.y / 2.0;
ptAlign.x += ext.x / 2.0;
break;
case AcGiDraw::kMiddleRight:
ptAlign.y += ext.y / 2.0;
ptAlign.x += ext.x;
break;
case AcGiDraw::kBottomLeft:
ptAlign.y -= (ext.z - ext.y);
break;
case AcGiDraw::kBottomCenter:
ptAlign.y -= (ext.z - ext.y);
ptAlign.x += ext.x / 2.0;
break;
case AcGiDraw::kBottomRight:
ptAlign.y -= (ext.z - ext.y);
ptAlign.x += ext.x;
break;
case AcGiDraw::kLeft:
break;
case AcGiDraw::kCenter:
ptAlign.x += ext.x / 2.0;
break;
case AcGiDraw::kRight:
ptAlign.x += ext.x;
break;
case AcGiDraw::kMiddle:
ptAlign.x += ext.x / 2;
ptAlign.y -= (ext.z - ext.y);
ptAlign.y += ext.z / 2.0;
break;
default:
ASSERT(0);
break;
}
return ptAlign;
}
Acad::ErrorStatus AcGiDraw::SetDraw2DPlan(const AcGePlane& plan)
{
m_plan = plan;
return Acad::eOk;
}
Acad::ErrorStatus AcGiDraw::GetDraw2DPlan(AcGePlane& plan) const
{
plan = m_plan;
return Acad::eOk;
}
void AcGiDraw::Add2dBuffer(AcDbEntity* pEnt)
{
m_p2DBufPtrs.append(pEnt);
}
void AcGiDraw::Add2dBuffer(const AcDbVoidPtrArray& arEntPtrs)
{
m_p2DBufPtrs.append(arEntPtrs);
}
void AcGiDraw::Get2dBuffer(AcDbVoidPtrArray& arEntPtrs,bool bRemoveAllBuffer/* = true*/) const
{
arEntPtrs.append(m_p2DBufPtrs);
if (bRemoveAllBuffer)
m_p3DBufPtrs.removeAll();
}
void AcGiDraw::Clear2dBuffer()
{
m_p2DBufPtrs.removeAll();
}
void AcGiDraw::Add3dBuffer(AcDbEntity* pEnt)
{
m_p3DBufPtrs.append(pEnt);
}
void AcGiDraw::Add3dBuffer(const AcDbVoidPtrArray& arEntPtrs)
{
m_p3DBufPtrs.append(arEntPtrs);
}
void AcGiDraw::Get3dBuffer(AcDbVoidPtrArray& arEntPtrs,bool bRemoveAllBuffer/* = true*/) const
{
arEntPtrs.append(m_p3DBufPtrs);
if (bRemoveAllBuffer)
m_p3DBufPtrs.removeAll();
}
void AcGiDraw::Clear3dBuffer()
{
m_p3DBufPtrs.removeAll();
}