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())
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)