Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

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