netgen-mesher 6.2.2506.post35.dev0__cp314-cp314-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- netgen/NgOCC.py +7 -0
- netgen/__init__.py +114 -0
- netgen/__init__.pyi +22 -0
- netgen/__main__.py +53 -0
- netgen/cmake/NetgenConfig.cmake +79 -0
- netgen/cmake/netgen-targets-release.cmake +69 -0
- netgen/cmake/netgen-targets.cmake +146 -0
- netgen/config/__init__.py +1 -0
- netgen/config/__init__.pyi +52 -0
- netgen/config/__main__.py +4 -0
- netgen/config/config.py +68 -0
- netgen/config/config.pyi +54 -0
- netgen/csg.py +25 -0
- netgen/geom2d.py +178 -0
- netgen/gui.py +82 -0
- netgen/include/core/archive.hpp +1256 -0
- netgen/include/core/array.hpp +1760 -0
- netgen/include/core/autodiff.hpp +1131 -0
- netgen/include/core/autodiffdiff.hpp +733 -0
- netgen/include/core/bitarray.hpp +240 -0
- netgen/include/core/concurrentqueue.h +3619 -0
- netgen/include/core/exception.hpp +145 -0
- netgen/include/core/flags.hpp +199 -0
- netgen/include/core/hashtable.hpp +1281 -0
- netgen/include/core/localheap.hpp +318 -0
- netgen/include/core/logging.hpp +117 -0
- netgen/include/core/memtracer.hpp +221 -0
- netgen/include/core/mpi4py_pycapi.h +245 -0
- netgen/include/core/mpi_wrapper.hpp +643 -0
- netgen/include/core/ng_mpi.hpp +94 -0
- netgen/include/core/ng_mpi_generated_declarations.hpp +155 -0
- netgen/include/core/ng_mpi_native.hpp +25 -0
- netgen/include/core/ngcore.hpp +32 -0
- netgen/include/core/ngcore_api.hpp +152 -0
- netgen/include/core/ngstream.hpp +115 -0
- netgen/include/core/paje_trace.hpp +279 -0
- netgen/include/core/profiler.hpp +382 -0
- netgen/include/core/python_ngcore.hpp +457 -0
- netgen/include/core/ranges.hpp +109 -0
- netgen/include/core/register_archive.hpp +100 -0
- netgen/include/core/signal.hpp +82 -0
- netgen/include/core/simd.hpp +160 -0
- netgen/include/core/simd_arm64.hpp +407 -0
- netgen/include/core/simd_avx.hpp +394 -0
- netgen/include/core/simd_avx512.hpp +285 -0
- netgen/include/core/simd_generic.hpp +1053 -0
- netgen/include/core/simd_math.hpp +178 -0
- netgen/include/core/simd_sse.hpp +289 -0
- netgen/include/core/statushandler.hpp +37 -0
- netgen/include/core/symboltable.hpp +153 -0
- netgen/include/core/table.hpp +810 -0
- netgen/include/core/taskmanager.hpp +1161 -0
- netgen/include/core/type_traits.hpp +65 -0
- netgen/include/core/utils.hpp +385 -0
- netgen/include/core/version.hpp +102 -0
- netgen/include/core/xbool.hpp +47 -0
- netgen/include/csg/algprim.hpp +563 -0
- netgen/include/csg/brick.hpp +150 -0
- netgen/include/csg/csg.hpp +43 -0
- netgen/include/csg/csgeom.hpp +389 -0
- netgen/include/csg/csgparser.hpp +101 -0
- netgen/include/csg/curve2d.hpp +67 -0
- netgen/include/csg/edgeflw.hpp +112 -0
- netgen/include/csg/explicitcurve2d.hpp +113 -0
- netgen/include/csg/extrusion.hpp +185 -0
- netgen/include/csg/gencyl.hpp +70 -0
- netgen/include/csg/geoml.hpp +16 -0
- netgen/include/csg/identify.hpp +213 -0
- netgen/include/csg/manifold.hpp +29 -0
- netgen/include/csg/meshsurf.hpp +46 -0
- netgen/include/csg/polyhedra.hpp +121 -0
- netgen/include/csg/revolution.hpp +180 -0
- netgen/include/csg/singularref.hpp +84 -0
- netgen/include/csg/solid.hpp +295 -0
- netgen/include/csg/specpoin.hpp +194 -0
- netgen/include/csg/spline3d.hpp +99 -0
- netgen/include/csg/splinesurface.hpp +85 -0
- netgen/include/csg/surface.hpp +394 -0
- netgen/include/csg/triapprox.hpp +63 -0
- netgen/include/csg/vscsg.hpp +34 -0
- netgen/include/general/autodiff.hpp +356 -0
- netgen/include/general/autoptr.hpp +39 -0
- netgen/include/general/gzstream.h +121 -0
- netgen/include/general/hashtabl.hpp +1692 -0
- netgen/include/general/myadt.hpp +48 -0
- netgen/include/general/mystring.hpp +226 -0
- netgen/include/general/netgenout.hpp +205 -0
- netgen/include/general/ngarray.hpp +797 -0
- netgen/include/general/ngbitarray.hpp +149 -0
- netgen/include/general/ngpython.hpp +74 -0
- netgen/include/general/optmem.hpp +44 -0
- netgen/include/general/parthreads.hpp +138 -0
- netgen/include/general/seti.hpp +50 -0
- netgen/include/general/sort.hpp +47 -0
- netgen/include/general/spbita2d.hpp +59 -0
- netgen/include/general/stack.hpp +114 -0
- netgen/include/general/table.hpp +280 -0
- netgen/include/general/template.hpp +509 -0
- netgen/include/geom2d/csg2d.hpp +750 -0
- netgen/include/geom2d/geometry2d.hpp +280 -0
- netgen/include/geom2d/spline2d.hpp +234 -0
- netgen/include/geom2d/vsgeom2d.hpp +28 -0
- netgen/include/gprim/adtree.hpp +1392 -0
- netgen/include/gprim/geom2d.hpp +858 -0
- netgen/include/gprim/geom3d.hpp +749 -0
- netgen/include/gprim/geomfuncs.hpp +212 -0
- netgen/include/gprim/geomobjects.hpp +544 -0
- netgen/include/gprim/geomops.hpp +404 -0
- netgen/include/gprim/geomtest3d.hpp +101 -0
- netgen/include/gprim/gprim.hpp +33 -0
- netgen/include/gprim/spline.hpp +778 -0
- netgen/include/gprim/splinegeometry.hpp +73 -0
- netgen/include/gprim/transform3d.hpp +216 -0
- netgen/include/include/acisgeom.hpp +3 -0
- netgen/include/include/csg.hpp +1 -0
- netgen/include/include/geometry2d.hpp +1 -0
- netgen/include/include/gprim.hpp +1 -0
- netgen/include/include/incopengl.hpp +62 -0
- netgen/include/include/inctcl.hpp +13 -0
- netgen/include/include/incvis.hpp +6 -0
- netgen/include/include/linalg.hpp +1 -0
- netgen/include/include/meshing.hpp +1 -0
- netgen/include/include/myadt.hpp +1 -0
- netgen/include/include/mydefs.hpp +70 -0
- netgen/include/include/mystdlib.h +59 -0
- netgen/include/include/netgen_config.hpp +27 -0
- netgen/include/include/netgen_version.hpp +9 -0
- netgen/include/include/nginterface_v2_impl.hpp +395 -0
- netgen/include/include/ngsimd.hpp +1 -0
- netgen/include/include/occgeom.hpp +1 -0
- netgen/include/include/opti.hpp +1 -0
- netgen/include/include/parallel.hpp +1 -0
- netgen/include/include/stlgeom.hpp +1 -0
- netgen/include/include/visual.hpp +1 -0
- netgen/include/interface/rw_medit.hpp +11 -0
- netgen/include/interface/writeuser.hpp +80 -0
- netgen/include/linalg/densemat.hpp +414 -0
- netgen/include/linalg/linalg.hpp +29 -0
- netgen/include/linalg/opti.hpp +142 -0
- netgen/include/linalg/polynomial.hpp +47 -0
- netgen/include/linalg/vector.hpp +217 -0
- netgen/include/meshing/adfront2.hpp +274 -0
- netgen/include/meshing/adfront3.hpp +332 -0
- netgen/include/meshing/basegeom.hpp +370 -0
- netgen/include/meshing/bcfunctions.hpp +53 -0
- netgen/include/meshing/bisect.hpp +72 -0
- netgen/include/meshing/boundarylayer.hpp +113 -0
- netgen/include/meshing/classifyhpel.hpp +1984 -0
- netgen/include/meshing/clusters.hpp +46 -0
- netgen/include/meshing/curvedelems.hpp +274 -0
- netgen/include/meshing/delaunay2d.hpp +73 -0
- netgen/include/meshing/fieldlines.hpp +103 -0
- netgen/include/meshing/findip.hpp +198 -0
- netgen/include/meshing/findip2.hpp +103 -0
- netgen/include/meshing/geomsearch.hpp +69 -0
- netgen/include/meshing/global.hpp +54 -0
- netgen/include/meshing/hpref_hex.hpp +330 -0
- netgen/include/meshing/hpref_prism.hpp +3405 -0
- netgen/include/meshing/hpref_pyramid.hpp +154 -0
- netgen/include/meshing/hpref_quad.hpp +2082 -0
- netgen/include/meshing/hpref_segm.hpp +122 -0
- netgen/include/meshing/hpref_tet.hpp +4230 -0
- netgen/include/meshing/hpref_trig.hpp +848 -0
- netgen/include/meshing/hprefinement.hpp +366 -0
- netgen/include/meshing/improve2.hpp +178 -0
- netgen/include/meshing/improve3.hpp +151 -0
- netgen/include/meshing/localh.hpp +223 -0
- netgen/include/meshing/meshclass.hpp +1076 -0
- netgen/include/meshing/meshfunc.hpp +47 -0
- netgen/include/meshing/meshing.hpp +63 -0
- netgen/include/meshing/meshing2.hpp +163 -0
- netgen/include/meshing/meshing3.hpp +123 -0
- netgen/include/meshing/meshtool.hpp +90 -0
- netgen/include/meshing/meshtype.hpp +1930 -0
- netgen/include/meshing/msghandler.hpp +62 -0
- netgen/include/meshing/paralleltop.hpp +172 -0
- netgen/include/meshing/python_mesh.hpp +206 -0
- netgen/include/meshing/ruler2.hpp +172 -0
- netgen/include/meshing/ruler3.hpp +211 -0
- netgen/include/meshing/soldata.hpp +141 -0
- netgen/include/meshing/specials.hpp +17 -0
- netgen/include/meshing/surfacegeom.hpp +73 -0
- netgen/include/meshing/topology.hpp +1003 -0
- netgen/include/meshing/validate.hpp +21 -0
- netgen/include/meshing/visual_interface.hpp +71 -0
- netgen/include/mydefs.hpp +70 -0
- netgen/include/nginterface.h +474 -0
- netgen/include/nginterface_v2.hpp +406 -0
- netgen/include/nglib.h +697 -0
- netgen/include/nglib_occ.h +50 -0
- netgen/include/occ/occ_edge.hpp +47 -0
- netgen/include/occ/occ_face.hpp +52 -0
- netgen/include/occ/occ_solid.hpp +23 -0
- netgen/include/occ/occ_utils.hpp +376 -0
- netgen/include/occ/occ_vertex.hpp +30 -0
- netgen/include/occ/occgeom.hpp +659 -0
- netgen/include/occ/occmeshsurf.hpp +168 -0
- netgen/include/occ/vsocc.hpp +33 -0
- netgen/include/pybind11/LICENSE +29 -0
- netgen/include/pybind11/attr.h +722 -0
- netgen/include/pybind11/buffer_info.h +208 -0
- netgen/include/pybind11/cast.h +2361 -0
- netgen/include/pybind11/chrono.h +228 -0
- netgen/include/pybind11/common.h +2 -0
- netgen/include/pybind11/complex.h +74 -0
- netgen/include/pybind11/conduit/README.txt +15 -0
- netgen/include/pybind11/conduit/pybind11_conduit_v1.h +116 -0
- netgen/include/pybind11/conduit/pybind11_platform_abi_id.h +87 -0
- netgen/include/pybind11/conduit/wrap_include_python_h.h +72 -0
- netgen/include/pybind11/critical_section.h +56 -0
- netgen/include/pybind11/detail/class.h +823 -0
- netgen/include/pybind11/detail/common.h +1348 -0
- netgen/include/pybind11/detail/cpp_conduit.h +75 -0
- netgen/include/pybind11/detail/descr.h +226 -0
- netgen/include/pybind11/detail/dynamic_raw_ptr_cast_if_possible.h +39 -0
- netgen/include/pybind11/detail/exception_translation.h +71 -0
- netgen/include/pybind11/detail/function_record_pyobject.h +191 -0
- netgen/include/pybind11/detail/init.h +538 -0
- netgen/include/pybind11/detail/internals.h +799 -0
- netgen/include/pybind11/detail/native_enum_data.h +209 -0
- netgen/include/pybind11/detail/pybind11_namespace_macros.h +82 -0
- netgen/include/pybind11/detail/struct_smart_holder.h +378 -0
- netgen/include/pybind11/detail/type_caster_base.h +1591 -0
- netgen/include/pybind11/detail/typeid.h +65 -0
- netgen/include/pybind11/detail/using_smart_holder.h +22 -0
- netgen/include/pybind11/detail/value_and_holder.h +90 -0
- netgen/include/pybind11/eigen/common.h +9 -0
- netgen/include/pybind11/eigen/matrix.h +723 -0
- netgen/include/pybind11/eigen/tensor.h +521 -0
- netgen/include/pybind11/eigen.h +12 -0
- netgen/include/pybind11/embed.h +320 -0
- netgen/include/pybind11/eval.h +161 -0
- netgen/include/pybind11/functional.h +147 -0
- netgen/include/pybind11/gil.h +199 -0
- netgen/include/pybind11/gil_safe_call_once.h +102 -0
- netgen/include/pybind11/gil_simple.h +37 -0
- netgen/include/pybind11/iostream.h +265 -0
- netgen/include/pybind11/native_enum.h +67 -0
- netgen/include/pybind11/numpy.h +2312 -0
- netgen/include/pybind11/operators.h +202 -0
- netgen/include/pybind11/options.h +92 -0
- netgen/include/pybind11/pybind11.h +3645 -0
- netgen/include/pybind11/pytypes.h +2680 -0
- netgen/include/pybind11/stl/filesystem.h +114 -0
- netgen/include/pybind11/stl.h +666 -0
- netgen/include/pybind11/stl_bind.h +858 -0
- netgen/include/pybind11/subinterpreter.h +299 -0
- netgen/include/pybind11/trampoline_self_life_support.h +65 -0
- netgen/include/pybind11/type_caster_pyobject_ptr.h +61 -0
- netgen/include/pybind11/typing.h +298 -0
- netgen/include/pybind11/warnings.h +75 -0
- netgen/include/stlgeom/meshstlsurface.hpp +67 -0
- netgen/include/stlgeom/stlgeom.hpp +491 -0
- netgen/include/stlgeom/stlline.hpp +193 -0
- netgen/include/stlgeom/stltool.hpp +331 -0
- netgen/include/stlgeom/stltopology.hpp +419 -0
- netgen/include/stlgeom/vsstl.hpp +58 -0
- netgen/include/visualization/meshdoc.hpp +42 -0
- netgen/include/visualization/mvdraw.hpp +325 -0
- netgen/include/visualization/vispar.hpp +128 -0
- netgen/include/visualization/visual.hpp +28 -0
- netgen/include/visualization/visual_api.hpp +10 -0
- netgen/include/visualization/vssolution.hpp +399 -0
- netgen/lib/libnggui.lib +0 -0
- netgen/lib/ngcore.lib +0 -0
- netgen/lib/nglib.lib +0 -0
- netgen/lib/togl.lib +0 -0
- netgen/libnggui.dll +0 -0
- netgen/libngguipy.lib +0 -0
- netgen/libngguipy.pyd +0 -0
- netgen/libngpy/_NgOCC.pyi +1545 -0
- netgen/libngpy/__init__.pyi +7 -0
- netgen/libngpy/_csg.pyi +259 -0
- netgen/libngpy/_geom2d.pyi +323 -0
- netgen/libngpy/_meshing.pyi +1111 -0
- netgen/libngpy/_stl.pyi +131 -0
- netgen/libngpy.lib +0 -0
- netgen/libngpy.pyd +0 -0
- netgen/meshing.py +65 -0
- netgen/ngcore.dll +0 -0
- netgen/nglib.dll +0 -0
- netgen/occ.py +52 -0
- netgen/read_gmsh.py +259 -0
- netgen/read_meshio.py +22 -0
- netgen/stl.py +2 -0
- netgen/togl.dll +0 -0
- netgen/version.py +2 -0
- netgen/webgui.py +529 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/boundarycondition.geo +16 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/boxcyl.geo +32 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/circle_on_cube.geo +27 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cone.geo +13 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cube.geo +16 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubeandring.geo +55 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubeandspheres.geo +21 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubemcyl.geo +18 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubemsphere.geo +19 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cylinder.geo +12 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cylsphere.geo +12 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/doc/ng4.pdf +0 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/ellipsoid.geo +8 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/ellipticcyl.geo +10 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/extrusion.geo +99 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/fichera.geo +24 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/frame.step +11683 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/hinge.stl +8486 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/lshape3d.geo +26 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/manyholes.geo +26 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/manyholes2.geo +26 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/matrix.geo +27 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/ortho.geo +11 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/part1.stl +2662 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/period.geo +33 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/py_tutorials/exportNeutral.py +26 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/py_tutorials/mesh.py +19 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/py_tutorials/shaft.geo +65 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/revolution.geo +18 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/screw.step +1694 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/sculpture.geo +13 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/shaft.geo +65 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/shell.geo +10 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/sphere.geo +8 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/sphereincube.geo +17 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/square.in2d +35 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/squarecircle.in2d +48 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/squarehole.in2d +47 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/torus.geo +8 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/trafo.geo +57 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/twobricks.geo +15 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/twocubes.geo +18 -0
- netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/twocyl.geo +16 -0
- netgen_mesher-6.2.2506.post35.dev0.dist-info/METADATA +15 -0
- netgen_mesher-6.2.2506.post35.dev0.dist-info/RECORD +340 -0
- netgen_mesher-6.2.2506.post35.dev0.dist-info/WHEEL +5 -0
- netgen_mesher-6.2.2506.post35.dev0.dist-info/entry_points.txt +2 -0
- netgen_mesher-6.2.2506.post35.dev0.dist-info/licenses/AUTHORS +1 -0
- netgen_mesher-6.2.2506.post35.dev0.dist-info/licenses/LICENSE +504 -0
- netgen_mesher-6.2.2506.post35.dev0.dist-info/top_level.txt +2 -0
- pyngcore/__init__.py +1 -0
- pyngcore/pyngcore.cp314-win_amd64.pyd +0 -0
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
#ifndef FILE_STLTOOL
|
|
2
|
+
#define FILE_STLTOOL
|
|
3
|
+
|
|
4
|
+
//#include "gprim/gprim.hh"
|
|
5
|
+
|
|
6
|
+
/**************************************************************************/
|
|
7
|
+
/* File: stlgeom.hh */
|
|
8
|
+
/* Author: Joachim Schoeberl */
|
|
9
|
+
/* Author2: Johannes Gerstmayr */
|
|
10
|
+
/* Date: 20. Nov. 99 */
|
|
11
|
+
/**************************************************************************/
|
|
12
|
+
|
|
13
|
+
namespace netgen {
|
|
14
|
+
|
|
15
|
+
// use one normal vector for whole chart
|
|
16
|
+
extern int usechartnormal;
|
|
17
|
+
extern int chartdebug;
|
|
18
|
+
|
|
19
|
+
extern int geomsearchtreeon;
|
|
20
|
+
extern int AddPointIfNotExists(NgArray<Point3d>& ap, const Point3d& p, double eps = 1e-8);
|
|
21
|
+
//get distance from line lp1-lp2 to point p
|
|
22
|
+
extern double GetDistFromLine(const Point<3>& lp1, const Point<3>& lp2, Point<3>& p);
|
|
23
|
+
extern double GetDistFromInfiniteLine(const Point<3>& lp1, const Point<3>& lp2, const Point<3>& p);
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
extern void FIOReadInt(istream& ios, int& i);
|
|
27
|
+
extern void FIOWriteInt(ostream& ios, const int& i);
|
|
28
|
+
extern void FIOReadDouble(istream& ios, double& i);
|
|
29
|
+
extern void FIOWriteDouble(ostream& ios, const double& i);
|
|
30
|
+
extern void FIOReadFloat(istream& ios, float& i);
|
|
31
|
+
extern void FIOWriteFloat(ostream& ios, const float& i);
|
|
32
|
+
extern void FIOReadString(istream& ios, char* str, int len);
|
|
33
|
+
extern void FIOReadStringE(istream& ios, char* str, int len);
|
|
34
|
+
extern void FIOWriteString(ostream& ios, char* str, int len);
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
typedef NgArray <int> * ArrayINTPTR;
|
|
38
|
+
|
|
39
|
+
class STLGeometry;
|
|
40
|
+
class STLParameters;
|
|
41
|
+
|
|
42
|
+
// typedef int ChartId
|
|
43
|
+
class ChartId
|
|
44
|
+
{
|
|
45
|
+
int i;
|
|
46
|
+
public:
|
|
47
|
+
class t_invalid { public: constexpr t_invalid() = default; };
|
|
48
|
+
static constexpr t_invalid INVALID{};
|
|
49
|
+
|
|
50
|
+
ChartId() { }
|
|
51
|
+
constexpr ChartId(t_invalid inv) : i(0) { ; }
|
|
52
|
+
constexpr ChartId(int ai) : i(ai) { }
|
|
53
|
+
operator int() const { return i; }
|
|
54
|
+
ChartId operator++ (int) { ChartId hi(*this); i++; return hi; }
|
|
55
|
+
ChartId & operator++ () { i++; return *this; }
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
namespace ngcore
|
|
60
|
+
{
|
|
61
|
+
template<>
|
|
62
|
+
constexpr netgen::ChartId IndexBASE<netgen::ChartId> () { return netgen::ChartId(1); }
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
namespace netgen {
|
|
67
|
+
|
|
68
|
+
class STLChart
|
|
69
|
+
{
|
|
70
|
+
private:
|
|
71
|
+
STLGeometry * geometry;
|
|
72
|
+
Array<STLTrigId> charttrigs; // trigs which only belong to this chart
|
|
73
|
+
Array<STLTrigId> outertrigs; // trigs which belong to other charts
|
|
74
|
+
BoxTree<3,STLTrigId> * searchtree; // ADT containing outer trigs
|
|
75
|
+
|
|
76
|
+
NgArray<twoint> olimit; //outer limit of outer chart
|
|
77
|
+
NgArray<twoint> ilimit; //outer limit of inner chart
|
|
78
|
+
const STLParameters& stlparam;
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
public:
|
|
82
|
+
|
|
83
|
+
STLChart(STLGeometry * ageometry, const STLParameters& astlparam);
|
|
84
|
+
~STLChart();
|
|
85
|
+
void AddChartTrig(STLTrigId i);
|
|
86
|
+
void AddOuterTrig(STLTrigId i);
|
|
87
|
+
|
|
88
|
+
bool IsInWholeChart(int nr) const;
|
|
89
|
+
|
|
90
|
+
STLTrigId GetChartTrig1(int i) const {return charttrigs[i-1];}
|
|
91
|
+
STLTrigId GetOuterTrig1(int i) const {return outertrigs[i-1];}
|
|
92
|
+
//get all trigs:
|
|
93
|
+
STLTrigId GetTrig1(int i) const
|
|
94
|
+
{
|
|
95
|
+
if (i <= charttrigs.Size()) {return charttrigs[i-1];}
|
|
96
|
+
else {return outertrigs[i-charttrigs.Size()-1];}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
size_t GetNChartT() const {return charttrigs.Size();}
|
|
100
|
+
size_t GetNOuterT() const {return outertrigs.Size();}
|
|
101
|
+
size_t GetNT() const {return charttrigs.Size()+outertrigs.Size(); }
|
|
102
|
+
|
|
103
|
+
void GetTrianglesInBox (const Point3d & pmin,
|
|
104
|
+
const Point3d & pmax,
|
|
105
|
+
NgArray<STLTrigId> & trias) const;
|
|
106
|
+
void AddOLimit(twoint l) {olimit.Append(l);}
|
|
107
|
+
void AddILimit(twoint l) {ilimit.Append(l);}
|
|
108
|
+
|
|
109
|
+
void ClearOLimit() {olimit.SetSize(0);}
|
|
110
|
+
void ClearILimit() {ilimit.SetSize(0);}
|
|
111
|
+
|
|
112
|
+
size_t GetNOLimit() const {return olimit.Size();}
|
|
113
|
+
size_t GetNILimit() const {return ilimit.Size();}
|
|
114
|
+
|
|
115
|
+
twoint GetOLimit(int i) const {return olimit.Get(i);}
|
|
116
|
+
twoint GetILimit(int i) const {return ilimit.Get(i);}
|
|
117
|
+
|
|
118
|
+
//move triangles trigs (local chart-trig numbers) to outer chart
|
|
119
|
+
void MoveToOuterChart(const NgArray<int>& trigs);
|
|
120
|
+
void DelChartTrigs(const NgArray<int>& trigs);
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
// define local coordinate system, JS:
|
|
124
|
+
private:
|
|
125
|
+
Vec<3> normal;
|
|
126
|
+
Point<3> pref;
|
|
127
|
+
Vec<3> t1, t2;
|
|
128
|
+
unique_ptr<BoxTree<2,STLTrigId>> inner_searchtree;
|
|
129
|
+
public:
|
|
130
|
+
void SetNormal (const Point<3> & apref, const Vec<3> & anormal);
|
|
131
|
+
const Vec<3> & GetNormal () const { return normal; }
|
|
132
|
+
Point<2> Project2d (const Point<3> & p3d) const
|
|
133
|
+
{
|
|
134
|
+
Vec<3> v = p3d-pref;
|
|
135
|
+
return Point<2> (t1 * v, t2 * v);
|
|
136
|
+
}
|
|
137
|
+
void BuildInnerSearchTree();
|
|
138
|
+
STLTrigId ProjectNormal (Point<3> & p) const;
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
class STLBoundarySeg
|
|
142
|
+
{
|
|
143
|
+
Point<3> p1, p2, center;
|
|
144
|
+
Point<2> p2d1, p2d2;
|
|
145
|
+
Box<2> boundingbox;
|
|
146
|
+
|
|
147
|
+
double rad;
|
|
148
|
+
STLPointId i1, i2;
|
|
149
|
+
bool smoothedge;
|
|
150
|
+
public:
|
|
151
|
+
STLBoundarySeg () { ; }
|
|
152
|
+
STLBoundarySeg (STLPointId ai1, STLPointId ai2, const Array<Point<3>,STLPointId> & points,
|
|
153
|
+
const STLChart * chart)
|
|
154
|
+
: p1(points[ai1]), p2(points[ai2]),
|
|
155
|
+
i1(ai1), i2(ai2)
|
|
156
|
+
{
|
|
157
|
+
center = ::netgen::Center (p1, p2);
|
|
158
|
+
rad = Dist (p1, center);
|
|
159
|
+
|
|
160
|
+
p2d1 = chart->Project2d (p1);
|
|
161
|
+
p2d2 = chart->Project2d (p2);
|
|
162
|
+
|
|
163
|
+
boundingbox.Set (p2d1);
|
|
164
|
+
boundingbox.Add (p2d2);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
int operator== (const STLBoundarySeg & s2) const
|
|
168
|
+
{ return i1 == s2.i1 && i2 == s2.i2; }
|
|
169
|
+
void Swap ();
|
|
170
|
+
STLPointId I1() const { return i1; }
|
|
171
|
+
STLPointId I2() const { return i2; }
|
|
172
|
+
const Point<3> & P1() const { return p1; }
|
|
173
|
+
const Point<3> & P2() const { return p2; }
|
|
174
|
+
const Point<2> & P2D1() const { return p2d1; }
|
|
175
|
+
const Point<2> & P2D2() const { return p2d2; }
|
|
176
|
+
const Point<2> & P2DMin() const { return boundingbox.PMin(); }
|
|
177
|
+
const Point<2> & P2DMax() const { return boundingbox.PMax(); }
|
|
178
|
+
const Point<3> & Center() const { return center; }
|
|
179
|
+
const Box<2> & BoundingBox() const { return boundingbox; }
|
|
180
|
+
double Radius () const { return rad; }
|
|
181
|
+
|
|
182
|
+
void SetSmoothEdge (bool se) { smoothedge = se; }
|
|
183
|
+
bool IsSmoothEdge () const { return smoothedge; }
|
|
184
|
+
friend class STLBoundary;
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
class STLBoundary
|
|
188
|
+
{
|
|
189
|
+
private:
|
|
190
|
+
STLGeometry * geometry;
|
|
191
|
+
const STLChart * chart;
|
|
192
|
+
// NgArray<STLBoundarySeg> boundary;
|
|
193
|
+
NgClosedHashTable<INDEX_2, STLBoundarySeg> boundary_ht;
|
|
194
|
+
unique_ptr<BoxTree<2,INDEX_2>> searchtree;
|
|
195
|
+
public:
|
|
196
|
+
STLBoundary(STLGeometry * ageometry);
|
|
197
|
+
~STLBoundary() {}
|
|
198
|
+
|
|
199
|
+
void Clear() { /* boundary.SetSize(0); */ boundary_ht = NgClosedHashTable<INDEX_2,STLBoundarySeg>(); }
|
|
200
|
+
void SetChart (const STLChart * achart) { chart = achart; }
|
|
201
|
+
//don't check, if already exists!
|
|
202
|
+
// void AddNewSegment(const STLBoundarySeg & seg) {boundary.Append(seg);};
|
|
203
|
+
//check if segment exists
|
|
204
|
+
// void AddOrDelSegment(const STLBoundarySeg & seg);
|
|
205
|
+
//addordelsegment for all 3 triangle segments!
|
|
206
|
+
void AddTriangle(const STLTriangle & t);
|
|
207
|
+
int NOSegments() {return boundary_ht.UsedElements();};
|
|
208
|
+
// const STLBoundarySeg & GetSegment(int i) {return boundary.Get(i);}
|
|
209
|
+
|
|
210
|
+
void BuildSearchTree();
|
|
211
|
+
void DeleteSearchTree();
|
|
212
|
+
bool TestSeg(const Point<3> & p1, const Point<3> & p2, const Vec<3> & sn,
|
|
213
|
+
double sinchartangle, int divisions, Array<Point<3>,STLPointId>& points,
|
|
214
|
+
double eps);
|
|
215
|
+
|
|
216
|
+
bool TestSegChartNV(const Point3d& p1, const Point3d& p2, const Vec3d& sn);
|
|
217
|
+
};
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
class STLDoctorParams
|
|
221
|
+
{
|
|
222
|
+
public:
|
|
223
|
+
int drawmeshededges;
|
|
224
|
+
double geom_tol_fact;
|
|
225
|
+
|
|
226
|
+
double longlinefact;
|
|
227
|
+
int showexcluded;
|
|
228
|
+
|
|
229
|
+
int selectmode; //0==trig, 1==edge, 2==point, 3==multiedge, 4==line cluster
|
|
230
|
+
int edgeselectmode;
|
|
231
|
+
|
|
232
|
+
int useexternaledges;
|
|
233
|
+
int showfaces;
|
|
234
|
+
int showedgecornerpoints;
|
|
235
|
+
int showtouchedtrigchart;
|
|
236
|
+
int conecheck;
|
|
237
|
+
int spiralcheck;
|
|
238
|
+
int selecttrig;
|
|
239
|
+
int nodeofseltrig;
|
|
240
|
+
int selectwithmouse;
|
|
241
|
+
int showmarkedtrigs;
|
|
242
|
+
double dirtytrigfact;
|
|
243
|
+
double smoothangle;
|
|
244
|
+
|
|
245
|
+
double smoothnormalsweight;
|
|
246
|
+
|
|
247
|
+
int showvicinity;
|
|
248
|
+
int vicinity;
|
|
249
|
+
///
|
|
250
|
+
STLDoctorParams();
|
|
251
|
+
///
|
|
252
|
+
void Print (ostream & ost) const;
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
DLL_HEADER extern STLDoctorParams stldoctor;
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
// TODO change enable flag to optional parameters
|
|
260
|
+
class DLL_HEADER STLParameters
|
|
261
|
+
{
|
|
262
|
+
public:
|
|
263
|
+
/// angle for edge detection
|
|
264
|
+
double yangle = 30.;
|
|
265
|
+
double contyangle = 20.; //edges continued with contyangle
|
|
266
|
+
/// angle of geometry edge at which the mesher should set a point
|
|
267
|
+
double edgecornerangle = 60.;
|
|
268
|
+
/// angle inside on chart
|
|
269
|
+
double chartangle = 15.;
|
|
270
|
+
/// angle for overlapping parts of char
|
|
271
|
+
double outerchartangle = 70.;
|
|
272
|
+
/// 0 .. no, 1 .. local, (2 .. global)
|
|
273
|
+
int usesearchtree = 0;
|
|
274
|
+
///
|
|
275
|
+
double resthatlasfac = 2.;
|
|
276
|
+
bool resthatlasenable = true;
|
|
277
|
+
double atlasminh = 0.1;
|
|
278
|
+
|
|
279
|
+
double resthsurfcurvfac = 2.;
|
|
280
|
+
bool resthsurfcurvenable = false;
|
|
281
|
+
|
|
282
|
+
double resthchartdistfac = 1.2;
|
|
283
|
+
bool resthchartdistenable = true;
|
|
284
|
+
|
|
285
|
+
// double resthcloseedgefac = 1.;
|
|
286
|
+
// bool resthcloseedgeenable = true;
|
|
287
|
+
|
|
288
|
+
double resthedgeanglefac = 1.;
|
|
289
|
+
bool resthedgeangleenable = false;
|
|
290
|
+
|
|
291
|
+
double resthsurfmeshcurvfac = 1.;
|
|
292
|
+
bool resthsurfmeshcurvenable = false;
|
|
293
|
+
|
|
294
|
+
double resthlinelengthfac = 0.5;
|
|
295
|
+
bool resthlinelengthenable = true;
|
|
296
|
+
|
|
297
|
+
///
|
|
298
|
+
bool recalc_h_opt = true;
|
|
299
|
+
///
|
|
300
|
+
STLParameters();
|
|
301
|
+
///
|
|
302
|
+
void Print (ostream & ost) const;
|
|
303
|
+
};
|
|
304
|
+
|
|
305
|
+
inline ostream & operator<< (ostream & ost, const STLParameters & stlparam)
|
|
306
|
+
{
|
|
307
|
+
stlparam.Print (ost);
|
|
308
|
+
return ost;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
void STLMeshing (STLGeometry & geom,
|
|
314
|
+
Mesh & mesh,
|
|
315
|
+
const MeshingParameters& mparam,
|
|
316
|
+
const STLParameters& stlpar);
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
int STLSurfaceMeshing (STLGeometry & geom,
|
|
320
|
+
Mesh & mesh,
|
|
321
|
+
const MeshingParameters& mparam,
|
|
322
|
+
const STLParameters& stlpar);
|
|
323
|
+
|
|
324
|
+
void STLSurfaceOptimization (STLGeometry & geom,
|
|
325
|
+
Mesh & mesh,
|
|
326
|
+
const MeshingParameters & mparam);
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
} // namespace netgen
|
|
330
|
+
|
|
331
|
+
#endif
|