Пример #1
0
    def __make_laser_sensor_long_range(self):
        x = self.parameters['x']
        y = self.parameters['y']
        z = self.parameters['z']
        lslr = fso.Box(x=x, y=y, z=z)

        lens_r = self.parameters['lens_r']
        lens_l = self.parameters['lens_l']
        lens = fso.Cylinder(r=lens_r, l=lens_l)
        lens.rotate(angle=-math.pi / 2, axis=[0, 1, 0])
        lens_tx = -lens_l / 2 - x / 2
        lens_ty = self.parameters['lens_ty']
        lens.translate([lens_tx, lens_ty, 0])
        lslr |= lens
        lslr.set_color(self.parameters['color'], recursive=True)

        if self.parameters['show_laser_beam']:
            laser_beam = fso.Cylinder(r=self.parameters['laser_beam_r'],
                                      l=self.parameters['laser_beam_l'])
            laser_beam.rotate(angle=math.pi / 2, axis=[0, 1, 0])
            laser_beam.set_color(self.parameters['laser_beam_color'])
            laser_beam_tx = -self.parameters['laser_beam_l'] / 2
            laser_beam_ty = lens_ty
            laser_beam_tz = 0
            laser_beam.translate([laser_beam_tx, laser_beam_ty, laser_beam_tz])
            lslr |= laser_beam

        self.add_obj(lslr)
Пример #2
0
    def __make_holes(self):
        hole_r = self.parameters['hole_r']
        hole_l = self.parameters['hole_l']

        # Pillowblock mount holes
        hole_x = self.pillowblock_parameters['hole_z']
        hole_y = self.pillowblock_parameters['hole_x']
        base_hole = fso.Cylinder(r=hole_r, l=hole_l)
        holes = po.LinearArray(base_hole, hole_x, hole_y, [0])
        self.add_obj(holes)

        # T-slotted bracket mount holes
        hole_x = [-3.5, -2.5, 2.5, 3.5]
        hole_y = [-1.5, -0.5, 0.5, 1.5]
        holes = po.LinearArray(base_hole, hole_x, hole_y, [0])
        self.add_obj(holes)

        # Motorized sled mount holes
        hole_x = [-2.125, 2.125]
        hole_y = [-2.3125, 2.3125]
        holes = po.LinearArray(base_hole, hole_x, hole_y, [0])
        self.add_obj(holes)

        # Slots for motorized sled mount holes
        hole = fso.Cylinder(r=0.125, l=self.parameters['z'] * 2)
        holes = po.LinearArray(hole, [0], [-0.5, 0.5], [0])
        slot = fso.Box(x=0.25, y=1, z=self.parameters['z'] * 2)
        slot = holes | slot
        slots = po.LinearArray(slot, [-2.125, 2.125], [0], [0])
        self.add_obj(slots)
Пример #3
0
    def __make_carriage(self):
        """
        Creates the carriage component of the RAB air bearing.
        """
        # Create base rectangle
        length = self.parameters['carriage_length']
        width = self.parameters['carriage_width']
        height = self.parameters['carriage_height']
        carriage = fso.Box(x=length, y=width, z=height)

        # Subtract slide from carraige
        slide_width = self.parameters[
            'slide_width'] + 2 * self.parameters['slide_tolerance']
        slide_height = self.parameters[
            'slide_height'] + 2 * self.parameters['slide_tolerance']
        slide_negative = fso.Box(x=2 * length, y=slide_width, z=slide_height)
        carriage = carriage - slide_negative

        # Create mounting holes
        radius = 0.5 * self.parameters['carriage_screw_size']
        base_hole = fso.Cylinder(r=radius, l=2 * height)
        hole_list = []
        for i in (-1, 1):
            for j in (-1, 1):
                xpos = i * 0.5 * self.parameters['carriage_screw_dL']
                ypos = j * 0.5 * self.parameters['carriage_screw_dW']
                hole = base_hole.copy()
                hole.translate([xpos, ypos, 0])
                hole_list.append(hole)
        # Remove hole material
        # print hole_list
        carriage -= hole_list
        carriage.set_color(self.carriage_color, recursive=True)
        self.carriage = carriage
Пример #4
0
 def __make_slide(self):
     """
     Creates the slide component of the RAB air bearing.
     """
     # Create base rectangle for slide
     length = self.parameters['slide_base_length'] + self.parameters[
         'bearing_slide_travel']
     width = self.parameters['slide_width']
     height = self.parameters['slide_height']
     slide = fso.Box(x=length, y=width, z=height)
     # Create the mounting holes
     radius = 0.5 * self.parameters['slide_screw_size']
     base_hole = fso.Cylinder(r=radius, l=2 * height)
     hole_list = []
     for i in (-1, 1):
         for j in (-1, 1):
             xpos = i * (0.5 * length -
                         self.parameters['slide_screw_inset'])
             ypos = j * (0.5 * self.parameters['slide_screw_dW'])
             hole = base_hole.copy()
             hole.translate([xpos, ypos, 0])
             hole_list.append(hole)
     # Remove hole material
     slide -= hole_list
     slide.set_color(self.slide_color, recursive=True)
     self.slide = slide
Пример #5
0
    def __make_holes(self):
        # Add airbearing mount holes
        hole_diameter = self.parameters['hole_diameter']
        hole = fso.Cylinder(r=hole_diameter / 2, l=self.parameters['z'] * 2)
        h_x = self.ab_parameters['carriage_screw_dL'] / 2
        h_y = self.ab_parameters['carriage_screw_dW'] / 2
        holes = po.LinearArray(hole, x=[-h_x, h_x], y=[-h_y, h_y], z=0)
        self.add_obj(holes)

        # Add y_beam mount counterbore holes
        cb_diameter = 7 / 16
        cb_depth = 0.25
        cb = fso.Cylinder(r=cb_diameter / 2, l=self.parameters['z'])
        cb.translate([0, 0, (-self.parameters['z'] + cb_depth)])
        cbh = cb | hole
        cbhs = po.LinearArray(cbh, x=[-2.5, 0, 2.5], y=[-1.5, 1.5], z=0)
        self.add_obj(cbhs)
Пример #6
0
 def __make_submersible(self):
     body_diameter = self.parameters['body_diameter']
     cylinder1 = fso.Cylinder(r=body_diameter / 2, l=body_diameter)
     cylinder1.rotate(angle=math.pi / 2, axis=[0, 1, 0])
     c2_length = self.parameters['body_length'] - body_diameter
     cylinder2 = fso.Cylinder(r=body_diameter / 2, l=c2_length)
     cylinder2.rotate(angle=math.pi / 2, axis=[0, 1, 0])
     cylinder2.translate([body_diameter / 2 + c2_length / 2, 0, 0])
     sphere = fso.Sphere(r=body_diameter / 2)
     sphere.translate([body_diameter / 2 + c2_length, 0, 0])
     cylinder3 = fso.Cylinder(r=self.parameters['shaft_diameter'] / 2,
                              l=self.parameters['shaft_length'])
     cylinder3.translate([0, 0, self.parameters['shaft_length'] / 2])
     box = fso.Box(x=2, y=0.25, z=body_diameter / 2 + 2)
     box.translate([0, 0, -(body_diameter / 2 + 2) / 2])
     submersible = cylinder1 | cylinder2 | sphere | cylinder3 | box
     submersible.set_color(self.parameters['color'], recursive=True)
     self.add_obj(submersible)
Пример #7
0
 def __make_holes(self):
     hole_r = self.parameters['hole_r']
     hole_l = self.parameters['hole_l']
     hole = fso.Cylinder(r=hole_r, l=hole_l)
     hole_x = self.parameters['x'] / 2 - 0.5
     hole_ay = [-1, 0, 1]
     hole_z = 0
     holes = po.LinearArray(hole, x=[-hole_x, hole_x], y=hole_ay, z=hole_z)
     self.add_obj(holes)
Пример #8
0
    def __make_holes(self):
        hole_l = self.parameters['hole_l']

        # Loadcell mount holes
        hole_r_loadcell = self.parameters['hole_r_loadcell']
        base_hole = fso.Cylinder(r=hole_r_loadcell, l=hole_l)

        hole_x = self.loadcell_parameters['hole_z']
        holes = po.LinearArray(base_hole, hole_x, 0, 0)
        self.add_obj(holes)

        # T-slotted bracket mount holes
        hole_r_big = self.parameters['hole_r_big']
        base_hole = fso.Cylinder(r=hole_r_big, l=hole_l)

        hole_x = self.parameters['hole_x_big']
        holes = po.LinearArray(base_hole, [-hole_x, hole_x], 0, 0)
        self.add_obj(holes)
Пример #9
0
    def __make_holes(self):
        hole_l = self.parameters['hole_l']

        # Laser_sensor_long_range mount holes
        hole_r_counterbore = self.parameters['hole_r_counterbore']
        base_hole = fso.Cylinder(r=hole_r_counterbore, l=hole_l)
        hole_x = self.lssr_parameters['hole_x']
        hole_y = self.lssr_parameters['hole_y']
        holes = po.LinearArray(base_hole, [-hole_x, hole_x], [-hole_y, hole_y],
                               0)
        self.add_obj(holes)

        # T-slotted bracket mount holes
        hole_r = self.parameters['hole_r']
        base_hole = fso.Cylinder(r=hole_r, l=hole_l)
        hole_x = self.parameters['hole_x_t-slotted']
        hole_y = self.parameters['hole_y_t-slotted']
        holes = po.LinearArray(base_hole, [-hole_x, hole_x], [-hole_y, hole_y],
                               0)
        self.add_obj(holes)
Пример #10
0
 def __make_holes(self):
     hole_r = self.parameters['hole_r']
     hole_l = self.parameters['hole_l']
     hole = fso.Cylinder(r=hole_r, l=hole_l)
     hole_x = self.parameters['hole_x']
     hole_y = self.parameters['hole_y']
     hole_z = 0
     holes = po.LinearArray(hole,
                            x=[-hole_x, hole_x],
                            y=[-hole_y, hole_y],
                            z=hole_z)
     self.add_obj(holes)
Пример #11
0
 def __make_holes(self):
     hole_r = self.parameters['hole_r']
     hole_l = self.parameters['hole_l']
     hole_tx = self.parameters['hole_tx']
     hole_ty = self.parameters['hole_ty']
     base_hole = fso.Cylinder(r=hole_r, l=hole_l)
     hole1 = base_hole.copy()
     hole1.translate([-hole_tx, hole_ty, 0])
     hole2 = base_hole.copy()
     hole2.translate([hole_tx, -hole_ty, 0])
     hole1.set_color(self.parameters['color'])
     hole2.set_color(self.parameters['color'])
     self.add_obj([hole1, hole2])
Пример #12
0
 def __make_holes(self):
     hole_r = self.parameters['hole_r']
     hole_l = self.parameters['hole_l']
     hole = fso.Cylinder(r=hole_r, l=hole_l * 2)
     hole_x = self.parameters['hole_x']
     hole_y = self.parameters['hole_y']
     hole_z = 0
     holes = po.LinearArray(hole,
                            x=[-hole_x, hole_x],
                            y=[-hole_y, hole_y],
                            z=hole_z)
     holes.translate([0, 0, -self.parameters['z'] / 2])
     holes.set_color(self.parameters['color'], recursive=True)
     self.add_obj(holes)
Пример #13
0
 def __make_holes(self):
     hole_r = self.parameters['hole_r']
     hole_l = self.parameters['hole_l']
     hole_x = self.parameters['hole_x']
     hole_z = self.parameters['hole_z']
     hole_list = []
     base_hole = fso.Cylinder(r=hole_r, l=hole_l)
     base_x_hole = base_hole.copy()
     base_x_hole.rotate(angle=-math.pi / 2, axis=[1, 0, 0])
     for z in hole_z:
         for x in hole_x:
             hole = base_x_hole.copy()
             hole.translate([x, 0, z])
             hole_list.append(hole)
     self.add_obj(hole_list)
Пример #14
0
    def __make_holes(self):
        hole_l = self.parameters['hole_l']

        # Laser_sensor_short_range mount holes
        hole_r_lssr = self.parameters['hole_r_lssr']
        base_hole = fso.Cylinder(r=hole_r_lssr, l=hole_l)

        hole_x = self.lssr_parameters['hole_ty']
        hole_y = self.lssr_parameters['hole_tx']
        holes = po.LinearArray(base_hole, [-hole_x, hole_x], [-hole_y, hole_y],
                               0)
        holes.translate(
            [self.parameters['lssr_tx'], self.parameters['lssr_ty'], 0])
        self.add_obj(holes)

        # T-slotted bracket mount holes
        hole_r_big = self.parameters['hole_r_big']
        base_hole = fso.Cylinder(r=hole_r_big, l=hole_l)

        hole_ax = [-0.5, 0.5]
        hole_ay = [-1.5, 0, 1.5]
        holes = po.LinearArray(base_hole, hole_ax, hole_ay, 0)
        holes.translate([self.parameters['mount_hole_tx'], 0, 0])
        self.add_obj(holes)
Пример #15
0
    def __make_rails(self):
        rail_radius = self.parameters['rail_diameter'] / 2
        rail_rail_distance = self.parameters['rail_rail_distance']
        rail_length = self.parameters['rail_length']
        rail_color = self.parameters['rail_color']

        rail = fso.Cylinder(r=rail_radius, l=rail_length)
        rail.rotate(angle=math.pi / 2, axis=[0, 1, 0])

        rails = po.LinearArray(
            rail,
            x=[0],
            y=[-rail_rail_distance / 2, rail_rail_distance / 2],
            z=[0])
        rails.set_color(rail_color, recursive=True)
        self.add_obj(rails)
Пример #16
0
    def __make_laser_sensor_short_range(self):
        profile = self.parameters['profile']
        l = self.parameters['z']
        lssr = fso.Extrusion(profile=profile, l=l)
        lssr.set_color(self.parameters['color'], recursive=True)

        if self.parameters['show_laser_beam']:
            laser_beam = fso.Cylinder(r=self.parameters['laser_beam_r'],
                                      l=self.parameters['laser_beam_l'])
            laser_beam.rotate(angle=math.pi / 2, axis=[1, 0, 0])
            laser_beam.set_color(self.parameters['laser_beam_color'])
            laser_beam_tx = self.parameters['laser_beam_tx']
            laser_beam_ty = -self.parameters['laser_beam_l'] / 2
            laser_beam_tz = 0
            laser_beam.translate([laser_beam_tx, laser_beam_ty, laser_beam_tz])
            lssr |= laser_beam

        self.add_obj(lssr)
Пример #17
0
    def __init__(self, tail=[0, 0, 0], head=[1, 0, 0], color=[1, 0, 0]):
        super(Vector, self).__init__()
        z_axis = numpy.array([0, 0, 1])
        tail = numpy.array(tail)
        head = numpy.array(head)
        vector = head - tail
        length = numpy.linalg.norm(vector)

        cone_cylinder_length_ratio = 0.2
        cone_head_tail_ratio = 0.1
        cylinder_radius_length_ratio = 0.02
        cone_tail_cylinder_radius_ratio = 3
        cone_head_cylinder_radius_ratio = 0.1

        cylinder_length = length / (1 + cone_cylinder_length_ratio / 2)
        cylinder_radius = cylinder_length * cylinder_radius_length_ratio
        cone_length = cylinder_length * cone_cylinder_length_ratio
        cone_tail_radius = cylinder_radius * cone_tail_cylinder_radius_ratio
        cone_head_radius = cylinder_radius * cone_head_cylinder_radius_ratio

        cylinder = fso.Cylinder(l=cylinder_length, r=cylinder_radius)
        cone = fso.Cone(l=cone_length,
                        r_pos=cone_head_radius,
                        r_neg=cone_tail_radius)
        cone.translate([0, 0, cylinder_length / 2])

        self.add_obj([cylinder, cone])
        self.translate([0, 0, cylinder_length / 2])

        rot_axis = numpy.cross(z_axis, vector)
        dot = numpy.dot(z_axis, vector)
        z_axis_modulus = numpy.sqrt((z_axis * z_axis).sum())
        vector_modulus = numpy.sqrt((vector * vector).sum())
        rot_angle = numpy.pi / 2 - dot / z_axis_modulus / vector_modulus
        # print "dot = " + str(dot)
        # print "z_axis_modulus = " + str(z_axis_modulus)
        # print "vector_modulus = " + str(vector_modulus)
        # print "angle = " + str(rot_angle)
        # print "axis = " + str(rot_axis)
        self.rotate(angle=rot_angle, axis=rot_axis)
        self.translate(list(tail))
        self.set_color(color, recursive=True)
Пример #18
0
    def __make_holes(self):
        hole_r = self.profile_data['lbracket'][self.bracket_type]['hole_r']
        hole_l = self.profile_data['lbracket'][self.bracket_type]['hole_l']
        hole_x = self.profile_data['lbracket'][self.bracket_type]['hole_x']
        hole_y = self.profile_data['lbracket'][self.bracket_type]['hole_y']
        hole_z = self.profile_data['lbracket'][self.bracket_type]['hole_z']
        # hole_list = []
        base_hole = fso.Cylinder(r=hole_r, l=hole_l)
        base_x_hole = base_hole.copy()
        base_x_hole.rotate(angle=math.pi / 2, axis=[1, 0, 0])

        x_holes = po.LinearArray(base_x_hole, x=hole_x, y=[0], z=hole_z)
        self.add_obj(x_holes)
        # for z in hole_z:
        #     for x in hole_x:
        #         hole = base_x_hole.copy()
        #         hole.translate([x,0,z])
        #         hole_list.append(hole)

        base_y_hole = base_hole.copy()
        base_y_hole.rotate(angle=math.pi / 2, axis=[0, 1, 0])
        y_holes = po.LinearArray(base_y_hole, x=[0], y=hole_y, z=hole_z)
        self.add_obj(y_holes)
Пример #19
0
 def __make_bowl_cutout(self):
     bowl_cutout_diameter = self.fly_bowl_parameters['bowl_diameter'] + 1
     bowl_cutout_l = self.parameters['z']*2
     bowl_cutout = fso.Cylinder(l=bowl_cutout_l,r=bowl_cutout_diameter/2)
     self.add_obj(bowl_cutout)
Пример #20
0
 def __make_holes(self):
     hole = fso.Cylinder(r=self.parameters['hole_diameter'] / 2,
                         l=self.parameters['z'] * 2)
     hole_ty = self.ab_parameters['slide_screw_dW'] / 2
     holes = po.LinearArray(hole, x=0, y=[-hole_ty, hole_ty], z=0)
     self.add_obj(holes)