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.
Files changed (340) hide show
  1. netgen/NgOCC.py +7 -0
  2. netgen/__init__.py +114 -0
  3. netgen/__init__.pyi +22 -0
  4. netgen/__main__.py +53 -0
  5. netgen/cmake/NetgenConfig.cmake +79 -0
  6. netgen/cmake/netgen-targets-release.cmake +69 -0
  7. netgen/cmake/netgen-targets.cmake +146 -0
  8. netgen/config/__init__.py +1 -0
  9. netgen/config/__init__.pyi +52 -0
  10. netgen/config/__main__.py +4 -0
  11. netgen/config/config.py +68 -0
  12. netgen/config/config.pyi +54 -0
  13. netgen/csg.py +25 -0
  14. netgen/geom2d.py +178 -0
  15. netgen/gui.py +82 -0
  16. netgen/include/core/archive.hpp +1256 -0
  17. netgen/include/core/array.hpp +1760 -0
  18. netgen/include/core/autodiff.hpp +1131 -0
  19. netgen/include/core/autodiffdiff.hpp +733 -0
  20. netgen/include/core/bitarray.hpp +240 -0
  21. netgen/include/core/concurrentqueue.h +3619 -0
  22. netgen/include/core/exception.hpp +145 -0
  23. netgen/include/core/flags.hpp +199 -0
  24. netgen/include/core/hashtable.hpp +1281 -0
  25. netgen/include/core/localheap.hpp +318 -0
  26. netgen/include/core/logging.hpp +117 -0
  27. netgen/include/core/memtracer.hpp +221 -0
  28. netgen/include/core/mpi4py_pycapi.h +245 -0
  29. netgen/include/core/mpi_wrapper.hpp +643 -0
  30. netgen/include/core/ng_mpi.hpp +94 -0
  31. netgen/include/core/ng_mpi_generated_declarations.hpp +155 -0
  32. netgen/include/core/ng_mpi_native.hpp +25 -0
  33. netgen/include/core/ngcore.hpp +32 -0
  34. netgen/include/core/ngcore_api.hpp +152 -0
  35. netgen/include/core/ngstream.hpp +115 -0
  36. netgen/include/core/paje_trace.hpp +279 -0
  37. netgen/include/core/profiler.hpp +382 -0
  38. netgen/include/core/python_ngcore.hpp +457 -0
  39. netgen/include/core/ranges.hpp +109 -0
  40. netgen/include/core/register_archive.hpp +100 -0
  41. netgen/include/core/signal.hpp +82 -0
  42. netgen/include/core/simd.hpp +160 -0
  43. netgen/include/core/simd_arm64.hpp +407 -0
  44. netgen/include/core/simd_avx.hpp +394 -0
  45. netgen/include/core/simd_avx512.hpp +285 -0
  46. netgen/include/core/simd_generic.hpp +1053 -0
  47. netgen/include/core/simd_math.hpp +178 -0
  48. netgen/include/core/simd_sse.hpp +289 -0
  49. netgen/include/core/statushandler.hpp +37 -0
  50. netgen/include/core/symboltable.hpp +153 -0
  51. netgen/include/core/table.hpp +810 -0
  52. netgen/include/core/taskmanager.hpp +1161 -0
  53. netgen/include/core/type_traits.hpp +65 -0
  54. netgen/include/core/utils.hpp +385 -0
  55. netgen/include/core/version.hpp +102 -0
  56. netgen/include/core/xbool.hpp +47 -0
  57. netgen/include/csg/algprim.hpp +563 -0
  58. netgen/include/csg/brick.hpp +150 -0
  59. netgen/include/csg/csg.hpp +43 -0
  60. netgen/include/csg/csgeom.hpp +389 -0
  61. netgen/include/csg/csgparser.hpp +101 -0
  62. netgen/include/csg/curve2d.hpp +67 -0
  63. netgen/include/csg/edgeflw.hpp +112 -0
  64. netgen/include/csg/explicitcurve2d.hpp +113 -0
  65. netgen/include/csg/extrusion.hpp +185 -0
  66. netgen/include/csg/gencyl.hpp +70 -0
  67. netgen/include/csg/geoml.hpp +16 -0
  68. netgen/include/csg/identify.hpp +213 -0
  69. netgen/include/csg/manifold.hpp +29 -0
  70. netgen/include/csg/meshsurf.hpp +46 -0
  71. netgen/include/csg/polyhedra.hpp +121 -0
  72. netgen/include/csg/revolution.hpp +180 -0
  73. netgen/include/csg/singularref.hpp +84 -0
  74. netgen/include/csg/solid.hpp +295 -0
  75. netgen/include/csg/specpoin.hpp +194 -0
  76. netgen/include/csg/spline3d.hpp +99 -0
  77. netgen/include/csg/splinesurface.hpp +85 -0
  78. netgen/include/csg/surface.hpp +394 -0
  79. netgen/include/csg/triapprox.hpp +63 -0
  80. netgen/include/csg/vscsg.hpp +34 -0
  81. netgen/include/general/autodiff.hpp +356 -0
  82. netgen/include/general/autoptr.hpp +39 -0
  83. netgen/include/general/gzstream.h +121 -0
  84. netgen/include/general/hashtabl.hpp +1692 -0
  85. netgen/include/general/myadt.hpp +48 -0
  86. netgen/include/general/mystring.hpp +226 -0
  87. netgen/include/general/netgenout.hpp +205 -0
  88. netgen/include/general/ngarray.hpp +797 -0
  89. netgen/include/general/ngbitarray.hpp +149 -0
  90. netgen/include/general/ngpython.hpp +74 -0
  91. netgen/include/general/optmem.hpp +44 -0
  92. netgen/include/general/parthreads.hpp +138 -0
  93. netgen/include/general/seti.hpp +50 -0
  94. netgen/include/general/sort.hpp +47 -0
  95. netgen/include/general/spbita2d.hpp +59 -0
  96. netgen/include/general/stack.hpp +114 -0
  97. netgen/include/general/table.hpp +280 -0
  98. netgen/include/general/template.hpp +509 -0
  99. netgen/include/geom2d/csg2d.hpp +750 -0
  100. netgen/include/geom2d/geometry2d.hpp +280 -0
  101. netgen/include/geom2d/spline2d.hpp +234 -0
  102. netgen/include/geom2d/vsgeom2d.hpp +28 -0
  103. netgen/include/gprim/adtree.hpp +1392 -0
  104. netgen/include/gprim/geom2d.hpp +858 -0
  105. netgen/include/gprim/geom3d.hpp +749 -0
  106. netgen/include/gprim/geomfuncs.hpp +212 -0
  107. netgen/include/gprim/geomobjects.hpp +544 -0
  108. netgen/include/gprim/geomops.hpp +404 -0
  109. netgen/include/gprim/geomtest3d.hpp +101 -0
  110. netgen/include/gprim/gprim.hpp +33 -0
  111. netgen/include/gprim/spline.hpp +778 -0
  112. netgen/include/gprim/splinegeometry.hpp +73 -0
  113. netgen/include/gprim/transform3d.hpp +216 -0
  114. netgen/include/include/acisgeom.hpp +3 -0
  115. netgen/include/include/csg.hpp +1 -0
  116. netgen/include/include/geometry2d.hpp +1 -0
  117. netgen/include/include/gprim.hpp +1 -0
  118. netgen/include/include/incopengl.hpp +62 -0
  119. netgen/include/include/inctcl.hpp +13 -0
  120. netgen/include/include/incvis.hpp +6 -0
  121. netgen/include/include/linalg.hpp +1 -0
  122. netgen/include/include/meshing.hpp +1 -0
  123. netgen/include/include/myadt.hpp +1 -0
  124. netgen/include/include/mydefs.hpp +70 -0
  125. netgen/include/include/mystdlib.h +59 -0
  126. netgen/include/include/netgen_config.hpp +27 -0
  127. netgen/include/include/netgen_version.hpp +9 -0
  128. netgen/include/include/nginterface_v2_impl.hpp +395 -0
  129. netgen/include/include/ngsimd.hpp +1 -0
  130. netgen/include/include/occgeom.hpp +1 -0
  131. netgen/include/include/opti.hpp +1 -0
  132. netgen/include/include/parallel.hpp +1 -0
  133. netgen/include/include/stlgeom.hpp +1 -0
  134. netgen/include/include/visual.hpp +1 -0
  135. netgen/include/interface/rw_medit.hpp +11 -0
  136. netgen/include/interface/writeuser.hpp +80 -0
  137. netgen/include/linalg/densemat.hpp +414 -0
  138. netgen/include/linalg/linalg.hpp +29 -0
  139. netgen/include/linalg/opti.hpp +142 -0
  140. netgen/include/linalg/polynomial.hpp +47 -0
  141. netgen/include/linalg/vector.hpp +217 -0
  142. netgen/include/meshing/adfront2.hpp +274 -0
  143. netgen/include/meshing/adfront3.hpp +332 -0
  144. netgen/include/meshing/basegeom.hpp +370 -0
  145. netgen/include/meshing/bcfunctions.hpp +53 -0
  146. netgen/include/meshing/bisect.hpp +72 -0
  147. netgen/include/meshing/boundarylayer.hpp +113 -0
  148. netgen/include/meshing/classifyhpel.hpp +1984 -0
  149. netgen/include/meshing/clusters.hpp +46 -0
  150. netgen/include/meshing/curvedelems.hpp +274 -0
  151. netgen/include/meshing/delaunay2d.hpp +73 -0
  152. netgen/include/meshing/fieldlines.hpp +103 -0
  153. netgen/include/meshing/findip.hpp +198 -0
  154. netgen/include/meshing/findip2.hpp +103 -0
  155. netgen/include/meshing/geomsearch.hpp +69 -0
  156. netgen/include/meshing/global.hpp +54 -0
  157. netgen/include/meshing/hpref_hex.hpp +330 -0
  158. netgen/include/meshing/hpref_prism.hpp +3405 -0
  159. netgen/include/meshing/hpref_pyramid.hpp +154 -0
  160. netgen/include/meshing/hpref_quad.hpp +2082 -0
  161. netgen/include/meshing/hpref_segm.hpp +122 -0
  162. netgen/include/meshing/hpref_tet.hpp +4230 -0
  163. netgen/include/meshing/hpref_trig.hpp +848 -0
  164. netgen/include/meshing/hprefinement.hpp +366 -0
  165. netgen/include/meshing/improve2.hpp +178 -0
  166. netgen/include/meshing/improve3.hpp +151 -0
  167. netgen/include/meshing/localh.hpp +223 -0
  168. netgen/include/meshing/meshclass.hpp +1076 -0
  169. netgen/include/meshing/meshfunc.hpp +47 -0
  170. netgen/include/meshing/meshing.hpp +63 -0
  171. netgen/include/meshing/meshing2.hpp +163 -0
  172. netgen/include/meshing/meshing3.hpp +123 -0
  173. netgen/include/meshing/meshtool.hpp +90 -0
  174. netgen/include/meshing/meshtype.hpp +1930 -0
  175. netgen/include/meshing/msghandler.hpp +62 -0
  176. netgen/include/meshing/paralleltop.hpp +172 -0
  177. netgen/include/meshing/python_mesh.hpp +206 -0
  178. netgen/include/meshing/ruler2.hpp +172 -0
  179. netgen/include/meshing/ruler3.hpp +211 -0
  180. netgen/include/meshing/soldata.hpp +141 -0
  181. netgen/include/meshing/specials.hpp +17 -0
  182. netgen/include/meshing/surfacegeom.hpp +73 -0
  183. netgen/include/meshing/topology.hpp +1003 -0
  184. netgen/include/meshing/validate.hpp +21 -0
  185. netgen/include/meshing/visual_interface.hpp +71 -0
  186. netgen/include/mydefs.hpp +70 -0
  187. netgen/include/nginterface.h +474 -0
  188. netgen/include/nginterface_v2.hpp +406 -0
  189. netgen/include/nglib.h +697 -0
  190. netgen/include/nglib_occ.h +50 -0
  191. netgen/include/occ/occ_edge.hpp +47 -0
  192. netgen/include/occ/occ_face.hpp +52 -0
  193. netgen/include/occ/occ_solid.hpp +23 -0
  194. netgen/include/occ/occ_utils.hpp +376 -0
  195. netgen/include/occ/occ_vertex.hpp +30 -0
  196. netgen/include/occ/occgeom.hpp +659 -0
  197. netgen/include/occ/occmeshsurf.hpp +168 -0
  198. netgen/include/occ/vsocc.hpp +33 -0
  199. netgen/include/pybind11/LICENSE +29 -0
  200. netgen/include/pybind11/attr.h +722 -0
  201. netgen/include/pybind11/buffer_info.h +208 -0
  202. netgen/include/pybind11/cast.h +2361 -0
  203. netgen/include/pybind11/chrono.h +228 -0
  204. netgen/include/pybind11/common.h +2 -0
  205. netgen/include/pybind11/complex.h +74 -0
  206. netgen/include/pybind11/conduit/README.txt +15 -0
  207. netgen/include/pybind11/conduit/pybind11_conduit_v1.h +116 -0
  208. netgen/include/pybind11/conduit/pybind11_platform_abi_id.h +87 -0
  209. netgen/include/pybind11/conduit/wrap_include_python_h.h +72 -0
  210. netgen/include/pybind11/critical_section.h +56 -0
  211. netgen/include/pybind11/detail/class.h +823 -0
  212. netgen/include/pybind11/detail/common.h +1348 -0
  213. netgen/include/pybind11/detail/cpp_conduit.h +75 -0
  214. netgen/include/pybind11/detail/descr.h +226 -0
  215. netgen/include/pybind11/detail/dynamic_raw_ptr_cast_if_possible.h +39 -0
  216. netgen/include/pybind11/detail/exception_translation.h +71 -0
  217. netgen/include/pybind11/detail/function_record_pyobject.h +191 -0
  218. netgen/include/pybind11/detail/init.h +538 -0
  219. netgen/include/pybind11/detail/internals.h +799 -0
  220. netgen/include/pybind11/detail/native_enum_data.h +209 -0
  221. netgen/include/pybind11/detail/pybind11_namespace_macros.h +82 -0
  222. netgen/include/pybind11/detail/struct_smart_holder.h +378 -0
  223. netgen/include/pybind11/detail/type_caster_base.h +1591 -0
  224. netgen/include/pybind11/detail/typeid.h +65 -0
  225. netgen/include/pybind11/detail/using_smart_holder.h +22 -0
  226. netgen/include/pybind11/detail/value_and_holder.h +90 -0
  227. netgen/include/pybind11/eigen/common.h +9 -0
  228. netgen/include/pybind11/eigen/matrix.h +723 -0
  229. netgen/include/pybind11/eigen/tensor.h +521 -0
  230. netgen/include/pybind11/eigen.h +12 -0
  231. netgen/include/pybind11/embed.h +320 -0
  232. netgen/include/pybind11/eval.h +161 -0
  233. netgen/include/pybind11/functional.h +147 -0
  234. netgen/include/pybind11/gil.h +199 -0
  235. netgen/include/pybind11/gil_safe_call_once.h +102 -0
  236. netgen/include/pybind11/gil_simple.h +37 -0
  237. netgen/include/pybind11/iostream.h +265 -0
  238. netgen/include/pybind11/native_enum.h +67 -0
  239. netgen/include/pybind11/numpy.h +2312 -0
  240. netgen/include/pybind11/operators.h +202 -0
  241. netgen/include/pybind11/options.h +92 -0
  242. netgen/include/pybind11/pybind11.h +3645 -0
  243. netgen/include/pybind11/pytypes.h +2680 -0
  244. netgen/include/pybind11/stl/filesystem.h +114 -0
  245. netgen/include/pybind11/stl.h +666 -0
  246. netgen/include/pybind11/stl_bind.h +858 -0
  247. netgen/include/pybind11/subinterpreter.h +299 -0
  248. netgen/include/pybind11/trampoline_self_life_support.h +65 -0
  249. netgen/include/pybind11/type_caster_pyobject_ptr.h +61 -0
  250. netgen/include/pybind11/typing.h +298 -0
  251. netgen/include/pybind11/warnings.h +75 -0
  252. netgen/include/stlgeom/meshstlsurface.hpp +67 -0
  253. netgen/include/stlgeom/stlgeom.hpp +491 -0
  254. netgen/include/stlgeom/stlline.hpp +193 -0
  255. netgen/include/stlgeom/stltool.hpp +331 -0
  256. netgen/include/stlgeom/stltopology.hpp +419 -0
  257. netgen/include/stlgeom/vsstl.hpp +58 -0
  258. netgen/include/visualization/meshdoc.hpp +42 -0
  259. netgen/include/visualization/mvdraw.hpp +325 -0
  260. netgen/include/visualization/vispar.hpp +128 -0
  261. netgen/include/visualization/visual.hpp +28 -0
  262. netgen/include/visualization/visual_api.hpp +10 -0
  263. netgen/include/visualization/vssolution.hpp +399 -0
  264. netgen/lib/libnggui.lib +0 -0
  265. netgen/lib/ngcore.lib +0 -0
  266. netgen/lib/nglib.lib +0 -0
  267. netgen/lib/togl.lib +0 -0
  268. netgen/libnggui.dll +0 -0
  269. netgen/libngguipy.lib +0 -0
  270. netgen/libngguipy.pyd +0 -0
  271. netgen/libngpy/_NgOCC.pyi +1545 -0
  272. netgen/libngpy/__init__.pyi +7 -0
  273. netgen/libngpy/_csg.pyi +259 -0
  274. netgen/libngpy/_geom2d.pyi +323 -0
  275. netgen/libngpy/_meshing.pyi +1111 -0
  276. netgen/libngpy/_stl.pyi +131 -0
  277. netgen/libngpy.lib +0 -0
  278. netgen/libngpy.pyd +0 -0
  279. netgen/meshing.py +65 -0
  280. netgen/ngcore.dll +0 -0
  281. netgen/nglib.dll +0 -0
  282. netgen/occ.py +52 -0
  283. netgen/read_gmsh.py +259 -0
  284. netgen/read_meshio.py +22 -0
  285. netgen/stl.py +2 -0
  286. netgen/togl.dll +0 -0
  287. netgen/version.py +2 -0
  288. netgen/webgui.py +529 -0
  289. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/boundarycondition.geo +16 -0
  290. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/boxcyl.geo +32 -0
  291. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/circle_on_cube.geo +27 -0
  292. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cone.geo +13 -0
  293. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cube.geo +16 -0
  294. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubeandring.geo +55 -0
  295. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubeandspheres.geo +21 -0
  296. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubemcyl.geo +18 -0
  297. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cubemsphere.geo +19 -0
  298. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cylinder.geo +12 -0
  299. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/cylsphere.geo +12 -0
  300. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/doc/ng4.pdf +0 -0
  301. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/ellipsoid.geo +8 -0
  302. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/ellipticcyl.geo +10 -0
  303. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/extrusion.geo +99 -0
  304. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/fichera.geo +24 -0
  305. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/frame.step +11683 -0
  306. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/hinge.stl +8486 -0
  307. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/lshape3d.geo +26 -0
  308. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/manyholes.geo +26 -0
  309. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/manyholes2.geo +26 -0
  310. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/matrix.geo +27 -0
  311. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/ortho.geo +11 -0
  312. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/part1.stl +2662 -0
  313. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/period.geo +33 -0
  314. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/py_tutorials/exportNeutral.py +26 -0
  315. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/py_tutorials/mesh.py +19 -0
  316. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/py_tutorials/shaft.geo +65 -0
  317. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/revolution.geo +18 -0
  318. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/screw.step +1694 -0
  319. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/sculpture.geo +13 -0
  320. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/shaft.geo +65 -0
  321. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/shell.geo +10 -0
  322. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/sphere.geo +8 -0
  323. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/sphereincube.geo +17 -0
  324. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/square.in2d +35 -0
  325. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/squarecircle.in2d +48 -0
  326. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/squarehole.in2d +47 -0
  327. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/torus.geo +8 -0
  328. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/trafo.geo +57 -0
  329. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/twobricks.geo +15 -0
  330. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/twocubes.geo +18 -0
  331. netgen_mesher-6.2.2506.post35.dev0.data/data/share/netgen/twocyl.geo +16 -0
  332. netgen_mesher-6.2.2506.post35.dev0.dist-info/METADATA +15 -0
  333. netgen_mesher-6.2.2506.post35.dev0.dist-info/RECORD +340 -0
  334. netgen_mesher-6.2.2506.post35.dev0.dist-info/WHEEL +5 -0
  335. netgen_mesher-6.2.2506.post35.dev0.dist-info/entry_points.txt +2 -0
  336. netgen_mesher-6.2.2506.post35.dev0.dist-info/licenses/AUTHORS +1 -0
  337. netgen_mesher-6.2.2506.post35.dev0.dist-info/licenses/LICENSE +504 -0
  338. netgen_mesher-6.2.2506.post35.dev0.dist-info/top_level.txt +2 -0
  339. pyngcore/__init__.py +1 -0
  340. pyngcore/pyngcore.cp314-win_amd64.pyd +0 -0
@@ -0,0 +1,419 @@
1
+ #ifndef FILE_STLTOPOLOGY
2
+ #define FILE_STLTOPOLOGY
3
+
4
+ /**************************************************************************/
5
+ /* File: stltopology.hpp */
6
+ /* Author: Joachim Schoeberl */
7
+ /* Author2: Johannes Gerstmayr */
8
+ /* Date: 26. Jul. 99 */
9
+ /**************************************************************************/
10
+
11
+ /*
12
+ The STLTopology contains topologic information as
13
+ triangle->point, point->triangles, triangle->edge, 2-points->edge,...
14
+ */
15
+
16
+
17
+ namespace netgen {
18
+
19
+ class STLGeometry;
20
+
21
+ // #define STLBASE 1
22
+
23
+ class STLPointId
24
+ {
25
+ int i;
26
+ public:
27
+ STLPointId () { ; }
28
+ constexpr STLPointId (int ai) : i(ai) { ; }
29
+ STLPointId & operator= (const STLPointId & ai) { i = ai.i; return *this; }
30
+ STLPointId & operator= (int ai) { i = ai; return *this; }
31
+ constexpr operator int () const { return i; }
32
+ STLPointId operator++ (int) { return STLPointId(i++); }
33
+ STLPointId operator-- (int) { return STLPointId(i--); }
34
+ STLPointId & operator++ () { ++i; return *this; }
35
+ STLPointId & operator-- () { --i; return *this; }
36
+
37
+ void DoArchive(Archive& ar) { ar & i; }
38
+ };
39
+
40
+
41
+
42
+ class STLTrigId
43
+ {
44
+ int i;
45
+ public:
46
+ STLTrigId () { ; }
47
+ constexpr STLTrigId (int ai) : i(ai) { ; }
48
+ STLTrigId & operator= (const STLTrigId & ai) { i = ai.i; return *this; }
49
+ STLTrigId & operator= (int ai) { i = ai; return *this; }
50
+ constexpr operator int () const { return i; }
51
+
52
+ STLTrigId operator++ (int) { return STLTrigId(i++); }
53
+ STLTrigId operator-- (int) { return STLTrigId(i--); }
54
+ STLTrigId & operator++ () { ++i; return *this; }
55
+ STLTrigId & operator-- () { --i; return *this; }
56
+
57
+ int operator- (STLTrigId i2) const { return i-i2.i; }
58
+ };
59
+
60
+ inline void SetInvalid (STLTrigId & id) { id = 0; }
61
+ inline bool IsInvalid (STLTrigId & id) { return id == 0; }
62
+
63
+ }
64
+
65
+
66
+ namespace ngcore
67
+ {
68
+ template<>
69
+ constexpr netgen::STLPointId IndexBASE<netgen::STLPointId> () { return netgen::STLPointId(1); }
70
+ template<>
71
+ constexpr netgen::STLTrigId IndexBASE<netgen::STLTrigId> () { return netgen::STLTrigId(1); }
72
+ }
73
+
74
+
75
+
76
+ namespace netgen {
77
+
78
+
79
+ // triangle structure for loading stl files
80
+ class STLReadTriangle
81
+ {
82
+ Vec<3> normal;
83
+ Point<3> pts[3];
84
+ public:
85
+ STLReadTriangle (const Point<3> * apts, const Vec<3> & anormal);
86
+ STLReadTriangle () {};
87
+ const Point<3> & operator[] (int i) const { return pts[i]; }
88
+ const Vec<3> & Normal() const { return normal; }
89
+ };
90
+
91
+
92
+
93
+ class STLTriangle
94
+ {
95
+ // topology edges of triangle, edge[i] opposite to point[i]
96
+ int topedges[3];
97
+ // neighbour triangles, trig[i] opposite to point[i]
98
+ int nbtrigs[2][3];
99
+ // normalized stored normal vector ??
100
+ Vec<3> normal;
101
+ // point numbers of triangle
102
+ STLPointId pts[3];
103
+ // front-side and back-side domains
104
+ int domains[2];
105
+
106
+
107
+ public:
108
+
109
+ Box<3> box;
110
+ Point<3> center;
111
+ double rad;
112
+ int facenum;
113
+
114
+ struct
115
+ {
116
+ unsigned int toperror : 1;
117
+ } flags;
118
+
119
+
120
+
121
+
122
+ STLTriangle (const STLPointId * apts);
123
+ STLTriangle ()
124
+ {
125
+ pts[0]=0;pts[1]=0;pts[2]=0;
126
+ nbtrigs[0][0] = nbtrigs[0][1] = nbtrigs[0][2] = 0.;
127
+ nbtrigs[1][0] = nbtrigs[1][1] = nbtrigs[1][2] = 0.;
128
+ }
129
+
130
+ void DoArchive(Archive& ar)
131
+ {
132
+ ar.Do(&topedges[0],3);
133
+ ar.Do(&nbtrigs[0][0], 6);
134
+ // ar.Do(&pts[0],3);
135
+ ar & pts[0] & pts[1] & pts[2];
136
+ ar.Do(&domains[0],2);
137
+ size_t i = flags.toperror;
138
+ ar & normal & box & center & rad & facenum & i;
139
+ flags.toperror = i;
140
+ }
141
+
142
+ STLPointId operator[] (int i) const { return pts[i]; }
143
+ STLPointId & operator[] (int i) { return pts[i]; }
144
+
145
+ int EdgeNum(int i) const { return topedges[(i-1)]; }
146
+ int & EdgeNum(int i) { return topedges[(i-1)]; }
147
+
148
+ int NBTrig (bool side, int i) const { return nbtrigs[side][i]; }
149
+ int & NBTrig (bool side, int i) { return nbtrigs[side][i]; }
150
+
151
+
152
+ int Domain (bool side) const { return domains[side]; }
153
+ int & Domain (bool side) { return domains[side]; }
154
+
155
+
156
+
157
+ // obsolete:
158
+ STLPointId PNum(int i) const { return pts[(i-1)]; }
159
+ STLPointId & PNum(int i) { return pts[(i-1)]; }
160
+ STLPointId PNumMod(int i) const { return pts[(i-1)%3]; }
161
+ STLPointId & PNumMod(int i) { return pts[(i-1)%3]; }
162
+ FlatArray<const STLPointId> PNums() const { return { 3, pts }; }
163
+
164
+
165
+ int EdgeNumMod(int i) const { return topedges[(i-1)%3]; }
166
+ int & EdgeNumMod(int i) { return topedges[(i-1)%3]; }
167
+
168
+ int NBTrigNum(int i) const { return nbtrigs[0][(i-1)]; }
169
+ int & NBTrigNum(int i) { return nbtrigs[0][(i-1)]; }
170
+ int NBTrigNumMod(int i) const { return nbtrigs[0][(i-1)%3]; }
171
+ int & NBTrigNumMod(int i) { return nbtrigs[0][(i-1)%3]; }
172
+
173
+
174
+ // consistently oriented neighbour:
175
+ int IsNeighbourFrom(const STLTriangle& t) const;
176
+ // opposite to consistently oriented neighbour:
177
+ int IsWrongNeighbourFrom(const STLTriangle& t) const;
178
+
179
+ ///Get the two points of neighbour-Triangles in orientation of this-Triangle
180
+ void GetNeighbourPoints(const STLTriangle& t, STLPointId & p1, STLPointId & p2) const;
181
+ int GetNeighbourPointsAndOpposite(const STLTriangle& t, STLPointId & p1, STLPointId & p2, STLPointId & po) const;
182
+
183
+
184
+
185
+ // NON-normalized geometry - normal vector
186
+ Vec<3> GeomNormal(const Array<Point<3>,STLPointId>& ap) const;
187
+
188
+ // Stored normal vector, normalized
189
+ void SetNormal (const Vec<3> & n);
190
+ const Vec<3> & Normal () const { return normal; }
191
+
192
+
193
+ void ChangeOrientation();
194
+
195
+ //project with a certain normal vector in plane
196
+ void ProjectInPlain(const Array<Point<3>, STLPointId>& ap,
197
+ const Vec<3> & n, Point<3> & pp) const;
198
+ //project with the triangle's normal vector in plane
199
+ void ProjectInPlain(const Array<Point<3>, STLPointId> & ap, Point<3> & pp) const;
200
+
201
+
202
+ /*
203
+ Project the point pp along the nproj into the plane of
204
+ the triangle. The triangle normal is given by ntrig to
205
+ avoid numerical instabilities.
206
+ The local coordinates lam are defined by
207
+
208
+ pp(input) = P1 + lam1 v1 + lam2 v2 + lam3 n
209
+
210
+ the result is
211
+
212
+ pp(output) = P1 + lam1 v1 + lam2 v2
213
+ */
214
+ int ProjectInPlain (const Array<Point<3>,STLPointId>& ap,
215
+ const Vec<3> & nproj,
216
+ Point<3> & pp, Vec<3> & lam) const;
217
+
218
+ bool PointInside(const Array<Point<3>,STLPointId>& ap, const Point<3> & pp) const;
219
+
220
+ //get nearest point on triangle and distance to it
221
+ double GetNearestPoint(const Array<Point<3>,STLPointId>& ap,
222
+ Point<3> & p3d) const;
223
+
224
+ double Area(const Array<Point<3>,STLPointId>& ap) const;
225
+
226
+ double MinHeight(const Array<Point<3>,STLPointId>& ap) const;
227
+ double MaxLength(const Array<Point<3>,STLPointId>& ap) const;
228
+ //max length of a side of triangle
229
+
230
+ int GetFaceNum() {return facenum;}
231
+ void SetFaceNum(int i) {facenum = i;}
232
+
233
+ bool HasEdge(STLPointId p1, STLPointId p2) const;
234
+ };
235
+
236
+
237
+ /**
238
+ Topology Edge:
239
+ Useful unside a face.
240
+ A edges sharing more than 2 faces: trigs are undefined
241
+ */
242
+ class STLTopEdge
243
+ {
244
+ STLPointId pts[2];
245
+ int trigs[2];
246
+ double cosangle;
247
+ int status; // excluded, confirmed, candidate, undefined
248
+ public:
249
+ STLTopEdge ();
250
+ STLTopEdge (STLPointId p1, STLPointId p2, int trig1, int trig2);
251
+
252
+ STLPointId operator[] (int i) const { return pts[i]; }
253
+ STLPointId & operator[] (int i) { return pts[i]; }
254
+
255
+
256
+ STLPointId PNum(int i) const { return pts[(i-1)]; }
257
+ STLPointId & PNum(int i) { return pts[(i-1)]; }
258
+ STLPointId PNumMod(int i) const { return pts[(i-1)%2]; }
259
+ STLPointId & PNumMod(int i) { return pts[(i-1)%2]; }
260
+
261
+ int TrigNum(int i) const { return trigs[(i-1)]; }
262
+ int & TrigNum(int i) { return trigs[(i-1)]; }
263
+ int TrigNumMod(int i) const { return trigs[(i-1)%2]; }
264
+ int & TrigNumMod(int i) { return trigs[(i-1)%2]; }
265
+
266
+ void SetCosAngle (double ca) { cosangle = ca; }
267
+ double CosAngle () const { return cosangle; }
268
+ double Angle () const { return acos (cosangle); }
269
+
270
+ void SetStatus (int stat) { status = stat; }
271
+ int GetStatus () const { return status; }
272
+ };
273
+
274
+
275
+
276
+ ostream& operator<<(ostream& os, const STLTriangle& t);
277
+
278
+
279
+
280
+
281
+
282
+
283
+
284
+ class STLTopology
285
+ {
286
+ protected:
287
+ Array<STLTriangle, STLTrigId> trias;
288
+ NgArray<STLTopEdge> topedges;
289
+ Array<Point<3>, STLPointId> points;
290
+ bool surface = false;
291
+
292
+ // mapping of sorted pair of points to topedge
293
+ INDEX_2_HASHTABLE<int> * ht_topedges;
294
+ // mapping of node to trigs
295
+ TABLE<int, IndexBASE<STLPointId>()> trigsperpoint;
296
+ // mapping of node to edges
297
+ TABLE<int> topedgesperpoint;
298
+
299
+ // searchtree for trigs and points
300
+
301
+ BoxTree<3> * searchtree; // ADT
302
+ Point3dTree * pointtree;
303
+
304
+ Box<3> boundingbox;
305
+ double pointtol;
306
+
307
+ public:
308
+ enum STL_GEOM_STATUS { STL_GOOD, STL_WARNING, STL_ERROR };
309
+
310
+ protected:
311
+ STL_GEOM_STATUS status;
312
+ string statustext;
313
+
314
+ bool topology_ok;
315
+ bool orientation_ok;
316
+
317
+ public:
318
+ STLTopology();
319
+ virtual ~STLTopology();
320
+
321
+ static STLGeometry * LoadNaomi (istream & ist);
322
+ DLL_HEADER static STLGeometry * Load (istream & ist, bool surface=false);
323
+ static STLGeometry * LoadBinary (istream & ist);
324
+
325
+ void Save (const filesystem::path & filename) const;
326
+ void SaveBinary (const filesystem::path & filename, const char* aname) const;
327
+ void SaveSTLE (const filesystem::path & filename) const; // stores trigs and edges
328
+
329
+ bool IsSurfaceSTL() const { return surface; }
330
+ void SetSurfaceSTL( bool surface_ ) { surface = surface_; }
331
+
332
+ virtual void DoArchive(Archive& ar)
333
+ {
334
+ ar & trias & points & boundingbox & pointtol;
335
+ if(ar.Input())
336
+ FindNeighbourTrigs();
337
+ }
338
+
339
+ virtual void InitSTLGeometry (const NgArray<STLReadTriangle> & readtrigs);
340
+
341
+ virtual void TopologyChanged() {}; //do some things, if topology changed!
342
+
343
+ /// Generate topology tables
344
+ void FindNeighbourTrigs();
345
+
346
+
347
+ void GetTrianglesInBox (const Box<3> & box,
348
+ NgArray<int> & trias) const;
349
+
350
+
351
+ int GetNP() const { return points.Size(); }
352
+ int AddPoint(const Point<3> & p) { points.Append(p); return points.Size(); }
353
+ const Point<3> & GetPoint(STLPointId nr) const { return points[nr]; } // .Get(nr); }
354
+ int GetPointNum (const Point<3> & p);
355
+ void SetPoint(STLPointId nr, const Point<3> & p) { points[nr] = p; } // { points.Elem(nr) = p; }
356
+ auto & GetPoints() const { return points; }
357
+
358
+ const Point<3> & operator[] (STLPointId i) const { return points[i]; }
359
+ Point<3> & operator[] (STLPointId i) { return points[i]; }
360
+
361
+
362
+
363
+
364
+ int GetNT() const { return trias.Size(); }
365
+ void AddTriangle(const STLTriangle& t);
366
+ const STLTriangle & GetTriangle (STLTrigId nr) const { return trias[nr]; } // .Get(nr); }
367
+ STLTriangle & GetTriangle (STLTrigId nr) { return trias[nr]; } // .Elem(nr); }
368
+
369
+ const STLTriangle & operator[] (STLTrigId i) const { return trias[i]; }
370
+ STLTriangle & operator[] (STLTrigId i) { return trias[i]; }
371
+
372
+
373
+ int GetNTE() const { return topedges.Size(); }
374
+ const STLTopEdge & GetTopEdge (int nr) const { return topedges.Get(nr); }
375
+ STLTopEdge & GetTopEdge (int nr) { return topedges.Elem(nr); }
376
+ DLL_HEADER int GetTopEdgeNum (int pi1, int pi2) const;
377
+
378
+
379
+ int NOTrigsPerPoint(int pn) { return trigsperpoint.EntrySize(pn); }
380
+ int TrigPerPoint(int pn, int i) { return trigsperpoint.Get(pn, i); }
381
+
382
+
383
+ int NTopEdgesPerPoint (int pn) const { return topedgesperpoint.EntrySize(pn); }
384
+ int TopEdgePerPoint (int pn, int ei) const { return topedgesperpoint.Get(pn, ei); }
385
+
386
+
387
+ bool Topology_Ok() const { return topology_ok; }
388
+ bool Orientation_Ok() const { return orientation_ok; }
389
+
390
+ STL_GEOM_STATUS GetStatus () const { return status; }
391
+ const string & GetStatusText () const { return statustext; }
392
+
393
+ DLL_HEADER void InvertTrig (int trig);
394
+ DLL_HEADER void DeleteTrig (int trig);
395
+ DLL_HEADER void OrientAfterTrig (int trig);
396
+
397
+
398
+ // Table will be constructed, if topology is not ok
399
+ /// neighbourtrigs for surfacetrigs
400
+ TABLE<STLTrigId> neighbourtrigs;
401
+
402
+ /// get nr-th neighbour Triangle for triangle trig
403
+ int NONeighbourTrigs(STLTrigId trig) const { return neighbourtrigs.EntrySize(int(trig)); }
404
+ STLTrigId NeighbourTrig(STLTrigId trig, int nr) const { return neighbourtrigs.Get(int(trig),nr); }
405
+ int NeighbourTrigSorted(int trig, int nr) const;
406
+ void AddNeighbourTrig(STLTrigId i, STLTrigId nt) { neighbourtrigs.Add1(int(i), nt); }
407
+
408
+
409
+
410
+
411
+ int GetLeftTrig (int p1, int p2) const;
412
+ int GetRightTrig (int p1, int p2) const;
413
+
414
+ const Box<3> & GetBoundingBox () const { return boundingbox; }
415
+ };
416
+
417
+ } // namespace netgen
418
+
419
+ #endif
@@ -0,0 +1,58 @@
1
+ #ifndef FILE_VSSTL
2
+ #define FILE_VSSTL
3
+
4
+ /**************************************************************************/
5
+ /* File: vsstl.hpp */
6
+ /* Author: Joachim Schoeberl */
7
+ /* Date: 05. Jan. 2011 */
8
+ /**************************************************************************/
9
+
10
+ namespace netgen
11
+ {
12
+
13
+ class NGGUI_API VisualSceneSTLGeometry : public VisualScene
14
+ {
15
+ NgArray<int> trilists;
16
+ class STLGeometry * stlgeometry;
17
+
18
+ public:
19
+ VisualSceneSTLGeometry ();
20
+ virtual ~VisualSceneSTLGeometry ();
21
+ void SetGeometry (class STLGeometry * astlgeometry) { stlgeometry = astlgeometry; }
22
+
23
+ virtual void BuildScene (int zoomall = 0);
24
+ virtual void DrawScene ();
25
+ };
26
+
27
+
28
+ class NGGUI_API VisualSceneSTLMeshing : public VisualScene
29
+ {
30
+ NgArray<int> trilists;
31
+ int selecttrig, nodeofseltrig;
32
+ class STLGeometry * stlgeometry;
33
+
34
+ public:
35
+ VisualSceneSTLMeshing ();
36
+ virtual ~VisualSceneSTLMeshing ();
37
+
38
+ void SetGeometry (class STLGeometry * astlgeometry)
39
+ {
40
+ stlgeometry = astlgeometry;
41
+ stlgeometry->SetSelectTrig(selecttrig);
42
+ stlgeometry->SetNodeOfSelTrig(nodeofseltrig);
43
+ }
44
+
45
+ virtual void BuildScene (int zoomall = 0);
46
+ virtual void DrawScene ();
47
+ virtual void MouseDblClick (int px, int py);
48
+
49
+ int seltria;
50
+ };
51
+
52
+
53
+
54
+ }
55
+
56
+
57
+
58
+ #endif
@@ -0,0 +1,42 @@
1
+ namespace netgen
2
+
3
+ {
4
+
5
+ class VisualSceneMeshDoctor : public VisualScene
6
+ {
7
+ int filledlist;
8
+ int outlinelist;
9
+ int edgelist;
10
+
11
+ int selelement, locpi;
12
+ PointIndex selpoint, selpoint2;
13
+
14
+ // for edgemarking:
15
+ Array<int,PointIndex> edgedist;
16
+ int markedgedist;
17
+
18
+
19
+ public:
20
+ NGGUI_API VisualSceneMeshDoctor ();
21
+ NGGUI_API virtual ~VisualSceneMeshDoctor ();
22
+
23
+ NGGUI_API virtual void BuildScene (int zoomall = 0);
24
+ NGGUI_API virtual void DrawScene ();
25
+ NGGUI_API virtual void MouseDblClick (int px, int py);
26
+
27
+ NGGUI_API void SetMarkEdgeDist (int dist);
28
+ NGGUI_API void ClickElement (int elnr);
29
+ NGGUI_API void UpdateTables ();
30
+ NGGUI_API int IsSegmentMarked (int segnr) const;
31
+ };
32
+
33
+ class MeshDoctorParameters
34
+ {
35
+ public:
36
+ int active;
37
+ };
38
+
39
+
40
+ NGGUI_API extern MeshDoctorParameters meshdoctor;
41
+
42
+ }