-// Copyright (C) 2007-2019 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2020 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
if ( myShapeReader )
delete myShapeReader;
}
+
//=============================================================================
/*!
* SMESH_Gen_i::getHypothesisCreator
* Get hypothesis creator
*/
//=============================================================================
+
GenericHypothesisCreator_i* SMESH_Gen_i::getHypothesisCreator(const char* theHypName,
const char* theLibName,
std::string& thePlatformLibName)
* Create hypothesis of given type
*/
//=============================================================================
+
SMESH::SMESH_Hypothesis_ptr SMESH_Gen_i::createHypothesis(const char* theHypName,
const char* theLibName)
{
* Create empty mesh on shape
*/
//=============================================================================
+
SMESH::SMESH_Mesh_ptr SMESH_Gen_i::createMesh()
throw ( SALOME::SALOME_Exception )
{
* Get shape reader
*/
//=============================================================================
+
GEOM_Client* SMESH_Gen_i::GetShapeReader()
{
// create shape reader if necessary
* Set GEOM::GEOM_Gen reference
*/
//=============================================================================
-//GEOM::GEOM_Gen_ptr SMESH_Gen_i::SetGeomEngine( const char* containerLoc )
+
void SMESH_Gen_i::SetGeomEngine( GEOM::GEOM_Gen_ptr geomcompo )
{
- //Engines::Component_ptr temp=GetLCC()->FindOrLoad_Component(containerLoc,"GEOM");
- //myGeomGen=GEOM::GEOM_Gen::_narrow(temp);
- myGeomGen=GEOM::GEOM_Gen::_duplicate(geomcompo);
- //return myGeomGen;
+ myGeomGen = GEOM::GEOM_Gen::_duplicate( geomcompo );
}
//=============================================================================
* Set enable publishing in the study
*/
//=============================================================================
+
void SMESH_Gen_i::SetEnablePublish( CORBA::Boolean theIsEnablePublish )
{
myIsEnablePublish = theIsEnablePublish;
* Get study context
*/
//=============================================================================
+
StudyContext* SMESH_Gen_i::GetStudyContext()
{
return myStudyContext;
//=============================================================================
/*!
- * Sets number of segments per diagonal of boundary box of geometry by which
+ * Set number of segments per diagonal of boundary box of geometry by which
* default segment length of appropriate 1D hypotheses is defined
*/
//=============================================================================
else
THROW_SALOME_CORBA_EXCEPTION( "non-positive number of segments", SALOME::BAD_PARAM );
}
+
//=============================================================================
- /*!
- * \brief Sets default number of segments per edge
- */
+/*!
+ * \brief Set default number of segments per edge
+ */
//=============================================================================
+
void SMESH_Gen_i::SetDefaultNbSegments(CORBA::Long theNbSegments)
throw ( SALOME::SALOME_Exception )
{
//=============================================================================
/*!
- Set an option value
-*/
+ * Set an option value
+ */
//=============================================================================
void SMESH_Gen_i::SetOption(const char* name, const char* value)
//=============================================================================
/*!
- Return an option value
-*/
+ * Return an option value
+ */
//=============================================================================
char* SMESH_Gen_i::GetOption(const char* name)
{
//================================================================================
/*!
- * \brief Throws an exception in case if the file can't be read
+ * \brief Throw an exception in case if the file can't be read
*/
//================================================================================
return aResult._retn();
}
-SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromMED( const char* theFileName,
+//================================================================================
+/*!
+ * \brief Create meshes by reading a MED file
+ */
+//================================================================================
+
+SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromMED( const char* theFileName,
SMESH::DriverMED_ReadStatus& theStatus)
throw ( SALOME::SALOME_Exception )
{
Unexpect aCatch(SALOME_SalomeException);
checkFileReadable( theFileName );
- SMESH::mesh_array* result = CreateMeshesFromMEDorSAUV(theFileName, theStatus, "CreateMeshesFromMED", theFileName);
+ SMESH::mesh_array* result = CreateMeshesFromMEDorSAUV(theFileName, theStatus,
+ "CreateMeshesFromMED", theFileName);
return result;
}
*/
//=============================================================================
-SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromSAUV( const char* theFileName,
+SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromSAUV( const char* theFileName,
SMESH::DriverMED_ReadStatus& theStatus)
throw ( SALOME::SALOME_Exception )
{
cmd += "from medutilities import convert ; convert(r'" + sauvfilename + "', 'GIBI', 'MED', 1, r'" + medfilename + "')";
cmd += "\"";
system(cmd.c_str());
- SMESH::mesh_array* result = CreateMeshesFromMEDorSAUV(medfilename.c_str(), theStatus, "CreateMeshesFromSAUV", sauvfilename.c_str());
+ SMESH::mesh_array* result = CreateMeshesFromMEDorSAUV(medfilename.c_str(),
+ theStatus,
+ "CreateMeshesFromSAUV",
+ sauvfilename.c_str());
#ifdef WIN32
cmd = "%PYTHONBIN% ";
#else
*/
//================================================================================
-SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromCGNS( const char* theFileName,
+SMESH::mesh_array* SMESH_Gen_i::CreateMeshesFromCGNS( const char* theFileName,
SMESH::DriverMED_ReadStatus& theStatus)
throw ( SALOME::SALOME_Exception )
{
/*!
* SMESH_Gen_i::IsReadyToCompute
*
- * Returns true if mesh contains enough data to be computed
+ * Return true if mesh contains enough data to be computed
*/
//=============================================================================
if ( CORBA::is_nil( theShapeObject ) )
THROW_SALOME_CORBA_EXCEPTION( "bad shape object reference",
SALOME::BAD_PARAM );
-
if ( CORBA::is_nil( theMesh ) )
THROW_SALOME_CORBA_EXCEPTION( "bad Mesh reference",
SALOME::BAD_PARAM );
-
try {
// get mesh servant
SMESH_Mesh_i* meshServant = dynamic_cast<SMESH_Mesh_i*>( GetServant( theMesh ).in() );
SALOMEDS::SObject_ptr SMESH_Gen_i::GetAlgoSO(const ::SMESH_Algo* algo)
{
if ( algo ) {
- SALOMEDS::Study_var aStudy = getStudyServant();
+ SALOMEDS::Study_var aStudy = getStudyServant();
if ( !aStudy->_is_nil() ) {
// find algo in the study
CORBA::String_var compDataType = ComponentDataType();
//================================================================================
/*!
* \brief Returns errors of hypotheses definition
- * \param theMesh - the mesh
- * \param theSubObject - the main or sub- shape
- * \retval SMESH::algo_error_array* - sequence of errors
+ * \param theMesh - the mesh
+ * \param theSubObject - the main or sub- shape
+ * \retval SMESH::algo_error_array* - sequence of errors
*/
//================================================================================
if(theMesh->HasShapeToMesh())
myLocShape = GeomObjectToShape( theShapeObject );
else
- return result._retn();;
+ return result._retn();
// call implementation compute
::SMESH_Mesh& myLocMesh = meshServant->GetImpl();
if(MYDEBUG) MESSAGE( "SMESH_Gen_i::Evaluate" );
if ( CORBA::is_nil( theShapeObject ) && theMesh->HasShapeToMesh())
- THROW_SALOME_CORBA_EXCEPTION( "bad shape object reference",
- SALOME::BAD_PARAM );
+ THROW_SALOME_CORBA_EXCEPTION( "bad shape object reference", SALOME::BAD_PARAM );
if ( CORBA::is_nil( theMesh ) )
- THROW_SALOME_CORBA_EXCEPTION( "bad Mesh reference",
- SALOME::BAD_PARAM );
+ THROW_SALOME_CORBA_EXCEPTION( "bad Mesh reference", SALOME::BAD_PARAM );
SMESH::long_array_var nbels = new SMESH::long_array;
nbels->length(SMESH::Entity_Last);
* Get MED version of the file by its name
*/
//================================================================================
+
char* SMESH_Gen_i::GetMEDVersion(const char* theFileName)
{
std::string version = MED::GetMEDVersion( theFileName );
* Check compatibility of file with MED format being used, read only.
*/
//================================================================================
+
CORBA::Boolean SMESH_Gen_i::CheckCompatibility(const char* theFileName)
{
return MED::CheckCompatibility( theFileName );
* Check compatibility of file with MED format being used, for append on write.
*/
//================================================================================
+
CORBA::Boolean SMESH_Gen_i::CheckWriteCompatibility(const char* theFileName)
{
return MED::CheckCompatibility( theFileName, true );
*/
//================================================================================
SMESH::string_array* SMESH_Gen_i::GetMeshNames(const char* theFileName)
+
{
- //MESSAGE("GetMeshNames " << theFileName);
SMESH::string_array_var aResult = new SMESH::string_array();
MED::PWrapper aMed = MED::CrWrapperR( theFileName );
MED::TErr anErr;
MED::TInt aNbMeshes = aMed->GetNbMeshes( &anErr );
- //MESSAGE("---" << aNbMeshes);
if( anErr >= 0 ) {
aResult->length( aNbMeshes );
for( MED::TInt i = 0; i < aNbMeshes; i++ ) {
* Save SMESH module's data
*/
//=============================================================================
+
SALOMEDS::TMPFile* SMESH_Gen_i::Save( SALOMEDS::SComponent_ptr theComponent,
const char* theURL,
bool isMultiFile )
#else
// PAL17753 (Regression: missing hypothesis in restored study)
// "lib" also should be removed from the beginning
- //if( libname_len > 3 )
- //libname.resize( libname_len - 3 );
if( libname_len > 6 )
libname = libname.substr( 3, libname_len - 3 - 3 );
#endif
#else
// PAL17753 (Regression: missing hypothesis in restored study)
// "lib" also should be removed from the beginning
- //if( libname_len > 3 )
- //libname.resize( libname_len - 3 );
if( libname_len > 6 )
libname = libname.substr( 3, libname_len - 3 - 3 );
#endif
aGroup->CloseOnDisk();
}
}
- // All sub-meshes will be stored in MED file
- // .. will NOT (PAL 12992)
- //if ( shapeRefFound )
- //myWriter.AddAllSubMeshes();
// store submesh order if any
const TListOfListOfInt& theOrderIds = myLocMesh.GetMeshOrder();
TPythonDump pd; // prevent dump during loading
- // DriverMED_R_SMESHDS_Mesh myReader;
- // myReader.SetFile( meshfile.ToCString() );
-
// For PAL13473 ("Repetitive mesh") implementation.
// New dependencies between SMESH objects are established:
// now hypotheses can refer to meshes, shapes and other hypotheses.
{
aTopGroup = meshi_group->second;
SMESH_Mesh_i* myNewMeshImpl = meshi_group->first;
- //::SMESH_Mesh& myLocMesh = myNewMeshImpl->GetImpl();
- //SMESHDS_Mesh* mySMESHDSMesh = myLocMesh.GetMeshDS();
GEOM::GEOM_Object_var aShapeObject = myNewMeshImpl->GetShapeToMesh();
bool hasData = false;
aDataset->ReadFromDisk( refFromFile );
aDataset->CloseOnDisk();
// san - it is impossible to recover applied algorithms using their entries within Load() method
- //SALOMEDS::SObject_wrap hypSO = aStudy->FindObjectID( refFromFile );
- //CORBA::Object_var hypObject = SObjectToObject( hypSO );
int id = atoi( refFromFile );
delete [] refFromFile;
string anIOR = myStudyContext->getIORbyOldId( id );
aDataset->ReadFromDisk( refFromFile );
aDataset->CloseOnDisk();
// san - it is impossible to recover applied hypotheses using their entries within Load() method
- //SALOMEDS::SObject_wrap hypSO = myStudy->FindObjectID( refFromFile );
- //CORBA::Object_var hypObject = SObjectToObject( hypSO );
int id = atoi( refFromFile );
delete [] refFromFile;
string anIOR = myStudyContext->getIORbyOldId( id );
* Set a new object name
*/
//=============================================================================
+
void SMESH_Gen_i::SetName(const char* theIOR,
const char* theName)
{
// purpose : Moves objects to the specified position.
// Is used in the drag-n-drop functionality.
//=================================================================================
+
void SMESH_Gen_i::Move( const SMESH::sobject_list& what,
SALOMEDS::SObject_ptr where,
CORBA::Long row )
return true;
}
-//=================================================================================
-// function : GetInsideSphere
-// purpose : Collect indices of elements, which are located inside the sphere
-//=================================================================================
+//================================================================================
+/*!
+ * \brief Collect indices of elements, which are located inside the sphere
+ */
+//================================================================================
+
SMESH::long_array* SMESH_Gen_i::GetInsideSphere( SMESH::SMESH_IDSource_ptr meshPart,
SMESH::ElementType theElemType,
CORBA::Double theX,
return aResult._retn();
}
+//================================================================================
+/*!
+ * \brief Collect indices of elements, which are located inside the box
+ */
+//================================================================================
+
SMESH::long_array* SMESH_Gen_i::GetInsideBox( SMESH::SMESH_IDSource_ptr meshPart,
SMESH::ElementType theElemType,
CORBA::Double theX1,
CORBA::Double theZ1,
CORBA::Double theX2,
CORBA::Double theY2,
- CORBA::Double theZ2) {
+ CORBA::Double theZ2)
+{
SMESH::long_array_var aResult = new SMESH::long_array();
if( meshPart->_is_nil() )
return aResult._retn();
- TopoDS_Shape aShape = BRepPrimAPI_MakeBox( gp_Pnt( theX1, theY1, theZ1 ), gp_Pnt( theX2, theY2, theZ2 ) ).Shape();
+ TopoDS_Shape aShape = BRepPrimAPI_MakeBox( gp_Pnt( theX1, theY1, theZ1 ),
+ gp_Pnt( theX2, theY2, theZ2 ) ).Shape();
std::vector<long> lst =_GetInside(meshPart, theElemType, aShape);
return aResult._retn();
}
+//================================================================================
+/*!
+ * \brief Collect indices of elements, which are located inside the cylinder
+ */
+//================================================================================
+
SMESH::long_array* SMESH_Gen_i::GetInsideCylinder( SMESH::SMESH_IDSource_ptr meshPart,
SMESH::ElementType theElemType,
CORBA::Double theX,
CORBA::Double theDY,
CORBA::Double theDZ,
CORBA::Double theH,
- CORBA::Double theR ){
+ CORBA::Double theR )
+{
SMESH::long_array_var aResult = new SMESH::long_array();
if( meshPart->_is_nil() )
return aResult._retn();
return aResult._retn();
}
+//================================================================================
+/*!
+ * \brief Collect indices of elements, which are located inside the geom object
+ */
+//================================================================================
+
SMESH::long_array* SMESH_Gen_i::GetInside( SMESH::SMESH_IDSource_ptr meshPart,
SMESH::ElementType theElemType,
GEOM::GEOM_Object_ptr theGeom,
- CORBA::Double theTolerance ) {
+ CORBA::Double theTolerance )
+{
SMESH::long_array_var aResult = new SMESH::long_array();
if( meshPart->_is_nil() || theGeom->_is_nil() )
return aResult._retn();
return aResult._retn();
}
-
+//================================================================================
+/*!
+ * \brief Collect indices of elements, which are located inside the TopoDS_Shape
+ */
+//================================================================================
std::vector<long> SMESH_Gen_i::_GetInside( SMESH::SMESH_IDSource_ptr meshPart,
- SMESH::ElementType theElemType,
- TopoDS_Shape& aShape,
- double* theTolerance) {
+ SMESH::ElementType theElemType,
+ const TopoDS_Shape& theShape,
+ double* theTolerance) {
std::vector<long> res;
SMESH::SMESH_Mesh_var mesh = meshPart->GetMesh();
SMESH::Controls::ElementsOnShape* anElementsOnShape = new SMESH::Controls::ElementsOnShape();
anElementsOnShape->SetAllNodes( true );
anElementsOnShape->SetMesh( meshDS );
- anElementsOnShape->SetShape( aShape, aType );
+ anElementsOnShape->SetShape( theShape, aType );
if(theTolerance)
anElementsOnShape->SetTolerance(*theTolerance);
return res;
}
-
//=============================================================================
/*!
* SMESHEngine_factory