# $URL: svn+ssh://aaron@birenboim.com/home/users/svn/Jansen/trunk/Makefile $
# $Id: Makefile 224 2013-09-10 16:52:04Z aaron $

BASENAME = Jansen
KBASE = Klann

# set to your path.  Needs to be actual source path to find sub-modules
SLIC3R = /usr/local/slic3r/Slic3r/slic3r.pl

# For each half (2-leg) assembly, print:
# (1) main, crankArm, BEDa, BEDb, FootA, FootB
# (2) CH, CD
# (4) EF, BH
# print one pulley for each full (4-leg) assembly

JANSEN_PARTS = main crankLinks BHs EFs Feet BED
OTHER_PARTS = basketMount electronicsMount motorMount pulley drivePulley brace
#spacer
# crankArm CH CD BH EF BEDa BEDb FootA FootB

JANSEN_STL = $(JANSEN_PARTS:%=$(BASENAME)_%.stl)
OTHER_STL = $(OTHER_PARTS:%=$(BASENAME)_%.stl)

JANSEN_GCODE = $(JANSEN_PARTS:%=$(BASENAME)_%.gcode)
OTHER_GCODE = $(OTHER_PARTS:%=$(BASENAME)_%.gcode)

MAINDEP = $(BASENAME).scad $(BASENAME)Defs.scad

# one copy of each UNIQUE part used to build Jansen-style walking linkage
JANSEN_BASE = mainBar AC CH CD BH EF BEDa BEDb FootA FootB braceBar \
	pulley drivePulley motorMount electronicsMount basketMount

JANSEN_BASE_STL = $(JANSEN_BASE:%=$(BASENAME)_%.stl)

# default is from Jansen
all:	Jansen11.zip

Jansen11.zip:	$(JANSEN_GCODE) $(OTHER_GCODE) $(JANSEN_STL) $(OTHER_STL)
	rm  -f $@
	zip -r $@ Jansen.scad JansenDefs.scad pulley.scad JansenBED.scad \
		JansenFoot.scad JansenMain.scad \
		driveElectronicsMount.scad motorMount.scad basketMount.scad \
		Makefile README.html JansenLinkages.png \
		$(JANSEN_STL)   $(OTHER_STL) \
		$(JANSEN_GCODE) $(OTHER_GCODE)

stl:	$(JANSEN_STL)

misc:	$(OTHER_STL)

# base, unpadded parts
JansenBase.zip:	$(JANSEN_BASE_STL)
	openscad -o Jansen_main.stl -D 'PART="mainBase"' Jansen.scad
	zip -r $@ $(JANSEN_BASE_STL) \
		JansenLinkages.png README.html Building.html

%.gcode:	%.stl QuelabJansenConfig.ini
	$(SLIC3R) --load QuelabJansenConfig.ini $<

$(BASENAME)_%.stl:	$(MAINDEP)
	openscad -o $@ -D 'PART="$*"' $<

#$(BASENAME)_main.stl:	$(MAINDEP) $(BASENAME)Main.scad
#	openscad -o $@ -D 'PART="main"' $<

#$(BASENAME)_crankArm.stl:	$(BASENAME).scad
#	openscad -o $@ -D 'PART="AC"' $<

#$(BASENAME)_crankLinks.stl:	$(MAINDEP)
#	openscad -o $@ -D 'PART="crankLinks"' $<

#$(BASENAME)_CH.stl:	$(MAINDEP)
#	openscad -o $@ -D 'PART="CH"' $<

#$(BASENAME)_CD.stl:	$(MAINDEP)
#	openscad -o $@ -D 'PART="CD"' $<

#$(BASENAME)_BH.stl:	$(MAINDEP)
#	openscad -o $@ -D 'PART="BH"' $<

#$(BASENAME)_BH4.stl:	$(MAINDEP)
#	openscad -o $@ -D 'PART="BHs"' $<

#$(BASENAME)_EF.stl:	$(MAINDEP)
#	openscad -o $@ -D 'PART="EF"' $<

#$(BASENAME)_EF4.stl:	$(MAINDEP)
#	openscad -o $@ -D 'PART="EFs"' $<

#$(BASENAME)_BED.stl:	$(MAINDEP) $(BASENAME)BED.scad
#	openscad -o $@ -D 'PART="BED"' $<

#$(BASENAME)_BEDa.stl:	$(MAINDEP) $(BASENAME)BED.scad
#	openscad -o $@ -D 'PART="BEDa"' $<

#$(BASENAME)_BEDb.stl:	$(MAINDEP) $(BASENAME)BED.scad
#	openscad -o $@ -D 'PART="BEDb"' $<

#$(BASENAME)_Feet.stl:	$(MAINDEP) $(BASENAME)Foot.scad
#	openscad -o $@ -D 'PART="Feet"' $<

#$(BASENAME)_FootA.stl:	$(MAINDEP)
#	openscad -o $@ -D 'PART="FootA"' $<

#$(BASENAME)_FootB.stl:	$(MAINDEP)
#	openscad -o $@ -D 'PART="FootB"' $<

#$(BASENAME)_brace.stl:	$(MAINDEP)
#	openscad -o $@ -D 'PART="brace"' $<

#$(BASENAME)_pulley.stl:	$(MAINDEP)
#	openscad -o $@ -D 'PART="pulley"' $<

#$(BASENAME)_spacer.stl:	$(MAINDEP)
#	openscad -o $@ -D 'PART="spacer"' $<

#$(BASENAME)_electronicsMount.stl:	 driveElectronicsMount.scad $(BASENAME)Defs.scad
#	openscad -o $@ $<

#$(BASENAME)_motorMount.stl:	 motorMount.scad $(BASENAME)Defs.scad
#	openscad -o $@ $<

#$(BASENAME)_basketMount.stl:	basketMount.scad $(BASENAME)Defs.scad
#	openscad -o $@ $<

#$(BASENAME)_drivePulley.stl:	$(MAINDEP) pulley.scad
#	openscad -o $@ -D 'PART="drivePulley"' $<

klann:	$(KBASE).scad
	openscad -o $(KBASE)_main.stl -D 'PART="main"' $(KBASE).scad
	openscad -o $(KBASE)_crankArm.stl -D 'PART="AC"' $(KBASE).scad
	openscad -o $(KBASE)_pulley.stl -D 'PART="pulley"' $(KBASE).scad
	openscad -o $(KBASE)_rocker.stl -D 'PART="rocker"' $(KBASE).scad
	openscad -o $(KBASE)_DE.stl -D 'PART="DE"' $(KBASE).scad
	openscad -o $(KBASE)_BH.stl -D 'PART="BH"' $(KBASE).scad
	openscad -o $(KBASE)_leg.stl -D 'PART="leg"' $(KBASE).scad

jig:	linkageJig.scad
	openscad -o jigBase.stl -D 'PART="Base"' linkageJig.scad
	openscad -o jigBar.stl -D 'PART="Bar"' linkageJig.scad

# This drawing can be imported into the ponoko Inkscape template.
# just rescale (retaining aspect ratio) to 181x181 mm after import
laserCuts_mm.dxf:	drawLaserCutParts.pl
	perl -w $< mm > laserCuts_mm.svg
	inkscape -E laserCuts_mm.eps laserCuts_mm.svg
	pstoedit -dt -f dxf:-polyaslines laserCuts_mm.eps $@

laserCuts_preview.png:	drawLaserCutParts.pl
	perl -w $< > laserCuts_preview.svg
	inkscape -z -e laserCuts_previewTrans.png -w 1024 -h 1024 laserCuts_preview.svg
	convert laserCuts_previewTrans.png -background '#EEEEDD' -flatten $@

preview4.png:	laserCuts4_preview.png
	convert $< -background '#EEEEDD' -flatten $@

laserCuts4_preview.png:	laserCuts4_preview.svg
	inkscape -z -e $@ -w 1024 -h 1024 $<

laserCuts4_preview.svg:	drawLaserCutParts4.pl laserCutPartsPrimitives.pl
	perl -w $< > $@

clean:
	\rm -f $(JANSEN_STL) $(OTHER_STL) $(JANSEN_BASE_STL)
