コード例 #1
0
 def update_line(self):
     overlapping_arcs = [
         arc for arc in self.rel_item.arc_items
         if arc.obj_item == self.obj_item
     ]
     count = len(overlapping_arcs)
     path = QPainterPath(self.rel_item.pos())
     if count == 1:
         path.lineTo(self.obj_item.pos())
     else:
         rank = overlapping_arcs.index(self)
         line = QLineF(self.rel_item.pos(), self.obj_item.pos())
         line.setP1(line.center())
         line = line.normalVector()
         line.setLength(self._width * count)
         line.setP1(2 * line.p1() - line.p2())
         t = rank / (count - 1)
         ctrl_point = line.pointAt(t)
         path.quadTo(ctrl_point, self.obj_item.pos())
     self.setPath(path)
コード例 #2
0
ファイル: dfaEdge.py プロジェクト: empasempas/FiSMaSim
 def calculatePerpendicularPoint(self, startingPoint, distance, line):
     labelHelperLine = QLineF()
     labelHelperLine.setP1(startingPoint)
     labelHelperLine.setAngle(line.angle() + 90)
     labelHelperLine.setLength(distance)
     return labelHelperLine.p2()