-// 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
// - FT_NodeConnectivityNumber= 22
// v 8.5.0: FT_Undefined == 49, new items:
// - FT_Deflection2D = 22
+ // v 9.3.0: FT_Undefined == 50, new items:
+ // - FT_Length3D = 22
//
// It's necessary to continue recording this history and to fill
// undef2newItems (see below) accordingly.
undef2newItems[ 47 ].push_back( 22 );
undef2newItems[ 48 ].push_back( 22 );
undef2newItems[ 49 ].push_back( 22 );
+ undef2newItems[ 50 ].push_back( 22 );
ASSERT( undef2newItems.rbegin()->first == SMESH::FT_Undefined );
}
AddObject( mesh );
return;
}
- if( method == "CreateMeshesFromMED" ||
- method == "CreateMeshesFromSAUV"||
- method == "CreateMeshesFromCGNS" ||
- method == "CreateMeshesFromGMF" ) // command result is ( [mesh1,mesh2], status )
+ if ( method == "CreateMeshesFromMED" ||
+ method == "CreateMeshesFromSAUV"||
+ method == "CreateMeshesFromCGNS" ||
+ method == "CreateMeshesFromGMF" ) // command result is ( [mesh1,mesh2], status )
{
std::list< _pyID > meshIDs = theCommand->GetStudyEntries( theCommand->GetResultValue() );
std::list< _pyID >::iterator meshID = meshIDs.begin();
theCommand->SetArg( 1, file );
}
}
+ if ( method == "CopyMeshWithGeom" )
+ {
+ std::list< _pyID > entries = theCommand->GetStudyEntries( theCommand->GetResultValue() );
+ Handle(_pyMesh) mesh = new _pyMesh( theCommand, entries.front() );
+ AddObject( mesh );
+ }
// CreateHypothesis()
if ( method == "CreateHypothesis" )
// Concatenate( [mesh1, ...], ... )
else if ( method == "Concatenate" || method == "ConcatenateWithGroups")
{
+ // OLD IDL: ( meshes, uniteGroups, toMerge, tol )
+ // IDL: ( meshes, uniteGroups, toMerge, tol, meshToAppendTo )
+ // PY: ( meshes, uniteGroups, toMerge, tol, allGroups=False, name="", meshToAppendTo=None )
+ _pyID appendMesh = theCommand->GetArg( 5 );
if ( method == "ConcatenateWithGroups" ) {
theCommand->SetMethod( "Concatenate" );
- theCommand->SetArg( theCommand->GetNbArgs() + 1, "True" );
+ theCommand->SetArg( 5, "True" );
+ }
+ else {
+ theCommand->SetArg( 5, "False" );
+ }
+ if ( !appendMesh.IsEmpty() && appendMesh != "None" )
+ {
+ appendMesh.Insert( 1, "meshToAppendTo=" );
+ theCommand->SetArg( theCommand->GetNbArgs() + 1, appendMesh );
}
Handle(_pyMesh) mesh = new _pyMesh( theCommand, theCommand->GetResultValue() );
AddObject( mesh );
args.push_back( theCommand->GetArg( i ) );
}
theCommand->RemoveArgs();
- for ( uint i = 0; i < args.size(); i++ )
+ for ( unsigned int i = 0; i < args.size(); i++ )
theCommand->SetArg( i+1, args[i] );
if ( theCommand->GetNbArgs() == 4 )
{
args.splice( newPos, args, args.begin() );
}
std::list< _AString >::iterator a = args.begin();
- for ( uint i = 1; a != args.end(); ++i, ++a )
+ for ( unsigned int i = 1; a != args.end(); ++i, ++a )
theCommand->SetArg( i, *a );
}
// remember file name
list < Handle(_pyCommand) >::iterator cmd;
// try to convert algo addition like this:
- // mesh.AddHypothesis(geom, ALGO ) --> ALGO = mesh.Algo()
+ // mesh.AddHypothesis( geom, ALGO ) --> ALGO = mesh.Algo()
for ( cmd = myAddHypCmds.begin(); cmd != myAddHypCmds.end(); ++cmd )
{
Handle(_pyCommand) addCmd = *cmd;
"MergeElements","MergeEqualElements","SewFreeBorders","SewConformFreeBorders",
"FindCoincidentFreeBorders", "SewCoincidentFreeBorders",
"SewBorderToSide","SewSideElements","ChangeElemNodes","GetLastCreatedNodes",
- "GetLastCreatedElems",
+ "GetLastCreatedElems", "FaceGroupsSeparatedByEdges",
"MirrorMakeMesh","MirrorObjectMakeMesh","TranslateMakeMesh","TranslateObjectMakeMesh",
"Scale","ScaleMakeMesh","RotateMakeMesh","RotateObjectMakeMesh","MakeBoundaryMesh",
"MakeBoundaryElements", "SplitVolumesIntoTetra","SplitHexahedraIntoPrisms",
{
if ( GetMethod().IsEmpty() )
return false;
+ if ( myString.StartsWith("#") )
+ return false;
const char* s = myString.ToCString() + GetBegPos( METHOD_IND ) + myMeth.Length() - 1;
return ( s[0] == '(' || s[1] == '(' );
}
const int minPrefixSize = 4;
// count "smaller" strings with the same prefix
- std::list< _AString >::iterator itLess = itStr; --itLess;
int nbLess = 0;
- for ( ; itLess != _strings.end(); --itLess )
+ std::list< _AString >::iterator itLess = itStr;
+ while ( itLess != _strings.begin() )
+ {
+ --itLess;
if ( strncmp( str, itLess->ToCString(), minPrefixSize ) == 0 )
++nbLess;
else
+ {
+ ++itLess;
break;
- ++itLess;
+ }
+ }
+ // itLess points to the 1st string with same prefix
+
// count "greater" strings with the same prefix
- std::list< _AString >::iterator itMore = itStr;
int nbMore = 0;
+ std::list< _AString >::iterator itMore = itStr;
for ( ; itMore != _strings.end(); ++itMore )
if ( strncmp( str, itMore->ToCString(), minPrefixSize ) == 0 )
++nbMore;
else
break;
- --itMore;
+ // itMore points to the 1st string with greater prefix
+
if ( nbLess + nbMore > 1 ) // ------- ADD a NEW CHILD FAMILY -------------
{
- // look for a maximal prefix length
- // int lessPrefSize = 3, morePrefSize = 3;
- // if ( nbLess > 0 )
- // while( itLess->ToCString()[ lessPrefSize ] == str[ lessPrefSize ] )
- // ++lessPrefSize;
- // if ( nbMore > 0 )
- // while ( itMore->ToCString()[ morePrefSize ] == str[ morePrefSize ] )
- // ++morePrefSize;
- // int prefixSize = 3;
- // if ( nbLess == 0 )
- // prefixSize = morePrefSize;
- // else if ( nbMore == 0 )
- // prefixSize = lessPrefSize;
- // else
- // prefixSize = Min( lessPrefSize, morePrefSize );
int prefixSize = minPrefixSize;
_AString newPrefix ( str, prefixSize );
for ( ; nbMore > 0; --nbMore, ++itStr )
newSubFam._strings.push_back( itStr->ToCString() + prefixSize );
- _strings.erase( itLess, ++itMore );
+ _strings.erase( itLess, itMore );
}
else // too few string to make a family for them
{