def add_pcb(pcb_name, x, y, rotate=False, generate_frame=True, merge_outline=True): pcb_file_path = INPUT_DIR + pcb_name + "/" + pcb_name board_outline_file_path = pcb_file_path + '.boardoutline.ger' board_outline = gerberex.read(board_outline_file_path) board_outline.to_metric() # if rotate: # board_outline.rotate(90) # Reset the board offset, set the bottom-left point of the board to 0, 0 board_offset_x = board_outline.bounds[0][0] board_offset_y = board_outline.bounds[1][0] board_width = board_outline.size[0] board_height = board_outline.size[1] board_pos_x = x + frame_width + cutout_width board_pos_y = y + frame_width + cutout_width if generate_frame: generate_pcb_frame(board_cutout_msp, board_pos_x, board_pos_y, board_width, board_height, cutout_width) board_pos_x -= board_offset_x board_pos_y -= board_offset_y remove_gerber_outline(board_outline) board_outline.offset(board_pos_x, board_pos_y) if merge_outline: board_outline_context.merge(board_outline) add_layer(copper_layer_top_context, pcb_file_path + ".toplayer.ger", board_pos_x, board_pos_y, rotate) add_layer(copper_layer_bot_context, pcb_file_path + ".bottomlayer.ger", board_pos_x, board_pos_y, rotate) pcb_info.append([pcb_name, x, y, board_width, board_height, board_offset_x, board_offset_y])
def add_pcb(pcb_name, x, y, rotate=False): pcb_file_path = INPUT_DIR + "/" + pcb_name board_outline_file_path = pcb_file_path + '.boardoutline.ger' board_outline = gerberex.read(board_outline_file_path) board_outline.to_metric() if rotate: board_outline.rotate(90) # Reset the board offset, set the bottom-left point of the board to 0, 0 board_offset_x = board_outline.bounds[0][0] board_offset_y = board_outline.bounds[1][0] board_width = board_outline.size[0] board_height = board_outline.size[1] board_pos_x = x + frame_width + cutout_width board_pos_y = y + frame_width + cutout_width generate_pcb_frame(board_cutout_msp, board_pos_x - frame_width, board_pos_y - frame_width, board_width + frame_width * 2, board_height + frame_width * 2, cutout_width) board_pos_x -= board_offset_x board_pos_y -= board_offset_y board_outline.offset(board_pos_x, board_pos_y) board_outline_context.merge(board_outline) add_layer(copper_layer_top_context, pcb_file_path + ".toplayer.ger", board_pos_x, board_pos_y, rotate) add_layer(soldermask_top_layer_context, pcb_file_path + ".topsoldermask.ger", board_pos_x, board_pos_y, rotate) add_layer(silkscreen_top_layer_context, pcb_file_path + ".topsilkscreen.ger", board_pos_x, board_pos_y, rotate) add_layer(copper_layer_bot_context, pcb_file_path + ".bottomlayer.ger", board_pos_x, board_pos_y, rotate) add_layer(soldermask_bot_layer_context, pcb_file_path + ".bottomsoldermask.ger", board_pos_x, board_pos_y, rotate) add_layer(silkscreen_bot_layer_context, pcb_file_path + ".bottomsilkscreen.ger", board_pos_x, board_pos_y, rotate) add_layer(cream_top_layer_context, pcb_file_path + ".topcream.ger", board_pos_x, board_pos_y, rotate) add_layer(cream_bot_layer_context, pcb_file_path + ".bottomcream.ger", board_pos_x, board_pos_y, rotate) add_layer(internalplane1_layer_context, pcb_file_path + ".internalplane1.ger", board_pos_x, board_pos_y, rotate) add_layer(internalplane2_layer_context, pcb_file_path + ".internalplane2.ger", board_pos_x, board_pos_y, rotate) add_layer(drills_context, pcb_file_path + ".drills.xln", board_pos_x, board_pos_y, rotate) pcb_info.append([pcb_name, x, y, board_width, board_height, board_offset_x, board_offset_y])