X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESH_I%2FSMESH_2smeshpy.cxx;h=767c325827692f09fccd4edfb3a7491a78a45a6c;hb=2c607013a23bd4e7ba07e72e0c04dee2c1209cff;hp=e62946601f04d7b6de2a0494ddf03c1b8059938f;hpb=fc1ff1af4b188c09cb0bdf44cfa2200640d11af8;p=modules%2Fsmesh.git diff --git a/src/SMESH_I/SMESH_2smeshpy.cxx b/src/SMESH_I/SMESH_2smeshpy.cxx index e62946601..767c32582 100644 --- a/src/SMESH_I/SMESH_2smeshpy.cxx +++ b/src/SMESH_I/SMESH_2smeshpy.cxx @@ -1,23 +1,23 @@ -// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2011 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 +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. // -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. // -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// You should have received a copy of the GNU Lesser General Public +// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses @@ -720,58 +720,58 @@ _pyID _pyGen::GenerateNewID( const _pyID& theID ) */ //================================================================================ -static bool sameGroupType( const _pyID& grpID, - const TCollection_AsciiString& theType) -{ - // define group type as smesh.Mesh.Group() does - int type = -1; - SALOMEDS::Study_var study = SMESH_Gen_i::GetSMESHGen()->GetCurrentStudy(); - SALOMEDS::SObject_var aSObj = study->FindObjectID( grpID.ToCString() ); - if ( !aSObj->_is_nil() ) { - GEOM::GEOM_Object_var aGeomObj = GEOM::GEOM_Object::_narrow( aSObj->GetObject() ); - if ( !aGeomObj->_is_nil() ) { - switch ( aGeomObj->GetShapeType() ) { - case GEOM::VERTEX: type = SMESH::NODE; break; - case GEOM::EDGE: type = SMESH::EDGE; break; - case GEOM::FACE: type = SMESH::FACE; break; - case GEOM::SOLID: - case GEOM::SHELL: type = SMESH::VOLUME; break; - case GEOM::COMPOUND: { - GEOM::GEOM_Gen_ptr aGeomGen = SMESH_Gen_i::GetSMESHGen()->GetGeomEngine(); - if ( !aGeomGen->_is_nil() ) { - GEOM::GEOM_IGroupOperations_var aGrpOp = - aGeomGen->GetIGroupOperations( study->StudyId() ); - if ( !aGrpOp->_is_nil() ) { - switch ( aGrpOp->GetType( aGeomObj )) { - case TopAbs_VERTEX: type = SMESH::NODE; break; - case TopAbs_EDGE: type = SMESH::EDGE; break; - case TopAbs_FACE: type = SMESH::FACE; break; - case TopAbs_SOLID: type = SMESH::VOLUME; break; - default:; - } - } - } - } - default:; - } - } - } - if ( type < 0 ) { - MESSAGE("Type of the group " << grpID << " not found"); - return false; - } - if ( theType.IsIntegerValue() ) - return type == theType.IntegerValue(); - - switch ( type ) { - case SMESH::NODE: return theType.Location( "NODE", 1, theType.Length() ); - case SMESH::EDGE: return theType.Location( "EDGE", 1, theType.Length() ); - case SMESH::FACE: return theType.Location( "FACE", 1, theType.Length() ); - case SMESH::VOLUME: return theType.Location( "VOLUME", 1, theType.Length() ); - default:; - } - return false; -} +// static bool sameGroupType( const _pyID& grpID, +// const TCollection_AsciiString& theType) +// { +// // define group type as smesh.Mesh.Group() does +// int type = -1; +// SALOMEDS::Study_var study = SMESH_Gen_i::GetSMESHGen()->GetCurrentStudy(); +// SALOMEDS::SObject_var aSObj = study->FindObjectID( grpID.ToCString() ); +// if ( !aSObj->_is_nil() ) { +// GEOM::GEOM_Object_var aGeomObj = GEOM::GEOM_Object::_narrow( aSObj->GetObject() ); +// if ( !aGeomObj->_is_nil() ) { +// switch ( aGeomObj->GetShapeType() ) { +// case GEOM::VERTEX: type = SMESH::NODE; break; +// case GEOM::EDGE: type = SMESH::EDGE; break; +// case GEOM::FACE: type = SMESH::FACE; break; +// case GEOM::SOLID: +// case GEOM::SHELL: type = SMESH::VOLUME; break; +// case GEOM::COMPOUND: { +// GEOM::GEOM_Gen_ptr aGeomGen = SMESH_Gen_i::GetSMESHGen()->GetGeomEngine(); +// if ( !aGeomGen->_is_nil() ) { +// GEOM::GEOM_IGroupOperations_var aGrpOp = +// aGeomGen->GetIGroupOperations( study->StudyId() ); +// if ( !aGrpOp->_is_nil() ) { +// switch ( aGrpOp->GetType( aGeomObj )) { +// case TopAbs_VERTEX: type = SMESH::NODE; break; +// case TopAbs_EDGE: type = SMESH::EDGE; break; +// case TopAbs_FACE: type = SMESH::FACE; break; +// case TopAbs_SOLID: type = SMESH::VOLUME; break; +// default:; +// } +// } +// } +// } +// default:; +// } +// } +// } +// if ( type < 0 ) { +// MESSAGE("Type of the group " << grpID << " not found"); +// return false; +// } +// if ( theType.IsIntegerValue() ) +// return type == theType.IntegerValue(); + +// switch ( type ) { +// case SMESH::NODE: return theType.Location( "NODE", 1, theType.Length() ); +// case SMESH::EDGE: return theType.Location( "EDGE", 1, theType.Length() ); +// case SMESH::FACE: return theType.Location( "FACE", 1, theType.Length() ); +// case SMESH::VOLUME: return theType.Location( "VOLUME", 1, theType.Length() ); +// default:; +// } +// return false; +// } //================================================================================ /*! @@ -1160,7 +1160,7 @@ void _pyMeshEditor::Process( const Handle(_pyCommand)& theCommand) bool isPyMeshMethod = sameMethods.Contains( method ); if ( !isPyMeshMethod ) { - //Replace SMESH_MeshEditor "MakeGroups" functions on the Mesh + //Replace SMESH_MeshEditor "MakeGroups" functions by the Mesh //functions with the flag "theMakeGroups = True" like: //SMESH_MeshEditor.CmdMakeGroups => Mesh.Cmd(...,True) int pos = method.Search("MakeGroups"); @@ -1194,12 +1194,31 @@ void _pyMeshEditor::Process( const Handle(_pyCommand)& theCommand) theCommand->SetMethod("FindCoincidentNodesOnPart"); } // DoubleNodeElemGroupNew() -> DoubleNodeElemGroup() - if ( !isPyMeshMethod && ( method == "DoubleNodeElemGroupNew" || method == "DoubleNodeGroupNew")) + // DoubleNodeGroupNew() -> DoubleNodeGroup() + // DoubleNodeGroupsNew() -> DoubleNodeGroups() + // DoubleNodeElemGroupsNew() -> DoubleNodeElemGroups() + if ( !isPyMeshMethod && ( method == "DoubleNodeElemGroupNew" || + method == "DoubleNodeElemGroupsNew" || + method == "DoubleNodeGroupNew" || + method == "DoubleNodeGroupsNew")) { isPyMeshMethod=true; theCommand->SetMethod( method.SubString( 1, method.Length()-3)); theCommand->SetArg(theCommand->GetNbArgs()+1,"True"); } + // ConvertToQuadraticObject(bool,obj) -> ConvertToQuadratic(bool,obj) + // ConvertFromQuadraticObject(obj) -> ConvertFromQuadratic(obj) + if ( !isPyMeshMethod && ( method == "ConvertToQuadraticObject" || + method == "ConvertFromQuadraticObject" )) + { + isPyMeshMethod=true; + theCommand->SetMethod( method.SubString( 1, method.Length()-6)); + // prevent moving creation of the converted sub-mesh to the end of the script + bool isFromQua = ( method.Value( 8 ) == 'F' ); + Handle(_pySubMesh) sm = theGen->FindSubMesh( theCommand->GetArg( isFromQua ? 1 : 2 )); + if ( !sm.IsNull() ) + sm->Process( theCommand ); + } // meshes made by *MakeMesh() methods are not wrapped by _pyMesh, // so let _pyMesh care of it (TMP?) @@ -2506,7 +2525,7 @@ void _pySubMesh::Process( const Handle(_pyCommand)& theCommand ) //================================================================================ /*! - * \brief Clear creatin command if no commands invoked + * \brief Clear creation command if no commands invoked */ //================================================================================