STRING(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UC)
SET(${PROJECT_NAME_UC}_MAJOR_VERSION 8)
-SET(${PROJECT_NAME_UC}_MINOR_VERSION 4)
+SET(${PROJECT_NAME_UC}_MINOR_VERSION 5)
SET(${PROJECT_NAME_UC}_PATCH_VERSION 0)
SET(${PROJECT_NAME_UC}_VERSION
${${PROJECT_NAME_UC}_MAJOR_VERSION}.${${PROJECT_NAME_UC}_MINOR_VERSION}.${${PROJECT_NAME_UC}_PATCH_VERSION})
ENDIF(SALOME_BUILD_GUI)
# OCCT
-FIND_PACKAGE(SalomeCAS REQUIRED)
+FIND_PACKAGE(SalomeOpenCASCADE REQUIRED)
# VTK
FIND_PACKAGE(SalomeVTK REQUIRED)
<parameter name="plugins" value="NETGENPlugin,GHS3DPlugin"/>
</section>
<section name="smesh_help">
- <parameter name="Plug-ins/NETGEN plugin User's Guide" value="${NETGENPLUGIN_ROOT_DIR}/share/doc/salome/gui/NETGENPLUGIN/index.html"/>
+ <parameter name="User's Guide/Mesh module/Plug-ins/NETGEN plugin" value="${NETGENPLUGIN_ROOT_DIR}/share/doc/salome/gui/NETGENPLUGIN/index.html"/>
</section>
</document>
# --- options ---
# additional include directories
INCLUDE_DIRECTORIES(
- ${CAS_INCLUDE_DIRS}
+ ${OpenCASCADE_INCLUDE_DIR}
${NETGEN_INCLUDE_DIRS}
${QT_INCLUDES}
${PYTHON_INCLUDES}
ADD_DEFINITIONS(
${QT_DEFINITIONS}
${OMNIORB_DEFINITIONS}
- ${CAS_DEFINITIONS}
+ ${OpenCASCADE_DEFINITIONS}
${BOOST_DEFINITIONS}
)
${GUI_LightApp}
${SMESH_SMESH}
${SMESH_PluginUtils}
- ${CAS_KERNEL}
+ ${OpenCASCADE_FoundationClasses_LIBRARIES}
SalomeIDLNETGENPLUGIN
NETGENEngine
)
readParamsFromWidgets( data );
storeParamsToHypo( data );
- // QString valStr = tr("NETGEN_MAX_SIZE") + " = " + QString::number( data.myMaxSize ) + "; ";
- // valStr += tr("NETGEN_MIN_SIZE") + " = " + QString::number( data.myMinSize ) + "; ";
- // if ( data.mySecondOrder )
- // valStr += tr("NETGEN_SECOND_ORDER") + "; ";
- // if ( data.myOptimize )
- // valStr += tr("NETGEN_OPTIMIZE") + "; ";
- // valStr += myFineness->currentText() + "(" + QString::number( data.myGrowthRate ) + ", " +
- // QString::number( data.myNbSegPerEdge ) + ", " +
- // QString::number( data.myNbSegPerRadius ) + ")";
-
- // if ( myIs2D && data.myAllowQuadrangles )
- // valStr += "; " + tr("NETGEN_ALLOW_QUADRANGLES");
-
- // if ( data.mySurfaceCurvature )
- // valStr += "; " + tr("NETGEN_SURFACE_CURVATURE");
-
- // if ( data.myFuseEdges )
- // valStr += "; " + tr("NETGEN_FUSE_EDGES");
-
return QString();
}
for ( size_t i = 0; i < myEntries->length(); i++ )
{
QString entry = myEntries[i].in();
- double val = h->GetLocalSizeOnEntry(entry.toStdString().c_str());
+ if (myLocalSizeMap.contains(entry) &&
+ myLocalSizeMap[entry] == "__TO_DELETE__")
+ continue;
+ double val = h->GetLocalSizeOnEntry( myEntries[i] );
std::ostringstream tmp;
tmp << val;
- QString valstring = QString::fromStdString(tmp.str());
- if (myLocalSizeMap.contains(entry))
- {
- if (myLocalSizeMap[entry] == "__TO_DELETE__")
- {
- continue;
- }
- }
- that->myLocalSizeMap[entry] = valstring;
+ that->myLocalSizeMap[entry] = tmp.str().c_str();
}
return true;
rh->SetRidgeAngle ( h_data.myRidgeAngle );
}
}
- for ( QMapIterator<QString,QString> i(myLocalSizeMap); i.hasNext(); i.next() )
+ for ( QMapIterator<QString,QString> i(myLocalSizeMap); i.hasNext(); )
{
- const QString entry = i.key();
- const QString localSize = i.value();
+ i.next();
+ const QString& entry = i.key();
+ const QString& localSize = i.value();
if (localSize == "__TO_DELETE__")
{
h->UnsetLocalSizeOnEntry(entry.toLatin1().constData());
for ( ; Object_It.More() ; Object_It.Next())
{
Handle(SALOME_InteractiveObject) anObject = Object_It.Value();
- std::string entry, shapeName;
- entry = geomSelectionTools->getEntryOfObject(anObject);
- shapeName = anObject->getName();
- TopAbs_ShapeEnum shapeType;
- shapeType = geomSelectionTools->entryToShapeType(entry);
+ std::string entry = geomSelectionTools->getEntryOfObject(anObject);
+ std::string shapeName = anObject->getName();
+ TopAbs_ShapeEnum shapeType = geomSelectionTools->entryToShapeType(entry);
if (shapeType == TopAbs_SHAPE)
{
// E.A. if shapeType == TopAbs_SHAPE, it is NOT a TopoDS_Shape !!!
}
// --
myLocalSizeTable->setFocus();
- QString shapeEntry;
- shapeEntry = QString::fromStdString(entry);
- if (myLocalSizeMap.contains(shapeEntry))
- {
- if (myLocalSizeMap[shapeEntry] != "__TO_DELETE__")
- {
- continue;
- }
- }
+ QString shapeEntry = QString::fromStdString(entry);
+ if (myLocalSizeMap.contains(shapeEntry) &&
+ myLocalSizeMap[shapeEntry] != "__TO_DELETE__")
+ continue;
+
double phySize = h->GetMaxSize();
std::ostringstream oss;
oss << phySize;
void NETGENPluginGUI_HypothesisCreator::onSetLocalSize(int row,int col)
{
if (col == LSZ_LOCALSIZE_COLUMN) {
- QString entry = myLocalSizeTable->item(row, LSZ_ENTRY_COLUMN)->text();
+ QString entry = myLocalSizeTable->item(row, LSZ_ENTRY_COLUMN)->text();
QString localSize = myLocalSizeTable->item(row, LSZ_LOCALSIZE_COLUMN)->text().trimmed();
myLocalSizeMap[entry] = localSize;
myLocalSizeTable->resizeColumnToContents(LSZ_LOCALSIZE_COLUMN);
${KERNEL_INCLUDE_DIRS}
${GUI_INCLUDE_DIRS}
${GEOM_INCLUDE_DIRS}
- ${CAS_INCLUDE_DIRS}
+ ${OpenCASCADE_INCLUDE_DIR}
${VTK_INCLUDE_DIRS}
${NETGEN_INCLUDE_DIRS}
${SMESH_INCLUDE_DIRS}
# additional preprocessor / compiler flags
ADD_DEFINITIONS(
${OMNIORB_DEFINITIONS}
- ${CAS_DEFINITIONS}
+ ${OpenCASCADE_DEFINITIONS}
${BOOST_DEFINITIONS}
${NETGEN_DEFINITIONS}
)
# libraries to link to
SET(_link_LIBRARIES
${NETGEN_LIBRARIES}
- ${CAS_TKernel}
- ${CAS_TKBRep}
- ${CAS_TKShHealing}
- ${CAS_TKSTEP}
- ${CAS_TKXSBase}
- ${CAS_TKIGES}
- ${CAS_TKMesh}
- ${CAS_TKSTL}
- ${CAS_TKG3d}
- ${CAS_TKTopAlgo}
- ${CAS_TKG2d}
- ${CAS_TKBool}
- ${CAS_TKGeomAlgo}
- ${CAS_TKOffset}
- ${CAS_TKGeomBase}
- ${CAS_TKBO}
- ${CAS_TKMath}
- ${CAS_TKFillet}
- ${CAS_TKMeshVS}
- ${CAS_TKPrim}
- ${CAS_TKSTEPBase}
- ${CAS_TKSTEPAttr}
- ${CAS_TKSTEP209}
- ${CAS_TKXDESTEP}
- ${CAS_TKXDEIGES}
- ${CAS_TKXCAF}
- ${CAS_TKLCAF}
- ${CAS_FWOSPlugin}
+ ${OpenCASCADE_FoundationClasses_LIBRARIES}
+ ${OpenCASCADE_ModelingData_LIBRARIES}
+ ${OpenCASCADE_ModelingAlgorithms_LIBRARIES}
+ ${OpenCASCADE_DataExchange_LIBRARIES}
+ ${OpenCASCADE_Visualization_LIBRARIES}
+ ${OpenCASCADE_ApplicationFramework_LIBRARIES}
${GEOM_GEOMbasic}
${SMESH_SMESHimpl}
${SMESH_SMESHEngine}
PShapeIteratorPtr solidIt=helper.GetAncestors(geomFace,*sm->GetFather(),TopAbs_SOLID);
if ( const TopoDS_Shape * solid = solidIt->next() )
sm = _mesh->GetSubMesh( *solid );
- SMESH_ComputeErrorPtr& smError = sm->GetComputeError();
- smError.reset( new SMESH_ComputeError(COMPERR_BAD_INPUT_MESH,"Not triangle sub-mesh"));
- smError->myBadElements.push_back( f );
+ SMESH_BadInputElements* badElems =
+ new SMESH_BadInputElements( helper.GetMeshDS(), COMPERR_BAD_INPUT_MESH,
+ "Not triangle sub-mesh");
+ badElems->add( f );
+ sm->GetComputeError().reset( badElems );
return false;
}
}
// Build viscous layers
- if ( _isViscousLayers2D ||
- StdMeshers_ViscousLayers2D::HasProxyMesh( TopoDS::Face( occgeo.fmap(1) ), *_mesh ))
+ if (( _isViscousLayers2D ) ||
+ ( !occgeo.fmap.IsEmpty() &&
+ StdMeshers_ViscousLayers2D::HasProxyMesh( TopoDS::Face( occgeo.fmap(1) ), *_mesh )))
{
if ( !internals.hasInternalVertexInFace() ) {
FillSMesh( occgeo, *_ngMesh, initState, *_mesh, nodeVec, comment );
_mesh->GetMeshDS()->RemoveFreeNode( nodeVec[i], 0, /*fromGroups=*/false );
}
SMESH_ComputeErrorPtr readErr = ReadErrors(nodeVec);
- if ( readErr && !readErr->myBadElements.empty() )
+ if ( readErr && readErr->HasBadElems() )
{
error = readErr;
if ( !comment.empty() && !readErr->myComment.empty() ) comment += "\n";
{
smError->myName = COMPERR_WARNING;
}
- else if ( !smError->myBadElements.empty() ) // bad surface mesh
+ else if ( smError->HasBadElems() ) // bad surface mesh
{
- if ( !hasBadElemOnSolid( smError->myBadElements, sm ))
+ if ( !hasBadElemOnSolid
+ ( static_cast<SMESH_BadInputElements*>( smError.get() )->myBadElements, sm ))
smError.reset();
}
}
int nb1d = 0;
if ( !tooManyElems )
{
- TopTools_MapOfShape egdes;
+ TopTools_MapOfShape edges;
for (TopExp_Explorer exp1(F,TopAbs_EDGE); exp1.More(); exp1.Next())
- if ( egdes.Add( exp1.Current() ))
+ if ( edges.Add( exp1.Current() ))
nb1d += Edge2NbSeg.Find(exp1.Current());
}
int nbFaces = tooManyElems ? hugeNb : int( 4*anArea / (mparams.maxh*mparams.maxh*sqrt(3.)));
SMESH_ComputeErrorPtr
NETGENPlugin_Mesher::ReadErrors(const vector<const SMDS_MeshNode* >& nodeVec)
{
- SMESH_ComputeErrorPtr err = SMESH_ComputeError::New
- (COMPERR_BAD_INPUT_MESH, "Some edges multiple times in surface mesh");
+ if ( nodeVec.size() < 2 ) return SMESH_ComputeErrorPtr();
+ SMESH_BadInputElements* err =
+ new SMESH_BadInputElements( nodeVec.back()->GetMesh(), COMPERR_BAD_INPUT_MESH,
+ "Some edges multiple times in surface mesh");
SMESH_File file("test.out");
vector<int> two(2);
vector<int> three1(3), three2(3);
if ( nbBadElems ) nbBadElems++; // avoid warning: variable set but not used
#endif
- return err;
+ return SMESH_ComputeErrorPtr( err );
}
//================================================================================
int nbHyps = bool(_hypMaxElementArea) + bool(_hypLengthFromEdges) + bool(_hypParameters );
if ( nbHyps > 1 )
- aStatus = HYP_CONCURENT;
+ aStatus = HYP_CONCURRENT;
else if ( hasVL )
error( StdMeshers_ViscousLayers2D::CheckHypothesis( aMesh, aShape, aStatus ));
else
if ( err )
{
SMESH_ComputeErrorPtr ce = NETGENPlugin_Mesher::ReadErrors(nodeVec);
- if ( ce && !ce->myBadElements.empty() )
+ if ( ce && ce->HasBadElems() )
error( ce );
}
{
// set bad faces into a compute error
const char* text = "Non-manifold mesh. Only manifold mesh can be re-meshed";
- SMESH_ComputeErrorPtr error = SMESH_ComputeError::New( COMPERR_BAD_INPUT_MESH, text );
+ SMESH_BadInputElements* error =
+ new SMESH_BadInputElements( myMeshDS, COMPERR_BAD_INPUT_MESH, text );
SMESH::Controls::MultiConnection2D fun;
fun.SetMesh( myMeshDS );
SMDS_ElemIteratorPtr fIt = myMeshDS->elementsIterator( SMDSAbs_Face );
if ( fun.GetValue( f->GetID() ) > 2 )
error->myBadElements.push_back( f );
}
- theMesh.GetSubMesh( theMesh.GetShapeToMesh() )->GetComputeError() = error;
+ theMesh.GetSubMesh( theMesh.GetShapeToMesh() )->GetComputeError().reset( error );
throw SALOME_Exception( text );
}
if ( !freeBords._coincidentGroups.empty() )
{
const char* text = "Can't re-meshed a mesh with coincident free edges";
- SMESH_ComputeErrorPtr error = SMESH_ComputeError::New( COMPERR_BAD_INPUT_MESH, text );
+ SMESH_BadInputElements* error =
+ new SMESH_BadInputElements( myMeshDS, COMPERR_BAD_INPUT_MESH, text );
for ( size_t i = 0; i < freeBords._borders.size(); ++i )
error->myBadElements.insert( error->myBadElements.end(),
freeBords._borders[i].begin(),
freeBords._borders[i].end() );
- theMesh.GetSubMesh( theMesh.GetShapeToMesh() )->GetComputeError() = error;
+ theMesh.GetSubMesh( theMesh.GetShapeToMesh() )->GetComputeError().reset( error );
throw SALOME_Exception( text );
}
}