Plugins
|
#include <vector>
#include "../mesh.h"
#include "topology_tools.h"
#include "lib_grid/algorithms/duplicate.h"
#include "lib_grid/algorithms/grid_util.h"
#include "lib_grid/algorithms/quadrilateral_util.h"
#include "lib_grid/algorithms/remove_duplicates_util.h"
#include "lib_grid/algorithms/extrusion/extrusion.h"
#include "lib_grid/algorithms/geom_obj_util/face_util.h"
#include "lib_grid/algorithms/grid_generation/horizontal_layers_mesher.h"
#include "lib_grid/algorithms/grid_generation/tetrahedralization.h"
#include "lib_grid/algorithms/grid_generation/triangle_fill_sweep_line.h"
#include "lib_grid/algorithms/remeshing/delaunay_triangulation.h"
#include "lib_grid/algorithms/remeshing/grid_adaption.h"
#include "lib_grid/algorithms/remeshing/edge_length_adjustment.h"
#include "lib_grid/algorithms/remeshing/edge_length_adjustment_extended.h"
#include "lib_grid/algorithms/remeshing/simplification.h"
#include "lib_grid/algorithms/remeshing/simplify_polychain.h"
#include "lib_grid/algorithms/space_partitioning/lg_ntree.h"
#include "lib_grid/refinement/projectors/raster_layers_projector.h"
Go to the source code of this file.
Namespaces | |
namespace | ug |
namespace | ug::promesh |
Macros | |
#define | TOOLTIP_ADAPT_SURFACE_TO_CYLINDER "Introduces edges in a grid around a selected vertex which roughly correspond to the intersection of a cylinder with the surface." |
#define | TOOLTIP_ADJUST_EDGE_LENGTH "Remeshes the active grid so that all edges approximatly have a certain length." |
#define | TOOLTIP_ASSIGN_VOLUME_CONSTRAINTS "Assigns volume constraints to selected tetrahedra." |
#define | TOOLTIP_CLEAR_VOLUME_CONSTRAINTS "Clears all assigned volume constraints." |
#define | TOOLTIP_CONVERT_TO_QUADRILATERALS "Converts selected triangles or triangles connected by selected edges to quadrilaterals." |
#define | TOOLTIP_CONVERT_TO_TETRAHEDRA "Converts selected volume elements to tetrahedra." |
#define | TOOLTIP_CONVERT_TO_TRIANGLES "Converts selected quadrilaterals to triangles." |
#define | TOOLTIP_CREATE_SHRINK_GEOMETRY "Creates new elements from existing ones, providing each with a unique set of corner vertices. Those corners are scaled towards the center using the given scale-parameter." |
#define | TOOLTIP_CSG_FACE_DIFFERENCE "Performs a difference operation on the geometry of the two specifed subsets. IMPORTANT: Both subsets have to be closed manifolds, i.e., homeomorphic to the sphere." |
#define | TOOLTIP_CSG_FACE_INTERSECTION "Performs an intersection operation on the geometry of the two specifed subsets. IMPORTANT: Both subsets have to be closed manifolds, i.e., homeomorphic to the sphere." |
#define | TOOLTIP_CSG_FACE_UNION "Performs a union operation on the geometry of the two specifed subsets. IMPORTANT: Both subsets have to be closed manifolds, i.e., homeomorphic to the sphere." |
#define | TOOLTIP_DUPLICATE "Duplicates the selected geometry." |
#define | TOOLTIP_EXTRUDE_ALONG_NORMAL "Extrudes selected geometry (vertices, edges, faces) and moves new vertices along their normal." |
#define | TOOLTIP_EXTRUDE_AND_MOVE "Extrudes selected geometry (vertices, edges, faces) and moves new vertices by the specified offset." |
#define | TOOLTIP_EXTRUDE_AND_SCALE "Extrudes selected geometry (vertices, edges, faces) and scales new vertices by the specified scale." |
#define | TOOLTIP_EXTRUDE_CYLINDERS "Extrudes cylinders around selected points of a 2d manifold." |
#define | TOOLTIP_EXTRUDE_FACES_WITH_TETS "Experimental function to create 'plaque'-like geometry based on extruding faces with tetrahedra." |
#define | TOOLTIP_EXTRUDE_LAYERS "Creates volumes for a given stack of raster-layers and an initial triangulation of the surface." |
#define | TOOLTIP_EXTRUDE_LAYERS_AND_ADD_PROJECTOR "Creates volumes for a given stack of raster-layers and an initial triangulation of the surface. It also generates a raster-based refinement-projector for the whole geometry." |
#define | TOOLTIP_EXTRUDE_TO_TICKNESS "Extrudes selected geometry (vertices, edges, faces) and moves new vertices so that created elements have the specified thickness." |
#define | TOOLTIP_MESH_LAYER_BOUNDARIES "Creates boundary grids for the given raster-layers" |
#define | TOOLTIP_MESH_LAYERS "Creates triangle/quadrilateral grids for the given raster-layers" |
#define | TOOLTIP_PROJECT_TO_LAYER "Projects a (surface-)mesh to the specified raster-layer. Only height values in valid regions are adjusted." |
#define | TOOLTIP_PROJECT_TO_TOP_LAYER "Projects a (surface-)mesh to the top-layer of the specified raster-stack. Only height values in valid regions are adjusted." |
#define | TOOLTIP_REPLACE_LOW_VALENCE_VERTICES "Replaces selected valence-3 and valence-4 vertices by triangles, if the curvature of associated triangles is low" |
#define | TOOLTIP_REPLACE_VALENCE_3_VERTICES "Replaces selected valence-3 vertices by triangles, if the curvature of associated triangles is low" |
#define | TOOLTIP_RETETRAHEDRALIZE "Given a tetrahedralization and volume constraints, this method adapts the tetrahedra using TetGen." |
#define | TOOLTIP_RETRIANGULATE "Inserts vertices as required and performs Constrained Delaunay triangulation." |
#define | TOOLTIP_SIMPLIFY_POLYLINES "Removes vertices from the selected polyline which have a smaller curvature than the specified angle." |
#define | TOOLTIP_SIMPLIFY_SMOOTHED_POLYLINES "Removes vertices from the selected polyline which have a smaller smoothed curvature than the specified angle." |
#define | TOOLTIP_SNAP_TO_HORIZONTAL_RASTER "Snaps all vertices of the given (surface) grid horizontally to the closest raster-node." |
#define | TOOLTIP_TETRAHEDRALIZE "Fills a closed surface with tetrahedra using TetGen." |
#define | TOOLTIP_TRIANGLE_FILL "Performs triangle fill using the sweep-line algorithm followed by an optional Constrained Delaunay retriangulation." |
Enumerations | |
enum | ug::promesh::CSGOperation { ug::promesh::CSG_UNION , ug::promesh::CSG_INTERSECTION , ug::promesh::CSG_DIFFERENCE } |
Functions | |
void | ug::promesh::AdaptSurfaceToCylinder (Mesh *obj, number radius, number threshold) |
void | ug::promesh::AdjustEdgeLength (Mesh *obj, number minEdgeLen, number maxEdgeLen, int numIterations, bool adaptive, bool automarkBoundaries) |
void | ug::promesh::AdjustEdgeLengthExtended (Mesh *obj, number minEdgeLen, number maxEdgeLen, number approximation, number triQuality, int numIterations, bool automarkBoundaries) |
void | ug::promesh::AssignVolumeConstraints (Mesh *obj, number volConstraint) |
void | ug::promesh::ClearVolumeConstraints (Mesh *obj) |
void | ug::promesh::ConvertToQuadrilaterals (Mesh *obj) |
void | ug::promesh::ConvertToTetrahedra (Mesh *obj) |
void | ug::promesh::ConvertToTriangles (Mesh *obj) |
template<class TElemIter > | |
void | ug::promesh::CreateShrinkElements (Mesh *obj, number scale, TElemIter elemsBegin, TElemIter elemsEnd) |
void | ug::promesh::CreateShrinkGeometry (Mesh *obj, number scale) |
void | ug::promesh::CSGFaceDifference (Mesh *obj, int subsetIndex0, int subsetIndex1, number snapThreshold) |
void | ug::promesh::CSGFaceIntersection (Mesh *obj, int subsetIndex0, int subsetIndex1, number snapThreshold) |
void | ug::promesh::CSGFaceOperation (Mesh *obj, CSGOperation op, int subsetIndex0, int subsetIndex1, number snapThreshold) |
void | ug::promesh::CSGFaceUnion (Mesh *obj, int subsetIndex0, int subsetIndex1, number snapThreshold) |
void | ug::promesh::Duplicate (Mesh *obj, const vector3 &offset, bool deselectOld, bool selectNew) |
void | ug::promesh::ExtrudeAlongNormal (Mesh *obj, number totalLength, int numSteps, bool createFaces, bool createVolumes) |
void | ug::promesh::ExtrudeAndMove (Mesh *obj, const vector3 &totalDir, int numSteps, bool createFaces, bool createVolumes) |
void | ug::promesh::ExtrudeAndScale (Mesh *obj, number totalScale, bool scaleAroundPivot, int numSteps, bool createFaces, bool createVolumes) |
void | ug::promesh::ExtrudeCylinders (Mesh *obj, number height, number radius, number snapThreshold) |
void | ug::promesh::ExtrudeFacesWithTets (Mesh *obj, int fromSi, int toSi, const number factor) |
void | ug::promesh::ExtrudeLayers (Mesh *obj, RasterLayers &layers, bool allowForTetsAndPyras) |
void | ug::promesh::ExtrudeLayersAndAddProjector (Mesh *obj, SPRasterLayers layers, bool allowForTetsAndPyras) |
void | ug::promesh::ExtrudeToThickness (Mesh *obj, number thickness, int numSteps, bool createFaces, bool createVolumes) |
void | ug::promesh::MeshLayerBoundaries (Mesh *m, const RasterLayers &layers) |
void | ug::promesh::MeshLayers (Mesh *m, const RasterLayers &layers) |
void | ug::promesh::ProjectToLayer (Mesh *obj, RasterLayers &layers, int layerIndex) |
void | ug::promesh::ProjectToTopLayer (Mesh *obj, RasterLayers &layers) |
void | ug::promesh::ReplaceLowValenceVertices (Mesh *obj, number maxSquaredHeightToBaseAreaRatio) |
void | ug::promesh::ReplaceValence3Vertices (Mesh *obj, number maxSquaredHeightToBaseAreaRatio) |
void | ug::promesh::Retetrahedralize (Mesh *obj, number quality, bool preserveOuter, bool preserveAll, bool applyVolumeConstraint, int verbosity) |
void | ug::promesh::Retriangulate (Mesh *obj, number minAngle) |
void | ug::promesh::SimplifyPolylines (Mesh *m, number curvatureThreshold) |
void | ug::promesh::SimplifySmoothedPolylines (Mesh *m, number curvatureThreshold, number smoothingAlpha, int smoothingIterations) |
void | ug::promesh::SnapToHorizontalRaster (Mesh *obj, SPRasterLayers layers) |
void | ug::promesh::Tetrahedralize (Mesh *obj, number quality, bool preserveOuter, bool preserveAll, bool separateVolumes, bool appendSubsetsAtEnd, int verbosity) |
void | ug::promesh::TriangleFill (Mesh *obj, bool qualityGeneration, number minAngle, int si) |
#define TOOLTIP_ADAPT_SURFACE_TO_CYLINDER "Introduces edges in a grid around a selected vertex which roughly correspond to the intersection of a cylinder with the surface." |
#define TOOLTIP_ADJUST_EDGE_LENGTH "Remeshes the active grid so that all edges approximatly have a certain length." |
#define TOOLTIP_ASSIGN_VOLUME_CONSTRAINTS "Assigns volume constraints to selected tetrahedra." |
#define TOOLTIP_CLEAR_VOLUME_CONSTRAINTS "Clears all assigned volume constraints." |
#define TOOLTIP_CONVERT_TO_QUADRILATERALS "Converts selected triangles or triangles connected by selected edges to quadrilaterals." |
#define TOOLTIP_CONVERT_TO_TETRAHEDRA "Converts selected volume elements to tetrahedra." |
#define TOOLTIP_CONVERT_TO_TRIANGLES "Converts selected quadrilaterals to triangles." |
#define TOOLTIP_CREATE_SHRINK_GEOMETRY "Creates new elements from existing ones, providing each with a unique set of corner vertices. Those corners are scaled towards the center using the given scale-parameter." |
#define TOOLTIP_CSG_FACE_DIFFERENCE "Performs a difference operation on the geometry of the two specifed subsets. IMPORTANT: Both subsets have to be closed manifolds, i.e., homeomorphic to the sphere." |
#define TOOLTIP_CSG_FACE_INTERSECTION "Performs an intersection operation on the geometry of the two specifed subsets. IMPORTANT: Both subsets have to be closed manifolds, i.e., homeomorphic to the sphere." |
#define TOOLTIP_CSG_FACE_UNION "Performs a union operation on the geometry of the two specifed subsets. IMPORTANT: Both subsets have to be closed manifolds, i.e., homeomorphic to the sphere." |
#define TOOLTIP_DUPLICATE "Duplicates the selected geometry." |
#define TOOLTIP_EXTRUDE_ALONG_NORMAL "Extrudes selected geometry (vertices, edges, faces) and moves new vertices along their normal." |
#define TOOLTIP_EXTRUDE_AND_MOVE "Extrudes selected geometry (vertices, edges, faces) and moves new vertices by the specified offset." |
#define TOOLTIP_EXTRUDE_AND_SCALE "Extrudes selected geometry (vertices, edges, faces) and scales new vertices by the specified scale." |
#define TOOLTIP_EXTRUDE_CYLINDERS "Extrudes cylinders around selected points of a 2d manifold." |
#define TOOLTIP_EXTRUDE_FACES_WITH_TETS "Experimental function to create 'plaque'-like geometry based on extruding faces with tetrahedra." |
#define TOOLTIP_EXTRUDE_LAYERS "Creates volumes for a given stack of raster-layers and an initial triangulation of the surface." |
#define TOOLTIP_EXTRUDE_LAYERS_AND_ADD_PROJECTOR "Creates volumes for a given stack of raster-layers and an initial triangulation of the surface. It also generates a raster-based refinement-projector for the whole geometry." |
#define TOOLTIP_EXTRUDE_TO_TICKNESS "Extrudes selected geometry (vertices, edges, faces) and moves new vertices so that created elements have the specified thickness." |
#define TOOLTIP_MESH_LAYER_BOUNDARIES "Creates boundary grids for the given raster-layers" |
#define TOOLTIP_MESH_LAYERS "Creates triangle/quadrilateral grids for the given raster-layers" |
#define TOOLTIP_PROJECT_TO_LAYER "Projects a (surface-)mesh to the specified raster-layer. Only height values in valid regions are adjusted." |
#define TOOLTIP_PROJECT_TO_TOP_LAYER "Projects a (surface-)mesh to the top-layer of the specified raster-stack. Only height values in valid regions are adjusted." |
#define TOOLTIP_REPLACE_LOW_VALENCE_VERTICES "Replaces selected valence-3 and valence-4 vertices by triangles, if the curvature of associated triangles is low" |
#define TOOLTIP_REPLACE_VALENCE_3_VERTICES "Replaces selected valence-3 vertices by triangles, if the curvature of associated triangles is low" |
#define TOOLTIP_RETETRAHEDRALIZE "Given a tetrahedralization and volume constraints, this method adapts the tetrahedra using TetGen." |
#define TOOLTIP_RETRIANGULATE "Inserts vertices as required and performs Constrained Delaunay triangulation." |
#define TOOLTIP_SIMPLIFY_POLYLINES "Removes vertices from the selected polyline which have a smaller curvature than the specified angle." |
#define TOOLTIP_SIMPLIFY_SMOOTHED_POLYLINES "Removes vertices from the selected polyline which have a smaller smoothed curvature than the specified angle." |
#define TOOLTIP_SNAP_TO_HORIZONTAL_RASTER "Snaps all vertices of the given (surface) grid horizontally to the closest raster-node." |
#define TOOLTIP_TETRAHEDRALIZE "Fills a closed surface with tetrahedra using TetGen." |
#define TOOLTIP_TRIANGLE_FILL "Performs triangle fill using the sweep-line algorithm followed by an optional Constrained Delaunay retriangulation." |