/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2025, Open Design Alliance (the "Alliance"). // All rights reserved. // // This software and its documentation and related materials are owned by // the Alliance. The software may only be incorporated into application // programs owned by members of the Alliance, subject to a signed // Membership Agreement and Supplemental Software License Agreement with the // Alliance. The structure and organization of this software are the valuable // trade secrets of the Alliance and its suppliers. The software is also // protected by copyright law and international treaty provisions. Application // programs incorporating this software must include the following statement // with their copyright notices: // // This application incorporates Open Design Alliance software pursuant to a license // agreement with Open Design Alliance. // Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// #ifndef _IFC_REPR_CTX_VALIDATION_TASK_H #define _IFC_REPR_CTX_VALIDATION_TASK_H #include"OdaCommon.h" #include "IfcValidationExport.h" #include "daiExtentValidationTask.h" #include "daiValidationHealer.h" #include "daiValidationCommon.h" namespace OdIfc { class IFC_VALIDATION_EXPORT RepresentationContextValidationTask : public OdDAI::ExtentValidationTask { ODRX_VALIDATION_DECLARE_MEMBERS(RepresentationContextValidationTask); public: RepresentationContextValidationTask(); virtual OdDAI::Logical validate(OdDAI::InstanceValidationContext* pInstanceCtx, OdSharedPtr& invalidParams) override; OdAnsiString description() const override; }; typedef OdSmartPtr RepresentationContextValidationTaskPtr; class IFC_VALIDATION_EXPORT RepresentationContextValidationHealer : public OdDAI::ValidationHealer { ODRX_DECLARE_MEMBERS(RepresentationContextValidationHealer); /** \details Change parent context of IfcRepresentationSubContexts in sourceCtx to destinationCtx. If there is IfcRepresentationSubContext with the same contextType in destinationCtx, representations of this IfcRepresentationSubContext will be transfered to corresponding IfcRepresentationSubContext of destinationCtx. \param sourceCtx [in] An identifier of IfcRepresentationContext to transfer subcontexts from. \param destinationCtx [in] An identifier of IfcRepresentationContext to wich subcontexts will be transfered. \returns Result of transfer. Returns True if transfer is successful. */ OdDAI::Logical moveSubcontexts(const OdDAIObjectId sourceCtx, const OdDAIObjectId destinationCtx); /** \details Transfers IdcRepresentations from sourceCtx to destinationCtx. \param sourceCtx [in] An identifier of IfcRepresentationContext to transfer subcontexts from. \param destinationCtx [in] An identifier of IfcRepresentationContext to wich subcontexts will be transfered. \returns Result of transfer. Returns True if transfer is successful. */ OdDAI::Logical moveRepresentations(const OdDAIObjectId sourceCtx, const OdDAIObjectId destinationCtx); public: /** \details Fixes problem with IfcRepresentationContext neing disconected prom IfcProject In case model contains no IfcRepresentationContext with same context type invalideInstanse gets connected to IfcProject. In case there is one, moveSubcontexts will be called to marge IfcRepresentationSubContexts into IfcRepresentationContext connected to IfcProject. \param model [in] A raw pointer to the OdDAI object identifiers of the entity instances. \returns Result of healing. Returns True if healing is successful. */ virtual OdDAI::Logical heal(OdDAI::Model* model, OdDAI::ValidationTask::InvalidValidationParamsBase* invalidParams); }; typedef OdSmartPtr RepresentationContextValidationHealerPtr; } #endif // !_IFC_REPR_CTX_VALIDATION_TASK_H