def tracks(self): """An iterator over track objects""" for t in self._obj.GetTracks(): if type(t) == pcbnew.TRACK: yield Track.wrap(t) else: continue
def tracks(self): # type: () -> Generator[Track, None, None] """List of Tracks present in the Board :return: Iterator over :class:`kicad.pcbnew.Track` """ for item in self._obj.GetTracks(): if type(item) is _pcbnew.TRACK: yield Track(item)
def add_track_segment(self, start, end, layer='F.Cu', width=None): """Create a track segment.""" track = Track(width or self.default_width, start, end, layer, board=self) self._obj.Add(track.native_obj) return track
def from_board_item(board_item): # type: (_pcbnew.BOARD_ITEM) -> BoardItem item = board_item.Cast() item_type = type(item) if item_type is _pcbnew.TEXTE_PCB: from kicad.pcbnew.text import Text return Text(item) elif item_type is _pcbnew.BOARD: from kicad.pcbnew.board import Board return Board(item) elif item_type is _pcbnew.DIMENSION: from kicad.pcbnew.dimension import Dimension return Dimension(item) elif item_type is _pcbnew.DRAWSEGMENT: from kicad.pcbnew.drawsegment import Drawsegment return Drawsegment.from_drawsegment(item) elif item_type is _pcbnew.EDGE_MODULE: raise NotImplementedError(item_type) elif item_type is _pcbnew.MODULE: from kicad.pcbnew.module import Module return Module(item) elif item_type is _pcbnew.D_PAD: from kicad.pcbnew.pad import Pad return Pad(item) elif item_type is _pcbnew.TEXTE_MODULE: from kicad.pcbnew.text import Text # type: ignore return Text(item) elif item_type is _pcbnew.VIA: from kicad.pcbnew.via import Via return Via(item) elif item_type is _pcbnew.TRACK: from kicad.pcbnew.track import Track return Track(item) elif item_type is _pcbnew.PCB_TARGET: from kicad.pcbnew.pcbtarget import PcbTarget return PcbTarget(item) elif item_type is _pcbnew.ZONE_CONTAINER: from kicad.pcbnew.zone import Zone return Zone(item) else: raise NotImplementedError(item_type)