From fe23ca610cf35492a53edae5a94236eb4d30415b Mon Sep 17 00:00:00 2001 From: bklronin Date: Sat, 14 Mar 2026 08:45:07 +0100 Subject: [PATCH] feat: Replace SDF kernel with OpenCASCADE, VTK with pygfx Major architecture migration: - Remove SDF-based geometry kernel (sdf/) - Remove VTK renderer (drawing_modules/) - Remove old mesh modules (mesh_modules/) New components: - geometry/base.py: Abstract geometry kernel interface - geometry_occ/kernel.py: OpenCASCADE implementation via CadQuery/OCP - geometry_occ/sketch.py: 2D sketching with constraint solving - rendering/base.py: Abstract renderer interface - rendering/pygfx_renderer.py: WebGPU-based renderer - models/data_model.py: Project, Component, Sketch, Body classes - main.py: New Qt-based application Features: - STEP/IGES import/export - Exact BRep geometry (vs approximate SDF mesh) - Parametric sketching with constraints - Boolean operations (union, difference, intersection) - Fillet and chamfer operations - Modern pygfx renderer (~30MB vs VTK ~200MB) Dependencies: - cadquery >= 2.4 - ocp >= 7.9.3 - pygfx >= 0.7.0 - wgpu >= 0.19.0 - PySide6 >= 6.9.0 --- .idea/workspace.xml | 48 +- Gui.py | 727 ------- README.md | 112 ++ __pycache__/Gui.cpython-311.pyc | Bin 53928 -> 0 bytes __pycache__/Gui.cpython-312.pyc | Bin 53649 -> 0 bytes __pycache__/main.cpython-311.pyc | Bin 40687 -> 0 bytes __pycache__/main.cpython-312.pyc | Bin 52449 -> 0 bytes doc/SKETCHER_TECHNICAL_DOCUMENTATION.md | 849 -------- doc/commands.md | 1 - doc/flow.md | 35 - doc/helper_commands.md | 3 - drawing_modules/.DS_Store | Bin 6148 -> 0 bytes .../__pycache__/draw_widget2d.cpython-311.pyc | Bin 41825 -> 0 bytes .../draw_widget_solve.cpython-311.pyc | Bin 55310 -> 0 bytes .../draw_widget_solve.cpython-312.pyc | Bin 52632 -> 0 bytes .../__pycache__/gl_widget.cpython-311.pyc | Bin 21943 -> 0 bytes .../improved_sketcher.cpython-312.pyc | Bin 83015 -> 0 bytes .../__pycache__/vtk_widget.cpython-311.pyc | Bin 45616 -> 0 bytes .../__pycache__/vtk_widget.cpython-312.pyc | Bin 40810 -> 0 bytes .../__pycache__/vysta_widget.cpython-311.pyc | Bin 5586 -> 0 bytes .../__pycache__/vysta_widget.cpython-312.pyc | Bin 4986 -> 0 bytes drawing_modules/case.stl | Bin 532434 -> 0 bytes drawing_modules/draw_widget2d.py | 916 --------- drawing_modules/draw_widget_solve.py | 1098 ----------- drawing_modules/gl_widget.py | 504 ----- drawing_modules/improved_sketcher.py | 1702 ----------------- .../sketcher_integration_example.py | 201 -- drawing_modules/solvespace_example.py | 35 - drawing_modules/vtk_widget.py | 861 --------- drawing_modules/vtk_widget_alt_methods.py | 337 ---- drawing_modules/vysta_widget.py | 111 -- main.py | 1478 -------------- main_backup.py | 851 --------- mesh_modules/3d_placeholder_model.stl | Bin 684 -> 0 bytes .../interactor_mesh.cpython-311.pyc | Bin 1775 -> 0 bytes .../interactor_mesh.cpython-312.pyc | Bin 1597 -> 0 bytes .../__pycache__/simple_mesh.cpython-311.pyc | Bin 10771 -> 0 bytes .../__pycache__/simple_mesh.cpython-312.pyc | Bin 9392 -> 0 bytes .../__pycache__/vesta_mesh.cpython-311.pyc | Bin 7920 -> 0 bytes .../__pycache__/vesta_mesh.cpython-312.pyc | Bin 7165 -> 0 bytes mesh_modules/interactor_mesh.py | 43 - mesh_modules/simple_mesh.py | 213 --- mesh_modules/vesta_mesh.py | 119 -- meshtest.py | 5 - pyproject.toml | 72 + requirements.txt | 61 - sdf/__init__.py | 26 - sdf/__pycache__/__init__.cpython-312.pyc | Bin 541 -> 0 bytes sdf/__pycache__/d2.cpython-312.pyc | Bin 19918 -> 0 bytes sdf/__pycache__/d3.cpython-312.pyc | Bin 80470 -> 0 bytes sdf/__pycache__/dn.cpython-312.pyc | Bin 15393 -> 0 bytes sdf/__pycache__/ease.cpython-312.pyc | Bin 33908 -> 0 bytes sdf/__pycache__/errors.cpython-312.pyc | Bin 1994 -> 0 bytes sdf/__pycache__/mesh.cpython-312.pyc | Bin 13016 -> 0 bytes sdf/__pycache__/progress.cpython-312.pyc | Bin 4718 -> 0 bytes sdf/__pycache__/stl.cpython-312.pyc | Bin 1625 -> 0 bytes sdf/__pycache__/text.cpython-312.pyc | Bin 6597 -> 0 bytes sdf/__pycache__/units.cpython-312.pyc | Bin 239 -> 0 bytes sdf/__pycache__/util.cpython-312.pyc | Bin 1172 -> 0 bytes sdf/d2.py | 390 ---- sdf/d3.py | 1666 ---------------- sdf/dn.py | 366 ---- sdf/ease.py | 637 ------ sdf/errors.py | 42 - sdf/mesh.py | 282 --- sdf/progress.py | 83 - sdf/stl.py | 27 - sdf/text.py | 160 -- sdf/units.py | 3 - sdf/util.py | 32 - src/fluency/__init__.py | 30 + src/fluency/geometry/__init__.py | 19 + src/fluency/geometry/base.py | 437 +++++ src/fluency/geometry_occ/__init__.py | 11 + src/fluency/geometry_occ/kernel.py | 726 +++++++ src/fluency/geometry_occ/sketch.py | 383 ++++ src/fluency/main.py | 553 ++++++ src/fluency/models/__init__.py | 15 + src/fluency/models/data_model.py | 339 ++++ src/fluency/rendering/__init__.py | 16 + src/fluency/rendering/base.py | 380 ++++ src/fluency/rendering/pygfx_renderer.py | 411 ++++ src/fluency/utils/__init__.py | 3 + src/fluency/widgets/__init__.py | 3 + test_coordinates.py | 137 -- test_dragging_specific.py | 180 -- test_final_dragging.py | 160 -- test_main_app_integration.py | 88 - test_mode_fix.py | 86 - tests/test_geometry.py | 187 ++ 90 files changed, 3737 insertions(+), 14523 deletions(-) delete mode 100644 Gui.py create mode 100644 README.md delete mode 100644 __pycache__/Gui.cpython-311.pyc delete mode 100644 __pycache__/Gui.cpython-312.pyc delete mode 100644 __pycache__/main.cpython-311.pyc delete mode 100644 __pycache__/main.cpython-312.pyc delete mode 100644 doc/SKETCHER_TECHNICAL_DOCUMENTATION.md delete mode 100644 doc/commands.md delete mode 100644 doc/flow.md delete mode 100644 doc/helper_commands.md delete mode 100644 drawing_modules/.DS_Store delete mode 100644 drawing_modules/__pycache__/draw_widget2d.cpython-311.pyc delete mode 100644 drawing_modules/__pycache__/draw_widget_solve.cpython-311.pyc delete mode 100644 drawing_modules/__pycache__/draw_widget_solve.cpython-312.pyc delete mode 100644 drawing_modules/__pycache__/gl_widget.cpython-311.pyc delete mode 100644 drawing_modules/__pycache__/improved_sketcher.cpython-312.pyc delete mode 100644 drawing_modules/__pycache__/vtk_widget.cpython-311.pyc delete mode 100644 drawing_modules/__pycache__/vtk_widget.cpython-312.pyc delete mode 100644 drawing_modules/__pycache__/vysta_widget.cpython-311.pyc delete mode 100644 drawing_modules/__pycache__/vysta_widget.cpython-312.pyc delete mode 100644 drawing_modules/case.stl delete mode 100644 drawing_modules/draw_widget2d.py delete mode 100644 drawing_modules/draw_widget_solve.py delete mode 100644 drawing_modules/gl_widget.py delete mode 100644 drawing_modules/improved_sketcher.py delete mode 100644 drawing_modules/sketcher_integration_example.py delete mode 100644 drawing_modules/solvespace_example.py delete mode 100644 drawing_modules/vtk_widget.py delete mode 100644 drawing_modules/vtk_widget_alt_methods.py delete mode 100644 drawing_modules/vysta_widget.py delete mode 100644 main.py delete mode 100644 main_backup.py delete mode 100644 mesh_modules/3d_placeholder_model.stl delete mode 100644 mesh_modules/__pycache__/interactor_mesh.cpython-311.pyc delete mode 100644 mesh_modules/__pycache__/interactor_mesh.cpython-312.pyc delete mode 100644 mesh_modules/__pycache__/simple_mesh.cpython-311.pyc delete mode 100644 mesh_modules/__pycache__/simple_mesh.cpython-312.pyc delete mode 100644 mesh_modules/__pycache__/vesta_mesh.cpython-311.pyc delete mode 100644 mesh_modules/__pycache__/vesta_mesh.cpython-312.pyc delete mode 100644 mesh_modules/interactor_mesh.py delete mode 100644 mesh_modules/simple_mesh.py delete mode 100644 mesh_modules/vesta_mesh.py delete mode 100644 meshtest.py create mode 100644 pyproject.toml delete mode 100644 requirements.txt delete mode 100644 sdf/__init__.py delete mode 100644 sdf/__pycache__/__init__.cpython-312.pyc delete mode 100644 sdf/__pycache__/d2.cpython-312.pyc delete mode 100644 sdf/__pycache__/d3.cpython-312.pyc delete mode 100644 sdf/__pycache__/dn.cpython-312.pyc delete mode 100644 sdf/__pycache__/ease.cpython-312.pyc delete mode 100644 sdf/__pycache__/errors.cpython-312.pyc delete mode 100644 sdf/__pycache__/mesh.cpython-312.pyc delete mode 100644 sdf/__pycache__/progress.cpython-312.pyc delete mode 100644 sdf/__pycache__/stl.cpython-312.pyc delete mode 100644 sdf/__pycache__/text.cpython-312.pyc delete mode 100644 sdf/__pycache__/units.cpython-312.pyc delete mode 100644 sdf/__pycache__/util.cpython-312.pyc delete mode 100644 sdf/d2.py delete mode 100644 sdf/d3.py delete mode 100644 sdf/dn.py delete mode 100644 sdf/ease.py delete mode 100644 sdf/errors.py delete mode 100644 sdf/mesh.py delete mode 100644 sdf/progress.py delete mode 100644 sdf/stl.py delete mode 100644 sdf/text.py delete mode 100644 sdf/units.py delete mode 100644 sdf/util.py create mode 100644 src/fluency/__init__.py create mode 100644 src/fluency/geometry/__init__.py create mode 100644 src/fluency/geometry/base.py create mode 100644 src/fluency/geometry_occ/__init__.py create mode 100644 src/fluency/geometry_occ/kernel.py create mode 100644 src/fluency/geometry_occ/sketch.py create mode 100644 src/fluency/main.py create mode 100644 src/fluency/models/__init__.py create mode 100644 src/fluency/models/data_model.py create mode 100644 src/fluency/rendering/__init__.py create mode 100644 src/fluency/rendering/base.py create mode 100644 src/fluency/rendering/pygfx_renderer.py create mode 100644 src/fluency/utils/__init__.py create mode 100644 src/fluency/widgets/__init__.py delete mode 100644 test_coordinates.py delete mode 100644 test_dragging_specific.py delete mode 100644 test_final_dragging.py delete mode 100644 test_main_app_integration.py delete mode 100644 test_mode_fix.py create mode 100644 tests/test_geometry.py diff --git a/.idea/workspace.xml b/.idea/workspace.xml index db4ca12..f498644 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -4,11 +4,31 @@