import sand3d as s3d
def bench_grinder():
motor_unit = motor_unit_body()
left_wheel = wheel(motor_unit, class="tok-string">"left_wheel", x=-19.95, y=0.01, z=99.99, ry=90)
right_wheel = wheel(motor_unit, class="tok-string">"right_wheel", x=20.05, y=0.01, z=99.99, ry=-90)
return s3d.assembly(class="tok-string">"bench_grinder", motor_unit, left_wheel, right_wheel)
def wheel(parent, name, x=0, y=0, z=0, rx=0, ry=0, rz=0):
frame = s3d.local(parent, x, y, z, rx, ry, rz)
body = s3d.at(wheel_body(name), on=frame)
s3d.joint(fclass="tok-string">"{name}_spin", body, frame, kind=class="tok-string">"continuous")
return body
def motor_unit_body():
motor_piece = s3d.transform(motor(class="tok-string">"motor"), x=0.05, y=0.01, z=187.49)
return s3d.group(class="tok-string">"motor_unit", motor_piece)
def wheel_body(name):
piece = s3d.transform(grinding_wheel(fclass="tok-string">"{name}_piece"), x=0, y=0, z=-15, ry=90)
return s3d.group(name, piece)
def motor(name, vertical_d=34.76, vertical_l=182.03, cross_d=50, cross_l=40):
vertical = s3d.at(s3d.extrude(class="tok-string">"vertical_shaft", s3d.circle(vertical_d), vertical_l, both=True), z=21.49)
horizontal = s3d.at(s3d.extrude(class="tok-string">"cross_shaft", s3d.circle(cross_d), cross_l, both=True), z=-87.5, ry=90)
s3d.join(vertical, horizontal)
return vertical
def grinding_wheel(name):
return s3d.at(s3d.extrude(name, s3d.circle(200.0), 30.0, both=True), ry=90)