From 845487b15668b2d333b5065cf155946be5368c31 Mon Sep 17 00:00:00 2001 From: mpa Date: Mon, 18 Jan 2016 11:00:10 +0300 Subject: [PATCH] 0023210: [CEA 1681] Regression with the function GetInPlaceByHistory --- idl/GEOM_Gen.idl | 6 ++-- src/GEOM_SWIG/geomBuilder.py | 12 ++++--- src/XAOPlugin/XAOPlugin_IOperations.cxx | 37 ++++++++++++---------- src/XAOPlugin/XAOPlugin_IOperations.hxx | 42 ++++++++++++------------- 4 files changed, 54 insertions(+), 43 deletions(-) diff --git a/idl/GEOM_Gen.idl b/idl/GEOM_Gen.idl index 830fcc398..1e572a79f 100644 --- a/idl/GEOM_Gen.idl +++ b/idl/GEOM_Gen.idl @@ -2654,7 +2654,8 @@ module GEOM * coincident with \a theShapeWhat or could be a part of it. * \param theShapeWhere Shape to find sub-shapes of. * \param theShapeWhat Shape, specifying what to find. - * \return Group of all found sub-shapes or a single found sub-shape. + * \return Compound which includes all found sub-shapes if they have different types; + * or group of all found shapes of the equal type; or a single found sub-shape. */ GEOM_Object GetInPlace (in GEOM_Object theShapeWhere, in GEOM_Object theShapeWhat); @@ -2677,7 +2678,8 @@ module GEOM * * \param theShapeWhere Shape to find sub-shapes of. * \param theShapeWhat Shape, specifying what to find. - * \return Group of all found sub-shapes or a single found sub-shape. + * \return Compound which includes all found sub-shapes if they have different types; + * or group of all found shapes of the equal type; or a single found sub-shape. */ GEOM_Object GetInPlaceByHistory (in GEOM_Object theShapeWhere, in GEOM_Object theShapeWhat); diff --git a/src/GEOM_SWIG/geomBuilder.py b/src/GEOM_SWIG/geomBuilder.py index 0f90ef502..297b3a18a 100644 --- a/src/GEOM_SWIG/geomBuilder.py +++ b/src/GEOM_SWIG/geomBuilder.py @@ -5866,7 +5866,8 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): # for result publication in the study. Otherwise, if automatic # publication is switched on, default value is used for result name. # - # @return Group of all found sub-shapes or a single found sub-shape. + # @return Compound which includes all found sub-shapes if they have different types; + # or group of all found shapes of the equal type; or a single found sub-shape. # # @note This function has a restriction on argument shapes. # If \a theShapeWhere has curved parts with significantly @@ -5891,7 +5892,8 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): publication is switched on, default value is used for result name. Returns: - Group of all found sub-shapes or a single found sub-shape. + Compound which includes all found sub-shapes if they have different types; + or group of all found shapes of the equal type; or a single found sub-shape. Note: @@ -5927,7 +5929,8 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): # for result publication in the study. Otherwise, if automatic # publication is switched on, default value is used for result name. # - # @return Group of all found sub-shapes or a single found sub-shape. + # @return Compound which includes all found sub-shapes if they have different types; + # or group of all found shapes of the equal type; or a single found sub-shape. # # @ref swig_GetInPlace "Example" @ManageTransactions("ShapesOp") @@ -5948,7 +5951,8 @@ class geomBuilder(object, GEOM._objref_GEOM_Gen): publication is switched on, default value is used for result name. Returns: - Group of all found sub-shapes or a single found sub-shape. + Compound which includes all found sub-shapes if they have different types; + or group of all found shapes of the equal type; or a single found sub-shape. """ # Example: see GEOM_TestOthers.py anObj = self.ShapesOp.GetInPlaceByHistory(theShapeWhere, theShapeWhat) diff --git a/src/XAOPlugin/XAOPlugin_IOperations.cxx b/src/XAOPlugin/XAOPlugin_IOperations.cxx index d8c886274..a6f094194 100644 --- a/src/XAOPlugin/XAOPlugin_IOperations.cxx +++ b/src/XAOPlugin/XAOPlugin_IOperations.cxx @@ -113,15 +113,19 @@ XAOPlugin_IOperations::~XAOPlugin_IOperations() MESSAGE( "XAOPlugin_IOperations::~XAOPlugin_IOperations" ); } -void XAOPlugin_IOperations::exportGroups( std::list groupList, - XAO::Xao* xaoObject, - XAO::BrepGeometry* geometry ) +bool XAOPlugin_IOperations::exportGroups( std::list groupList, + XAO::Xao* xaoObject, + XAO::BrepGeometry* geometry ) { // add the groups std::list::iterator groupIterator = groupList.begin(); while (groupIterator != groupList.end()) { Handle(GEOM_Object) currGroup = (*groupIterator++); + if (currGroup->GetType() != GEOM_GROUP) { + SetErrorCode("Error when export groups: you could perform this operation only with group."); + return false; + } Handle(TColStd_HArray1OfInteger) groupIds = myGroupOperations->GetObjects(currGroup); TopAbs_ShapeEnum shapeGroup = myGroupOperations->GetType(currGroup); @@ -164,11 +168,12 @@ void XAOPlugin_IOperations::exportGroups( std::list groupLi break; } } + return true; } void XAOPlugin_IOperations::exportFields( std::list fieldList, - XAO::Xao* xaoObject, - XAO::BrepGeometry* geometry ) + XAO::Xao* xaoObject, + XAO::BrepGeometry* geometry ) { std::list::iterator fieldIterator = fieldList.begin(); while (fieldIterator != fieldList.end()) @@ -301,10 +306,10 @@ void XAOPlugin_IOperations::exportSubshapes( const Handle(GEOM_Object)& shape, X */ //============================================================================= bool XAOPlugin_IOperations::ExportXAO( Handle(GEOM_Object) shape, - std::list groupList, - std::list fieldList, - const char* author, - const char* fileName ) + std::list groupList, + std::list fieldList, + const char* author, + const char* fileName ) { SetErrorCode(KO); @@ -337,7 +342,7 @@ bool XAOPlugin_IOperations::ExportXAO( Handle(GEOM_Object) shape, exportSubshapes(shape, geometry); xaoObject->setGeometry(geometry); - exportGroups(groupList, xaoObject, geometry); + if (!exportGroups(groupList, xaoObject, geometry)) return false; exportFields(fieldList, xaoObject, geometry); // export the XAO to the file @@ -380,8 +385,8 @@ bool XAOPlugin_IOperations::ExportXAO( Handle(GEOM_Object) shape, } void XAOPlugin_IOperations::importSubShapes( XAO::Geometry* xaoGeometry, - Handle(GEOM_Function) function, int shapeType, int dim, - Handle(TColStd_HSequenceOfTransient)& subShapeList ) + Handle(GEOM_Function) function, int shapeType, int dim, + Handle(TColStd_HSequenceOfTransient)& subShapeList ) { Handle(GEOM_Object) subShape; Handle(GEOM_Function) aFunction; @@ -433,10 +438,10 @@ void XAOPlugin_IOperations::importSubShapes( XAO::Geometry* xaoGeometry, */ //============================================================================= bool XAOPlugin_IOperations::ImportXAO( const char* fileName, - Handle(GEOM_Object)& shape, - Handle(TColStd_HSequenceOfTransient)& subShapes, - Handle(TColStd_HSequenceOfTransient)& groups, - Handle(TColStd_HSequenceOfTransient)& fields ) + Handle(GEOM_Object)& shape, + Handle(TColStd_HSequenceOfTransient)& subShapes, + Handle(TColStd_HSequenceOfTransient)& groups, + Handle(TColStd_HSequenceOfTransient)& fields ) { SetErrorCode(KO); diff --git a/src/XAOPlugin/XAOPlugin_IOperations.hxx b/src/XAOPlugin/XAOPlugin_IOperations.hxx index 869e3a1c2..2b477442a 100644 --- a/src/XAOPlugin/XAOPlugin_IOperations.hxx +++ b/src/XAOPlugin/XAOPlugin_IOperations.hxx @@ -44,31 +44,31 @@ public: ~XAOPlugin_IOperations(); bool ExportXAO( Handle(GEOM_Object) shape, - std::list groupList, - std::list fieldList, - const char* author, - const char* fileName ); + std::list groupList, + std::list fieldList, + const char* author, + const char* fileName ); bool ImportXAO( const char* fileName, - Handle(GEOM_Object)& shape, - Handle(TColStd_HSequenceOfTransient)& subShapes, - Handle(TColStd_HSequenceOfTransient)& groups, - Handle(TColStd_HSequenceOfTransient)& fields ); + Handle(GEOM_Object)& shape, + Handle(TColStd_HSequenceOfTransient)& subShapes, + Handle(TColStd_HSequenceOfTransient)& groups, + Handle(TColStd_HSequenceOfTransient)& fields ); private: - void importSubShapes( XAO::Geometry* xaoGeometry, - Handle(GEOM_Function) function, - int shapeType, - int dim, - Handle(TColStd_HSequenceOfTransient)& subshapeList ); - void exportSubshapes( const Handle(GEOM_Object)& shape, - XAO::BrepGeometry* geometry ); - void exportFields( std::list fieldList, - XAO::Xao* xaoObject, - XAO::BrepGeometry* geometry ); - void exportGroups( std::list groupList, - XAO::Xao* xaoObject, - XAO::BrepGeometry* geometry ); + void importSubShapes( XAO::Geometry* xaoGeometry, + Handle(GEOM_Function) function, + int shapeType, + int dim, + Handle(TColStd_HSequenceOfTransient)& subshapeList ); + void exportSubshapes( const Handle(GEOM_Object)& shape, + XAO::BrepGeometry* geometry ); + void exportFields( std::list fieldList, + XAO::Xao* xaoObject, + XAO::BrepGeometry* geometry ); + bool exportGroups( std::list groupList, + XAO::Xao* xaoObject, + XAO::BrepGeometry* geometry ); }; #endif -- 2.39.2