171 lines
3.5 KiB
C++
171 lines
3.5 KiB
C++
//-------------------------------------------------------------------------------------------------------+
|
|
// 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
|