// Created on: 1999-09-08 // Created by: Andrey BETENEV // Copyright (c) 1999 Matra Datavision // Copyright (c) 1999-2014 OPEN CASCADE SAS // // This file is part of Open CASCADE Technology software library. // // This library is free software; you can redistribute it and/or modify it under // the terms of the GNU Lesser General Public License version 2.1 as published // by the Free Software Foundation, with special exception defined in the file // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT // distribution for complete text of the license and disclaimer of any warranty. // // Alternatively, this file may be used under the terms of Open CASCADE // commercial license or contractual agreement. #ifndef _STEPConstruct_ValidationProps_HeaderFile #define _STEPConstruct_ValidationProps_HeaderFile #include #include #include #include #include #include #include class StepBasic_ProductDefinition; class XSControl_WorkSession; class TopoDS_Shape; class StepRepr_RepresentationItem; class StepRepr_CharacterizedDefinition; class StepRepr_RepresentationContext; class gp_Pnt; class StepRepr_NextAssemblyUsageOccurrence; class StepRepr_PropertyDefinition; //! This class provides tools for access (write and read) //! the validation properties on shapes in the STEP file. //! These are surface area, solid volume and centroid. class STEPConstruct_ValidationProps : public STEPConstruct_Tool { public: DEFINE_STANDARD_ALLOC //! Creates an empty tool Standard_EXPORT STEPConstruct_ValidationProps(); //! Creates a tool and loads it with worksession Standard_EXPORT STEPConstruct_ValidationProps(const Handle(XSControl_WorkSession)& WS); //! Load worksession; returns True if succeeded Standard_EXPORT Standard_Boolean Init (const Handle(XSControl_WorkSession)& WS); //! General method for adding (writing) a validation property //! for shape which should be already mapped on writing itself. //! It uses FindTarget() to find target STEP entity //! resulting from given shape, and associated context //! Returns True if success, False in case of fail Standard_EXPORT Standard_Boolean AddProp (const TopoDS_Shape& Shape, const Handle(StepRepr_RepresentationItem)& Prop, const Standard_CString Descr, const Standard_Boolean instance = Standard_False); //! General method for adding (writing) a validation property //! for shape which should be already mapped on writing itself. //! It takes target and Context entities which correspond to shape //! Returns True if success, False in case of fail Standard_EXPORT Standard_Boolean AddProp (const StepRepr_CharacterizedDefinition& target, const Handle(StepRepr_RepresentationContext)& Context, const Handle(StepRepr_RepresentationItem)& Prop, const Standard_CString Descr); //! Adds surface area property for given shape (already mapped). //! Returns True if success, False in case of fail Standard_EXPORT Standard_Boolean AddArea (const TopoDS_Shape& Shape, const Standard_Real Area); //! Adds volume property for given shape (already mapped). //! Returns True if success, False in case of fail Standard_EXPORT Standard_Boolean AddVolume (const TopoDS_Shape& Shape, const Standard_Real Vol); //! Adds centroid property for given shape (already mapped). //! Returns True if success, False in case of fail //! If instance is True, then centroid is assigned to //! an instance of component in assembly Standard_EXPORT Standard_Boolean AddCentroid (const TopoDS_Shape& Shape, const gp_Pnt& Pnt, const Standard_Boolean instance = Standard_False); //! Finds target STEP entity to which validation props should //! be assigned, and corresponding context, starting from shape //! Returns True if success, False in case of fail Standard_EXPORT Standard_Boolean FindTarget (const TopoDS_Shape& S, StepRepr_CharacterizedDefinition& target, Handle(StepRepr_RepresentationContext)& Context, const Standard_Boolean instance = Standard_False); //! Searches for entities of the type PropertyDefinitionRepresentation //! in the model and fills the sequence by them Standard_EXPORT Standard_Boolean LoadProps (TColStd_SequenceOfTransient& seq) const; //! Returns CDSR associated with given PpD or NULL if not found //! (when, try GetPropSDR) Standard_EXPORT Handle(StepRepr_NextAssemblyUsageOccurrence) GetPropNAUO (const Handle(StepRepr_PropertyDefinition)& PD) const; //! Returns SDR associated with given PpD or NULL if not found //! (when, try GetPropCDSR) Standard_EXPORT Handle(StepBasic_ProductDefinition) GetPropPD (const Handle(StepRepr_PropertyDefinition)& PD) const; //! Returns Shape associated with given SDR or Null Shape //! if not found Standard_EXPORT TopoDS_Shape GetPropShape (const Handle(StepBasic_ProductDefinition)& ProdDef) const; //! Returns Shape associated with given PpD or Null Shape //! if not found Standard_EXPORT TopoDS_Shape GetPropShape (const Handle(StepRepr_PropertyDefinition)& PD) const; //! Returns value of Real-Valued property (Area or Volume) //! If Property is neither Area nor Volume, returns False //! Else returns True and isArea indicates whether property //! is area or volume Standard_EXPORT Standard_Boolean GetPropReal (const Handle(StepRepr_RepresentationItem)& item, Standard_Real& Val, Standard_Boolean& isArea) const; //! Returns value of Centriod property (or False if it is not) Standard_EXPORT Standard_Boolean GetPropPnt (const Handle(StepRepr_RepresentationItem)& item, const Handle(StepRepr_RepresentationContext)& Context, gp_Pnt& Pnt) const; //! Sets current assembly shape SDR (for FindCDSR calls) Standard_EXPORT void SetAssemblyShape (const TopoDS_Shape& shape); protected: private: StepBasic_Unit areaUnit; StepBasic_Unit volUnit; Handle(StepBasic_ProductDefinition) myAssemblyPD; }; #endif // _STEPConstruct_ValidationProps_HeaderFile