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