155 lines
2.8 KiB
C++
155 lines
2.8 KiB
C++
//-----------------------------------------------------------------------------+
|
|
// Copyright (C), 1998-2007, Beijing Tangent Software Co. Ltd.
|
|
// = FileName : TEdJig.cpp
|
|
// = Version : ver2.0
|
|
// = Author : xlc
|
|
// = CreateDate : 2002-09-09
|
|
// = Description: 夹点标注动态显示类的定义
|
|
// = Maintainers:
|
|
//
|
|
//-----------------------------------------------------------------------------+
|
|
#include "StdAfx.h"
|
|
#include "TEdJig.h"
|
|
|
|
|
|
#if ADS > 15
|
|
#include "TDbGrip.h"
|
|
|
|
TEdJig::TEdJig()
|
|
: m_iCurGrip(0)
|
|
{
|
|
|
|
}
|
|
|
|
TEdJig::~TEdJig()
|
|
{
|
|
ReleaseDimData();
|
|
}
|
|
|
|
void TEdJig::SetCurGrip(long i)
|
|
{
|
|
m_iCurGrip = i;
|
|
}
|
|
|
|
TDbGrip* TEdJig::GetCurGrip()
|
|
{
|
|
return m_allGrip.IsValidIndex(m_iCurGrip) ? m_allGrip[m_iCurGrip] : NULL;
|
|
}
|
|
|
|
TDbGrip* TEdJig::GetGrip(long iGrip)
|
|
{
|
|
return m_allGrip[iGrip];
|
|
}
|
|
|
|
TDbGripDim * TEdJig::GetGripDim(long iGrip,long iDim)
|
|
{
|
|
return GetGrip(iGrip)->GetDim(iDim);
|
|
}
|
|
|
|
Acad::ErrorStatus TEdJig::EntityToDim(long iGrip,long iDim)
|
|
{
|
|
return Acad::eNotImplementedYet;
|
|
}
|
|
|
|
Acad::ErrorStatus TEdJig::DimToEntity(long iGrip,long iDim,double newValue)
|
|
{
|
|
return Acad::eNotImplementedYet;
|
|
}
|
|
|
|
void TEdJig::SetGripNum(long num)
|
|
{
|
|
m_allGrip.SetLength(num);
|
|
for (long i = 0; i < m_allGrip.GetLength(); i++)
|
|
{
|
|
m_allGrip[i] = new TDbGrip(NULL,AcGePoint3d(),-1);
|
|
}
|
|
}
|
|
|
|
void TEdJig::ReleaseDimData()
|
|
{
|
|
for (long i = 0; i < m_dimDataArray.length(); i++)
|
|
{
|
|
if (m_dimDataArray[i] != NULL)
|
|
{
|
|
delete m_dimDataArray[i];
|
|
}
|
|
}
|
|
}
|
|
|
|
AcDbDimDataPtrArray* TEdJig::dimData(const double dimScale)
|
|
{
|
|
TDbGrip *pGrip = GetCurGrip();
|
|
if (pGrip != NULL)
|
|
{
|
|
ReleaseDimData();
|
|
m_dimDataArray.setLogicalLength(pGrip->GetDimNum());
|
|
for (long iDim = 0; iDim < pGrip->GetDimNum(); iDim++)
|
|
{
|
|
TDbGripDim *pDim = pGrip->GetDim(iDim);
|
|
m_dimDataArray.setAt(iDim,pDim->CreateDimData(AcDbObjectId::kNull,dimScale));
|
|
}
|
|
|
|
return &m_dimDataArray;
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
Acad::ErrorStatus TEdJig::setDimValue(const AcDbDimData *pdimData,const double newValue)
|
|
{
|
|
int iDim;
|
|
if (m_dimDataArray.find((AcDbDimData*)pdimData,iDim))
|
|
{
|
|
Acad::ErrorStatus es = DimToEntity(m_iCurGrip,iDim,newValue);
|
|
if (es == Acad::eOk)
|
|
{
|
|
TDbGripDim *pGripDim = this->GetGripDim(m_iCurGrip,iDim);
|
|
if (pGripDim != NULL && pGripDim->CanLock())
|
|
{
|
|
pGripDim->Lock(newValue);
|
|
}
|
|
}
|
|
|
|
return es;
|
|
}
|
|
|
|
return Acad::eInvalidInput;
|
|
}
|
|
|
|
#endif
|
|
|
|
Adesk::Boolean TEdJig::Update()
|
|
{
|
|
return Adesk::kTrue;
|
|
}
|
|
|
|
Adesk::Boolean TEdJig::update()
|
|
{
|
|
Adesk::Boolean bRet = Update();
|
|
|
|
#if ADS>15
|
|
if (bRet)
|
|
{
|
|
TDbGrip *pCurGrip = GetCurGrip();
|
|
if (pCurGrip != NULL)
|
|
{
|
|
for (long iDim = 0; iDim < pCurGrip->GetDimNum(); iDim++)
|
|
{
|
|
TDbGripDim* pDim = pCurGrip->GetDim(iDim);
|
|
if (pDim->IsLocked())
|
|
{
|
|
DimToEntity(pCurGrip->Index(),iDim,pDim->GetLockValue());
|
|
}
|
|
else
|
|
{
|
|
EntityToDim(m_iCurGrip,iDim);
|
|
}
|
|
}
|
|
|
|
pCurGrip->UpdateDimEnt();
|
|
}
|
|
}
|
|
#endif
|
|
|
|
return bRet;
|
|
} |