# Module Reference This file provides a mapping of modules to their primary responsibilities and key symbols. ## Root - `__init__.py`: - **Entry Point**: Extension registration (`register`, `unregister`). - **Node Tree**: `SLICETREE_NodeTree` class. - **Sockets**: Definitions for all `SLICESOCK_*` classes. - **Nodes**: Definitions for all `SLICENODE_*` classes. - **Evaluation Engine**: - `resolve_input()`: Recursively evaluates linked sockets. - `_resolve_output()`: Computes node outputs with a caching system (`_EvalCache`) to avoid redundant calculations. - `_follow_reroute()`: Handles Blender's Reroute nodes during evaluation. - `registry.py`: - **Auto-Registration**: Utility to track classes decorated with `@register_class`. - `blender_manifest.toml`: - Metadata for the Blender Extension platform. - `pyproject.toml`: - Standard Python project configuration. ## `/core` (Geometry & Slicing) - `slice.py`: - `slice_at_range()`: Top-level slicing function that iterates through Z-heights. - `slice_at_z()`: Vectorized plane-mesh intersection using NumPy. - `align_path_seam_sharpest()`: High-performance vectorized heuristic that positions the start vertex (seam) of closed polygon loops at the sharpest concave angle (inner corner), with fallback to sharpest angle overall. - `SlicePaths.align_seams()`: Method on `SlicePaths` to align path seams to sharpest concave angles while preserving per-vertex attributes and metadata. - `Pather`: Class that converts toolpaths into G-code strings. Supports per-segment extrusion rates, feedrates, and custom extra attributes. - `segments_to_slice()`: Utility to convert raw intersection segments into continuous paths (closed polygons are processed via Pyclipper, open paths remain open). - `link_segments()`: Logic for joining loose segments into continuous paths. - `buffer_slice()`: Offset utility using PyclipperOffset. Supports rotated offsetting. - `infill_slice()`: Generates rotated grid or rectilinear infill patterns, ensuring layer-to-layer consistency. - `boolean_slice()`: Performs 2D boolean operations (Union, Intersection, etc.) on slice sets. - `geometry.py`: - Geometry utility functions. ## `/core/pdf_exporter` (PDF Export & Technical Marking Engine) - `sa2_measures.py`: - `render_sa2_measures_pdf()`: ISO 129-1 technical marking engine. - `extract_slicing_object_features()`: Feature detection for circular bores (Ø), arcs (R), chamfers (C), and steps. - `writer.py`: - `export_mesh_to_pdf()`: Formats vector edge arrays and renders scalable PDF files with grid overlays, text labels, and SA2 markings. ## `/infra` (Blender Integration) - `blender_mesh_capture.py`: - `PdfProperties`: Dataclass holding PDF line width and line color attributes for a `SlicingObject`. - `SlicingObject`: Represents a single mesh as a NumPy triangle array. - `capture_mesh_edges()`: Extracts edges from a Blender mesh for path-based workflows. Supports capturing extra per-vertex attributes. - `blender_slice_nodes_generic.py`: - Base classes for NodeSlicer nodes (`SliceNode`) and sockets (`SliceNodeSocket`). - Core evaluation logic (`resolve_input`).