def __init__(self, name, model, description, tags, package_width, package_height, pad_width, pad_height, pad_distance): super(chip, self).__init__(name, model, description, tags, True, False) self.package_width = package_width self.package_height = package_height self.pad_width = pad_width self.pad_height = pad_height fp.base.add( self, fp.text(cfg.FOOTPRINT_REFERENCE_LAYER, "reference", "REF**", 0, -package_height / 2 - cfg.FOOTPRINT_REFERENCE_FONT_SIZE, 0, cfg.FOOTPRINT_REFERENCE_FONT_SIZE, cfg.FOOTPRINT_REFERENCE_FONT_THICKNESS)) fp.base.add( self, fp.text(cfg.FOOTPRINT_VALUE_LAYER, "value", "VAL**", 0, 0, 0, cfg.FOOTPRINT_VALUE_FONT_SIZE, cfg.FOOTPRINT_VALUE_FONT_THICKNESS)) fp.base.add( self, fp.rectangle(cfg.FOOTPRINT_PACKAGE_LAYER, 0, 0, package_width, package_height, cfg.FOOTPRINT_PACKAGE_LINE_WIDTH, True)) fp.base.add( self, fp.pad(cfg.FOOTPRINT_SMD_LAYERS, 1, fp.technology.smd, fp.type.rect, -pad_distance / 2, 0, pad_width, pad_height)) fp.base.add( self, fp.pad(cfg.FOOTPRINT_SMD_LAYERS, 2, fp.technology.smd, fp.type.rect, +pad_distance / 2, 0, pad_width, pad_height))
def __init__(self, name, model, description, tags, package_width, package_height, pad_width, pad_height, pad_grid, pad_distance, pad_count): super(soic, self).__init__(name, model, description, tags, True, False) if pad_count % 2: raise NameError("pad_count is odd") fp.base.add( self, fp.text(cfg.FOOTPRINT_REFERENCE_LAYER, "reference", "REF**", -package_width / 2 - cfg.FOOTPRINT_REFERENCE_FONT_SIZE, 0, 90, cfg.FOOTPRINT_REFERENCE_FONT_SIZE, cfg.FOOTPRINT_REFERENCE_FONT_THICKNESS)) fp.base.add( self, fp.text(cfg.FOOTPRINT_VALUE_LAYER, "value", "VAL**", 0, 0, 0, cfg.FOOTPRINT_VALUE_FONT_SIZE, cfg.FOOTPRINT_VALUE_FONT_THICKNESS)) pin = 1 x = pad_grid * -((float(pad_count) / 4) - 0.5) line_x = package_width / 2 line_y = package_height / 2 - 0.5 fp.base.add( self, fp.rectangle(cfg.FOOTPRINT_PACKAGE_LAYER, 0, 0, package_width, package_height, cfg.FOOTPRINT_PACKAGE_LINE_WIDTH, True)) fp.base.add( self, fp.line(cfg.FOOTPRINT_PACKAGE_LAYER, -line_x, line_y, line_x, line_y, cfg.FOOTPRINT_PACKAGE_LINE_WIDTH)) diff = -line_x - x line_y += diff fp.base.add( self, fp.circle(cfg.FOOTPRINT_PACKAGE_LAYER, x, line_y, x - 0.3, line_y, cfg.FOOTPRINT_PACKAGE_LINE_WIDTH)) for i in range(pad_count / 2): fp.base.add( self, fp.pad(cfg.FOOTPRINT_SMD_LAYERS, pin, fp.technology.smd, fp.type.rect, x, pad_distance / 2, pad_width, pad_height)) x += pad_grid pin += 1 for i in range(pad_count / 2, pad_count): x -= pad_grid fp.base.add( self, fp.pad(cfg.FOOTPRINT_SMD_LAYERS, pin, fp.technology.smd, fp.type.rect, x, -pad_distance / 2, pad_width, pad_height)) pin += 1
def __init__(self, name, model, description, tags, package_width, package_height, pad_width, pad_height, pad_grid, pad_distance, pad_count, pad_drill): super(dip, self).__init__(name, model, description, tags, False, False) if pad_count % 2: raise NameError("pad_count is odd") fp.base.add( self, fp.text(cfg.FOOTPRINT_REFERENCE_LAYER, "reference", "REF**", -package_width / 2 - cfg.FOOTPRINT_REFERENCE_FONT_SIZE, 0, 90, cfg.FOOTPRINT_REFERENCE_FONT_SIZE, cfg.FOOTPRINT_REFERENCE_FONT_THICKNESS)) fp.base.add( self, fp.text(cfg.FOOTPRINT_VALUE_LAYER, "value", "VAL**", 0, 0, 0, cfg.FOOTPRINT_VALUE_FONT_SIZE, cfg.FOOTPRINT_VALUE_FONT_THICKNESS)) pin = 1 x = pad_grid * -((float(pad_count) / 4) - 0.5) line_x = package_width / 2 fp.base.add( self, fp.rectangle(cfg.FOOTPRINT_PACKAGE_LAYER, 0, 0, package_width, package_height, cfg.FOOTPRINT_PACKAGE_LINE_WIDTH, True)) fp.base.add( self, fp.arc(cfg.FOOTPRINT_PACKAGE_LAYER, -line_x, 0, -line_x, 1.0, -180, cfg.FOOTPRINT_PACKAGE_LINE_WIDTH)) for i in range(pad_count / 2): fp.base.add( self, fp.pad(cfg.FOOTPRINT_THD_LAYERS, pin, fp.technology.thru_hole, fp.type.oval, x, pad_distance / 2, pad_width, pad_height, pad_drill)) x += pad_grid pin += 1 for i in range(pad_count / 2, pad_count): x -= pad_grid fp.base.add( self, fp.pad(cfg.FOOTPRINT_THD_LAYERS, pin, fp.technology.thru_hole, fp.type.oval, x, -pad_distance / 2, pad_width, pad_height, pad_drill)) pin += 1
def __init__(self, name, model, description, tags, package_width, package_height, pad_diameter, pad_grid, pad_drill, pin_count_x, pin_count_y): super(connector_grid_male, self).__init__(name, model, description, tags, False, False) bevel = pad_grid * 0.2 fp.base.add( self, fp.text( cfg.FOOTPRINT_REFERENCE_LAYER, "reference", "REF**", 0, -(package_height + cfg.FOOTPRINT_REFERENCE_FONT_SIZE) / 2 - 2 * cfg.FOOTPRINT_REFERENCE_FONT_THICKNESS, cfg.FOOTPRINT_REFERENCE_FONT_SIZE, cfg.FOOTPRINT_REFERENCE_FONT_THICKNESS)) fp.base.add( self, fp.text(cfg.FOOTPRINT_VALUE_LAYER, "value", "VAL**", 0, (package_height + cfg.FOOTPRINT_VALUE_FONT_SIZE) / 2 + 2 * cfg.FOOTPRINT_VALUE_FONT_THICKNESS, cfg.FOOTPRINT_VALUE_FONT_SIZE, cfg.FOOTPRINT_VALUE_FONT_THICKNESS)) fp.base.add( self, fp.beveled_outline(cfg.FOOTPRINT_PACKAGE_LAYER, 0, 0, package_width, package_height, bevel, pad_grid, cfg.FOOTPRINT_PACKAGE_LINE_WIDTH, True)) pin = 1 y = pad_grid * -((float(pin_count_y) / 2) - 0.5) for i in range(pin_count_y): x = pad_grid * -((float(pin_count_x) / 2) - 0.5) for j in range(pin_count_x): if pin == 1: fp.base.add( self, fp.pad(cfg.FOOTPRINT_THD_LAYERS, pin, fp.technology.thru_hole, fp.type.rect, x, y, pad_diameter, pad_diameter, pad_drill)) else: fp.base.add( self, fp.pad(cfg.FOOTPRINT_THD_LAYERS, pin, fp.technology.thru_hole, fp.type.circle, x, y, pad_diameter, pad_diameter, pad_drill)) pin += 1 x += pad_grid y += pad_grid
param['size'] = cfg.FOOTPRINT_REFERENCE_FONT_SIZE param[ 'thickness'] = cfg.FOOTPRINT_REFERENCE_FONT_THICKNESS elif element.text == ">VALUE": param['name'] = "value" param['value'] = "VAL**" param['layer'] = cfg.FOOTPRINT_VALUE_LAYER param['size'] = cfg.FOOTPRINT_VALUE_FONT_SIZE param['thickness'] = cfg.FOOTPRINT_VALUE_FONT_THICKNESS else: param['name'] = "user" param['value'] = element.text param['layer'] = cfg.FOOTPRINT_USER_LAYER param['size'] = cfg.FOOTPRINT_USER_FONT_SIZE param['thickness'] = cfg.FOOTPRINT_USER_FONT_THICKNESS footprint.append(fp.text(**param)) elif element.tag == "wire": param = {} param['layer'] = kicad_layer[int(element.attrib['layer'])] param['x1'] = float(element.attrib['x1']) param['y1'] = float(element.attrib['y1']) param['x2'] = float(element.attrib['x2']) param['y2'] = float(element.attrib['y2']) param['width'] = float(element.attrib['width']) footprint.append(fp.line(**param)) elif element.tag == "rectangle": angle = int(element.attrib['rot'].lstrip('R')) param = {} param['layer'] = kicad_layer[int(element.attrib['layer'])] if angle == 90: param['x'] = float(element.attrib['y1'])