diff --git a/notes/Makefile.example b/notes/Makefile.example new file mode 100644 index 0000000..da05863 --- /dev/null +++ b/notes/Makefile.example @@ -0,0 +1,86 @@ +# Splendor organizers to fit in Splendor box +# +# by W. Craig Trader is dual-licensed under +# Creative Commons Attribution-ShareAlike 3.0 Unported License and +# GNU Lesser GPL 3.0 or later. + +# This makefile expects an OpenSCAD file named $(PREFIX).scad that defines +# the following variables: +# +# PART -- the name of a part to generate +# VERBOSE -- logically true if you want verbose output (optional) +# +# The OpenSCAD program should have logic that renders a single part by name: +# +# if (PART == "foo") { +# foo(); +# } else if (PART == "bar") { +# bar(); +# } else if (PART == "foo-bar") { +# foo_bar(); +# } +# +# This makefile will use OpenSCAD to create individual model (STL) files and +# image (PNG) files for each declared part, and will use Slic3r to generate +# G-Code for each declared part. +# +# So if PREFIX=widget, then the created files will be: +# +# stl/widget-foo.stl stl/widget-bar.stl stl/widget-foo-bar.stl +# png/widget-foo.png png/widget-bar.png png/widget-foo-bar.png +# gcode/widget-foo.gcode gcode/widget-bar.gcode gcode/widget-foo-bar.gcode + +# OpenSCAD binary and options +OPENSCAD=/usr/bin/openscad +OPENSCAD_OPTIONS=-DVERBOSE=false +IMAGE_OPTIONS=--imgsize=1024,768 --colorscheme=DeepOcean + +# Slic3r binary and options +SLIC3R=/opt/Slic3r/latest/slic3r +SLIC3R_INI=slic3r.ini +SLIC3R_OPTIONS=--load $(SLIC3R_INI) --print-center 125,105 + +# Name of OpenSCAD model file +PREFIX=splendor + +# ----- Everything after this should not need modification + +# Names of parts to build +PARTS=$(shell grep 'PART == ' $(PREFIX).scad | cut -d'"' -f2) + +STL=stl +IMAGE=png +GCODE=gcode + +MODELS=$(patsubst %,$(STL)/$(PREFIX)-%.$(STL),$(PARTS)) +IMAGES=$(patsubst %,$(IMAGE)/$(PREFIX)-%.$(IMAGE),$(PARTS)) +GCODES=$(patsubst %,$(GCODE)/$(PREFIX)-%.$(GCODE),$(PARTS)) + +all: models gcodes images + +directories: + @mkdir -p $(STL) $(IMAGE) $(GCODE) + +models: directories $(MODELS) + +gcodes: directories $(GCODES) + +images: directories $(IMAGES) + +clean: + rm -rf $(STL) $(GCODE) $(IMAGE) + +# Dependencies for models + +$(MODELS) : $(STL)/$(PREFIX)-%.$(STL) : $(PREFIX).scad + $(OPENSCAD) $(OPENSCAD_OPTIONS) -o $@ -DPART=\"$(subst $(PREFIX)-,,$(subst .$(STL),,$(@F)))\" $< + +# Dependencies for images + +$(IMAGES) : $(IMAGE)/$(PREFIX)-%.$(IMAGE) : $(PREFIX).scad + $(OPENSCAD) $(OPENSCAD_OPTIONS) -o $@ -DPART=\"$(subst $(PREFIX)-,,$(subst .$(IMAGE),,$(@F)))\" $(IMAGE_OPTIONS) $< + +# Dependencies for slicing + +$(GCODES) : $(GCODE)/%.$(GCODE) : $(STL)/%.$(STL) $(SLIC3R_INI) + $(SLIC3R) -o $@ $(SLIC3R_OPTIONS) $< \ No newline at end of file