86 lines
2.4 KiB
Makefile
86 lines
2.4 KiB
Makefile
# 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) $<
|