meisam/laser-craft

★ 0Forks 0GitHub ↗Compare

README

Laser Craft: Precision laser cutting and woodworking designs generated by code.

This project collects laser cutting and woodworking designs generated programmatically using FreeCAD Python scripts, built and executed with Bazel and rules_freecad.

The project exports vector graphics (such as .svg cut and engrave profiles) dimensioned and laid out for laser cutters (e.g. Epilog Legend 36EXT and Epilog Mini 24).


Features & Included Designs

  • Rattles (//rattles:owl):
    • Parametric owl-shaped baby rattle outline with custom Bézier splines and feature cutouts.
    • Outputs owl_rattle.svg scaled for standard bed dimensions.
  • Milestones (//milestones:birth_milestones):
    • Baby birth milestone marker rounds with text typography (incorporating downloaded fonts like Funnel Sans and Tangerine via Bazel runfiles).
    • Generates layered engraving and cutting profiles.
  • Puzzles (//puzzles:abcpzl):
    • Alphabet puzzle cutouts and placement layouts.
  • Geometry Library (//geometry:bezier):
    • Reusable geometry utilities, including cubic Bézier curve point calculation and FreeCAD Draft BSpline curve generation.
  • Fonts (//fonts:*):
    • Bazel rules managing font dependencies (Open Sans, Funnel Sans, Tangerine) fetched through Bazel HTTP rules.

Prerequisites

  • Bazel (or Bazelisk): Bazel 8+ with Bzlmod support enabled.
  • NO other requirement: Everything required for running this project is managed by Bazel and will be downloaded (and cached) upon first run.

Configuration

To avoid passing platform flags manually for every build or execution, configure .bazelrc.user:

  1. Copy the template:
    cp .bazelrc.user.template .bazelrc.user
  2. Update .bazelrc.user with your target platform if not already set, for example:
    common --platforms=@rules_freecad//platforms:freecad_linux_x86_64

Running Designs

Run any of the design targets using bazel run:

Owl Rattle

bazel run //rattles:owl

Generates owl_rattle.svg in the project root.

Birth Milestones

bazel run //milestones:birth_milestones

Generates SVG milestone templates using embedded fonts.

Alphabet Puzzle

bazel run //puzzles:abcpzl

License

This project is licensed under the Apache License 2.0.

Contributors

meisam

Issues