#endif
#include "SMESH_Gen_i.hxx"
+#include "SMESH_version.h"
#include "SMDS_EdgePosition.hxx"
#include "SMDS_FacePosition.hxx"
#include <map>
#include <fstream>
#include <cstdio>
+#include <stdlib.h>
using namespace std;
using SMESH::TPythonDump;
aStudyBuilder->CommitCommand();
if ( !aSO->_is_nil() ) {
// Update Python script
- TPythonDump() << aSO << " = smeshgen.CreateMeshesFromUNV(r'" << theFileName << "')";
+ TPythonDump() << aSO << " = " << this << ".CreateMeshesFromUNV(r'" << theFileName << "')";
}
}
return aResult._retn();
}
+//================================================================================
+/*!
+ * \brief Create a mesh and import data from a GMF file
+ */
+//================================================================================
+
+SMESH::SMESH_Mesh_ptr
+SMESH_Gen_i::CreateMeshesFromGMF( const char* theFileName,
+ SMESH::ComputeError_out theError)
+ throw ( SALOME::SALOME_Exception )
+{
+ Unexpect aCatch(SALOME_SalomeException);
+
+ SMESH::SMESH_Mesh_var aMesh = createMesh();
+#ifdef WIN32
+ char bname[ _MAX_FNAME ];
+ _splitpath( theFileName, NULL, NULL, bname, NULL );
+ string aFileName = bname;
+#else
+ string aFileName = basename( theFileName );
+#endif
+ // publish mesh in the study
+ if ( CanPublishInStudy( aMesh ) ) {
+ SALOMEDS::StudyBuilder_var aStudyBuilder = myCurrentStudy->NewBuilder();
+ aStudyBuilder->NewCommand(); // There is a transaction
+ SALOMEDS::SObject_var aSO = PublishInStudy
+ ( myCurrentStudy, SALOMEDS::SObject::_nil(), aMesh.in(), aFileName.c_str() );
+ aStudyBuilder->CommitCommand();
+ if ( !aSO->_is_nil() ) {
+ // Update Python script
+ TPythonDump() << "("<< aSO << ", error) = " << this << ".CreateMeshesFromGMF(r'" << theFileName << "')";
+ }
+ }
+ SMESH_Mesh_i* aServant = dynamic_cast<SMESH_Mesh_i*>( GetServant( aMesh ).in() );
+ ASSERT( aServant );
+ theError = aServant->ImportGMFFile( theFileName );
+ aServant->GetImpl().GetMeshDS()->Modified();
+ return aMesh._retn();
+}
+
+
//=============================================================================
/*!
* SMESH_Gen_i::IsReadyToCompute
while ( smIt->more() )
{
sm = smIt->next();
- if ( sm->GetSubShape().ShapeType() == TopAbs_VERTEX )
- break;
+ // if ( sm->GetSubShape().ShapeType() == TopAbs_VERTEX )
+ // break;
SMESH_ComputeErrorPtr error = sm->GetComputeError();
if ( error && !error->IsOK() && error->myAlgo )
{
SMESH_Mesh_i* anInitImpl = dynamic_cast<SMESH_Mesh_i*>( GetServant( anInitMesh ).in() );
if ( anInitImpl ) {
::SMESH_Mesh& aInitLocMesh = anInitImpl->GetImpl();
+ aInitLocMesh.Load();
SMESHDS_Mesh* anInitMeshDS = aInitLocMesh.GetMeshDS();
TIDsMap nodesMap;
}
}
}
- }//elems loop
+ } //elems loop
// copy orphan nodes
SMDS_NodeIteratorPtr itNodes = anInitMeshDS->nodesIterator();
}
// check that current group name and type don't have identical ones in union mesh
- for (int i = 0; i < aListOfGroups->length(); i++) {
- aGroup = aListOfGroups[i];
+ for (int iG = 0; iG < aListOfGroups->length(); iG++) {
+ aGroup = aListOfGroups[iG];
aListOfNewGroups.clear();
aGroupType = aGroup->GetType();
aGroupName = aGroup->GetName();
return myCurrentStudy->_is_nil() || myCurrentStudy->_non_existent() ? -1 : myCurrentStudy->StudyId();
}
+// Version information
+char* SMESH_Gen_i::getVersion()
+{
+#if SMESH_DEVELOPMENT
+ return CORBA::string_dup(SMESH_VERSION_STR"dev");
+#else
+ return CORBA::string_dup(SMESH_VERSION_STR);
+#endif
+}
+
//=============================================================================
/*!
* SMESHEngine_factory