SnapTool

class axioma.gui.SnapTool

Класс инструмента с поддержкой привязки к существующим координатам в окне карты или отчета

Унаследован от:

Методы:

SnapTool(view, gsm)

Конструктор

Параметры:
  • view (ItemView) – Окно, с которым будет работать данный инструмент
  • gsm (GuiSettingsManager) – Ссылка на текущие настройки приложения
scenePoint()

Возвращает текущие координаты указателя мыши в единицах измерения карты или отчета

Тип результата:QPointF
snapPoint()

Возвращает исправленные текущие координаты

Тип результата:QPointF

Пример использования в виде расширения:

''' Пример инструмента с поддержкой возможности привязки к координатам '''

class MySnapTool(axioma.gui.SnapTool):
    def __init__(self, view, gsm):
        super().__init__(view, gsm)

# Переопределяем нажатие на клавишу мыши
    def mousePressEvent(self, event):
        try:
# Если нажали левую клавишу мыши
            if (event.button() == Qt.LeftButton):
# Координаты сцены по нажатию
                currentPoint = self.scenePoint()
# Исправленные координаты
                snapped = self.snapPoint()
                sourcePointMess = 'Исходная точка {} {}'.format(currentPoint.x(), currentPoint.y())
                snapPointMess = 'Исправленная точка {} {}'.format(snapped.x(), snapped.y())
                QMessageBox.information(axioma.app.mainWindow, "Результат", sourcePointMess + '\n' + snapPointMess)
            except Exception as ex:
                print(ex)
            finally:
                return super().mousePressEvent(event)

# Определяем контроллер для создания нашего инструмента
class MySnapToolController(axioma.gui.extension.DrawingToolController):
    def __init__(self, parent=None):
        super().__init__( parent)

# Переопределяем метод создания инструмента
    def createTool(self, widget):
        return MySnapTool(widget, self.guiSettingsManager())

def createMyExtensions():
# Создаем новую группу в панели карты
    ribbonExt = axioma.gui.extension.RibbonExtension()
    ribbonExt.addGroup("map","SnapGroupId", "Узлы")
    ribbonExt.addAction("MySnapTool", "map", "SnapGroupId")
# Добавляем определенный ранее контроллер
    toolExt = axioma.gui.extension.ToolControllerExtension(MySnapToolController, "MySnapTool", icon=QIcon("://icons/16px/snap_geometries.png"), text="Пример инструмента со SNAP")
return [ribbonExt, toolExt]