mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-11-15 10:08:34 +05:00
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:
parent
fed358c8ec
commit
c375774866
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user