//-------------------------------------------------------------------------------------------------------+ // Copyright (C), 1998-2007, SH Software Co. Ltd. // = FileName : AecDbGripDim。cpp // = Version : ver2.0 // = Author : zjq // = CreateDate : 2002-09-09 // = Description: 夹点标注类的定义 // = Maintainers: // //-------------------------------------------------------------------------------------------------------+ #include "StdAfx.h" #include "AecDbGripDim.h" #if ARX > 17 #include "AecDbGrip.h" #include "AEntityBase.h" AecDbGripDim::AecDbGripDim(int flag,bool bHover) : m_bHoverDim(bHover),m_pDimData(NULL),m_bitFlags(flag), m_fElevation(0),m_vtNormal(0,0,1),m_fHorzRotation(0) { } AecDbGripDim::~AecDbGripDim() { } long AecDbGripDim::Index()const { return m_pGrip == NULL ? -1 : m_pGrip->FindDim((AecDbGripDim*)this); } bool AecDbGripDim::IsHoverDim()const { return m_bHoverDim; } const AecDbGrip* AecDbGripDim::Grip()const { return m_pGrip; } const AcGePoint3d AecDbGripDim::GripPoint()const { return Grip()->Position(); } void AecDbGripDim::SetGrip(AecDbGrip*pGrip) { m_pGrip = pGrip; } void AecDbGripDim::SetElevation(double elev) { m_fElevation = elev; } void AecDbGripDim::SetHorzRotation(double nRot) { m_fHorzRotation = nRot; } bool AecDbGripDim::IsLocked()const { if (m_pDimData != NULL) return m_pDimData->isConstrained(); return false; } void AecDbGripDim::Lock(double value) { m_fValueLock = value; if (m_pDimData != NULL) m_pDimData->setConstrain(true); } double AecDbGripDim::GetLockValue()const { return m_fValueLock; } void AecDbGripDim::ResetDimData() { m_pDimData = NULL; } AcDbDimension* AecDbGripDim::DimEnt()const { return m_pDimData != NULL ? m_pDimData->dimension() : NULL; } bool AecDbGripDim::operator>(const AecDbGripDim&)const { return false; } bool AecDbGripDim::operator<(const AecDbGripDim&)const { return false; } AcDbDimData* AecDbGripDim::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 = XPrivate::InitDynTextStyle(); if(!idTxt.isNull()) { pDimEnt->setDimtxsty(idTxt);//否则使用STANDARD } acDocManager->unlockDocument(curDoc()); } m_pDimData = new AcDbDimData(pDimEnt,AEntityBase::DimDataSetValue,m_bitFlags,this); m_pDimData->setOwnerId(entId); m_pDimData->setDimEditable(true); return m_pDimData; } void AecDbGripDim::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 AecDbGripDim::CanLock()const { if (m_pDimData != NULL) { return m_pDimData->isDimRadius() || m_pDimData->isDimResultantLength() || m_pDimData->isDimResultantAngle(); } return FALSE; } #endif