예제 #1
0
파일: app.py 프로젝트: hyh520/label-dcm
 def handleVerticalMode(self, evt: QMouseEvent):
     if evt.type() != QMouseEvent.MouseButtonPress:
         return None
     self.triggerIndex(self.getPointIndex(self.imgView.mapToScene(evt.pos())))
     if self.getIndexCnt() == 2:
         if static.getLineKey(self.indexA, self.indexB) not in self.lines:
             self.triggerIndex(self.indexA)
     elif self.getIndexCnt() == 3:
         A = self.points[self.indexA][0]
         B = self.points[self.indexB][0]
         C = self.points[self.indexC][0]
         if static.isOnALine(A, B, C):
             if static.getLineKey(self.indexB, self.indexC) in self.lines:
                 self.triggerIndex(self.indexA)
             else:
                 indexC = self.indexC
                 self.endTrigger()
                 self.triggerIndex(indexC)
         else:
             D = static.getFootPoint(A, B, C)
             indexD = self.addPoint(D)
             if not static.isOnSegment(A, B, D):
                 self.addLine(
                     (self.indexA if static.getDistance(A, D) < static.getDistance(B, D) else self.indexB), indexD
                 )
             self.addLine(self.indexC, indexD)
             self.endTriggerWith(self.indexC)
         self.updateAll()
예제 #2
0
파일: app.py 프로젝트: hyh520/label-dcm
 def handleAngleMode(self, evt: QMouseEvent):
     if evt.type() != QMouseEvent.MouseButtonPress:
         return None
     self.triggerIndex(self.getPointIndex(self.imgView.mapToScene(evt.pos())))
     if self.getIndexCnt() == 2 and static.getLineKey(self.indexA, self.indexB) not in self.lines:
         self.triggerIndex(self.indexA)
     elif self.getIndexCnt() == 3:
         if static.getLineKey(self.indexB, self.indexC) in self.lines:
             self.addAngle(self.indexA, self.indexB, self.indexC)
             self.endTriggerWith(self.indexC)
         else:
             indexC = self.indexC
             self.endTrigger()
             self.triggerIndex(indexC)
     self.updateAll()
예제 #3
0
파일: app.py 프로젝트: hyh520/label-dcm
 def modifyIndex(self, index: int):
     newIndex, modify = QInputDialog.getInt(self, '更改标号', '请输入一个新的标号', index, 0, step=1)
     if not modify or newIndex == index:
         return None
     if newIndex <= 0:
         self.warning('标号不可小于或等于0!')
         return None
     if newIndex in self.points:
         self.warning('此标号已存在!')
         return None
     self.points[newIndex] = self.points[index]
     del self.points[index]
     for line in list(self.lines.keys()):
         if index in line:
             fixedIndex = line[0] + line[1] - index
             self.lines[static.getLineKey(newIndex, fixedIndex)] = self.lines[line]
             del self.lines[line]
     for angle in list(self.angles.keys()):
         if index in angle:
             if index == angle[1]:
                 self.angles[angle[0], newIndex, angle[2]] = self.angles[angle]
             else:
                 fixedIndex = angle[0] + angle[2] - index
                 self.angles[static.getAngleKey(newIndex, angle[1], fixedIndex)] = self.angles[angle]
             del self.angles[angle]
     for circle in list(self.circles.keys()):
         if index in circle:
             if index == circle[0]:
                 self.circles[(newIndex, circle[1])] = self.circles[circle]
             else:
                 self.circles[(circle[0], newIndex)] = self.circles[circle]
             del self.circles[circle]
     if index in self.pivots:
         self.pivots.remove(index)
         self.pivots.add(newIndex)
예제 #4
0
파일: app.py 프로젝트: hyh520/label-dcm
 def handleMidpointMode(self, evt: QMouseEvent):
     if evt.type() != QMouseEvent.MouseButtonPress:
         return None
     self.triggerIndex(self.getPointIndex(self.imgView.mapToScene(evt.pos())))
     if self.getIndexCnt() == 2:
         if static.getLineKey(self.indexA, self.indexB) in self.lines:
             A = self.points[self.indexA][0]
             B = self.points[self.indexB][0]
             indexC = self.addPoint(static.getMidpoint(A, B))
             self.addLine(self.indexA, indexC)
             self.addLine(self.indexB, indexC)
             self.endTriggerWith(self.indexB)
         else:
             self.triggerIndex(self.indexA)
     self.updateAll()
예제 #5
0
파일: app.py 프로젝트: hyh520/label-dcm
 def addAngle(self, indexA: int, indexB: int, indexC: int):
     if self.img and static.getLineKey(indexA, indexB) in self.lines \
             and static.getLineKey(indexB, indexC) in self.lines:
         self.angles[static.getAngleKey(indexA, indexB, indexC)] = self.color
예제 #6
0
파일: app.py 프로젝트: hyh520/label-dcm
 def addLine(self, indexA: int, indexB: int):
     if self.img and indexA in self.points and indexB in self.points:
         self.lines[static.getLineKey(indexA, indexB)] = self.color