Exemple #1
0
    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
Exemple #2
0
    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
Exemple #3
0
    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
Exemple #4
0
    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)