163 lines
3.3 KiB
C++
163 lines
3.3 KiB
C++
//-------------------------------------------------------------------------------------------------------+
|
|
// 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 |