openscad-cpp-evaluator 1.33.0__tar.gz → 1.34.0__tar.gz
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.
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/CLAUDE.md +12 -1
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/PKG-INFO +1 -1
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/mesh_import.hpp +9 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/pyproject.toml +1 -1
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/CMakeLists.txt +1 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/builtins/import.cpp +18 -4
- openscad_cpp_evaluator-1.34.0/src/import/scene_import.cpp +714 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/import/svg_import.cpp +8 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_dxf_svg_import.cpp +44 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_import_export.cpp +158 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/uv.lock +1 -1
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/.github/workflows/wheels.yml +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/.gitignore +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/.gitmodules +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/LICENSE +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/README.md +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/bindings/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/bindings/ast_to_py.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/bindings/module.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/cmake/embed_font.cmake +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/examples/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/examples/eval_perf_benchmark.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/examples/manifold_cache_reuse.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/examples/minimal_debugger.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/.gitignore +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/README.md +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/api.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/ast_node.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/comments.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/declarations.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/expression.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/module_instantiation.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/scope_builder.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/vector_element.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/comments.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/position.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/pretty_print.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/scope.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/scope_table.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/serialization.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/source_map.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/.DS_Store +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/api.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/ast/ast_node.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/ast/declarations.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/ast/expression.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/ast/format_utils.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/ast/module_instantiation.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/ast/scope_builder.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/ast/vector_element.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/comment_attach_internal.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/comments.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/grammar/driver.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/grammar/driver.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/grammar/lexer.l +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/grammar/lexer_api.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/grammar/oscad_location.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/grammar/parser.y +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/inline_comment_attach.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/position.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/scope.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/serialization/json_io.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/serialization/yaml_io.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/src/source_map.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tests/test_assignments.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tests/test_ast_generation.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tests/test_comments_and_files.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tests/test_concurrent_parse.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tests/test_const_borrow.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tests/test_control.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tests/test_expressions.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tests/test_functions.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tests/test_inline_comments.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tests/test_lexical.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tests/test_modules.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tests/test_node_str.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tests/test_pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tests/test_render_expression.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tests/test_scope.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tests/test_serialization.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tests/test_smoke.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tests/test_source_map.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tests/test_strict_commas.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tests/test_use_include.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tests/test_vectors.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/external/openscad_cpp_parser/tools/cli/main.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/bound_args.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/bytecode.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/bytecode_compiler.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/bytecode_vm.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/call_args.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/colored_body.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/coverage.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/csg_node.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/css_colors.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/debug_hooks.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/debug_repl.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/dispatch.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/dxf_svg_import.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/eval_context.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/eval_error.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/eval_use.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/evaluator.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/export.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/font_match.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/font_provider.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/format_closure.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/freetype_font_provider.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/function_builtins.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/import_builtin.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/manifold_cache.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/mesh_check.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/osc_range.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/profile.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/scope_trail.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/segments.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/surface_load.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/text_metrics.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/utf8.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/value.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/include/openscad_cpp_evaluator/zip_stored.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/python/openscad_cpp_evaluator/__init__.py +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/resources/fonts/LICENSE +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/resources/fonts/LiberationSans-Bold.ttf +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/resources/fonts/LiberationSans-BoldItalic.ttf +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/resources/fonts/LiberationSans-Italic.ttf +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/resources/fonts/LiberationSans-Regular.ttf +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/builtins/booleans.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/builtins/builtins.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/builtins/call_args.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/builtins/color.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/builtins/control.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/builtins/dxf_dim.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/builtins/extrude.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/builtins/function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/builtins/modifiers.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/builtins/primitives_2d.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/builtins/primitives_3d.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/builtins/registry.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/builtins/roof.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/builtins/segments.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/builtins/surface.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/builtins/text.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/builtins/topology.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/builtins/transforms.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/bytecode_vm.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/colored_body.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/coverage.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/csg_generate.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/csg_resolve.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/css_colors.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/debug/debug_repl.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/debug_profile.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/eval_context.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/eval_error.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/eval_use.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/export.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/format_closure.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/import/dxf_import.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/import/mesh_import.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/import/surface_load.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/measure_geometry.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/mesh_check.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/stmt_eval.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/text/font_match.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/text/freetype_font_provider.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/text/text_metrics.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/user_calls.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/utf8.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/value.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/xkcd_colors.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/xkcd_colors.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/src/zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_booleans.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_children_separate.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_cli.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_control_flow.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_coverage.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_csg_tree.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_debug_hooks.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_discretizer.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_eval_context.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_export.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_extrude_roof.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_feature_detection.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_include_cache.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_mesh_check.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_multi_color_merge.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_primitives.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_profiling.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_python_bindings.py +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_render_expr.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_scope_trail.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_scoping.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_surface.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_tail_calls.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_text.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_transforms.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_unexpected_args.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_use.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_value.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_viewport_params.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tests/test_zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tools/cli/cli_lib.cpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tools/cli/cli_lib.hpp +0 -0
- {openscad_cpp_evaluator-1.33.0 → openscad_cpp_evaluator-1.34.0}/tools/cli/main.cpp +0 -0
|
@@ -1185,10 +1185,21 @@ grep for `ponytail:`.
|
|
|
1185
1185
|
- `include/openscad_cpp_evaluator/mesh_import.hpp`, `src/import/mesh_import.cpp` — STL (ASCII +
|
|
1186
1186
|
binary, exact-match vertex welding)/OBJ/OFF/3MF mesh loaders, returning plain `(verts, tris)` —
|
|
1187
1187
|
no `Evaluator`/`Value` dependency, so these are reusable from both `import()` contexts below.
|
|
1188
|
+
- `src/import/scene_import.cpp` — AMF, X3D and VRML97 import, the three multi-object formats export
|
|
1189
|
+
writes that nothing could read back (current upstream OpenSCAD removed its AMF importer, so all
|
|
1190
|
+
three go beyond it). Geometry only, like the loaders above, but each format's scene structure is
|
|
1191
|
+
honoured: X3D/VRML `Transform`s nest and apply in full (`T·C·R·SR·S·SR⁻¹·C⁻¹`), `DEF`/`USE`
|
|
1192
|
+
resolves, `ccw FALSE` flips winding, `IndexedFaceSet` polygons fan-triangulate (a last polygon
|
|
1193
|
+
without `-1` counts), and X3D's `IndexedTriangleSet`/`TriangleSet` are read. X3D goes through a
|
|
1194
|
+
small real XML parser (comments, CDATA, DOCTYPE, entities); VRML through a tokenizer + generic
|
|
1195
|
+
node parser that steps over `PROTO`/`EXTERNPROTO`/`ROUTE` (VRML 1.0 is refused by name). AMF's
|
|
1196
|
+
`unit` scales to mm, and a zipped AMF (`PK` header) is read through `readStoredZipEntryBySuffix`.
|
|
1197
|
+
What is not a mesh — primitives (Box, Sphere, ...), `Inline`, AMF constellations — lands in
|
|
1198
|
+
`LoadedMesh::warnings`, which both `import()` faces emit as `import: '<file>': ...`.
|
|
1188
1199
|
- `include/openscad_cpp_evaluator/import_builtin.hpp`, `include/openscad_cpp_evaluator/
|
|
1189
1200
|
zip_stored.hpp` (+ `src/zip_stored.cpp`), `src/builtins/import.cpp` — `import()`'s two faces:
|
|
1190
1201
|
`resolveImport`/`generateImport` (registered in `registry.cpp` like any other builtin *module* —
|
|
1191
|
-
a geometry statement, STL/OBJ/OFF/3MF/DXF/SVG) and `importAsValue` (called directly from
|
|
1202
|
+
a geometry statement, STL/OBJ/OFF/3MF/AMF/X3D/VRML/DXF/SVG) and `importAsValue` (called directly from
|
|
1192
1203
|
`user_calls.cpp`'s `evalFunctionCall`, special-cased *before* the `isBuiltinFunctionName` gate
|
|
1193
1204
|
since `import` isn't in that table — returns a VNF `[[verts],[faces]]` for a mesh file, a Region
|
|
1194
1205
|
`[[[x,y],...],...]` for DXF/SVG, or the JSON file's content as native values).
|
|
@@ -13,6 +13,9 @@ namespace oscadeval {
|
|
|
13
13
|
struct LoadedMesh {
|
|
14
14
|
std::vector<std::array<double, 3>> verts;
|
|
15
15
|
std::vector<std::array<int, 3>> tris;
|
|
16
|
+
// What the loader read but could not turn into mesh (X3D/VRML primitives,
|
|
17
|
+
// Inline, AMF constellations), for import() to warn about.
|
|
18
|
+
std::vector<std::string> warnings;
|
|
16
19
|
};
|
|
17
20
|
|
|
18
21
|
// Each throws std::runtime_error with a message suitable for wrapping into
|
|
@@ -23,5 +26,11 @@ LoadedMesh loadStl(const std::string& path);
|
|
|
23
26
|
LoadedMesh loadObj(const std::string& path);
|
|
24
27
|
LoadedMesh loadOff(const std::string& path);
|
|
25
28
|
LoadedMesh loadThreeMf(const std::string& path);
|
|
29
|
+
// scene_import.cpp: the three multi-object formats export writes. AMF (plain
|
|
30
|
+
// or zipped, `unit` scaled to mm), X3D and VRML97 (Transforms applied,
|
|
31
|
+
// DEF/USE resolved, polygons fan-triangulated). Geometry only, like the rest.
|
|
32
|
+
LoadedMesh loadAmf(const std::string& path);
|
|
33
|
+
LoadedMesh loadX3d(const std::string& path);
|
|
34
|
+
LoadedMesh loadVrml(const std::string& path);
|
|
26
35
|
|
|
27
36
|
} // namespace oscadeval
|
|
@@ -46,10 +46,16 @@ LoadedMesh loadMeshByExt(const std::string& path, const std::string& ext) {
|
|
|
46
46
|
if (ext == ".stl") return loadStl(path);
|
|
47
47
|
if (ext == ".obj") return loadObj(path);
|
|
48
48
|
if (ext == ".off") return loadOff(path);
|
|
49
|
+
if (ext == ".amf") return loadAmf(path);
|
|
50
|
+
if (ext == ".x3d") return loadX3d(path);
|
|
51
|
+
if (ext == ".wrl") return loadVrml(path);
|
|
49
52
|
return loadThreeMf(path);
|
|
50
53
|
}
|
|
51
54
|
|
|
52
|
-
bool isMeshExt(const std::string& ext) {
|
|
55
|
+
bool isMeshExt(const std::string& ext) {
|
|
56
|
+
return ext == ".stl" || ext == ".obj" || ext == ".off" || ext == ".3mf" || ext == ".amf" || ext == ".x3d" ||
|
|
57
|
+
ext == ".wrl";
|
|
58
|
+
}
|
|
53
59
|
|
|
54
60
|
|
|
55
61
|
Value jsonToValue(const nlohmann::ordered_json& j) {
|
|
@@ -208,7 +214,10 @@ CSGParams resolveImport(Evaluator& ev, const oscad::ModularCall& node, EvalConte
|
|
|
208
214
|
params["dxf"] = Value{ext == ".dxf"};
|
|
209
215
|
return params;
|
|
210
216
|
}
|
|
211
|
-
|
|
217
|
+
// .pdf is not here: it used to be, handed to the SVG parser, which hung on
|
|
218
|
+
// a PDF's bytes. Nothing reads PDF (OpenSCAD does not either), so it takes
|
|
219
|
+
// the ordinary "unsupported file type" error below.
|
|
220
|
+
if (ext == ".dxf" || ext == ".svg") {
|
|
212
221
|
std::vector<Contour2d> contours;
|
|
213
222
|
bool filteredMiss = false;
|
|
214
223
|
try {
|
|
@@ -257,6 +266,7 @@ CSGParams resolveImport(Evaluator& ev, const oscad::ModularCall& node, EvalConte
|
|
|
257
266
|
} catch (const std::exception& e) {
|
|
258
267
|
ev.error(std::string("import: ") + e.what(), node);
|
|
259
268
|
}
|
|
269
|
+
for (const std::string& w : mesh.warnings) ev.warn("import: '" + path + "': " + w, &node.position());
|
|
260
270
|
std::vector<Value> vertsFlat;
|
|
261
271
|
vertsFlat.reserve(mesh.verts.size() * 3);
|
|
262
272
|
for (const auto& v : mesh.verts) {
|
|
@@ -428,8 +438,12 @@ Value importAsValue(Evaluator& ev, const CallArgs& args, const oscad::ASTNode& n
|
|
|
428
438
|
|
|
429
439
|
try {
|
|
430
440
|
if (ext == ".json") return loadJsonAsValue(path);
|
|
431
|
-
if (isMeshExt(ext))
|
|
432
|
-
|
|
441
|
+
if (isMeshExt(ext)) {
|
|
442
|
+
const LoadedMesh mesh = loadMeshByExt(path, ext);
|
|
443
|
+
for (const std::string& w : mesh.warnings) ev.warn("import: '" + path + "': " + w, &node.position());
|
|
444
|
+
return meshToVnf(mesh);
|
|
445
|
+
}
|
|
446
|
+
if (ext == ".dxf" || ext == ".svg") {
|
|
433
447
|
std::vector<Contour2d> contours;
|
|
434
448
|
if (ext == ".dxf") {
|
|
435
449
|
std::optional<std::string> layer;
|