//-----------------------------------------------------------------------------+ // Copyright (C), 1998-2007, Beijing Tangent Software Co. Ltd. // = FileName : TEdJig.cpp // = Version : ver2.0 // = Author : xlc // = CreateDate : 2002-09-09 // = Description: 夹点标注动态显示类的定义 // = Maintainers: // //-----------------------------------------------------------------------------+ #include "StdAfx.h" #include "TEdJig.h" #if ADS > 15 #include "TDbGrip.h" TEdJig::TEdJig() : m_iCurGrip(0) { } TEdJig::~TEdJig() { ReleaseDimData(); } void TEdJig::SetCurGrip(long i) { m_iCurGrip = i; } TDbGrip* TEdJig::GetCurGrip() { return m_allGrip.IsValidIndex(m_iCurGrip) ? m_allGrip[m_iCurGrip] : NULL; } TDbGrip* TEdJig::GetGrip(long iGrip) { return m_allGrip[iGrip]; } TDbGripDim * TEdJig::GetGripDim(long iGrip,long iDim) { return GetGrip(iGrip)->GetDim(iDim); } Acad::ErrorStatus TEdJig::EntityToDim(long iGrip,long iDim) { return Acad::eNotImplementedYet; } Acad::ErrorStatus TEdJig::DimToEntity(long iGrip,long iDim,double newValue) { return Acad::eNotImplementedYet; } void TEdJig::SetGripNum(long num) { m_allGrip.SetLength(num); for (long i = 0; i < m_allGrip.GetLength(); i++) { m_allGrip[i] = new TDbGrip(NULL,AcGePoint3d(),-1); } } void TEdJig::ReleaseDimData() { for (long i = 0; i < m_dimDataArray.length(); i++) { if (m_dimDataArray[i] != NULL) { delete m_dimDataArray[i]; } } } AcDbDimDataPtrArray* TEdJig::dimData(const double dimScale) { TDbGrip *pGrip = GetCurGrip(); if (pGrip != NULL) { ReleaseDimData(); m_dimDataArray.setLogicalLength(pGrip->GetDimNum()); for (long iDim = 0; iDim < pGrip->GetDimNum(); iDim++) { TDbGripDim *pDim = pGrip->GetDim(iDim); m_dimDataArray.setAt(iDim,pDim->CreateDimData(AcDbObjectId::kNull,dimScale)); } return &m_dimDataArray; } return NULL; } Acad::ErrorStatus TEdJig::setDimValue(const AcDbDimData *pdimData,const double newValue) { int iDim; if (m_dimDataArray.find((AcDbDimData*)pdimData,iDim)) { Acad::ErrorStatus es = DimToEntity(m_iCurGrip,iDim,newValue); if (es == Acad::eOk) { TDbGripDim *pGripDim = this->GetGripDim(m_iCurGrip,iDim); if (pGripDim != NULL && pGripDim->CanLock()) { pGripDim->Lock(newValue); } } return es; } return Acad::eInvalidInput; } #endif Adesk::Boolean TEdJig::Update() { return Adesk::kTrue; } Adesk::Boolean TEdJig::update() { Adesk::Boolean bRet = Update(); #if ADS>15 if (bRet) { TDbGrip *pCurGrip = GetCurGrip(); if (pCurGrip != NULL) { for (long iDim = 0; iDim < pCurGrip->GetDimNum(); iDim++) { TDbGripDim* pDim = pCurGrip->GetDim(iDim); if (pDim->IsLocked()) { DimToEntity(pCurGrip->Index(),iDim,pDim->GetLockValue()); } else { EntityToDim(m_iCurGrip,iDim); } } pCurGrip->UpdateDimEnt(); } } #endif return bRet; }