SWMMVis  6.0.0-alpha.4
Qt6/C++ GIS-based graphical user interface for the SWMMVis engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
meshgenerationdialog.h File Reference
#include "mesh/meshgenerator.h"
#include "mesh/meshquadquality.h"
#include "mesh/meshquadregion.h"
#include "mesh/meshresult.h"
#include "mesh/inpmeshwriter.h"
#include "mesh/dtmthinner.h"
#include "mesh/pslgminsize.h"
#include <QDialog>
#include <QFutureWatcher>
#include <QString>
#include <QStringList>
#include <QVector>
Include dependency graph for meshgenerationdialog.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  MeshGenerationDialog
 
struct  MeshGenerationDialog::PipelineInputs
 All inputs needed by the pipeline worker. Collected on the main thread by collectInputs() so the worker never touches Qt widgets or SWMMModelLayer. More...
 
struct  MeshGenerationDialog::PipelineInputs::CandidateNode
 
struct  MeshGenerationDialog::PipelineInputs::AuxPoint
 
struct  MeshGenerationDialog::PipelineInputs::AuxLine
 
struct  MeshGenerationDialog::PipelineInputs::QuadRegionLayerSpec
 
struct  MeshGenerationDialog::PipelineInputs::RegionHydraulics
 
struct  MeshGenerationDialog::PipelineResult
 Result produced by the pipeline worker and consumed on the main thread inside onMeshFinished(). More...
 

Detailed Description

Author
Caleb Buahin caleb.nosp@m..bua.nosp@m.hin@g.nosp@m.mail.nosp@m..com
Date
2026
License\n GPL-3.0-or-later

Slice AU.4 — Tools → Generate Mesh… dialog.

The dialog owns the QWidget side only; all heavy computation is done in a QtConcurrent worker so the UI stays responsive. The pipeline is split into two phases:

  1. collectInputs() — main thread, reads widgets + SWMMModelLayer.
  2. runMeshPipeline() — worker thread (QtConcurrent::run), no widget access. Cancellation is checked between every major stage via QPromise::isCanceled().

Hole support: every interior ring of a boundary polygon is turned into a set of constraint segments + a centroid seed point that tells Triangle to leave that region unmeshed (OGR interior rings → g.addHole()).