-// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2019 CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
// report any error, if occurred
#ifndef WIN32
const char* anError = dlerror();
- throw(SALOME_Exception(anError));
+ throw(SALOME_Exception( anError ));
#else
- throw(SALOME_Exception(LOCALIZED( "Can't load server meshers plugin library" )));
+ throw(SALOME_Exception ( SMESH_Comment("Can't load meshers plugin library " )
+ << aPlatformLibName));
#endif
}
(GetHypothesisCreator)GetProc( libHandle, "GetHypothesisCreator" );
if (!procHandle)
{
- throw(SALOME_Exception(LOCALIZED("bad hypothesis plugin library")));
+ throw(SALOME_Exception(SMESH_Comment("bad hypothesis plugin library")
+ << aPlatformLibName ));
UnLoadLib(libHandle);
}
aCreator = procHandle(theHypName);
if (!aCreator)
{
- throw(SALOME_Exception(LOCALIZED("no such a hypothesis in this plugin")));
+ throw(SALOME_Exception( SMESH_Comment( theHypName ) << " is missing from "
+ << aPlatformLibName));
}
// map hypothesis creator to a hypothesis name
myHypCreatorMap[string(theHypName)] = aCreator;
void SMESH_Gen_i::CancelCompute( SMESH::SMESH_Mesh_ptr theMesh,
GEOM::GEOM_Object_ptr theShapeObject )
{
- SMESH_Mesh_i* meshServant = dynamic_cast<SMESH_Mesh_i*>( GetServant( theMesh ).in() );
- ::SMESH_Mesh& myLocMesh = meshServant->GetImpl();
- TopoDS_Shape myLocShape;
- if(theMesh->HasShapeToMesh())
- myLocShape = GeomObjectToShape( theShapeObject );
- else
- myLocShape = SMESH_Mesh::PseudoShape();
- myGen.CancelCompute( myLocMesh, myLocShape);
+ if ( SMESH_Mesh_i* meshServant = dynamic_cast<SMESH_Mesh_i*>( GetServant( theMesh ).in() ))
+ {
+ ::SMESH_Mesh& myLocMesh = meshServant->GetImpl();
+ TopoDS_Shape myLocShape;
+ if(theMesh->HasShapeToMesh())
+ myLocShape = GeomObjectToShape( theShapeObject );
+ else
+ myLocShape = SMESH_Mesh::PseudoShape();
+ myGen.CancelCompute( myLocMesh, myLocShape);
+ }
}
//=============================================================================
TGroupsMap groupsMap;
TListOfNewGroups listOfNewGroups;
+ if ( !CORBA::is_nil( theMeshToAppendTo ))
+ {
+ // fill groupsMap with existing groups
+ SMESH::ListOfGroups_var groups = theMeshToAppendTo->GetGroups();
+ for ( CORBA::ULong i = 0; i < groups->length(); ++i )
+ {
+ SMESH::SMESH_Group_var group = SMESH::SMESH_Group::_narrow( groups[ i ]);
+ if ( !group->_is_nil() )
+ {
+ CORBA::String_var name = group->GetName();
+ SMESH::ElementType type = group->GetType();
+ groupsMap[ TNameAndType( name.in(), type ) ].push_back( group );
+ }
+ }
+ }
+
::SMESH_MeshEditor newEditor( &locMesh );
::SMESH_MeshEditor::ElemFeatures elemType;
{
findNewIDs( oldIndices[i], newIndices );
}
+ if ( newIndices.size() < oldIndices->length() ) // issue #17096
+ {
+ newIndices.clear();
+ newShape = getInPlace( oldShape );
+ }
if ( !newIndices.empty() )
{
try
}
}
+ //================================================================================
+ /*!
+ * \brief Get new sub-shape by calling GetInPlace()
+ */
+ GEOM::GEOM_Object_ptr getInPlace( GEOM::GEOM_Object_ptr oldShape )
+ {
+ GEOM::GEOM_Object_var newShape;
+
+ GEOM::GEOM_Object_var mainShapeNew = myNewMesh_i->GetShapeToMesh();
+ GEOM::GEOM_Gen_var geomGen = myGen_i->GetGeomEngine();
+ GEOM::GEOM_IShapesOperations_wrap op = geomGen->GetIShapesOperations();
+ try
+ {
+ newShape = op->GetInPlace( mainShapeNew, oldShape );
+ }
+ catch( ... )
+ {
+ }
+ return newShape._retn();
+ }
+
//================================================================================
/*!
* \brief Find a new sub-shape indices by an old one in myGIPMap. Return
* \param [out] invalidEntries - return study entries of objects whose
* counterparts are not found in the newGeometry, followed by entries
* of mesh sub-objects that are invalid because they depend on a not found
- * preceeding sub-shape
+ * preceding sub-shape
* \return CORBA::Boolean - is a success
*/
//================================================================================
cmd+="\" \"";
cmd+=meshfile;
cmd+="\"";
+#ifdef WIN32
+ cmd+=" 2>NUL";
+#endif
system(cmd.ToCString());
// MED writer to be used by storage process
try { // protect persistence mechanism against exceptions
myHyp = this->createHypothesis( hypname.c_str(), libname.c_str() );
}
+ catch( SALOME::SALOME_Exception& ex )
+ {
+ INFOS( "Exception during hypothesis creation: " << ex.details.text );
+ }
catch (...) {
INFOS( "Exception during hypothesis creation" );
}
if (aCreator)
{
TopoDS_Shape shape = GeomObjectToShape( theGeomObject );
- return shape.IsNull() || aCreator->IsApplicable( shape, toCheckAll );
+ const SMESH_Algo::Features& feat = SMESH_Algo::GetFeatures( theAlgoType );
+ return shape.IsNull() || aCreator->IsApplicable( shape, toCheckAll, feat._dim );
}
else
{