41 lines
1.2 KiB
Clojure
41 lines
1.2 KiB
Clojure
(ns pcbracket.core
|
|
(:require [scad-clj.model :refer :all]
|
|
[scad-clj.scad :refer :all]))
|
|
|
|
(defn print-scad [shape]
|
|
(spit "pcbracket.scad" (write-scad shape)))
|
|
|
|
|
|
(defn shoe []
|
|
"Draw a handy shoe holder for a M3 screw. Scale this to 0.75 will still fit.
|
|
This bracket can be used on other projects too to make a latch to hold the
|
|
rest of the workpiece on a flat surface."
|
|
(difference
|
|
(cube 10 10 4)
|
|
(translate [0 -0.5 0] (cylinder 3 7))
|
|
(translate [0 -1.5 3] (cube 6.75 9 7))
|
|
(->>
|
|
(cube 12 15 4)
|
|
(rotate (/ pi 12) [1 0 0])
|
|
(translate [0 -2 3]))))
|
|
|
|
(defn corpus []
|
|
(difference
|
|
(cube 40 24.5 4)
|
|
(translate [0 0 2] (cube 36 20.5 4))
|
|
(translate [-1.5 2 0] (cube 30 13.5 7))
|
|
(translate [-20 2 2] (cube 5 10 4))
|
|
(translate [-1.5 -14 1] (cube 31 14 10))
|
|
(translate [21 -5.75 1] (cube 10 9 7))
|
|
(translate [21 -5.75 1] (cube 14 9 4))))
|
|
|
|
(defn scene []
|
|
(union
|
|
(corpus)
|
|
(scale [0.75 0.75 0.75] (translate [-31.5 -10 -0.7] (rotate (/ pi 2) [0 0 -1] (shoe))))
|
|
(scale [0.75 0.75 0.75] (translate [31.5 8 -0.7] (rotate (/ pi 2) [0 0 1] (shoe))))
|
|
(scale [0.75 0.75 0.75] (translate [-15 21 -0.7] (rotate pi [0 0 1] (shoe))))))
|
|
|
|
(print-scad
|
|
(color [0.8 0.8 0.8] (scene)))
|