import sand3d as s3d
def pallet():
base = s3d.at(bottom_runners(), z=0)
return s3d.assembly(class="tok-string">"pallet", base)
def bottom_runners(w=1200, board_d=164, h=31, pitch=318):
boards = s3d.at(s3d.box(class="tok-string">"runner", w=w, d=board_d, h=h), on=s3d.grid(nx=1, ny=3, py=pitch))
s3d.material(boards, class="tok-string">"pine", color=class="tok-string">"class="tok-comment">#b59a72")
supports = s3d.at(support_blocks(), z=h-1)
solid = s3d.join(s3d.merge(boards), *supports.children)
return s3d.group(class="tok-string">"bottom_runners", solid)
def support_blocks(w=156, d=164, h=107, pitch_x=522, pitch_y=318):
blocks = s3d.at(s3d.box(class="tok-string">"block", w=w, d=d, h=h), on=s3d.grid(nx=3, ny=3, px=pitch_x, py=pitch_y))
s3d.material(blocks, class="tok-string">"pine", color=class="tok-string">"class="tok-comment">#ad9169")
rails = s3d.at(cross_rails(), z=h-1)
solid = s3d.join(s3d.merge(blocks), *rails.children)
return s3d.group(class="tok-string">"support_blocks", solid)
def cross_rails(w=156, d=800, h=36, pitch=522):
rails = s3d.at(s3d.box(class="tok-string">"rail", w=w, d=d, h=h), on=s3d.grid(nx=3, px=pitch))
s3d.material(rails, class="tok-string">"pine", color=class="tok-string">"class="tok-comment">#b59a72")
deck = s3d.at(deck_boards(), z=h-1)
solid = s3d.join(s3d.merge(rails), *deck.children)
return s3d.group(class="tok-string">"cross_rails", solid)
def deck_boards(w=1200, outer_d=153, inner_d=140, h=38, outer_pitch=646, inner_pitch=206, inner_y=-2):
outer = s3d.at(s3d.box(class="tok-string">"outer_board", w=w, d=outer_d, h=h), on=s3d.grid(nx=1, ny=2, py=outer_pitch))
inner = s3d.at(s3d.box(class="tok-string">"inner_board", w=w, d=inner_d, h=h), on=s3d.grid(nx=1, ny=2, py=inner_pitch), y=inner_y)
s3d.material(outer, class="tok-string">"pine", color=class="tok-string">"class="tok-comment">#bda27b")
s3d.material(inner, class="tok-string">"pine", color=class="tok-string">"class="tok-comment">#bda27b")
return s3d.group(class="tok-string">"deck_boards", outer, inner)