do not clear a command creating a removed group if the command does

other job like MakeBoundaryMesh() or DoubleNodeGroupNew()
This commit is contained in:
eap 2012-05-03 08:40:24 +00:00
parent 65f809f886
commit 497561723e
2 changed files with 11 additions and 2 deletions

View File

@ -3700,6 +3700,8 @@ _pyGroup::_pyGroup(const Handle(_pyCommand)& theCreationCmd, const _pyID & id)
if ( !id.IsEmpty() ) if ( !id.IsEmpty() )
setID( id ); setID( id );
myCanClearCreationCmd = true;
const _AString& method = theCreationCmd->GetMethod(); const _AString& method = theCreationCmd->GetMethod();
if ( method == "CreateGroup" ) // CreateGroup() --> CreateEmptyGroup() if ( method == "CreateGroup" ) // CreateGroup() --> CreateEmptyGroup()
{ {
@ -3742,6 +3744,12 @@ _pyGroup::_pyGroup(const Handle(_pyCommand)& theCreationCmd, const _pyID & id)
} }
myFilter = filter; myFilter = filter;
} }
else
{
// theCreationCmd does something else apart from creation of this group
// and thus it can't be cleared if this group is removed
myCanClearCreationCmd = false;
}
} }
//================================================================================ //================================================================================
@ -3829,9 +3837,9 @@ void _pyGroup::Process( const Handle(_pyCommand)& theCommand)
void _pyGroup::Flush() void _pyGroup::Flush()
{ {
if ( !theGen->IsToKeepAllCommands() && if ( !theGen->IsToKeepAllCommands() &&
myCreationCmd && myCreationCmd->MethodStartsFrom("DoubleNode") ) myCreationCmd && !myCanClearCreationCmd )
{ {
myCreationCmd.Nullify(); myCreationCmd.Nullify(); // this way myCreationCmd won't be cleared
} }
} }

View File

@ -579,6 +579,7 @@ DEFINE_STANDARD_HANDLE (_pyFilter, _pyObject);
class _pyGroup: public _pySubMesh class _pyGroup: public _pySubMesh
{ {
Handle(_pyFilter) myFilter; Handle(_pyFilter) myFilter;
bool myCanClearCreationCmd;
public: public:
_pyGroup(const Handle(_pyCommand)& theCreationCmd, const _pyID & id=_pyID()); _pyGroup(const Handle(_pyCommand)& theCreationCmd, const _pyID & id=_pyID());
virtual void Process( const Handle(_pyCommand)& theCommand); virtual void Process( const Handle(_pyCommand)& theCommand);