//-------------------------------------------------------------------------------------------------------+ // Copyright (C), 1998-2007, Beijing Tangent Software Co. Ltd. // = FileName : TDbGripDim。cpp // = Version : ver2.0 // = Author : xlc // = CreateDate : 2002-09-09 // = Description: 夹点标注类的定义 // = Maintainers: // //-------------------------------------------------------------------------------------------------------+ #include "StdAfx.h" #include "TDbGripDim.h" #if ADS > 15 #include "TDbGrip.h" #include "TEntityBase.h" TDbGripDim::TDbGripDim(int flag,bool bHover) : m_bHoverDim(bHover),m_pDimData(NULL),m_bitFlags(flag), m_fElevation(0),m_vtNormal(0,0,1),m_fHorzRotation(0) { } TDbGripDim::~TDbGripDim() { } long TDbGripDim::Index()const { return m_pGrip == NULL ? -1 : m_pGrip->FindDim((TDbGripDim*)this); } bool TDbGripDim::IsHoverDim()const { return m_bHoverDim; } const TDbGrip* TDbGripDim::Grip()const { return m_pGrip; } const AcGePoint3d TDbGripDim::GripPoint()const { return Grip()->Position(); } void TDbGripDim::SetGrip(TDbGrip*pGrip) { m_pGrip = pGrip; } void TDbGripDim::SetElevation(double elev) { m_fElevation = elev; } void TDbGripDim::SetHorzRotation(double nRot) { m_fHorzRotation = nRot; } bool TDbGripDim::IsLocked()const { return m_pDimData->isConstrained(); } void TDbGripDim::Lock(double value) { m_fValueLock = value; m_pDimData->setConstrain(true); } double TDbGripDim::GetLockValue()const { return m_fValueLock; } void TDbGripDim::ResetDimData() { m_pDimData = NULL; } AcDbDimension* TDbGripDim::DimEnt()const { return m_pDimData != NULL ? m_pDimData->dimension() : NULL; } bool TDbGripDim::operator>(const TDbGripDim&)const { return false; } bool TDbGripDim::operator<(const TDbGripDim&)const { return false; } AcDbDimData* TDbGripDim::CreateDimData(const AcDbObjectId &entId,double dimScale) { ResetDimData(); m_fDimScale = dimScale; AcDbDimension*pDimEnt = CreateDimEnt(); pDimEnt->setDatabaseDefaults(); pDimEnt->setElevation(m_fElevation); pDimEnt->setNormal(m_vtNormal); pDimEnt->setHorizontalRotation(m_fHorzRotation); AcDbDimStyleTableRecord Style, *pStyle = &Style; AcDbDatabase* pDb = acdbCurDwg(); pDb->getDimstyleData(pStyle); pStyle->setDimdec(max(pDb->luprec(),1));//长度精度 pStyle->setDimadec(max(pDb->auprec(),1));//角度精度 pDimEnt->setDimensionStyle(pDb->dimstyle()); pDimEnt->setDimstyleData(pStyle); // extern double g_nAcadVer; if(g_nAcadVer > 16.11) { acDocManager->lockDocument(curDoc()); AcDbObjectId idTxt = TchPrivate::InitDynTextStyle(); if(!idTxt.isNull()) { pDimEnt->setDimtxsty(idTxt);//否则使用STANDARD } acDocManager->unlockDocument(curDoc()); } m_pDimData = new AcDbDimData(pDimEnt,TEntityBase::DimDataSetValue,m_bitFlags,this); m_pDimData->setOwnerId(entId); m_pDimData->setDimEditable(true); return m_pDimData; } void TDbGripDim::UpdateDimEnt() { if(g_nAcadVer < 16.11 && m_pDimData != NULL) { // extern BOOL g_bDynInput; // extern int g_iMaxDynDimNum; if(!g_bDynInput || Index() >= g_iMaxDynDimNum) { m_pDimData->setDimInvisible(true); } else { m_pDimData->setDimInvisible(false); } } } bool TDbGripDim::CanLock()const { return m_pDimData->isDimRadius() || m_pDimData->isDimResultantLength() || m_pDimData->isDimResultantAngle(); } #endif