Files
Hoops_Exchange/exchange/exchangesource/DumpFeatureTree/HXFeatureTreeReport.h
2025-12-15 23:22:33 +08:00

83 lines
3.6 KiB
C++

/***********************************************************************************************************************
*
* Copyright (c) 2010 - 2025 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.
*
***********************************************************************************************************************/
#pragma once
#ifndef __HTREEDUMP_H__
#define __HTREEDUMP_H__
#include "Visitors.h"
#include "tinyxml.h"
#include "HXmlReport.h"
class HXFeatureTreeReport: public A3DVisitor
{
public:
HXFeatureTreeReport(A3DVisitorContainer* pContainer):
A3DVisitor("FeatureTreeReport", pContainer),
m_failed_count(0),
m_not_implemented_node_count(0),
m_not_implemented_subnode_count(0),
m_mandatory_missing_count(0),
m_hole_mandatory_missing_count(0),
m_pattern_mandatory_missing_count(0)
{}
virtual ~HXFeatureTreeReport() {}
inline void SaveFile(const A3DUTF8Char* pcReportPath) { m_sReport.SaveFile(pcReportPath, "FeatureHTML.xsl"); }
virtual A3DStatus visitEnter(const A3DFRMTreeConnector& sConnector);
virtual A3DStatus visitLeave(const A3DFRMTreeConnector& sConnector);
virtual A3DStatus visitEnter(const A3DFRMParameterConnector& sConnector);
virtual A3DStatus visitLeave(const A3DFRMParameterConnector& sConnector);
virtual A3DStatus visitEnter(const A3DFRMFeatureConnector& sConnector);
virtual A3DStatus visitLeave(const A3DFRMFeatureConnector& sConnector);
virtual A3DStatus visitEnter(const A3DFRMLinkedItemConnector& sConnector);
virtual A3DStatus visitLeave(const A3DFRMLinkedItemConnector& sConnector);
private:
int m_failed_count;
int m_not_implemented_node_count;
int m_not_implemented_subnode_count;
int m_mandatory_missing_count;
int m_hole_mandatory_missing_count;
int m_pattern_mandatory_missing_count;
HXmlReport m_sReport;
std::vector<const A3DEntity*> m_apAlreadyparsedFeatures;
bool isAlreadyTreadted(const A3DFRMFeatureConnector& sFeature);
void traverseRootBaseData(const A3DEntity* pEntity);
void traverseMiscReferenceOnTopology(const A3DMiscReferenceOnTopology* pEntityReference);
void traverseMiscReferenceOnCsysItem(const A3DMiscReferenceOnCsysItem* pEntityReference);
void traverseMiscReferenceOnTessData(const A3DMiscEntityReference* pEntityReference);
void traverseMiscReferenceOnBRep(
const A3DEntity* pEntity,
const A3DEEntityType eType,
const A3DUns32* puiAdditionalIndexes,
const A3DUns32 uiAdditionalIndexesSize);
void traverseEntityReference(const A3DEntity* pEntityReference);
void traverseDrawingBlock(const A3DDrawingBlockBasic* pEntityReference);
void traverseFeatureStatus(const A3DFRMFeatureConnector& sFeature);
void traverseFeatureData(const A3DFRMFeatureConnector& sFeature);
void traverseIndexes(const A3DUns32 uiSize, const A3DUns32* puiIndexes);
void DumpIndexesBy3(const char* name, const A3DUns32 uiAdditionalIndexesSize,
const A3DUns32* puiAdditionalIndexes);
void DumpIndexesBy4(const char* name, const A3DUns32 uiAdditionalIndexesSize,
const A3DUns32* puiAdditionalIndexes);
};
#endif // __HTREEDUMP_H__