0020746: EDF 1274 SMESH : MergeAllNodesButNodesFromGroup feature

+  // set "FindCoincidentNodesOnPart()" instead of "FindCoincidentNodesOnPartBut()"
+  if ( !isPyMeshMethod && method == "FindCoincidentNodesOnPartBut")
+  {
+    isPyMeshMethod=true;
+    theCommand->SetMethod("FindCoincidentNodesOnPart");
+  }
This commit is contained in:
eap 2010-09-15 11:50:13 +00:00
parent fed358c8ec
commit c375774866

View File

@ -1091,7 +1091,7 @@ _pyMeshEditor::_pyMeshEditor(const Handle(_pyCommand)& theCreationCmd):
void _pyMeshEditor::Process( const Handle(_pyCommand)& theCommand)
{
// names of SMESH_MeshEditor methods fully equal to methods of class Mesh, so
// names of SMESH_MeshEditor methods fully equal to methods of python class Mesh, so
// commands calling this methods are converted to calls of methods of Mesh
static TStringSet sameMethods;
if ( sameMethods.empty() ) {
@ -1105,7 +1105,7 @@ void _pyMeshEditor::Process( const Handle(_pyCommand)& theCommand)
"ExtrusionSweep","AdvancedExtrusion","ExtrusionSweepObject","ExtrusionSweepObject1D","ExtrusionSweepObject2D",
"ExtrusionAlongPath","ExtrusionAlongPathObject","ExtrusionAlongPathObject1D","ExtrusionAlongPathObject2D",
"Mirror","MirrorObject","Translate","TranslateObject","Rotate","RotateObject",
"FindCoincidentNodes","FindCoincidentNodesOnPart","MergeNodes","FindEqualElements",
"FindCoincidentNodes",/*"FindCoincidentNodesOnPart",*/"MergeNodes","FindEqualElements",
"MergeElements","MergeEqualElements","SewFreeBorders","SewConformFreeBorders",
"SewBorderToSide","SewSideElements","ChangeElemNodes","GetLastCreatedNodes",
"GetLastCreatedElems",
@ -1116,9 +1116,9 @@ void _pyMeshEditor::Process( const Handle(_pyCommand)& theCommand)
}
// names of SMESH_MeshEditor methods which differ from methods of class Mesh
// only last two arguments
// only by last two arguments
static TStringSet diffLastTwoArgsMethods;
if (diffLastTwoArgsMethods.empty() ){
if (diffLastTwoArgsMethods.empty() ) {
const char * names[] = {
"MirrorMakeGroups","MirrorObjectMakeGroups",
"TranslateMakeGroups","TranslateObjectMakeGroups",
@ -1127,41 +1127,52 @@ void _pyMeshEditor::Process( const Handle(_pyCommand)& theCommand)
diffLastTwoArgsMethods.Insert( names );
}
if ( sameMethods.Contains( theCommand->GetMethod() )) {
theCommand->SetObject( myMesh );
// meshes made by *MakeMesh() methods are not wrapped by _pyMesh,
// so let _pyMesh care of it (TMP?)
// if ( theCommand->GetMethod().Search("MakeMesh") != -1 )
// _pyMesh( new _pyCommand( theCommand->GetString(), 0 )); // for theGen->SetAccessorMethod()
}
else {
const TCollection_AsciiString & method = theCommand->GetMethod();
bool isPyMeshMethod = sameMethods.Contains( method );
if ( !isPyMeshMethod )
{
//Replace SMESH_MeshEditor "MakeGroups" functions on the Mesh
//functions with the flag "theMakeGroups = True" like:
//SMESH_MeshEditor.CmdMakeGroups => Mesh.Cmd(...,True)
int pos = theCommand->GetMethod().Search("MakeGroups");
if( pos != -1) {
int pos = method.Search("MakeGroups");
if( pos != -1)
{
isPyMeshMethod = true;
// 1. Remove "MakeGroups" from the Command
TCollection_AsciiString aMethod = theCommand->GetMethod();
int nbArgsToAdd = diffLastTwoArgsMethods.Contains(aMethod) ? 2 : 1;
aMethod.Trunc(pos-1);
theCommand->SetMethod(aMethod);
// 2. Set Mesh object instead of SMESH_MeshEditor
theCommand->SetObject( myMesh );
// 3. And add last "True" argument
// 2. And add last "True" argument(s)
while(nbArgsToAdd--)
theCommand->SetArg(theCommand->GetNbArgs()+1,"True ");
theCommand->SetArg(theCommand->GetNbArgs()+1,"True");
}
else {
// editor creation command is needed only if any editor function is called
theGen->AddMeshAccessorMethod( theCommand ); // for *Object()
if ( !myCreationCmdStr.IsEmpty() ) {
GetCreationCmd()->GetString() = myCreationCmdStr;
myCreationCmdStr.Clear();
}
}
// set "FindCoincidentNodesOnPart()" instead of "FindCoincidentNodesOnPartBut()"
if ( !isPyMeshMethod && method == "FindCoincidentNodesOnPartBut")
{
isPyMeshMethod=true;
theCommand->SetMethod("FindCoincidentNodesOnPart");
}
// meshes made by *MakeMesh() methods are not wrapped by _pyMesh,
// so let _pyMesh care of it (TMP?)
// if ( theCommand->GetMethod().Search("MakeMesh") != -1 )
// _pyMesh( new _pyCommand( theCommand->GetString(), 0 )); // for theGen->SetAccessorMethod()
if ( isPyMeshMethod )
{
theCommand->SetObject( myMesh );
}
else
{
// editor creation command is needed only if any editor function is called
theGen->AddMeshAccessorMethod( theCommand ); // for *Object()
if ( !myCreationCmdStr.IsEmpty() ) {
GetCreationCmd()->GetString() = myCreationCmdStr;
myCreationCmdStr.Clear();
}
}
}