-// Copyright (C) 2007-2020 CEA/DEN, EDF R&D
+// Copyright (C) 2007-2022 CEA/DEN, EDF R&D
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
#include <TopoDS_Vertex.hxx>
#include <gp_Pnt.hxx>
+#include <Basics_DirUtils.hxx>
#include <Basics_Utils.hxx>
#include <GEOMImpl_Types.hxx>
#include <GEOM_wrap.hxx>
try {
OSD_File( fileName ).Remove();
}
- catch ( Standard_ProgramError ) {
+ catch ( Standard_ProgramError& ) {
MESSAGE("Can't remove file: " << fileName.ToCString() << " ; file does not exist or permission denied");
}
}
const SMESHDS_Mesh* theMeshDS)
{
int meshID = theHexaInput->GmfOpenMesh( theFile, GmfWrite, GMFVERSION, GMFDIMENSION);
-
+ theHexaInput->SetIsInputMesh( true ); // it's a mesh file
+
// nodes
- int iN = 0, nbNodes = theMeshDS->NbNodes();
+ int iN = 0;
+ smIdType nbNodes = theMeshDS->NbNodes();
theHexaInput->GmfSetKwd( meshID, GmfVertices, nbNodes );
std::map< const SMDS_MeshNode*, int, TIDCompare > node2IdMap;
SMDS_NodeIteratorPtr nodeIt = theMeshDS->nodesIterator();
SMDS_ElemIteratorPtr elemIt = theMeshDS->elementsIterator( SMDSAbs_Edge );
if ( elemIt->more() )
{
- int nbEdges = theMeshDS->GetMeshInfo().NbElements( SMDSAbs_Edge );
+ smIdType nbEdges = theMeshDS->GetMeshInfo().NbElements( SMDSAbs_Edge );
theHexaInput->GmfSetKwd(meshID, GmfEdges, nbEdges );
for ( int gmfID = 1; elemIt->more(); ++gmfID )
{
elemIt = theMeshDS->elementGeomIterator( SMDSGeom_TRIANGLE );
if ( elemIt->more() )
{
- int nbTria = theMeshDS->GetMeshInfo().NbElements( SMDSGeom_TRIANGLE );
+ smIdType nbTria = theMeshDS->GetMeshInfo().NbElements( SMDSGeom_TRIANGLE );
theHexaInput->GmfSetKwd(meshID, GmfTriangles, nbTria );
for ( int gmfID = 1; elemIt->more(); ++gmfID )
{
TCollection_AsciiString minl = " --min_level ", maxl = " --max_level ", angle = " --ridge_angle ";
TCollection_AsciiString mins = " --min_size ", maxs = " --max_size ";
TCollection_AsciiString in = " --in ", out = " --out ";
- TCollection_AsciiString sizeMap = " --read_sizemap ";
+ TCollection_AsciiString sizeMap = " --background_sizemap ";
+ TCollection_AsciiString sizeMapMesh = " --background_mesh ";
TCollection_AsciiString ignoreRidges = " --compute_ridges no ", invalideElements = " --allow_invalid_elements yes ";
TCollection_AsciiString subdom = " --components ";
#ifndef WIN32
if (_hexoticSharpAngleThreshold > 0)
run_Hexotic += angle + sharpAngle;
-
- if (_sizeMaps.begin() != _sizeMaps.end() && forExecutable )
- run_Hexotic += sizeMap + Hexotic_SizeMap_Prefix;
+
+ if ( !_sizeMaps.empty() && forExecutable )
+ run_Hexotic += ( sizeMap + Hexotic_SizeMap_Prefix + ".sol " +
+ sizeMapMesh + Hexotic_SizeMap_Prefix + ".mesh " );
if (_nbLayers > 0 &&
_firstLayerSize > 0 &&
{
GEOM::GEOM_Object_var aGeomObj;
TopoDS_Shape S = TopoDS_Shape();
- SALOMEDS::SObject_var aSObj = SMESH_Gen_i::getStudyServant()->FindObjectID( entry.c_str() );
+ SALOMEDS::SObject_var aSObj = SMESH_Gen_i::GetSMESHGen()->getStudyServant()->FindObjectID( entry.c_str() );
if (!aSObj->_is_nil()) {
CORBA::Object_var obj = aSObj->GetObject();
aGeomObj = GEOM::GEOM_Object::_narrow(obj);
mgInput->GmfOpenMesh( myVerticesFile.c_str(), GmfWrite, GMFVERSION, GMFDIMENSION );
int solFileID =
mgInput->GmfOpenMesh( mySolFile.c_str(), GmfWrite, GMFVERSION, GMFDIMENSION );
+
+ mgInput->SetIsInputMesh( false ); // they are not mesh files
int pointsNumber = points.size();
//=============================================================================
bool HexoticPlugin_Hexotic::Compute(SMESH_Mesh& aMesh,
- const TopoDS_Shape& aShape)
+ const TopoDS_Shape& /*aShape*/)
{
_computeCanceled = false;
bool Ok = true;
SetParameters(_hypothesis);
- TCollection_AsciiString aTmpDir = _hexoticWorkingDirectory.c_str();
+ TCollection_AsciiString aTmpDir = Kernel_Utils::GetTmpDirByPath(_hexoticWorkingDirectory).c_str();
TCollection_AsciiString aQuote("");
#ifdef WIN32
aQuote = "\"";
{
MESSAGE("Use output file from blsurf as input file from hexotic: " << Hexotic_In);
mgHexa.SetUseExecutable();
+ mgHexa.SetInputFile( _blsurfHypo->GetGMFFile() );
defaultInputFile = false;
}
}
const TopoDS_Shape& aShape,
MapShapeNbElems& aResMap)
{
- std::vector<int> aResVec(SMDSEntity_Last);
- for(int i=SMDSEntity_Node; i<SMDSEntity_Last; i++) aResVec[i] = 0;
+ std::vector<smIdType> aResVec(SMDSEntity_Last);
+ for(smIdType i=SMDSEntity_Node; i<SMDSEntity_Last; i++) aResVec[i] = 0;
SMESH_subMesh * sm = aMesh.GetSubMesh(aShape);
aResMap.insert(std::make_pair(sm,aResVec));