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
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)
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