//-----------------------------------------------------------------------------+ // 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