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