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,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