Session 2 - Write Code
Note
Some of the clever BSOL stuff like height maps might take until next week before we can do them
SolidPython is Python
#Stepped Pyramid
from solid2 import *
assembly = cube(0,0,0)
levels = 5
for i in range(0, levels):
side = (i+1) * 2
c = cube(side, side, 1)
assembly += c.translate(-side/2, -side/2, (levels-i)-1)
#assembly += c.up((levels-i)-1).left(side/2).back(side/2) # Does the same thing
assembly.save_as_scad()
Task : Try twisting the levels
Primitives
- square(size, center, r, x, y)
- cylinder(r, h, r1, r2, $fn, center)
- circle(r, $fn)
- polygon(points, paths, r)
- union(r)
- difference(r)
- intersection(r)
- translate(v, x, y, z)
- scale(v)
- rotate(a, v)
- linear_extrude(height, center, twist, scale, translate, r)
- pack(size, sep)
- shell(w)
- rotate_extrude(a, r, translate, rotate)
- unit(unit)
Ideas
- Try lots of spheres
- Try alternating Adding and Subtracting things
from solid2 import *
assembly = cube(0,0,0)
levels = 5
for i in range(levels, 0, -1):
side = (i+1) * 2
c = cube(side, side, side/2).translate(-side/2, -side/2, (levels-i)-1)
if (i % 2):
assembly += c
else:
assembly -= c
assembly.save_as_scad()Text and Input
This really is python, you can do everything including input and validation.
from solid2 import *
valid = False
while not valid:
name = input("What is your Name? ")
valid = len(name) > 2 and len(name) < 10
length = (len(name) * 7.5) + 7.5
shape = cube(length, 12, 1) - text(text=name).translate(5, 1, 1)
shape -= cylinder(3,1,1,True).translate(2, 8, 0)
shape.save_as_scad()
Basic Tutorials
- Find OpenSCAD Designs on Printables and Thingiverse
- OpenSCAD - Documentation
- SolidPython Wiki