/*********************************************************************************************************************** * * 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. * ***********************************************************************************************************************/ #ifndef A3D_TREE_CONNECTOR #define A3D_TREE_CONNECTOR #include #include "Connector.h" //###################################################################################################################### class A3DVisitorContainer; class A3DModelFileConnector: public A3DConnector { public: A3DModelFileConnector(const A3DAsmModelFile* pModelFile): A3DConnector(pModelFile) { A3D_INITIALIZE_DATA(A3DAsmModelFileData, m_sModelFileData); A3DAsmModelFileGet(pModelFile, &m_sModelFileData); } ~A3DModelFileConnector() { A3DAsmModelFileGet(NULL, &m_sModelFileData); } A3DStatus Traverse(A3DVisitorContainer* psVisitor, bool bVisitPrototype = false); public: A3DAsmModelFileData m_sModelFileData; }; //###################################################################################################################### class A3DProductOccurrenceConnector: public A3DConnector { friend class A3DModelFileConnector; const A3DAsmProductOccurrence* m_pFather; bool m_bIsInstanciated; bool m_bIsPrototype; bool m_bIsExternal; private: A3DProductOccurrenceConnector(const A3DAsmProductOccurrence* pProductOccurrence): A3DConnector(pProductOccurrence) { m_pFather = NULL; m_bIsInstanciated = false; A3D_INITIALIZE_DATA(A3DAsmProductOccurrenceData, m_sProductOccurrenceData); A3DAsmProductOccurrenceGet(pProductOccurrence, &m_sProductOccurrenceData); m_bIsPrototype = false; m_bIsExternal = false; } ~A3DProductOccurrenceConnector() { A3DAsmProductOccurrenceGet(NULL, &m_sProductOccurrenceData); } A3DStatus TraversePO(A3DVisitorContainer* psVisitor, bool bVisitPrototype = false); void SetProductOccurrenceFather(const A3DAsmProductOccurrence* pFather) { m_pFather = pFather; } public: A3DAsmProductOccurrenceData m_sProductOccurrenceData; const A3DAsmProductOccurrence* GetProductOccurrenceFather() { return m_pFather; } void SetIsInstanciated(bool bIsInstanciated) { m_bIsInstanciated = bIsInstanciated; } bool IsInstanciated() { return m_bIsInstanciated; } void SetPrototypeType(bool bIsPrototype) { m_bIsPrototype = bIsPrototype; } bool IsProtoType() const { return m_bIsPrototype; } void SetExternalType(bool bIsExternal) { m_bIsExternal = bIsExternal; } bool IsExternal() const { return m_bIsExternal; } }; //###################################################################################################################### class A3DRiConnector: public A3DConnector { friend class A3DRiSetConnector; bool m_bIsInstanciated; public: A3DRiConnector(const A3DRiRepresentationItem *pRi): A3DConnector(pRi) { m_bIsInstanciated = false; A3D_INITIALIZE_DATA(A3DRiRepresentationItemData, m_sRiData); A3DRiRepresentationItemGet(pRi, &m_sRiData); } ~A3DRiConnector() { A3DRiRepresentationItemGet(NULL, &m_sRiData); } A3DStatus TraverseRi(A3DVisitorContainer* psVisitor); public: A3DRiRepresentationItemData m_sRiData; void SetIsInstanciated(bool bIsInstanciated) { m_bIsInstanciated = bIsInstanciated; } bool IsInstanciated() { return m_bIsInstanciated; } }; //###################################################################################################################### class A3DRiBrepModelConnector: public A3DConnector { friend class A3DRiConnector; public: A3DRiBrepModelConnector(const A3DRiBrepModel *pRi): m_pRiBrepModel(pRi), A3DConnector(pRi) { A3D_INITIALIZE_DATA(A3DRiBrepModelData, m_sRiBrepModelData); A3DRiBrepModelGet(m_pRiBrepModel, &m_sRiBrepModelData); } ~A3DRiBrepModelConnector() { A3DRiBrepModelGet(NULL, &m_sRiBrepModelData); } A3DStatus TraverseRiBrepModel(A3DVisitorContainer* psVisitor) const; public: A3DRiBrepModel const* m_pRiBrepModel; A3DRiBrepModelData m_sRiBrepModelData; }; //###################################################################################################################### class A3DRiSetConnector: public A3DConnector { friend class A3DRiConnector; private: A3DRiSetConnector(const A3DRiSet *pRi): A3DConnector(pRi) { A3D_INITIALIZE_DATA(A3DRiSetData, m_sRiSetData); A3DRiSetGet(pRi, &m_sRiSetData); } ~A3DRiSetConnector() { A3DRiSetGet(NULL, &m_sRiSetData); } A3DStatus TraverseRiSet(A3DVisitorContainer* psVisitor); public: A3DRiSetData m_sRiSetData; }; //###################################################################################################################### class A3DPolyRiBrepModelConnector: public A3DConnector { friend class A3DRiConnector; private: A3DPolyRiBrepModelConnector(const A3DRiPolyBrepModel* pRi): A3DConnector(pRi) { A3D_INITIALIZE_DATA(A3DRiPolyBrepModelData, m_sRiPolyBrepModelData); A3DRiPolyBrepModelGet(pRi, &m_sRiPolyBrepModelData); } ~A3DPolyRiBrepModelConnector() { A3DRiPolyBrepModelGet(NULL, &m_sRiPolyBrepModelData); } public: A3DStatus TraverseRiPolyBrepModel(A3DVisitorContainer* psVisitor) const; A3DRiPolyBrepModelData m_sRiPolyBrepModelData; }; //###################################################################################################################### class A3DRiCurveConnector: public A3DConnector { friend class A3DRiConnector; private: A3DRiCurveConnector(const A3DRiCurve* pRi): A3DConnector(pRi) { A3D_INITIALIZE_DATA(A3DRiCurveData, m_sRiCurveData); A3DRiCurveGet(pRi, &m_sRiCurveData); } ~A3DRiCurveConnector() { A3DRiCurveGet(NULL, &m_sRiCurveData); } A3DStatus TraverseRiCurve(A3DVisitorContainer* psVisitor); public: A3DRiCurveData m_sRiCurveData; }; //###################################################################################################################### class A3DRiPolyWireConnector: public A3DConnector { friend class A3DRiConnector; private: A3DRiPolyWireConnector(const A3DRiPolyWire* pRi): A3DConnector(pRi) { A3D_INITIALIZE_DATA(A3DRiPolyWireData, m_sRiPolyWireData); A3DRiPolyWireGet(pRi, &m_sRiPolyWireData); } ~A3DRiPolyWireConnector() { A3DRiPolyWireGet(NULL, &m_sRiPolyWireData); } A3DStatus TraverseRiPolyWire(A3DVisitorContainer* psVisitor); public: A3DRiPolyWireData m_sRiPolyWireData; }; //###################################################################################################################### class A3DFRMParameterConnector: public A3DConnector { friend class A3DFRMTreeConnector; friend class A3DFRMFeatureConnector; private: A3DFRMParameterConnector(const A3DFRMParameter *pParameter): A3DConnector(pParameter) { A3D_INITIALIZE_DATA(A3DFRMParameterData, m_sData); A3DFRMParameterGet(pParameter, &m_sData); } ~A3DFRMParameterConnector() { A3DFRMParameterGet(NULL, &m_sData); } public: A3DFRMParameterData m_sData; A3DStatus TraverseParameter(A3DVisitorContainer* psVisitor) const; }; //###################################################################################################################### class A3DFRMLinkedItemConnector: public A3DConnector { friend class A3DFRMFeatureConnector; private: A3DFRMLinkedItemConnector(const A3DFRMLinkedItem *pLinkedItem): A3DConnector(pLinkedItem) { A3D_INITIALIZE_DATA(A3DFRMLinkedItemData, m_sData); A3DFRMLinkedItemGet(pLinkedItem, &m_sData); } ~A3DFRMLinkedItemConnector() { A3DFRMLinkedItemGet(NULL, &m_sData); } public: A3DFRMLinkedItemData m_sData; A3DStatus TraverseConnection(A3DVisitorContainer* psVisitor) const; }; //###################################################################################################################### class A3DFRMFeatureConnector: public A3DConnector { friend class A3DFRMParameterConnector; private: A3DFRMFeatureConnector(const A3DFRMFeature *pFeature): A3DConnector(pFeature) { A3D_INITIALIZE_DATA(A3DFRMFeatureData, m_sData); A3DFRMFeatureGet(pFeature, &m_sData); } ~A3DFRMFeatureConnector() { A3DFRMFeatureGet(NULL, &m_sData); } public: A3DFRMFeatureData m_sData; A3DStatus TraverseFeature(A3DVisitorContainer* psVisitor) const; }; //###################################################################################################################### class A3DFRMTreeConnector : public A3DConnector { friend class A3DProductOccurrenceConnector; protected: A3DFRMTreeConnector(const A3DFRMTree *pTree): A3DConnector(pTree) { A3D_INITIALIZE_DATA(A3DFRMTreeData, m_sTreeData); A3DFRMTreeGet(pTree, &m_sTreeData); } ~A3DFRMTreeConnector() { A3DFRMTreeGet(NULL, &m_sTreeData); } A3DStatus TraverseFeatureTree(A3DVisitorContainer* psVisitor) const; public: A3DFRMTreeData m_sTreeData; }; #endif // A3D_TREE_CONNECTOR