Beispiel #1
0
    def Update(self, ShapeObj1, ShapeObj2):
        if ShapeObj1 == None or ShapeObj2 == None:
            return
        if ShapeObj2.isLine():
            tmp = ShapeObj1
            ShapeObj1 = ShapeObj2
            ShapeObj2 = tmp

        if ShapeObj1.isRing() == False:
            self.m_start = Geometry.GetMidPoint(ShapeObj1.m_start,
                                                ShapeObj1.m_end)
        else:
            pathPaint = QPainterPath()
            startPoint = QPoint(
                ShapeObj1.m_start.x() +
                (ShapeObj1.m_end.x() - ShapeObj1.m_start.x()) / 4,
                ShapeObj1.m_start.y())
            end = QPoint(
                ShapeObj1.m_start.x() +
                (ShapeObj1.m_end.x() - ShapeObj1.m_start.x()) / 4 * 3,
                ShapeObj1.m_start.y())
            startPoint += QPoint(
                0.0, (ShapeObj1.m_start.y() - ShapeObj1.m_end.y()) / 2)
            endPoint = startPoint + QPoint(end.x() - startPoint.x(), 0)
            self.m_start = Geometry.GetMidPoint(startPoint, endPoint)

        lMPoint = ShapeObj2.GetConnerPoints()
        nMinLen = 1000000
        nLen = len(lMPoint)
        for i in range(nLen):
            nDis = Geometry.GetDistance(lMPoint[i], self.m_start)
            if nDis < nMinLen:
                nMinLen = nDis
                self.m_end = lMPoint[i]
        return
Beispiel #2
0
    def paint(self, painter):
        self.setPainter(painter)

        lPoint = []
        lPoint.append(self.m_start)
        lPoint.append(QPoint(self.m_start.x(), self.m_end.y()))
        lPoint.append(self.m_end)
        lPoint.append(QPoint(self.m_end.x(), self.m_start.y()))

        m1 = Geometry.GetMidPoint(lPoint[0], lPoint[1])
        m2 = Geometry.GetMidPoint(lPoint[1], lPoint[2])
        m3 = Geometry.GetMidPoint(lPoint[2], lPoint[3])
        m4 = Geometry.GetMidPoint(lPoint[3], lPoint[0])

        lMPoint = [m1, m2, m3, m4]
        path = QPainterPath()
        path.moveTo(m1)
        path.lineTo(m2)
        path.lineTo(m3)
        path.lineTo(m4)
        path.lineTo(m1)
        painter.drawPath(path)

        if self.hasCorner() != -1:
            pen = QPen()
            pen.setWidth(2)
            pen.setColor(QColor(0, 255, 0))
            painter.setPen(pen)
            painter.drawEllipse(lMPoint[self.m_curConner], 5, 5)
Beispiel #3
0
    def GetConnerPoints(self):
        lPoint = []
        lPoint.append(self.m_start)
        lPoint.append(QPoint(self.m_start.x(), self.m_end.y()))
        lPoint.append(self.m_end)
        lPoint.append(QPoint(self.m_end.x(), self.m_start.y()))

        m1 = Geometry.GetMidPoint(lPoint[0], lPoint[1])
        m2 = Geometry.GetMidPoint(lPoint[1], lPoint[2])
        m3 = Geometry.GetMidPoint(lPoint[2], lPoint[3])
        m4 = Geometry.GetMidPoint(lPoint[3], lPoint[0])
        lMPoint = [m1, m2, m3, m4]
        return lMPoint