示例#1
0
    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))
示例#2
0
    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
示例#3
0
    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
示例#4
0
    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
示例#5
0
         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'])