nodeslicer/doc/MODULES.md

2.3 KiB

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.
    • 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.

/infra (Blender Integration)

  • blender_mesh_capture.py:

    • 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).