Ejemplo n.º 1
0
def handle_attrs_update_element(part, element):
    _debug = False

    if _debug:
        print("_" * 80)
        print(part)
        print(get_Attributes_from_part(part))
        print("")
        print(element)
        print(element.get_attributes())
        print(get_Attributes_from_part(element))
        print("")
        for a in element.get_attributes():
            print(a.get_name(), a.get_value())
        print(' ...... ')

    for attr in get_Attributes_from_part(part):
        if _debug:
            print(">{}<".format(attr))

        # Eagle requires that attributes have a bunch of info that's already in
        # the enclosing element tag, but it'll barf w/out them, so here goes
        #
        # <attribute name="DIGIKEY" value="490-10451-1-ND" x="32.512" y="81.28" size="1.778" layer="27" display="off"/>
        new_attr = Swoop.Attribute()
        new_attr.set_name(attr.name)
        new_attr.set_value(attr.value)
        new_attr.set_x(element.get_x())
        new_attr.set_y(element.get_y())
        # Attributes need a size, but we never show them, so arbitrary is fine
        new_attr.set_size(1.778)
        new_attr.set_layer(
            'tValues')  # seems to be where Eagle puts misc attributes
        # [our "cloned" name attr is on 25, tNames]
        new_attr.set_display("off")
        element.add_attribute(new_attr)

    if _debug:
        print("- - - - - " * 5)
        print(part)
        print(element)
        print(get_Attributes_from_part(element))
        print("")
        for a in element.get_attributes():
            print(a.get_name(), a.get_value())
Ejemplo n.º 2
0
    def do_check(self):
        for library in self.lbrs:
            if isinstance(library, Swoop.LibraryFile):
                name = library.get_filename()
                library = library.get_library()
            else:
                name = library.get_name()

            if name in (self.options.get("skipped_lbrs") or []):
                return

            with NestedError(self.errors, name):
                self.info("Examined {}".format(name))
                fix = self.fix

                if fix:
                    for t in Swoop.From(library).get_devicesets().get_devices(
                    ).get_technologies():
                        for attr in self.required_deviceset_attributes:
                            if not t.get_attribute(
                                    attr) or not t.get_attribute(
                                        attr).get_value():
                                t.add_attribute(Swoop.Attribute().set_name(
                                    attr).set_value("Unknown"))

                    for p in library.get_packages():
                        if not Swoop.From(
                                p).get_drawing_elements().without_type(
                                    Swoop.Hole).with_layer("tKeepout").count():
                            p.add_drawing_element(
                                Swoop.Wire().set_x1(0).set_y1(0).set_x2(0).
                                set_y2(0).set_width(1).set_layer("tKeepout"))

                for s in Swoop.From(library).get_symbols():
                    self.check_symbol(s,
                                      checker_options.power_and_ground_names)

                for p in Swoop.From(library).get_packages():
                    self.check_package(p)

                for ds in Swoop.From(library).get_devicesets():
                    self.check_deviceset(
                        ds, checker_options.power_and_ground_names)