Init
This commit is contained in:
228
exchange/exchangesource/Collision/visitor/MarkupTraverse.cpp
Normal file
228
exchange/exchangesource/Collision/visitor/MarkupTraverse.cpp
Normal file
@@ -0,0 +1,228 @@
|
||||
/***********************************************************************************************************************
|
||||
*
|
||||
* Copyright (c) 2010 - 2022 by Tech Soft 3D, Inc.
|
||||
* The information contained herein is confidential and proprietary to Tech Soft 3D, Inc., and considered a trade secret
|
||||
* as defined under civil and criminal statutes. Tech Soft 3D shall pursue its civil and criminal remedies in the event
|
||||
* of unauthorized use or misappropriation of its trade secrets. Use of this information by anyone other than authorized
|
||||
* employees of Tech Soft 3D, Inc. is granted only under a written non-disclosure agreement, expressly prescribing the
|
||||
* scope and manner of such use.
|
||||
*
|
||||
***********************************************************************************************************************/
|
||||
/**
|
||||
\file MarkupTraverse.cpp
|
||||
|
||||
This file contains functionalities to traverse a PRC Markup Tree
|
||||
|
||||
***********************************************************************************************************************/
|
||||
|
||||
#include "VisitorContainer.h"
|
||||
#include "MarkupTraverse.h"
|
||||
#include <A3DSDKTessellation.h>
|
||||
#include <vector>
|
||||
#include "MarkupTessConnector.h"
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// Traverse Markup
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
A3DStatus A3DMkpAnnotationEntityConnector::TraverseAnnotationEntity(A3DVisitorContainer* pVisitor)
|
||||
{
|
||||
pVisitor->visitEnter(*this);
|
||||
|
||||
A3DEEntityType eType=kA3DTypeUnknown;
|
||||
A3DStatus iRet = A3DEntityGetType(m_pEntity,&eType);
|
||||
CHECK_RET(iRet);
|
||||
switch(eType)
|
||||
{
|
||||
case kA3DTypeMkpAnnotationSet:
|
||||
{
|
||||
A3DMkpAnnotationSetConnector sMkpAnnotationSetConnector((A3DMkpAnnotationSet*) m_pEntity);
|
||||
iRet=sMkpAnnotationSetConnector.TraverseAnnotationSet(pVisitor);
|
||||
break;
|
||||
}
|
||||
case kA3DTypeMkpAnnotationReference:
|
||||
{
|
||||
A3DMkpAnnotationReferenceConnector sMkpAnnotationReferenceConnector((A3DMkpAnnotationReference*) m_pEntity);
|
||||
iRet=sMkpAnnotationReferenceConnector.TraverseAnnotationReference(pVisitor);
|
||||
break;
|
||||
}
|
||||
case kA3DTypeMkpAnnotationItem:
|
||||
{
|
||||
A3DMkpAnnotationItemConnector sMkpAnnotationItemConnector((A3DMkpAnnotationItem*) m_pEntity);
|
||||
iRet=sMkpAnnotationItemConnector.TraverseAnnotationItem(pVisitor);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
iRet=A3D_ERROR;
|
||||
break;
|
||||
}
|
||||
pVisitor->visitLeave(*this);
|
||||
|
||||
return A3D_SUCCESS;
|
||||
}
|
||||
|
||||
A3DStatus A3DMkpAnnotationSetConnector::TraverseAnnotationSet(A3DVisitorContainer* pVisitor)
|
||||
{
|
||||
pVisitor->visitEnter(*this);
|
||||
A3DUns32 uNbAnnotEntity = m_sAnnotSetData.m_uiAnnotationsSize;
|
||||
for(A3DUns32 uI = 0; uI < uNbAnnotEntity; uI++)
|
||||
{
|
||||
A3DMkpAnnotationEntityConnector sMkpAnnotationEntityConnector(m_sAnnotSetData.m_ppAnnotations[uI]);
|
||||
sMkpAnnotationEntityConnector.TraverseAnnotationEntity(pVisitor);
|
||||
}
|
||||
pVisitor->visitLeave(*this);
|
||||
return A3D_SUCCESS;
|
||||
}
|
||||
|
||||
A3DStatus A3DMkpAnnotationReferenceConnector::TraverseAnnotationReference(A3DVisitorContainer* pVisitor)
|
||||
{
|
||||
pVisitor->visitEnter(*this);
|
||||
pVisitor->visitLeave(*this);
|
||||
return A3D_SUCCESS;
|
||||
}
|
||||
|
||||
A3DStatus A3DMkpAnnotationItemConnector::TraverseAnnotationItem(A3DVisitorContainer* pVisitor)
|
||||
{
|
||||
pVisitor->visitEnter(*this);
|
||||
if(m_sAnnotItemData.m_pMarkup == NULL)
|
||||
{
|
||||
pVisitor->visitLeave(*this);
|
||||
return A3D_SUCCESS;
|
||||
}
|
||||
|
||||
A3DMarkupConnector sMarkupConnector((A3DMkpMarkup*) m_sAnnotItemData.m_pMarkup);
|
||||
/*A3DStatus iRet=*/sMarkupConnector.TraverseMarkup(pVisitor);
|
||||
|
||||
pVisitor->visitLeave(*this);
|
||||
return A3D_SUCCESS;
|
||||
}
|
||||
|
||||
A3DStatus A3DMarkupConnector::TraverseMarkupTessellation(std::vector<A3DMarkupTessConnector*>& asMarkupTessConnector,
|
||||
double a_dParallelToScreenPMIScale)
|
||||
{
|
||||
A3DStatus iRet = A3D_SUCCESS;
|
||||
A3DTessMarkupData sMarkupTessData;
|
||||
A3D_INITIALIZE_DATA(A3DTessMarkupData, sMarkupTessData);
|
||||
CHECK_RET(A3DTessMarkupGet(m_sMarkupData.m_pTessellation, &sMarkupTessData));
|
||||
|
||||
A3DTessBaseData sTessBaseData;
|
||||
A3D_INITIALIZE_DATA(A3DTessBaseData, sTessBaseData);
|
||||
CHECK_RET(A3DTessBaseGet(m_sMarkupData.m_pTessellation, &sTessBaseData));
|
||||
|
||||
bool bIsText = m_sMarkupData.m_eType == kA3DMarkupTypeText;
|
||||
|
||||
CHECK_RET(A3DMarkupTessConnector::GetMarkupTessellation(sTessBaseData, &sMarkupTessData, bIsText,
|
||||
asMarkupTessConnector, a_dParallelToScreenPMIScale));
|
||||
|
||||
CHECK_RET(A3DTessBaseGet(NULL, &sTessBaseData));
|
||||
CHECK_RET(A3DTessMarkupGet(NULL, &sMarkupTessData));
|
||||
|
||||
unsigned int uI, uJ;
|
||||
for(uI = 0; uI < m_sMarkupData.m_uiLeadersSize; uI++)
|
||||
{
|
||||
A3DMkpLeader* psLeader = m_sMarkupData.m_ppLeaders[uI];
|
||||
if(psLeader == NULL)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
A3DMkpLeaderData sMarkupLeaderData;
|
||||
A3D_INITIALIZE_DATA(A3DMkpLeaderData, sMarkupLeaderData);
|
||||
CHECK_RET(A3DMkpLeaderGet(psLeader, &sMarkupLeaderData));
|
||||
|
||||
A3DTessMarkupData sMarkupLeaderTessData;
|
||||
A3D_INITIALIZE_DATA(A3DTessMarkupData, sMarkupLeaderTessData);
|
||||
CHECK_RET(A3DTessMarkupGet(sMarkupLeaderData.m_pTessellation, &sMarkupLeaderTessData));
|
||||
|
||||
A3DTessBaseData sLeaderTessBaseData;
|
||||
A3D_INITIALIZE_DATA(A3DTessBaseData, sLeaderTessBaseData);
|
||||
CHECK_RET(A3DTessBaseGet(sMarkupLeaderData.m_pTessellation, &sLeaderTessBaseData));
|
||||
|
||||
std::vector<A3DMarkupTessConnector*> asMarkupLeaderConnector;
|
||||
|
||||
CHECK_RET(A3DMarkupTessConnector::GetMarkupTessellation(sLeaderTessBaseData, &sMarkupLeaderTessData, bIsText,
|
||||
asMarkupLeaderConnector, a_dParallelToScreenPMIScale));
|
||||
|
||||
for(uJ= 0; uJ < asMarkupLeaderConnector.size(); uJ++)
|
||||
asMarkupTessConnector.push_back(asMarkupLeaderConnector[uJ]);
|
||||
|
||||
CHECK_RET(A3DTessBaseGet(NULL, &sLeaderTessBaseData));
|
||||
CHECK_RET(A3DTessMarkupGet(NULL, &sMarkupLeaderTessData));
|
||||
CHECK_RET(A3DMkpLeaderGet(NULL, &sMarkupLeaderData));
|
||||
}
|
||||
|
||||
return A3D_SUCCESS;
|
||||
}
|
||||
|
||||
A3DStatus A3DMarkupConnector::TraverseMarkup(A3DVisitorContainer* pVisitor)
|
||||
{
|
||||
pVisitor->visitEnter(*this);
|
||||
|
||||
A3DEEntityType eType = kA3DTypeUnknown;
|
||||
A3DStatus iRet = A3DEntityGetType( this->GetA3DEntity(), &eType);
|
||||
switch (eType)
|
||||
{
|
||||
|
||||
case kA3DTypeMarkupText:
|
||||
break;
|
||||
case kA3DTypeMarkupRichText:
|
||||
break;
|
||||
case kA3DTypeMarkupCoordinate:
|
||||
break;
|
||||
case kA3DTypeMarkupBalloon:
|
||||
break;
|
||||
case kA3DTypeMarkupDatum:
|
||||
{
|
||||
A3DMarkupDatumConnector sMkpDatumConnector((A3DMkpMarkup*) this->GetA3DEntity());
|
||||
iRet=sMkpDatumConnector.TraverseDatum(pVisitor);
|
||||
}
|
||||
break;
|
||||
case kA3DTypeMarkupGDT:
|
||||
{
|
||||
A3DMarkupGDTConnector sMkpGDTConnector((A3DMkpMarkup*) this->GetA3DEntity());
|
||||
iRet=sMkpGDTConnector.TraverseGDT(pVisitor);
|
||||
}
|
||||
break;
|
||||
case kA3DTypeMarkupRoughness:
|
||||
break;
|
||||
case kA3DTypeMarkupDimension:
|
||||
{
|
||||
A3DMarkupDimensionConnector sMkpDimensionConnector((A3DMkpMarkup*) this->GetA3DEntity());
|
||||
iRet=sMkpDimensionConnector.TraverseDimension(pVisitor);
|
||||
}
|
||||
break;
|
||||
case kA3DTypeMarkupLocator:
|
||||
break;
|
||||
case kA3DTypeMarkupMeasurementPoint:
|
||||
break;
|
||||
case kA3DTypeMarkupFastener:
|
||||
break;
|
||||
case kA3DTypeMarkupSpotWelding:
|
||||
break;
|
||||
case kA3DTypeMarkupLineWelding:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
pVisitor->visitLeave(*this);
|
||||
return A3D_SUCCESS;
|
||||
}
|
||||
|
||||
A3DStatus A3DMarkupDimensionConnector::TraverseDimension(A3DVisitorContainer* pVisitor)
|
||||
{
|
||||
pVisitor->visitEnter(*this);
|
||||
pVisitor->visitLeave(*this);
|
||||
return A3D_SUCCESS;
|
||||
}
|
||||
A3DStatus A3DMarkupGDTConnector::TraverseGDT(A3DVisitorContainer* pVisitor)
|
||||
{
|
||||
pVisitor->visitEnter(*this);
|
||||
pVisitor->visitLeave(*this);
|
||||
return A3D_SUCCESS;
|
||||
}
|
||||
|
||||
A3DStatus A3DMarkupDatumConnector::TraverseDatum(A3DVisitorContainer* pVisitor)
|
||||
{
|
||||
pVisitor->visitEnter(*this);
|
||||
pVisitor->visitLeave(*this);
|
||||
return A3D_SUCCESS;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user