Перевод плагина в режим выбора

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
Romchan
Новоприбывший
Сообщения: 3
Зарегистрирован: 30 мар 2022, 20:16
Репутация: 0
Откуда: Moscow

Перевод плагина в режим выбора

Сообщение Romchan » 30 мар 2022, 20:21

Здравствуйте, начал осваивать qgis
Допустим, у меня существует плагин, он открывается при нажатии на его иконку, которая находится на панели
Вопрос: как сделать так, чтобы при нажатии на его иконку запускался режим выбора объекта, и он появлялся при клике на объект?
Спасибо

AlexRomantsov
Завсегдатай
Сообщения: 299
Зарегистрирован: 24 мар 2022, 05:54
Репутация: 136
Ваше звание: хм, сам не знал
Откуда: Томск

Re: Перевод плагина в режим выбора

Сообщение AlexRomantsov » 31 мар 2022, 09:44

Здравствуйте. Если поможет, можно предварительно выделить объект(ы), а потом вызвать плагин. Например следующий код подсматривает на активный слой, и буферизирует объекты с галкой "Только выделенные"
"""
Model exported as python.
Name : Операции с объектом
Group : test
With QGIS : 32400
"""

from qgis.core import QgsProcessing
from qgis.core import QgsProcessingAlgorithm
from qgis.core import QgsProcessingMultiStepFeedback
from qgis.core import QgsProcessingParameterFeatureSource
import processing


class (QgsProcessingAlgorithm):

def initAlgorithm(self, config=None):
self.addParameter(QgsProcessingParameterFeatureSource('2', 'Объект', types=[QgsProcessing.TypeVectorAnyGeometry], defaultValue=None))

def processAlgorithm(self, parameters, context, model_feedback):
# Use a multi-step feedback, so that individual child algorithm progress reports are adjusted for the
# overall progress through the model
feedback = QgsProcessingMultiStepFeedback(1, model_feedback)
results = {}
outputs = {}

# Буфер
alg_params = {
'DISSOLVE': False,
'DISTANCE': 10,
'END_CAP_STYLE': 0, # Скруглённое
'INPUT': parameters['2'],
'JOIN_STYLE': 0, # Скруглённое
'MITER_LIMIT': 2,
'SEGMENTS': 5,
'OUTPUT': QgsProcessing.TEMPORARY_OUTPUT
}
outputs[''] = processing.run('native:buffer', alg_params, context=context, feedback=feedback, is_child_algorithm=True)
return results

def name(self):
return 'Операции с объектом'

def displayName(self):
return 'Операции с объектом'

def group(self):
return 'test'

def groupId(self):
return 'test'

def createInstance(self):
return ()

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей