763 lines
17 KiB
C++
763 lines
17 KiB
C++
#include "stdafx.h"
|
|
#include "TImpSpecFitting.h"
|
|
#include "TDbInterfaceRecord.h"
|
|
#include "TDbXDataMap.h"
|
|
|
|
#ifdef _DEBUG
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[]=__FILE__;
|
|
#define new DEBUG_NEW
|
|
#endif
|
|
|
|
TImpSpecFitting::TImpSpecFitting()
|
|
{
|
|
m_pXDataMap = NULL;
|
|
m_pOwnerEnt = NULL;
|
|
}
|
|
|
|
TImpSpecFitting::~TImpSpecFitting()
|
|
{
|
|
}
|
|
|
|
void TImpSpecFitting::Destroy()
|
|
{
|
|
delete this;
|
|
}
|
|
|
|
BOOL TImpSpecFitting::GetInterface(int nIndex,TInterface& pipeInterface) const
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
BOOL TImpSpecFitting::GetInterface(const AcGePoint3d& ptCon,TInterface& pipeInterface) const
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
BOOL TImpSpecFitting::HasInterface(const AcGePoint3d& ptCon,const AcGeVector3d& vtDir)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
int TImpSpecFitting::GetInterfaceCount() const
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
BOOL TImpSpecFitting::SetInterfaceRelation(const AcGePoint3d& ptConnect,const AcDbObjectId& idConnect)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
BOOL TImpSpecFitting::SetInterfaceRelation(const AcGePoint3d& ptConnect,const AcDbObjectId& idConnect1,const AcDbObjectId& idConnect2)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
BOOL TImpSpecFitting::RemoveInterfaceRelation(const AcGePoint3d& ptConnect,const AcDbObjectId& idConnect)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
BOOL TImpSpecFitting::NotifyInterfaceToModify(const TInterfaceModifyMsg& iModiMsg,TInterfaceModifyMsgs& iModiMsgs)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::ExplodeOrDraw3d(XExplodeDraw &dc) const
|
|
{
|
|
return Acad::eNotImplementedYet;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::ExplodeOrDraw2d(XExplodeDraw &dc) const
|
|
{
|
|
return Acad::eNotImplementedYet;
|
|
}
|
|
|
|
void TImpSpecFitting::GetKindName(CString& sName)
|
|
{
|
|
m_pXDataMap->GetAt(KEY_DXF,sName);
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::transformBy(const AcGeMatrix3d& xform)
|
|
{
|
|
return Acad::eOk;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::moveStretchPointsAt(const AcDbIntArray& indices,
|
|
const AcGeVector3d& offset)
|
|
{
|
|
return Acad::eNotImplementedYet;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::moveGripPointsAt(const AcDbIntArray& indices,
|
|
const AcGeVector3d& offset)
|
|
{
|
|
return Acad::eOk;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::intersectWith(const AcDbEntity* pEnt,
|
|
AcDb::Intersect intType,
|
|
const AcGePlane& projPlane,
|
|
AcGePoint3dArray& points,
|
|
INT_PTR thisGsMarker,
|
|
INT_PTR otherGsMarker) const
|
|
{
|
|
AcDbPolyline* pPl = MakePolyCurve();
|
|
if (pPl != NULL)
|
|
{
|
|
pPl->intersectWith(pEnt,intType,projPlane,points,thisGsMarker,otherGsMarker);
|
|
delete pPl;
|
|
return Acad::eOk;
|
|
}
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::intersectWith( const AcDbEntity* pEnt,
|
|
AcDb::Intersect intType,
|
|
AcGePoint3dArray& points,
|
|
INT_PTR thisGsMarker,
|
|
INT_PTR otherGsMarker) const
|
|
{
|
|
AcDbPolyline* pPl = MakePolyCurve();
|
|
if (pPl != NULL)
|
|
{
|
|
pPl->intersectWith(pEnt,intType,points,thisGsMarker,otherGsMarker);
|
|
delete pPl;
|
|
return Acad::eOk;
|
|
}
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::getStretchPoints(AcGePoint3dArray& stretchPoints) const
|
|
{
|
|
return Acad::eOk;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::getStartPoint(AcGePoint3d& x0) const
|
|
{
|
|
AcDbPolyline* pPl = MakePolyCurve();
|
|
if (pPl != NULL)
|
|
{
|
|
pPl->getStartPoint(x0);
|
|
delete pPl;
|
|
return Acad::eOk;
|
|
}
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::getStartParam(double& x0) const
|
|
{
|
|
AcDbPolyline* pPl = MakePolyCurve();
|
|
if (pPl != NULL)
|
|
{
|
|
pPl->getStartParam(x0);
|
|
delete pPl;
|
|
return Acad::eOk;
|
|
}
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::getSplitCurves( const AcGePoint3dArray& points,
|
|
AcDbVoidPtrArray& curveSegments) const
|
|
{
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::getSplitCurves( const AcGeDoubleArray& params,
|
|
AcDbVoidPtrArray& curveSegments) const
|
|
{
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::getPointAtParam(double x0,AcGePoint3d& x1) const
|
|
{
|
|
AcDbPolyline* pPl = MakePolyCurve();
|
|
if (pPl != NULL)
|
|
{
|
|
pPl->getPointAtParam(x0,x1);
|
|
delete pPl;
|
|
return Acad::eOk;
|
|
}
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::getPointAtDist(double x0,AcGePoint3d& x1) const
|
|
{
|
|
AcDbPolyline* pPl = MakePolyCurve();
|
|
if (pPl != NULL)
|
|
{
|
|
pPl->getPointAtDist(x0,x1);
|
|
delete pPl;
|
|
return Acad::eOk;
|
|
}
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::getParamAtPoint(const AcGePoint3d& x0,double& x1)const
|
|
{
|
|
AcDbPolyline* pPl = MakePolyCurve();
|
|
if (pPl != NULL)
|
|
{
|
|
pPl->getParamAtPoint(x0,x1);
|
|
delete pPl;
|
|
return Acad::eOk;
|
|
}
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::getParamAtDist(double dist,double& param) const
|
|
{
|
|
AcDbPolyline* pPl = MakePolyCurve();
|
|
if (pPl != NULL)
|
|
{
|
|
pPl->getParamAtDist(dist,param);
|
|
delete pPl;
|
|
return Acad::eOk;
|
|
}
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::getOsnapPoints(AcDb::OsnapMode osnapMode,
|
|
INT_PTR gsSelectionMark,
|
|
const AcGePoint3d& pickPoint,
|
|
const AcGePoint3d& lastPoint,
|
|
const AcGeMatrix3d& viewXform,
|
|
AcGePoint3dArray& snapPoints,
|
|
AcDbIntArray& geomIds) const
|
|
{
|
|
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::getOffsetCurves(double offsetDist,
|
|
AcDbVoidPtrArray& offsetCurves) const
|
|
{
|
|
AcDbPolyline* pPl = MakePolyCurve();
|
|
if (pPl != NULL)
|
|
{
|
|
pPl->getOffsetCurves(offsetDist,offsetCurves);
|
|
delete pPl;
|
|
return Acad::eOk;
|
|
}
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::getGripPoints(AcGePoint3dArray& gripPoints,
|
|
AcDbIntArray& osnapModes,
|
|
AcDbIntArray& geomIds) const
|
|
{
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::getGeomExtents(AcDbExtents& extents) const
|
|
{
|
|
AcDbPolyline* pPl = MakePolyCurve();
|
|
if (pPl != NULL)
|
|
{
|
|
pPl->getGeomExtents(extents);
|
|
delete pPl;
|
|
return Acad::eOk;
|
|
}
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::getFirstDeriv(double param,AcGeVector3d& firstDeriv) const
|
|
{
|
|
AcDbPolyline* pPl = MakePolyCurve();
|
|
if (pPl != NULL)
|
|
{
|
|
pPl->getFirstDeriv(param,firstDeriv);
|
|
delete pPl;
|
|
return Acad::eOk;
|
|
}
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::getFirstDeriv(const AcGePoint3d& x0,AcGeVector3d& firstDeriv) const
|
|
{
|
|
AcDbPolyline* pPl = MakePolyCurve();
|
|
if (pPl != NULL)
|
|
{
|
|
pPl->getFirstDeriv(x0,firstDeriv);
|
|
delete pPl;
|
|
return Acad::eOk;
|
|
}
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::getEndPoint(AcGePoint3d& x0) const
|
|
{
|
|
AcDbPolyline* pPl = MakePolyCurve();
|
|
if (pPl != NULL)
|
|
{
|
|
pPl->getEndPoint(x0);
|
|
delete pPl;
|
|
return Acad::eOk;
|
|
}
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::getEndParam(double& x0) const
|
|
{
|
|
AcDbPolyline* pPl = MakePolyCurve();
|
|
if (pPl != NULL)
|
|
{
|
|
pPl->getEndParam(x0);
|
|
delete pPl;
|
|
return Acad::eOk;
|
|
}
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::getDistAtPoint(const AcGePoint3d& x0,double& x1) const
|
|
{
|
|
AcDbPolyline* pPl = MakePolyCurve();
|
|
if (pPl != NULL)
|
|
{
|
|
pPl->getDistAtPoint(x0,x1);
|
|
delete pPl;
|
|
return Acad::eOk;
|
|
}
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::getDistAtParam(double param,double& dist) const
|
|
{
|
|
AcDbPolyline* pPl = MakePolyCurve();
|
|
if (pPl != NULL)
|
|
{
|
|
pPl->getDistAtParam(param,dist);
|
|
delete pPl;
|
|
return Acad::eOk;
|
|
}
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::getClosestPointTo(const AcGePoint3d& givenPnt,
|
|
const AcGeVector3d& direction,
|
|
AcGePoint3d& pointOnCurve,
|
|
Adesk::Boolean extend) const
|
|
{
|
|
AcDbPolyline* pPl = MakePolyCurve();
|
|
if (pPl != NULL)
|
|
{
|
|
pPl->getClosestPointTo(givenPnt,direction,pointOnCurve,extend);
|
|
delete pPl;
|
|
return Acad::eOk;
|
|
}
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::getClosestPointTo(const AcGePoint3d& givenPnt,
|
|
AcGePoint3d& pointOnCurve,
|
|
Adesk::Boolean extend) const
|
|
{
|
|
AcDbPolyline* pPl = MakePolyCurve();
|
|
if (pPl != NULL)
|
|
{
|
|
pPl->getClosestPointTo(givenPnt,pointOnCurve,extend);
|
|
delete pPl;
|
|
return Acad::eOk;
|
|
}
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::getClassID(CLSID* pClsid) const
|
|
{
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::extend(double newParam)
|
|
{
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::extend(Adesk::Boolean extendStart,const AcGePoint3d& toPoint)
|
|
{
|
|
return Acad::eNotImplemented;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::explode(AcDbVoidPtrArray& entitySet) const
|
|
{
|
|
BOOL nSingleLine = FALSE;
|
|
m_pXDataMap->GetAt(KEY_SINGLE,nSingleLine);
|
|
if (nSingleLine)
|
|
{
|
|
//中心线
|
|
AcDbObjectId idLayT;
|
|
AcDbObjectId idLay = ((TDbInterfacesObj*)m_pOwnerEnt)->layerId();
|
|
AcDbObjectId idCen = ((TDbInterfacesObj*)m_pOwnerEnt)->CenterLayer();
|
|
|
|
// 获取实体自身原来的pl边界对象[源];
|
|
TComplexCurve compInside;
|
|
GetCurvesInSide(compInside);
|
|
compInside.setSubElementGsMark(0);
|
|
|
|
TDb::TCurveElement el;
|
|
memset(&el,0,sizeof(TDb::TCurveElement));
|
|
|
|
for (int i = 0;i < compInside.length();i++)
|
|
{
|
|
el = compInside.at(i);
|
|
idLayT = idLay;
|
|
if (el.gsMark == -1) idLayT = idCen;
|
|
|
|
//if (el.ptGe[1].distanceTo(el.ptGe[2]) < AcGeContext::gTol.equalPoint()) //直线
|
|
if (el.ptGe[1].distanceTo(el.ptGe[2]) < g_globalTol.equalPoint()) // modify by cq TFS8208
|
|
{
|
|
AcDbLine* pLine = new AcDbLine(el.ptGe[0],el.ptGe[1]);
|
|
pLine->setLayer(idLayT);
|
|
entitySet.append(pLine);
|
|
}
|
|
else
|
|
{
|
|
AcDbArc* pArc = TSupportFunc::FormatArc(el.ptGe[0],el.ptGe[1],el.ptGe[2]);
|
|
if (pArc != NULL)
|
|
{
|
|
pArc->setLayer(idLayT);
|
|
entitySet.append(pArc);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//1. 外线
|
|
AcDbPolyline* pPl = MakePolyCurve();
|
|
if (pPl != NULL)
|
|
{
|
|
pPl->setLayer(m_pOwnerEnt->layerId());
|
|
entitySet.append(pPl);
|
|
}
|
|
|
|
//中心线
|
|
AcDbObjectId idLayT;
|
|
AcDbObjectId idLay = ((TDbInterfacesObj*)m_pOwnerEnt)->layerId();
|
|
AcDbObjectId idCen = ((TDbInterfacesObj*)m_pOwnerEnt)->CenterLayer();
|
|
|
|
TComplexCurve compInside;
|
|
GetCurvesInSide(compInside);
|
|
|
|
TDb::TCurveElement el;
|
|
memset(&el,0,sizeof(TDb::TCurveElement));
|
|
|
|
for (int i = 0;i < compInside.length();i++)
|
|
{
|
|
el = compInside.at(i);
|
|
idLayT = idLay;
|
|
if (el.gsMark == -1) idLayT = idCen;
|
|
|
|
//if (el.ptGe[1].distanceTo(el.ptGe[2]) < AcGeContext::gTol.equalPoint()) //直线
|
|
if (el.ptGe[1].distanceTo(el.ptGe[2]) < g_globalTol.equalPoint()) // modify by cq TFS8208
|
|
{
|
|
AcDbLine* pLine = new AcDbLine(el.ptGe[0],el.ptGe[1]);
|
|
pLine->setLayer(idLayT);
|
|
entitySet.append(pLine);
|
|
}
|
|
else
|
|
{
|
|
AcDbArc* pArc = TSupportFunc::FormatArc(el.ptGe[0],el.ptGe[1],el.ptGe[2]);
|
|
if (pArc != NULL)
|
|
{
|
|
pArc->setLayer(idLayT);
|
|
entitySet.append(pArc);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return Acad::eOk;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::copyFrom(const TImpSpecFitting* pSrc)
|
|
{
|
|
m_pXDataMap->CopyFrom(pSrc->m_pXDataMap);
|
|
return Acad::eOk;
|
|
}
|
|
|
|
AcGeVector3d TImpSpecFitting::normal() const
|
|
{
|
|
AcGeVector3d vt = AcGeVector3d::kZAxis;
|
|
if (!m_pXDataMap->GetAt(KEY_NORMAL,vt))
|
|
{
|
|
m_pXDataMap->GetAt(KEY_MAJBR,vt);
|
|
}
|
|
return vt;
|
|
}
|
|
|
|
void TImpSpecFitting::list() const
|
|
{
|
|
|
|
}
|
|
|
|
BOOL TImpSpecFitting::MakeCurves(TComplexCurve& cplCurve) const
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
BOOL TImpSpecFitting::NoneConectLineIfNeed(TComplexCurve& cplCurve) const
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
BOOL TImpSpecFitting::GetCurvesInSide(TComplexCurve& compCurve) const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
AcDbPolyline* TImpSpecFitting::MakePolyCurve() const
|
|
{
|
|
return NULL;
|
|
}
|
|
|
|
BOOL TImpSpecFitting::MakePolyCurveFaces(AcDbVoidPtrArray& arFaces)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
BOOL TImpSpecFitting::MakesureInterfaceValidate(const AcDbObjectId& id,const AcGePoint3d& ptCon,
|
|
const AcGeVector3d& vtDir,TInterface& pipeInterface) const
|
|
{
|
|
//到命名对象字典中找;
|
|
BOOL bSuccess = FALSE;
|
|
// add by hh 2011-08-09 接口记录从字典移动到数据库中
|
|
TDbInterfaceRecord* pIntfRec = TAuxTools::GetIntfPtrFromDB();
|
|
if(NULL != pIntfRec)
|
|
{
|
|
if (pIntfRec->Find(ptCon,vtDir,m_pOwnerEnt->objectId(),pipeInterface))
|
|
{
|
|
if (pipeInterface.GetConnectObject().asOldId() == id.asOldId())
|
|
{
|
|
bSuccess = TRUE;
|
|
}
|
|
}
|
|
pIntfRec->close();
|
|
return bSuccess;
|
|
}
|
|
// add end
|
|
|
|
AcDbDictionary* pNamedDict = NULL;
|
|
if (Acad::eOk == acdbCurDwg()->getNamedObjectsDictionary(pNamedDict,AcDb::kForRead))
|
|
{
|
|
AcDbDictionary* pDict = NULL;
|
|
if (Acad::eOk == pNamedDict->getAt(KEY_IRECORD,(AcDbObject*&)pDict,AcDb::kForRead))
|
|
{
|
|
pNamedDict->close();
|
|
TDbInterfaceRecord* pInterfaceRec = NULL;
|
|
if (Acad::eOk == pDict->getAt(KEY_IRECORD,(AcDbObject*&)pInterfaceRec,AcDb::kForRead))
|
|
{
|
|
pDict->close();
|
|
if (pInterfaceRec->Find(ptCon,vtDir,m_pOwnerEnt->objectId(),pipeInterface))
|
|
{
|
|
if (pipeInterface.GetConnectObject().asOldId() == id.asOldId())
|
|
{
|
|
bSuccess = TRUE;
|
|
}
|
|
}
|
|
pInterfaceRec->close();
|
|
}
|
|
else
|
|
{
|
|
pDict->close();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
pNamedDict->close();
|
|
}
|
|
}
|
|
return bSuccess;
|
|
}
|
|
|
|
BOOL TImpSpecFitting::MakesureInterfaceValidate(const AcDbObjectId& id,const AcGePoint3d& ptCon,
|
|
const AcGeVector3d& vtDir) const
|
|
{
|
|
//到命名对象字典中找;
|
|
BOOL bSuccess = FALSE;
|
|
// add by hh 2011-08-09 接口记录从字典移动到数据库中
|
|
TDbInterfaceRecord* pIntfRec = TAuxTools::GetIntfPtrFromDB();
|
|
if(NULL != pIntfRec)
|
|
{
|
|
TInterface pipeInterface;
|
|
if (pIntfRec->Find(ptCon,vtDir,m_pOwnerEnt->objectId(),pipeInterface))
|
|
{
|
|
if (pipeInterface.GetConnectObject().asOldId() == id.asOldId())
|
|
{
|
|
bSuccess = TRUE;
|
|
}
|
|
}
|
|
pIntfRec->close();
|
|
return bSuccess;
|
|
}
|
|
// add end
|
|
|
|
AcDbDictionary* pNamedDict = NULL;
|
|
if (Acad::eOk == acdbCurDwg()->getNamedObjectsDictionary(pNamedDict,AcDb::kForRead))
|
|
{
|
|
AcDbDictionary* pDict = NULL;
|
|
if (Acad::eOk == pNamedDict->getAt(KEY_IRECORD,(AcDbObject*&)pDict,AcDb::kForRead))
|
|
{
|
|
pNamedDict->close();
|
|
TDbInterfaceRecord* pInterfaceRec = NULL;
|
|
if (Acad::eOk == pDict->getAt(KEY_IRECORD,(AcDbObject*&)pInterfaceRec,AcDb::kForRead))
|
|
{
|
|
pDict->close();
|
|
TInterface pipeInterface;
|
|
if (pInterfaceRec->Find(ptCon,vtDir,m_pOwnerEnt->objectId(),pipeInterface))
|
|
{
|
|
if (pipeInterface.GetConnectObject().asOldId() == id.asOldId())
|
|
{
|
|
bSuccess = TRUE;
|
|
}
|
|
}
|
|
pInterfaceRec->close();
|
|
}
|
|
else
|
|
{
|
|
pDict->close();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
pNamedDict->close();
|
|
}
|
|
}
|
|
return bSuccess;
|
|
}
|
|
|
|
TDb::Position TImpSpecFitting::ExplainGripIndex(int nIndex) const
|
|
{
|
|
return TDb::eStart;
|
|
}
|
|
|
|
BOOL TImpSpecFitting::FindConnect(const AcGePoint3d& ptGePos,const AcGeVector3d& vtDir,const AcDbObjectId& idOwner,AcDbObjectId& idInterface)
|
|
{
|
|
//到命名对象字典中找;
|
|
BOOL bSuccess = FALSE;
|
|
// add by hh 2011-08-09 接口记录从字典移动到数据库中
|
|
TDbInterfaceRecord* pIntfRec = TAuxTools::GetIntfPtrFromDB();
|
|
if(NULL != pIntfRec)
|
|
{
|
|
TInterface iInterface;
|
|
if (pIntfRec->PairFind(ptGePos,vtDir,idOwner,iInterface))
|
|
{
|
|
idInterface = iInterface.GetConnectObject();
|
|
bSuccess = TRUE;
|
|
}
|
|
pIntfRec->close();
|
|
return bSuccess;
|
|
}
|
|
// add end
|
|
|
|
AcDbDictionary* pNamedDict = NULL;
|
|
if (Acad::eOk == acdbCurDwg()->getNamedObjectsDictionary(pNamedDict,AcDb::kForRead))
|
|
{
|
|
AcDbDictionary* pDict = NULL;
|
|
if (Acad::eOk == pNamedDict->getAt(KEY_IRECORD,(AcDbObject*&)pDict,AcDb::kForRead))
|
|
{
|
|
pNamedDict->close();
|
|
TDbInterfaceRecord* pInterfaceRec = NULL;
|
|
if (Acad::eOk == pDict->getAt(KEY_IRECORD,(AcDbObject*&)pInterfaceRec,AcDb::kForRead))
|
|
{
|
|
pDict->close();
|
|
TInterface iInterface;
|
|
if (pInterfaceRec->PairFind(ptGePos,vtDir,idOwner,iInterface))
|
|
{
|
|
idInterface = iInterface.GetConnectObject();
|
|
bSuccess = TRUE;
|
|
}
|
|
pInterfaceRec->close();
|
|
}
|
|
else
|
|
{
|
|
pDict->close();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
pNamedDict->close();
|
|
}
|
|
}
|
|
return bSuccess;
|
|
}
|
|
|
|
void TImpSpecFitting::GetTips(CMapStringToString& mapLable2Tip) const
|
|
{
|
|
}
|
|
|
|
void TImpSpecFitting::CopyPropertiesFrom(AcDbEntity *pSrc,unsigned gMatchFlag)
|
|
{
|
|
|
|
}
|
|
|
|
void TImpSpecFitting::CopyPropertiesTo(AcDbObjectId& idTgr,unsigned gMatchFlag)
|
|
{
|
|
|
|
}
|
|
|
|
void TImpSpecFitting::CopyPropertiesTo(AcDbObjectIdArray& arIds,unsigned gMatchFlag)
|
|
{
|
|
}
|
|
|
|
BOOL TImpSpecFitting::OPMInfo(LPCTSTR pszName, TDb::OPMInfo* pInfo)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
BOOL TImpSpecFitting::IsValid(TDbXDataMap* pXMap)
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
void TImpSpecFitting::OnSubErase( Adesk::Boolean erasing )
|
|
{
|
|
}
|
|
|
|
int TImpSpecFitting::GetXBaseShell(TXShell& xShell)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
int TImpSpecFitting::GetBodyBox(AcDbExtents& ext)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
LRESULT TImpSpecFitting::UserCall( long i,LPVOID pData )
|
|
{
|
|
return 0l;
|
|
}
|
|
|
|
CString TImpSpecFitting::GetXml(const AcGeMatrix3d& mat) const
|
|
{
|
|
return _T("");
|
|
}
|
|
|
|
bool TImpSpecFitting::GetSection(const AcDbFace &face, const AcGeVector3d &vtPlaneSecDir,
|
|
std::vector<TObjSectionRecord> §ionRecord, AcDbVoidPtrArray& arFillPtrs) const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
Acad::ErrorStatus TImpSpecFitting::GetExtents(TADSGePoint3d &ptLow, TADSGePoint3d &ptUp) const
|
|
{
|
|
return Acad::eNotImplementedYet;
|
|
}
|
|
|
|
// add by hh 2014-08-06 支持管件与水管遮挡
|
|
Acad::ErrorStatus TImpSpecFitting::GetClipBoundary(TGGePoly2D& poly)const
|
|
{
|
|
return Acad::eNotImplementedYet;
|
|
}
|
|
|
|
bool TImpSpecFitting::IsMeClip() const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
bool TImpSpecFitting::IsClipMe(const TEntityBase* pEn)const//ok是否被裁剪
|
|
{
|
|
return false;
|
|
}
|