def add_logical_component_to_deviceset(self, cpt, lib, deviceset): """ Add the openjson component to the eagle library and deviceset objects as a logical device with gates. """ symbol_names = set() # set of names used for eaglexml symbols gate_names = set() # set of names used for eaglemxl gates for symindex, symbol in enumerate(cpt.symbols): for bodyindex, body in enumerate(symbol.bodies): index = (symindex * len(symbol.bodies)) + bodyindex symname = cpt.attributes.get('eaglexml_symbol_%d' % index, 'symbol_%d' % len(lib.symbols.symbol)) if symname not in symbol_names: lib.symbols.symbol.append( self.make_eagle_symbol_for_openjson_body(symname, body)) symbol_names.add(symname) gatename = cpt.attributes.get('eaglexml_gate_%d' % bodyindex, 'G$%d' % bodyindex) if gatename not in gate_names: deviceset.gates.gate.append( G.gate(name=gatename, symbol=symname, x="0", y="0")) gate_names.add(gatename) self.body2gate[body] = gatename for pin in body.pins: self.cptpin2gate[cpt.name, pin.pin_number] = gatename
def add_logical_component_to_deviceset(self, cpt_name, cpt, lib, deviceset): """ Add the openjson component to the eagle library and deviceset objects as a logical device with gates. """ # set of names used for eaglexml symbols symbol_names = set([s.name for s in lib.symbols.symbol]) gate_names = set() # set of names used for eaglemxl gates self.cpt2pinnames[cpt_name] = [] for symindex, symbol in enumerate(cpt.symbols): for bodyindex, body in enumerate(symbol.bodies): index = (symindex * len(symbol.bodies)) + bodyindex symname = cpt.attributes.get( 'eaglexml_symbol_%d' % index, 'symbol_%d' % len(lib.symbols.symbol)) for pin in body.pins: if pin.label is not None: pin_name = pin.label.text else: pin_name = pin.pin_number if pin_name in self.cpt2pinnames[cpt_name]: self.pinnum2name[( cpt_name, pin.pin_number)] = pin_name + ' ' + str( self.cpt2pinnames[cpt_name].count(pin_name) + 1) else: self.pinnum2name[(cpt_name, pin.pin_number)] = pin_name self.cpt2pinnames[cpt_name].append(pin_name) if symname not in symbol_names: lib.symbols.symbol.append( self.make_eagle_symbol_for_openjson_body( symname, body, cpt_name)) symbol_names.add(symname) gatename = cpt.attributes.get('eaglexml_gate_%d' % bodyindex, 'G$%d' % bodyindex) if gatename not in gate_names: deviceset.gates.gate.append( G.gate(name=gatename, symbol=symname, x="0", y="0")) gate_names.add(gatename) self.body2gate[body] = gatename for pin in body.pins: self.cptpin2gate[cpt_name, pin.pin_number] = gatename
def add_logical_component_to_deviceset(self, cpt_name, cpt, lib, deviceset): """ Add the openjson component to the eagle library and deviceset objects as a logical device with gates. """ # set of names used for eaglexml symbols symbol_names = set([s.name for s in lib.symbols.symbol]) gate_names = set() # set of names used for eaglemxl gates self.cpt2pinnames[cpt_name] = [] for symindex, symbol in enumerate(cpt.symbols): for bodyindex, body in enumerate(symbol.bodies): index = (symindex * len(symbol.bodies)) + bodyindex symname = cpt.attributes.get('eaglexml_symbol_%d' % index, 'symbol_%d' % len(lib.symbols.symbol)) for pin in body.pins: if pin.label is not None: pin_name = pin.label.text else: pin_name = pin.pin_number if pin_name in self.cpt2pinnames[cpt_name]: self.pinnum2name[(cpt_name, pin.pin_number)] = pin_name + ' ' + str(self.cpt2pinnames[cpt_name].count(pin_name) + 1) else: self.pinnum2name[(cpt_name, pin.pin_number)] = pin_name self.cpt2pinnames[cpt_name].append(pin_name) if symname not in symbol_names: lib.symbols.symbol.append( self.make_eagle_symbol_for_openjson_body(symname, body, cpt_name)) symbol_names.add(symname) gatename = cpt.attributes.get('eaglexml_gate_%d' % bodyindex, 'G$%d' % bodyindex) if gatename not in gate_names: deviceset.gates.gate.append( G.gate(name=gatename, symbol=symname, x="0", y="0")) gate_names.add(gatename) self.body2gate[body] = gatename for pin in body.pins: self.cptpin2gate[cpt_name, pin.pin_number] = gatename