kicad: Improve net access

This adds net_name and net_index properties to a bunch of objects that
automatically look into the (net s-expr of the object
merge-requests/4/head
jaseg 2024-07-19 19:20:09 +02:00
rodzic e42b7462c9
commit be25b860a9
3 zmienionych plików z 29 dodań i 14 usunięć

Wyświetl plik

@ -307,6 +307,29 @@ class ArcPointList:
yield [kls.name_atom, *(e for elem in value for e in elem.__sexp__(elem))]
@sexp_type('net')
class Net:
index: int = 0
name: str = ''
class NetMixin:
def reset_net(self):
self.net = Net()
@property
def net_index(self):
if self.net is None:
return 0
return self.net.index
@property
def net_name(self):
if self.net is None:
return ''
return self.net.name
@sexp_type('xyz')
class XYZCoord:
x: float = 0

Wyświetl plik

@ -334,12 +334,6 @@ class Drill:
offset: Rename(XYCoord) = None
@sexp_type('net')
class NetDef:
number: int = None
name: str = None
@sexp_type('options')
class CustomPadOptions:
clearance: Named(AtomChoice(Atom.outline, Atom.convexhull)) = Atom.outline
@ -376,7 +370,7 @@ class Chamfer:
@sexp_type('pad')
class Pad:
class Pad(NetMixin):
number: str = None
type: AtomChoice(Atom.thru_hole, Atom.smd, Atom.connect, Atom.np_thru_hole) = None
shape: AtomChoice(Atom.circle, Atom.rect, Atom.oval, Atom.trapezoid, Atom.roundrect, Atom.custom) = None
@ -395,7 +389,7 @@ class Pad:
thermal_bridge_width: Named(float) = 0.5
chamfer_ratio: Named(float) = None
chamfer: Chamfer = None
net: NetDef = None
net: Net = None
tstamp: Timestamp = None
pin_function: Named(str) = None
pintype: Named(str) = None
@ -709,6 +703,10 @@ class Footprint:
if not self.property_value('Description', None):
self.set_property('Description', self.descr or '', 0, 0, 0)
def reset_nets(self):
for pad in self.pads:
pad.reset_net()
@property
def pads_by_number(self):
return {(int(pad.number) if pad.number.isnumeric() else pad.number): pad for pad in self.pads if pad.number}

Wyświetl plik

@ -150,12 +150,6 @@ class BoardSetup:
export_settings: ExportSettings = field(default_factory=ExportSettings)
@sexp_type('net')
class Net:
index: int = 0
name: str = ''
@sexp_type('segment')
class TrackSegment(BBoxMixin):
start: Rename(XYCoord) = field(default_factory=XYCoord)