def __init__(self, p0: Vec2, p1: Vec2, p0_layer: 'Layer', p1_layer: 'Layer', net: Optional['pcbre.model.net.Net']) -> None: super(Airwire, self).__init__() self.p0 = p0 self.p1 = p1 self.p0_layer = p0_layer self.p1_layer = p1_layer self._net = net self._bbox = Rect.from_points(self.p0, self.p1) self._project = None
def __init__(self, layer: 'Layer', exterior: Sequence[Vec2], interiors: Sequence[Sequence[Vec2]], net: Optional['Net'] = None) -> None: super(Polygon, self).__init__() # Buffer 0 forces geom cleanup self.__geometry = ShapelyPolygon(exterior, interiors).buffer(0) minx, miny, maxx, maxy = self.__geometry.bounds self._bbox = Rect.from_points(Point2(minx, miny), Point2(maxx, maxy)) self._net = net self._layer = layer self._project: Optional['Project'] = None self.__triangulation = None
def make_active(self, world_to_point=False): self.__saved_point = self.current_point.save() if not world_to_point: pt = self.view.viewState.tfW2V(self.current_point.get()) bounds = Rect.from_points( Point2(0, 0), Point2(self.view.width(), self.view.height())) pt_clipped = clip_point_to_rect(pt, bounds) screen_pt = self.view.mapToGlobal( QtCore.QPoint(*pt_clipped.to_int_tuple())) QtGui.QCursor.setPos(screen_pt) else: rect_pt = Point2(self.view.mapFromGlobal(QtGui.QCursor.pos())) world_pt = self.view.viewState.tfV2W(rect_pt) self.current_point.set(world_pt) self.__point_active = True
def __init__(self, p0: Vec2, p1: Vec2, thickness: float, layer: 'Layer', net: Optional['Net'] = None) -> None: super(Trace, self).__init__() self.p0 = p0 self.p1 = p1 self.thickness = thickness self._net = net self._layer = layer self._project = None self._bbox = Rect.from_points(self.p0, self.p1) self._bbox.feather(self.thickness, self.thickness) self.__poly_repr = ShapelyLineString([self.p0, self.p1 ]).buffer(self.thickness / 2)