204 lines
3.8 KiB
C++
204 lines
3.8 KiB
C++
//-----------------------------------------------------------------------------+
|
|
// Copyright (C), 1998-2007, SH Software Co. Ltd.
|
|
// = FileName : AecDbGrip.cpp
|
|
// = Version : ver2.0
|
|
// = Author : zjq
|
|
// = CreateDate : 2002-09-09
|
|
// = Description: 夹点对象类的定义
|
|
// = Maintainers:
|
|
//
|
|
//-----------------------------------------------------------------------------+
|
|
#include "StdAfx.h"
|
|
#include "AecDbGrip.h"
|
|
|
|
#if ARX > 17
|
|
#include "AEntityBase.h"
|
|
|
|
AecDbGrip::AecDbGrip(AEntityBase *pEnt,const AcGePoint3d&pt,int type):
|
|
m_pGripEntity(pEnt),m_ptGrip(pt),m_bitFlags(0),m_iType(0)
|
|
{
|
|
|
|
}
|
|
|
|
AecDbGrip::~AecDbGrip()
|
|
{
|
|
|
|
}
|
|
|
|
int AecDbGrip::Index() const
|
|
{
|
|
return m_iId;
|
|
}
|
|
|
|
void AecDbGrip::SetIndex(long id)
|
|
{
|
|
m_iId = id;
|
|
}
|
|
|
|
const AcGePoint3d AecDbGrip::Position() const
|
|
{
|
|
return m_ptGrip;
|
|
}
|
|
|
|
AEntityBase* AecDbGrip::Owner() const
|
|
{
|
|
return m_pGripEntity;
|
|
}
|
|
|
|
AecDbGripDim* AecDbGrip::GetDim(long i) const
|
|
{
|
|
return m_allDims.GetAt(i);
|
|
}
|
|
|
|
int AecDbGrip::FindDim(AecDbGripDim* pDim) const
|
|
{
|
|
return m_allDims.Find(pDim);
|
|
}
|
|
|
|
int AecDbGrip::GetDimNum() const
|
|
{
|
|
return m_allDims.GetLength();
|
|
}
|
|
|
|
bool AecDbGrip::operator>(const AecDbGrip&) const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool AecDbGrip::operator<(const AecDbGrip&) const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
void AecDbGrip::AppendDim(AecDbGripDim*pDim)
|
|
{
|
|
pDim->SetGrip(this);
|
|
m_allDims.AddTail(pDim);
|
|
}
|
|
|
|
//更新关联动态标注
|
|
void AecDbGrip::UpdateDimEnt()
|
|
{
|
|
for (long i = 0; i < m_allDims.GetLength(); i++)
|
|
{
|
|
m_allDims[i]->UpdateDimEnt();
|
|
}
|
|
}
|
|
|
|
CString AecDbGrip::ToolTip() const
|
|
{
|
|
CString sTip;
|
|
m_pGripEntity->GetGripText(Index(),sTip);
|
|
return sTip;
|
|
}
|
|
|
|
void AecDbGrip::GetHotDimension(const AcDbObjectId & entId,
|
|
double dimScale,
|
|
AcDbDimDataPtrArray& dimData) const
|
|
{
|
|
if(entId.isNull() || !entId.isValid())
|
|
{
|
|
return;
|
|
}
|
|
|
|
AcDbEntity *pEnt = NULL;
|
|
acdbOpenObject(pEnt,entId,AcDb::kForRead);
|
|
if(pEnt == NULL)
|
|
{
|
|
return;
|
|
}
|
|
|
|
AEntityBase* pGripEntity = AEntityBase::Cast(pEnt);
|
|
if(pGripEntity == NULL)
|
|
{
|
|
pEnt->close();
|
|
return;
|
|
}
|
|
|
|
for(long i = 0; i < m_allDims.GetLength(); i++)
|
|
{
|
|
AecDbGripDim *pGripDim = m_allDims.GetAt(i);
|
|
dimData.append(pGripDim->CreateDimData(entId,dimScale));
|
|
}
|
|
|
|
pGripEntity->UpdateDim(Index());
|
|
pGripEntity->Close();
|
|
}
|
|
|
|
void AecDbGrip::GetHoverDimension(const AcDbObjectId& entId,
|
|
double dimScale,
|
|
AcDbDimDataPtrArray& dimData) const
|
|
{
|
|
if(entId.isNull() || !entId.isValid())
|
|
{
|
|
return;
|
|
}
|
|
|
|
AcDbEntity *pEnt = NULL;
|
|
acdbOpenObject(pEnt,entId,AcDb::kForRead);
|
|
|
|
if(pEnt == NULL)
|
|
{
|
|
return;
|
|
}
|
|
|
|
AEntityBase* pGripEntity = AEntityBase::Cast(pEnt);
|
|
if(pGripEntity == NULL)
|
|
{
|
|
pEnt->close();
|
|
return;
|
|
}
|
|
|
|
for(long i = 0; i < m_allDims.GetLength(); i++)
|
|
{
|
|
AecDbGripDim *pGripDim = m_allDims.GetAt(i);
|
|
if(pGripDim->IsHoverDim())
|
|
{
|
|
AcDbDimData*pDimData = pGripDim->CreateDimData(entId,dimScale);
|
|
pDimData->setDimHideIfValueIsZero(true);
|
|
dimData.append(pDimData);
|
|
}
|
|
else
|
|
{
|
|
pGripDim->ResetDimData();
|
|
}
|
|
}
|
|
|
|
pGripEntity->UpdateDim(Index());
|
|
pGripEntity->Close();
|
|
}
|
|
|
|
AcDbGripData* AecDbGrip::CreateGripData() const
|
|
{
|
|
AcDbGripData *pData = new AcDbGripData;
|
|
pData->setGripPoint(m_ptGrip);
|
|
pData->setAppData((void*)this);
|
|
pData->setBitFlags(m_bitFlags);
|
|
pData->setToolTipFunc(AEntityBase::GripToolTip);
|
|
pData->setHotGripDimensionFunc(AEntityBase::GripHotDimension);
|
|
pData->setHoverDimensionFunc(AEntityBase::GripHoverDimension);
|
|
|
|
if(m_iType > 0)
|
|
{
|
|
pData->setWorldDraw(AEntityBase::GripWorldDraw);
|
|
pData->setViewportDraw(AEntityBase::GripViewportDraw);
|
|
}
|
|
return pData;
|
|
}
|
|
|
|
bool AecDbGrip::WorldDraw(AcGiWorldDraw* pWd,
|
|
AcDbGripOperations::DrawType typ,
|
|
double dGripSize) const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
void AecDbGrip::ViewportDraw(AcGiViewportDraw* pVd,
|
|
AcDbGripOperations::DrawType type,
|
|
int gripSize) const
|
|
{
|
|
|
|
}
|
|
|
|
#endif
|