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,50 @@
|
|
|
1
|
+
#ifndef NGLIB_OCC_HPP_INCLUDED
|
|
2
|
+
#define NGLIB_OCC_HPP_INCLUDED
|
|
3
|
+
|
|
4
|
+
/// Data type for NETGEN OpenCascade geometry
|
|
5
|
+
typedef void * Ng_OCC_Geometry;
|
|
6
|
+
typedef void * Ng_OCC_TopTools_IndexedMapOfShape;
|
|
7
|
+
|
|
8
|
+
// **********************************************************
|
|
9
|
+
// ** OpenCascade Geometry / Meshing Utilities **
|
|
10
|
+
// **********************************************************
|
|
11
|
+
|
|
12
|
+
// Create new OCC Geometry Object
|
|
13
|
+
NGLIB_API Ng_OCC_Geometry * Ng_OCC_NewGeometry ();
|
|
14
|
+
|
|
15
|
+
// Delete an OCC Geometry Object
|
|
16
|
+
NGLIB_API Ng_Result Ng_OCC_DeleteGeometry (Ng_OCC_Geometry * geom);
|
|
17
|
+
|
|
18
|
+
// Loads geometry from STEP file
|
|
19
|
+
NGLIB_API Ng_OCC_Geometry * Ng_OCC_Load_STEP (const char * filename);
|
|
20
|
+
|
|
21
|
+
// Loads geometry from IGES file
|
|
22
|
+
NGLIB_API Ng_OCC_Geometry * Ng_OCC_Load_IGES (const char * filename);
|
|
23
|
+
|
|
24
|
+
// Loads geometry from BREP file
|
|
25
|
+
NGLIB_API Ng_OCC_Geometry * Ng_OCC_Load_BREP (const char * filename);
|
|
26
|
+
|
|
27
|
+
// Set the local mesh size based on geometry / topology
|
|
28
|
+
NGLIB_API Ng_Result Ng_OCC_SetLocalMeshSize (Ng_OCC_Geometry * geom,
|
|
29
|
+
Ng_Mesh * mesh,
|
|
30
|
+
Ng_Meshing_Parameters * mp);
|
|
31
|
+
|
|
32
|
+
// Mesh the edges and add Face descriptors to prepare for surface meshing
|
|
33
|
+
NGLIB_API Ng_Result Ng_OCC_GenerateEdgeMesh (Ng_OCC_Geometry * geom,
|
|
34
|
+
Ng_Mesh * mesh,
|
|
35
|
+
Ng_Meshing_Parameters * mp);
|
|
36
|
+
|
|
37
|
+
// Mesh the surfaces of an OCC geometry
|
|
38
|
+
NGLIB_API Ng_Result Ng_OCC_GenerateSurfaceMesh (Ng_OCC_Geometry * geom,
|
|
39
|
+
Ng_Mesh * mesh,
|
|
40
|
+
Ng_Meshing_Parameters * mp);
|
|
41
|
+
|
|
42
|
+
// Get the face map of an already loaded OCC geometry
|
|
43
|
+
NGLIB_API Ng_Result Ng_OCC_GetFMap(Ng_OCC_Geometry * geom,
|
|
44
|
+
Ng_OCC_TopTools_IndexedMapOfShape * FMap);
|
|
45
|
+
|
|
46
|
+
NGLIB_API void Ng_OCC_Uniform_Refinement (Ng_OCC_Geometry * geom,
|
|
47
|
+
Ng_Mesh * mesh);
|
|
48
|
+
NGLIB_API void Ng_OCC_Generate_SecondOrder (Ng_OCC_Geometry * geom,
|
|
49
|
+
Ng_Mesh * mesh);
|
|
50
|
+
#endif // NGLIB_OCC_HPP_INCLUDED
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#ifndef FILE_OCC_EDGE_INCLUDED
|
|
2
|
+
#define FILE_OCC_EDGE_INCLUDED
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
// #pragma clang diagnostic push
|
|
6
|
+
// #pragma clang diagnostic ignored "-Wdeprecated-declarations"
|
|
7
|
+
|
|
8
|
+
#include <GProp_GProps.hxx>
|
|
9
|
+
#include <TopoDS.hxx>
|
|
10
|
+
#include <TopoDS_Edge.hxx>
|
|
11
|
+
#include <Geom_Curve.hxx>
|
|
12
|
+
#include <BRep_TEdge.hxx>
|
|
13
|
+
#include <BRep_Tool.hxx>
|
|
14
|
+
|
|
15
|
+
// #pragma clang diagnostic pop
|
|
16
|
+
|
|
17
|
+
#include "occ_vertex.hpp"
|
|
18
|
+
#include "meshing.hpp"
|
|
19
|
+
|
|
20
|
+
namespace netgen
|
|
21
|
+
{
|
|
22
|
+
class OCCEdge : public GeometryEdge
|
|
23
|
+
{
|
|
24
|
+
public:
|
|
25
|
+
TopoDS_Edge edge;
|
|
26
|
+
Handle(Geom_Curve) curve;
|
|
27
|
+
double s0, s1;
|
|
28
|
+
GProp_GProps props;
|
|
29
|
+
|
|
30
|
+
public:
|
|
31
|
+
OCCEdge(TopoDS_Shape edge_, GeometryVertex & start_, GeometryVertex & end_);
|
|
32
|
+
|
|
33
|
+
auto Shape() const { return edge; }
|
|
34
|
+
|
|
35
|
+
double GetLength() const override;
|
|
36
|
+
Point<3> GetCenter() const override;
|
|
37
|
+
Point<3> GetPoint(double t) const override;
|
|
38
|
+
double CalcStep(double t, double sag) const override;
|
|
39
|
+
void ProjectPoint(Point<3>& p, EdgePointGeomInfo* gi) const override;
|
|
40
|
+
Vec<3> GetTangent(double t) const override;
|
|
41
|
+
bool IsDegenerated(double) const override {
|
|
42
|
+
return BRep_Tool::Degenerated(edge);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
#endif // FILE_OCCEDGE_INCLUDED
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
#ifndef FILE_OCC_FACE_INCLUDED
|
|
2
|
+
#define FILE_OCC_FACE_INCLUDED
|
|
3
|
+
|
|
4
|
+
// #pragma clang diagnostic push
|
|
5
|
+
// #pragma clang diagnostic ignored "-Wdeprecated-declarations"
|
|
6
|
+
|
|
7
|
+
#include <GProp_GProps.hxx>
|
|
8
|
+
#include <TopoDS.hxx>
|
|
9
|
+
#include <TopoDS_Face.hxx>
|
|
10
|
+
#include <ShapeAnalysis_Surface.hxx>
|
|
11
|
+
|
|
12
|
+
// #pragma clang diagnostic pop
|
|
13
|
+
|
|
14
|
+
#include "occ_vertex.hpp"
|
|
15
|
+
#include "meshing.hpp"
|
|
16
|
+
|
|
17
|
+
namespace netgen
|
|
18
|
+
{
|
|
19
|
+
class OCCFace : public GeometryFace
|
|
20
|
+
{
|
|
21
|
+
TopoDS_Face face;
|
|
22
|
+
GProp_GProps props;
|
|
23
|
+
Box<3> bbox;
|
|
24
|
+
|
|
25
|
+
Handle( Geom_Surface ) surface;
|
|
26
|
+
Handle( ShapeAnalysis_Surface ) shape_analysis;
|
|
27
|
+
double tolerance;
|
|
28
|
+
|
|
29
|
+
public:
|
|
30
|
+
OCCFace(TopoDS_Shape dshape);
|
|
31
|
+
|
|
32
|
+
const TopoDS_Face Shape() const { return face; }
|
|
33
|
+
|
|
34
|
+
Point<3> GetCenter() const override;
|
|
35
|
+
virtual size_t GetNBoundaries() const override;
|
|
36
|
+
virtual Array<Segment> GetBoundary(const Mesh& mesh) const override;
|
|
37
|
+
virtual PointGeomInfo Project(Point<3>& p) const override;
|
|
38
|
+
virtual bool ProjectPointGI(Point<3>& p, PointGeomInfo& gi) const override;
|
|
39
|
+
virtual Point<3> GetPoint(const PointGeomInfo& gi) const override;
|
|
40
|
+
virtual void CalcEdgePointGI(const GeometryEdge& edge,
|
|
41
|
+
double t,
|
|
42
|
+
EdgePointGeomInfo& egi) const override;
|
|
43
|
+
virtual Box<3> GetBoundingBox() const override;
|
|
44
|
+
|
|
45
|
+
virtual double GetCurvature(const PointGeomInfo& gi) const override;
|
|
46
|
+
|
|
47
|
+
virtual void RestrictH(Mesh& mesh, const MeshingParameters& mparam) const override;
|
|
48
|
+
virtual Vec<3> GetNormal(const Point<3>& p, const PointGeomInfo* gi = nullptr) const override;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
#endif // FILE_OCC_FACE_INCLUDED
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#ifndef FILE_OCC_SOLID_INCLUDED
|
|
2
|
+
#define FILE_OCC_SOLID_INCLUDED
|
|
3
|
+
|
|
4
|
+
#include <TopoDS.hxx>
|
|
5
|
+
#include <TopoDS_Solid.hxx>
|
|
6
|
+
|
|
7
|
+
#include "meshing.hpp"
|
|
8
|
+
|
|
9
|
+
namespace netgen
|
|
10
|
+
{
|
|
11
|
+
class OCCSolid : public GeometrySolid
|
|
12
|
+
{
|
|
13
|
+
TopoDS_Solid solid;
|
|
14
|
+
|
|
15
|
+
public:
|
|
16
|
+
OCCSolid(TopoDS_Shape dshape)
|
|
17
|
+
: solid(TopoDS::Solid(dshape))
|
|
18
|
+
{ }
|
|
19
|
+
TopoDS_Solid& GetShape() { return solid; }
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
#endif // FILE_OCC_SOLID_INCLUDED
|
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
#ifndef FILE_OCC_UTILS_INCLUDED
|
|
2
|
+
#define FILE_OCC_UTILS_INCLUDED
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
#include <variant>
|
|
7
|
+
|
|
8
|
+
// #pragma clang diagnostic push
|
|
9
|
+
// #pragma clang diagnostic ignored "-Wdeprecated-declarations"
|
|
10
|
+
|
|
11
|
+
#include <Standard_Version.hxx>
|
|
12
|
+
#include <BRepGProp.hxx>
|
|
13
|
+
#include <BRep_Tool.hxx>
|
|
14
|
+
#include <GProp_GProps.hxx>
|
|
15
|
+
#include <TopExp_Explorer.hxx>
|
|
16
|
+
#include <TopTools_IndexedMapOfShape.hxx>
|
|
17
|
+
#include <TopoDS.hxx>
|
|
18
|
+
#include <TopoDS_Vertex.hxx>
|
|
19
|
+
#include <gp_Trsf.hxx>
|
|
20
|
+
#include <gp_GTrsf.hxx>
|
|
21
|
+
|
|
22
|
+
#define NETGEN_OCC_VERSION_AT_LEAST(MAJOR, MINOR) \
|
|
23
|
+
((OCC_VERSION_MAJOR > MAJOR) || \
|
|
24
|
+
((OCC_VERSION_MAJOR == MAJOR) && (OCC_VERSION_MINOR >= MINOR)))
|
|
25
|
+
#define NETGEN_OCC_VERSION_AT_LEAST_MAJOR(MAJOR) \
|
|
26
|
+
(NETGEN_OCC_VERSION_AT_LEAST(MAJOR, 0))
|
|
27
|
+
|
|
28
|
+
// #pragma clang diagnostic pop
|
|
29
|
+
|
|
30
|
+
#include "meshing.hpp"
|
|
31
|
+
|
|
32
|
+
#if NETGEN_OCC_VERSION_AT_LEAST(7, 4)
|
|
33
|
+
#define OCC_HAVE_DUMP_JSON
|
|
34
|
+
#endif
|
|
35
|
+
|
|
36
|
+
namespace netgen
|
|
37
|
+
{
|
|
38
|
+
inline Point<3> occ2ng (const gp_Pnt & p)
|
|
39
|
+
{
|
|
40
|
+
return Point<3> (p.X(), p.Y(), p.Z());
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
inline Point<2> occ2ng (const gp_Pnt2d & p)
|
|
44
|
+
{
|
|
45
|
+
return Point<2> (p.X(), p.Y());
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
inline Vec<3> occ2ng (const gp_Vec & v)
|
|
49
|
+
{
|
|
50
|
+
return Vec<3> (v.X(), v.Y(), v.Z());
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
DLL_HEADER Point<3> occ2ng (const TopoDS_Shape & s);
|
|
54
|
+
|
|
55
|
+
inline Point<3> occ2ng (const TopoDS_Vertex & v)
|
|
56
|
+
{
|
|
57
|
+
return occ2ng (BRep_Tool::Pnt (v));
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
DLL_HEADER Transformation<3> occ2ng (const gp_Trsf & t);
|
|
61
|
+
DLL_HEADER Transformation<3> occ2ng (const gp_GTrsf & t);
|
|
62
|
+
inline Transformation<3> occ2ng (const variant<gp_Trsf, gp_GTrsf> & t)
|
|
63
|
+
{
|
|
64
|
+
if(auto t1 = get_if<gp_Trsf>(&t))
|
|
65
|
+
return occ2ng(*t1);
|
|
66
|
+
return occ2ng(get<gp_GTrsf>(t));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
inline gp_Pnt ng2occ (const Point<3> & p)
|
|
70
|
+
{
|
|
71
|
+
return gp_Pnt(p(0), p(1), p(2));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
inline void CheckValidPropertyType(const TopoDS_Shape & shape)
|
|
75
|
+
{
|
|
76
|
+
switch (shape.ShapeType())
|
|
77
|
+
{
|
|
78
|
+
case TopAbs_SOLID:
|
|
79
|
+
case TopAbs_FACE:
|
|
80
|
+
case TopAbs_EDGE:
|
|
81
|
+
case TopAbs_VERTEX:
|
|
82
|
+
break;
|
|
83
|
+
default:
|
|
84
|
+
throw Exception("Cannot query properties of compound shapes - setting properties sets property on all highest dimension subshape type");
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
DLL_HEADER Box<3> GetBoundingBox( const TopoDS_Shape & shape );
|
|
89
|
+
|
|
90
|
+
struct OCCIdentification
|
|
91
|
+
{
|
|
92
|
+
TopoDS_Shape from;
|
|
93
|
+
TopoDS_Shape to;
|
|
94
|
+
optional<Transformation<3>> trafo = nullopt;
|
|
95
|
+
string name;
|
|
96
|
+
Identifications::ID_TYPE type;
|
|
97
|
+
bool opposite_direction = false;
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
Standard_Integer BuildTriangulation( const TopoDS_Shape & shape );
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
class MyExplorer
|
|
104
|
+
{
|
|
105
|
+
class Iterator
|
|
106
|
+
{
|
|
107
|
+
TopExp_Explorer exp;
|
|
108
|
+
public:
|
|
109
|
+
Iterator (TopoDS_Shape ashape, TopAbs_ShapeEnum atoFind, TopAbs_ShapeEnum atoAvoid)
|
|
110
|
+
: exp(ashape, atoFind, atoAvoid) { }
|
|
111
|
+
auto operator*() { return exp.Current(); }
|
|
112
|
+
Iterator & operator++() { exp.Next(); return *this; }
|
|
113
|
+
bool operator!= (nullptr_t nu) { return exp.More(); }
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
public:
|
|
117
|
+
TopoDS_Shape shape;
|
|
118
|
+
TopAbs_ShapeEnum toFind;
|
|
119
|
+
TopAbs_ShapeEnum toAvoid;
|
|
120
|
+
MyExplorer (TopoDS_Shape ashape, TopAbs_ShapeEnum atoFind, TopAbs_ShapeEnum atoAvoid = TopAbs_SHAPE)
|
|
121
|
+
: shape(ashape), toFind(atoFind), toAvoid(atoAvoid) { ; }
|
|
122
|
+
Iterator begin() { return Iterator(shape, toFind, toAvoid); }
|
|
123
|
+
auto end() { return nullptr; }
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
inline auto Explore (TopoDS_Shape shape, TopAbs_ShapeEnum toFind, TopAbs_ShapeEnum toAvoid = TopAbs_SHAPE)
|
|
127
|
+
{
|
|
128
|
+
return MyExplorer (shape, toFind, toAvoid);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
class IndexMapIterator
|
|
133
|
+
{
|
|
134
|
+
class Iterator
|
|
135
|
+
{
|
|
136
|
+
const TopTools_IndexedMapOfShape & indmap;
|
|
137
|
+
int i;
|
|
138
|
+
public:
|
|
139
|
+
Iterator (const TopTools_IndexedMapOfShape & aindmap, int ai)
|
|
140
|
+
: indmap(aindmap), i(ai) { ; }
|
|
141
|
+
auto operator*() { return tuple(i, indmap(i)); }
|
|
142
|
+
Iterator & operator++() { i++; return *this; }
|
|
143
|
+
bool operator!= (const Iterator & i2) { return i != i2.i; }
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
public:
|
|
147
|
+
const TopTools_IndexedMapOfShape & indmap;
|
|
148
|
+
IndexMapIterator (const TopTools_IndexedMapOfShape & aindmap) : indmap(aindmap) { }
|
|
149
|
+
Iterator begin() { return Iterator(indmap, 1); }
|
|
150
|
+
Iterator end() { return Iterator(indmap, indmap.Extent()+1); }
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
inline auto Enumerate (const TopTools_IndexedMapOfShape & indmap)
|
|
154
|
+
{
|
|
155
|
+
return IndexMapIterator(indmap);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
class ListOfShapes : public std::vector<TopoDS_Shape>
|
|
159
|
+
{
|
|
160
|
+
public:
|
|
161
|
+
DLL_HEADER TopoDS_Shape Max(gp_Vec dir);
|
|
162
|
+
DLL_HEADER TopoDS_Shape Nearest(gp_Pnt pnt);
|
|
163
|
+
DLL_HEADER ListOfShapes SubShapes(TopAbs_ShapeEnum type) const;
|
|
164
|
+
|
|
165
|
+
ListOfShapes Solids() const
|
|
166
|
+
{
|
|
167
|
+
return SubShapes(TopAbs_SOLID);
|
|
168
|
+
}
|
|
169
|
+
ListOfShapes Shells() const
|
|
170
|
+
{
|
|
171
|
+
return SubShapes(TopAbs_SHELL);
|
|
172
|
+
}
|
|
173
|
+
ListOfShapes Faces() const
|
|
174
|
+
{
|
|
175
|
+
return SubShapes(TopAbs_FACE);
|
|
176
|
+
}
|
|
177
|
+
ListOfShapes Wires() const
|
|
178
|
+
{
|
|
179
|
+
return SubShapes(TopAbs_WIRE);
|
|
180
|
+
}
|
|
181
|
+
ListOfShapes Edges() const
|
|
182
|
+
{
|
|
183
|
+
return SubShapes(TopAbs_EDGE);
|
|
184
|
+
}
|
|
185
|
+
ListOfShapes Vertices() const
|
|
186
|
+
{
|
|
187
|
+
return SubShapes(TopAbs_VERTEX);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
ListOfShapes operator*(const ListOfShapes& other) const
|
|
191
|
+
{
|
|
192
|
+
ListOfShapes common;
|
|
193
|
+
for(const auto& shape : (*this))
|
|
194
|
+
for(const auto& shape_o : other)
|
|
195
|
+
if(shape.IsSame(shape_o))
|
|
196
|
+
common.push_back(shape);
|
|
197
|
+
return common;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
ListOfShapes GetHighestDimShapes() const
|
|
201
|
+
{
|
|
202
|
+
for (auto type : {TopAbs_SOLID, TopAbs_FACE, TopAbs_EDGE, TopAbs_VERTEX})
|
|
203
|
+
{
|
|
204
|
+
auto ret = SubShapes(type);
|
|
205
|
+
if (ret.size() > 0)
|
|
206
|
+
return ret;
|
|
207
|
+
}
|
|
208
|
+
return ListOfShapes();
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
inline ListOfShapes GetSolids(const TopoDS_Shape & shape)
|
|
213
|
+
{
|
|
214
|
+
ListOfShapes sub;
|
|
215
|
+
for (TopExp_Explorer e(shape, TopAbs_SOLID); e.More(); e.Next())
|
|
216
|
+
sub.push_back(e.Current());
|
|
217
|
+
return sub;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
inline ListOfShapes GetShells(const TopoDS_Shape & shape)
|
|
221
|
+
{
|
|
222
|
+
ListOfShapes sub;
|
|
223
|
+
for (TopExp_Explorer e(shape, TopAbs_SHELL); e.More(); e.Next())
|
|
224
|
+
sub.push_back(e.Current());
|
|
225
|
+
return sub;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
inline ListOfShapes GetFaces(const TopoDS_Shape & shape)
|
|
229
|
+
{
|
|
230
|
+
ListOfShapes sub;
|
|
231
|
+
for (TopExp_Explorer e(shape, TopAbs_FACE); e.More(); e.Next())
|
|
232
|
+
sub.push_back(e.Current());
|
|
233
|
+
return sub;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
inline ListOfShapes GetWires(const TopoDS_Shape & shape)
|
|
237
|
+
{
|
|
238
|
+
ListOfShapes sub;
|
|
239
|
+
for (TopExp_Explorer e(shape, TopAbs_WIRE); e.More(); e.Next())
|
|
240
|
+
sub.push_back(e.Current());
|
|
241
|
+
return sub;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
inline ListOfShapes GetEdges(const TopoDS_Shape & shape)
|
|
245
|
+
{
|
|
246
|
+
ListOfShapes sub;
|
|
247
|
+
for (TopExp_Explorer e(shape, TopAbs_EDGE); e.More(); e.Next())
|
|
248
|
+
sub.push_back(e.Current());
|
|
249
|
+
return sub;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
inline ListOfShapes GetVertices(const TopoDS_Shape & shape)
|
|
253
|
+
{
|
|
254
|
+
ListOfShapes sub;
|
|
255
|
+
for (TopExp_Explorer e(shape, TopAbs_VERTEX); e.More(); e.Next())
|
|
256
|
+
sub.push_back(e.Current());
|
|
257
|
+
return sub;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
inline ListOfShapes GetHighestDimShapes(const TopoDS_Shape & shape)
|
|
261
|
+
{
|
|
262
|
+
auto ret = GetSolids(shape); if(ret.size() > 0) return ret;
|
|
263
|
+
ret = GetFaces(shape); if(ret.size() > 0) return ret;
|
|
264
|
+
ret = GetEdges(shape); if(ret.size() > 0) return ret;
|
|
265
|
+
ret = GetVertices(shape); if(ret.size() > 0) return ret;
|
|
266
|
+
return ListOfShapes();
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
class DirectionalInterval
|
|
271
|
+
{
|
|
272
|
+
public:
|
|
273
|
+
gp_Vec dir;
|
|
274
|
+
double minval = -1e99;
|
|
275
|
+
double maxval = 1e99;
|
|
276
|
+
bool openmin = false, openmax = false;
|
|
277
|
+
|
|
278
|
+
DirectionalInterval (gp_Vec adir) : dir(adir) { ; }
|
|
279
|
+
DirectionalInterval (const DirectionalInterval & i2) = default;
|
|
280
|
+
|
|
281
|
+
DirectionalInterval operator< (double val) const
|
|
282
|
+
{
|
|
283
|
+
DirectionalInterval i2 = *this;
|
|
284
|
+
i2.maxval = val;
|
|
285
|
+
i2.openmax = true;
|
|
286
|
+
return i2;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
DirectionalInterval operator> (double val) const
|
|
290
|
+
{
|
|
291
|
+
DirectionalInterval i2 = *this;
|
|
292
|
+
i2.minval = val;
|
|
293
|
+
i2.openmin = true;
|
|
294
|
+
return i2;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
DirectionalInterval operator<= (double val) const
|
|
298
|
+
{
|
|
299
|
+
DirectionalInterval i2 = *this;
|
|
300
|
+
i2.maxval = val;
|
|
301
|
+
i2.openmax = false;
|
|
302
|
+
return i2;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
DirectionalInterval operator>= (double val) const
|
|
306
|
+
{
|
|
307
|
+
DirectionalInterval i2 = *this;
|
|
308
|
+
i2.minval = val;
|
|
309
|
+
i2.openmin = false;
|
|
310
|
+
return i2;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
DirectionalInterval Intersect (const DirectionalInterval & i2)
|
|
314
|
+
{
|
|
315
|
+
DirectionalInterval res = *this;
|
|
316
|
+
res.minval = max(res.minval, i2.minval);
|
|
317
|
+
res.maxval = min(res.maxval, i2.maxval);
|
|
318
|
+
return res;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
bool Contains (gp_Pnt p, double eps = 1e-8)
|
|
322
|
+
{
|
|
323
|
+
// cout << "Contains point " << p.X() << "," << p.Y() << "," << p.Z() << " ? " << endl;
|
|
324
|
+
double val = dir.X()*p.X() + dir.Y()*p.Y() + dir.Z() * p.Z();
|
|
325
|
+
// cout << "minval = " << minval << ", val = " << val << " maxval = " << maxval << endl;
|
|
326
|
+
if (openmin) {
|
|
327
|
+
if (val < minval+eps) return false;
|
|
328
|
+
} else {
|
|
329
|
+
if (val < minval-eps) return false;
|
|
330
|
+
}
|
|
331
|
+
if (openmax) {
|
|
332
|
+
if (val > maxval-eps) return false;
|
|
333
|
+
} else {
|
|
334
|
+
if (val > maxval+eps) return false;
|
|
335
|
+
}
|
|
336
|
+
return true;
|
|
337
|
+
}
|
|
338
|
+
};
|
|
339
|
+
|
|
340
|
+
inline auto Properties (TopoDS_Shape shape)
|
|
341
|
+
{
|
|
342
|
+
GProp_GProps props;
|
|
343
|
+
double tol;
|
|
344
|
+
switch (shape.ShapeType())
|
|
345
|
+
{
|
|
346
|
+
case TopAbs_SOLID:
|
|
347
|
+
case TopAbs_COMPOUND:
|
|
348
|
+
case TopAbs_COMPSOLID:
|
|
349
|
+
tol = 1e-2 * BRep_Tool::MaxTolerance(shape, TopAbs_FACE);
|
|
350
|
+
BRepGProp::VolumeProperties (shape, props, tol); break;
|
|
351
|
+
case TopAbs_FACE:
|
|
352
|
+
case TopAbs_SHELL:
|
|
353
|
+
tol = 1e-2 * BRep_Tool::MaxTolerance(shape, TopAbs_FACE);
|
|
354
|
+
BRepGProp::SurfaceProperties (shape, props, tol); break;
|
|
355
|
+
case TopAbs_WIRE:
|
|
356
|
+
case TopAbs_EDGE:
|
|
357
|
+
tol = 1e-2 * BRep_Tool::MaxTolerance(shape, TopAbs_EDGE);
|
|
358
|
+
BRepGProp::LinearProperties(shape, props, tol); break;
|
|
359
|
+
default:
|
|
360
|
+
BRepGProp::LinearProperties(shape, props);
|
|
361
|
+
}
|
|
362
|
+
return props;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
inline gp_Pnt Center (TopoDS_Shape shape)
|
|
366
|
+
{
|
|
367
|
+
return Properties(shape).CentreOfMass();
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
inline double Mass (TopoDS_Shape shape)
|
|
371
|
+
{
|
|
372
|
+
return Properties(shape).Mass();
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
}
|
|
376
|
+
#endif // FILE_OCC_UTILS_INCLUDED
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#ifndef FILE_OCC_VERTEX_INCLUDED
|
|
2
|
+
#define FILE_OCC_VERTEX_INCLUDED
|
|
3
|
+
|
|
4
|
+
// #pragma clang diagnostic push
|
|
5
|
+
// #pragma clang diagnostic ignored "-Wdeprecated-declarations"
|
|
6
|
+
|
|
7
|
+
#include <TopoDS.hxx>
|
|
8
|
+
#include <BRep_TVertex.hxx>
|
|
9
|
+
|
|
10
|
+
// #pragma clang diagnostic pop
|
|
11
|
+
|
|
12
|
+
#include "meshing.hpp"
|
|
13
|
+
#include "occ_utils.hpp"
|
|
14
|
+
|
|
15
|
+
namespace netgen
|
|
16
|
+
{
|
|
17
|
+
class OCCVertex : public GeometryVertex
|
|
18
|
+
{
|
|
19
|
+
TopoDS_Vertex vertex;
|
|
20
|
+
Point<3> p;
|
|
21
|
+
|
|
22
|
+
public:
|
|
23
|
+
OCCVertex( ) = default;
|
|
24
|
+
OCCVertex( TopoDS_Shape s );
|
|
25
|
+
~OCCVertex() {}
|
|
26
|
+
Point<3> GetPoint() const override;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
#endif // FILE_OCC_VERTEX_INCLUDED
|