import sand3d as s3d
def pallet():
frame = s3d.at(support_frame(), y=-1, z=20)
center = s3d.at(bottom_center_rail(), x=-3)
outer = s3d.at(bottom_outer_rail(), x=542.5)
twin = s3d.transform(s3d.copy(outer), mirror=class="tok-string">"x")
end = s3d.at(deck_end_slat(), x=537, z=99)
end_image = s3d.transform(s3d.copy(end), mirror=class="tok-string">"x")
slats = s3d.at(deck_slats(), x=-2, z=99)
return s3d.assembly(class="tok-string">"pallet", frame, center, outer, twin, end, end_image, slats)
def support_frame(w=1188, d=895, h=81, beam_d=32, pitch=431.5):
beams = s3d.at(s3d.box(class="tok-string">"upright_beam", w=w, d=beam_d, h=h), on=s3d.grid(nx=1, ny=3, py=pitch))
for beam in beams:
s3d.material(beam, class="tok-string">"pine", color=class="tok-string">"class="tok-comment">#ad956d")
return s3d.group(class="tok-string">"support_frame", beams)
def bottom_center_rail(w=109, d=899, h=21):
rail = s3d.box(class="tok-string">"bottom_center_rail", w=w, d=d, h=h)
s3d.material(rail, class="tok-string">"pine", color=class="tok-string">"class="tok-comment">#ad956d")
return s3d.group(class="tok-string">"bottom_center_rail", rail)
def bottom_outer_rail(w=107, d=899, h=21):
rail = s3d.box(class="tok-string">"bottom_outer_rail", w=w, d=d, h=h)
s3d.material(rail, class="tok-string">"pine", color=class="tok-string">"class="tok-comment">#ad956d")
return s3d.group(class="tok-string">"bottom_outer_rail", rail)
def deck_end_slat(w=114, d=900, h=21):
board = s3d.box(class="tok-string">"deck_end_slat", w=w, d=d, h=h)
s3d.material(board, class="tok-string">"pine", color=class="tok-string">"class="tok-comment">#ad956d")
return s3d.group(class="tok-string">"deck_end_slat", board)
def deck_slats(w=76, d=897, h=21, pitch=140):
boards = s3d.at(s3d.box(class="tok-string">"deck_board", w=w, d=d, h=h), on=s3d.grid(nx=6, px=pitch))
for board in boards:
s3d.material(board, class="tok-string">"pine", color=class="tok-string">"class="tok-comment">#ad956d")
return s3d.group(class="tok-string">"deck_slats", boards)