Ejemplo n.º 1
0
def make_round_tab(tab, tab_part, other_parts):
    for part_interactor in other_parts:
        y = tab.y_length / 2.0 - part_interactor.properties.thickness - tab.tabs_width / 2.0
        tab_to_add = make_rounded_shape(tab_part.properties, part_interactor.properties,
                                        tab.tabs_width, y)

        intersect_test, tab_to_add_transformed = helper.check_intersect(tab_to_add, tab,
                                                                        part_interactor.properties)
        if intersect_test:
            tab_part.toAdd.append(tab_to_add_transformed)
            #print "tab " + str(tab.dog_bone)
            hole = helper.tab_join_create_hole_on_plane(tab, tab.tabs_width, y, tab_part.properties,
                                                        part_interactor.properties, tab.dog_bone)
            part_interactor.toRemove.append(helper.transform_part(hole, tab))
            break

    for part_interactor in other_parts:
        y = -(tab.y_length / 2.0 - part_interactor.properties.thickness - tab.tabs_width / 2.0)

        tab_to_add = make_rounded_shape_for_groove(tab_part.properties, part_interactor.properties,
                                                   tab.tabs_width, y)

        intersect_test, tab_to_add_transformed = helper.check_intersect(tab_to_add, tab,
                                                                        part_interactor.properties)
        if intersect_test:
            tab_part.toAdd.append(tab_to_add_transformed)
            groove = make_flex_slot(tab_part.properties, part_interactor.properties,
                                    tab.tabs_width, y)
            tab_part.toRemove.append(helper.transform_part(groove, tab))
            hole = helper.tab_join_create_hole_on_plane(tab, tab.tabs_width, y, tab_part.properties,
                                                        part_interactor.properties, tab.dog_bone)
            part_interactor.toRemove.append(helper.transform_part(hole, tab))
            break
    return
Ejemplo n.º 2
0
def make_tslot_tab_join(tab, tab_part, other_parts):
    half_tab_distance = (tab.screw_diameter *
                         tab.half_tab_ratio) + tab.tabs_width / 2.0
    screw_nut_spec = helper.get_screw_nut_spec(tab.screw_diameter,
                                               tab.screw_length)
    screw_nut_spec.screw_length_tol = tab.screw_length_tol
    slots_pos = get_slot_positions(tab)
    for i, y in enumerate(slots_pos):
        for part_interactor in other_parts:
            left_tab_to_add, left_tab_dog_bone = tab_join_create_tab_on_face(
                tab_part.properties, part_interactor.properties,
                tab.tabs_width, y - half_tab_distance, tab, tab.tab_dog_bone)
            right_tab_to_add, right_tab_dog_bone = tab_join_create_tab_on_face(
                tab_part.properties, part_interactor.properties,
                tab.tabs_width, y + half_tab_distance, tab, tab.tab_dog_bone)

            right_intersect_test, right_tab_to_add_transformed = helper.check_intersect(
                right_tab_to_add, tab, part_interactor.properties)
            left_intersect_test, left_tab_to_add_transformed = helper.check_intersect(
                left_tab_to_add, tab, part_interactor.properties)

            if right_intersect_test or left_intersect_test:
                tab_part.toAdd.append(left_tab_to_add_transformed)
                tab_part.toAdd.append(right_tab_to_add_transformed)
                if left_tab_dog_bone:
                    tab_part.toRemove.append(
                        helper.transform_part(left_tab_dog_bone, tab))
                if right_tab_dog_bone:
                    tab_part.toRemove.append(
                        helper.transform_part(right_tab_dog_bone, tab))

                left_hole = helper.tab_join_create_hole_on_plane(
                    tab, tab.tabs_width, y - half_tab_distance,
                    tab_part.properties, part_interactor.properties,
                    tab.dog_bone)
                right_hole = helper.tab_join_create_hole_on_plane(
                    tab, tab.tabs_width, y + half_tab_distance,
                    tab_part.properties, part_interactor.properties,
                    tab.dog_bone)

                part_interactor.toRemove.append(
                    helper.transform_part(left_hole, tab))
                part_interactor.toRemove.append(
                    helper.transform_part(right_hole, tab))

                screw_way_hole_face = screw_way_on_face(
                    tab_part.properties, part_interactor.properties,
                    screw_nut_spec, y, tab.dog_bone)
                screw_way_hole_plane = screw_way_on_plane(
                    part_interactor.properties, screw_nut_spec, y)

                tab_part.toRemove.append(
                    helper.transform_part(screw_way_hole_face, tab))
                part_interactor.toRemove.append(
                    helper.transform_part(screw_way_hole_plane, tab))

                break
    return
Ejemplo n.º 3
0
def make_continuous_tab_joins(tab, tab_part, other_parts):
    tabs_number = int(tab.tabs_number - 1)
    virtual_tab_length = float(tab.y_length / float(int(tabs_number + 1)))
    y_pos = -tab.y_length / 2.0
    for tab_id in range(int(tabs_number + 1)):
        y_pos_center = y_pos + virtual_tab_length / 2.0
        # if tab.y_invert:
        #     y_pos_center = - y_pos_center
        left_kerf = False if tab_id == 0 else True
        right_kerf = False if tab_id == tabs_number else True
        if tab_id % 2 == 0:
            for part_interactor in other_parts:
                tab_to_add, tab_dog_bone = tab_join_create_tab_on_face(
                    tab_part.properties, part_interactor.properties,
                    virtual_tab_length, y_pos_center, tab, tab.tab_dog_bone)
                intersect_test, tab_to_add_transformed = helper.check_intersect(
                    tab_to_add, tab, part_interactor.properties)
                if intersect_test:
                    tab_part.toAdd.append(tab_to_add_transformed)
                    if tab_dog_bone:
                        tab_part.toRemove.append(
                            helper.transform_part(tab_dog_bone, tab))
                    hole = helper.tab_join_create_hole_on_plane(
                        tab, virtual_tab_length, y_pos_center,
                        tab_part.properties, part_interactor.properties,
                        tab.dog_bone)
                    part_interactor.toRemove.append(
                        helper.transform_part(hole, tab))
                    break
        y_pos += virtual_tab_length
    return
Ejemplo n.º 4
0
def make_tab_join(tab, tab_part, other_parts):
    slots_pos = get_slot_positions(tab)
    for i, y in enumerate(slots_pos):
        for part_interactor in other_parts:
            tab_to_add, tab_dog_bone = tab_join_create_tab_on_face(
                tab_part.properties, part_interactor.properties,
                tab.tabs_width, y, tab, tab.tab_dog_bone)
            intersect_test, tab_to_add_transformed = helper.check_intersect(
                tab_to_add, tab, part_interactor.properties)

            if intersect_test:
                tab_part.toAdd.append(tab_to_add_transformed)
                if tab_dog_bone:
                    tab_part.toRemove.append(
                        helper.transform_part(tab_dog_bone, tab))
                hole = helper.tab_join_create_hole_on_plane(
                    tab, tab.tabs_width, y, tab_part.properties,
                    part_interactor.properties, tab.dog_bone)
                part_interactor.toRemove.append(
                    helper.transform_part(hole, tab))
                break
    return