예제 #1
0
from . import bec_module, lighting_control_board, logic_board, placements, relay_board, tray, vesc, vesc_fan
from .dimensions import tray_thickness


def assembly():
    return sp.union()(
        sp.color('red')(tray.volume()),
        spu.up(tray_thickness)(
            sp.color('purple')(placements.vesc_fan(vesc_fan.assembly())),
            # Boards are raised by spacers
            spu.up(3.)(
                sp.color('green')(placements.vesc(vesc.volume())),
                sp.color('blue')(
                    placements.lighting_control_board(
                        lighting_control_board.volume()
                    )
                ),
                sp.color('cyan')(placements.relay_board(relay_board.volume())),
                sp.color('magenta')(placements.bec_module(bec_module.volume())),
                sp.color('orange')(
                    placements.logic_board(logic_board.volume())
                ),
            ),
        ),
    )


if __name__ == '__main__':
    entrypoint.main(assembly())
예제 #2
0
from .dimensions import tray_dimensions, tray_thickness
from .vesc_fan import shroud

mounting_hole_centres = (inner * 2., tray_dimensions[1] - 20.)
mounting_hole_diameter = 3.5


def projection():
    panel = sp.square(tray_dimensions, center=True)

    frame_mounting_holes = place_at_centres(
        mounting_hole_centres, sp.circle(d=mounting_hole_diameter,
                                         segments=32))

    return panel - frame_mounting_holes - placements.vesc(
        vesc.holes()) - placements.lighting_control_board(
            lighting_control_board.holes()) - placements.relay_board(
                relay_board.holes()) - placements.bec_module(
                    bec_module.holes()) - placements.logic_board(
                        logic_board.holes()) - placements.vesc_fan(
                            shroud.mounting_holes(32))


@bom.part('Electronics Tray')
def volume():
    return sp.linear_extrude(tray_thickness)(projection())


if __name__ == '__main__':
    entrypoint.main(projection())
예제 #3
0
def projection_fan():
    return projection_outer() - fan.main_vent() - fan.mounting_holes()


def volume():
    extrusion = sp.rotate((0, 0, 0))(sp.union()(
        spu.down(length)(sp.linear_extrude(length)(projection_main())),
        spu.down(10.)(sp.linear_extrude(10.)(projection_fan())),
    ))
    rotated_extrusion = sp.rotate(
        (90, 0, 0))(spu.forward(fan.size[1] / 2.)(extrusion))

    tray_mounting_holes = sp.linear_extrude(10.)(mounting_holes(6))

    def cable_cutout(position, diameter):
        return sp.translate(position)(sp.rotate(
            (0, 90, 0))(sp.cylinder(d=diameter,
                                    h=outer_wall_thickness + 1.,
                                    center=True)))

    cable_cutouts = sp.union()(
        cable_cutout((-33, 20, 15), 15.),
        cable_cutout((-33, 60, 10), 12.),
    )

    return rotated_extrusion - tray_mounting_holes - cable_cutouts


if __name__ == '__main__':
    entrypoint.main(volume())
예제 #4
0
                (-inner + (box_section.default_size[0] / 2.) + 1., magic_1, 0)
            )(brake_pedal.assembly())
        ),
        sp.color('orange')(
            sp.translate((0, 1100., 0))(
                sp.rotate((50., 0, 0))(steering.assembly())
            )
        ),
        sp.color('brown')(
            sp.translate((0, 75, box_section.default_size[0] / 2.))(
                electronics_tray.assembly()
            )
        ),
    )


def size_check():
    return sp.union()(
        assembly(),
        sp.translate((0., 600., 100.))(
            sp.color((1., 1., 1., 0.4))(
                sp.cube(max_outer_dimensions, center=True)
            )
        ),
    )


if __name__ == '__main__':
    # entrypoint.main(assembly())
    entrypoint.main(size_check())