X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESH_I%2FSMESH_Pattern_i.cxx;h=4f730b3874abf276c3f99be4bab1cda2f4d6529a;hb=8579e44356e940fc7fa6e2174639c9594035618f;hp=f48a6fab3f95fa78617096fa8551a08a9a475f2b;hpb=95dab66d27ba89f7ef91cf50e207367d2b48125a;p=modules%2Fsmesh.git diff --git a/src/SMESH_I/SMESH_Pattern_i.cxx b/src/SMESH_I/SMESH_Pattern_i.cxx index f48a6fab3..4f730b387 100644 --- a/src/SMESH_I/SMESH_Pattern_i.cxx +++ b/src/SMESH_I/SMESH_Pattern_i.cxx @@ -17,7 +17,7 @@ // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -40,6 +40,9 @@ #include #include +#include +#include + #include #include @@ -106,8 +109,21 @@ SMESH_Pattern_i::SMESH_Pattern_i( SMESH_Gen_i* theGen_i ): CORBA::Boolean SMESH_Pattern_i::LoadFromFile(const char* theFileContents) { + // remove some gabage from the end + TCollection_AsciiString patternDescription = (char*) theFileContents; + int pos = patternDescription.Length(); + while (! isdigit( patternDescription.Value( pos ))) + pos--; + if ( pos != patternDescription.Length() ) { + patternDescription.Trunc( pos ); + } + // Update Python script - TPythonDump() << "isDone = pattern.LoadFromFile(" << theFileContents << ")"; + TPythonDump() << "isDone = pattern.LoadFromFile(" + << TPythonDump::LongStringStart("Pattern") + << patternDescription + << TPythonDump::LongStringEnd() + << ")"; addErrorCode( "LoadFromFile" ); return myPattern.Load( theFileContents ); @@ -273,8 +289,24 @@ SMESH::point_array* if ( elem && elem->GetType() == SMDSAbs_Face ) fset.insert( static_cast( elem )); } - if (myPattern.Apply( fset, theNodeIndexOnKeyPoint1, theReverse ) && - myPattern.GetMappedPoints( xyzList )) + bool ok = false; + try { +#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100 + OCC_CATCH_SIGNALS; +#endif + ok = myPattern.Apply( aMesh, fset, theNodeIndexOnKeyPoint1, theReverse ); + } + catch (Standard_Failure& exc) { + MESSAGE("OCCT Exception in SMESH_Pattern: " << exc.GetMessageString()); + } + catch ( std::exception& exc ) { + MESSAGE("STD Exception in SMESH_Pattern: << exc.what()"); + } + catch ( ... ) { + MESSAGE("Unknown Exception in SMESH_Pattern"); + } + + if ( ok && myPattern.GetMappedPoints( xyzList )) { points->length( xyzList.size() ); list::iterator xyzIt = xyzList.begin(); @@ -470,6 +502,7 @@ SMESH::SMESH_Pattern::ErrorCode SMESH_Pattern_i::GetErrorCode() RETCASE( ERR_LOAD_EMPTY_SUBMESH ); RETCASE( ERR_LOADF_NARROW_FACE ); RETCASE( ERR_LOADF_CLOSED_FACE ); + RETCASE( ERR_LOADF_CANT_PROJECT ); RETCASE( ERR_LOADV_BAD_SHAPE ); RETCASE( ERR_LOADV_COMPUTE_PARAMS ); RETCASE( ERR_APPL_NOT_LOADED );