Здравствуйте, начал осваивать qgis
Допустим, у меня существует плагин, он открывается при нажатии на его иконку, которая находится на панели
Вопрос: как сделать так, чтобы при нажатии на его иконку запускался режим выбора объекта, и он появлялся при клике на объект?
Спасибо
Перевод плагина в режим выбора
-
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 30 мар 2022, 20:16
- Репутация: 0
- Откуда: Moscow
-
- Завсегдатай
- Сообщения: 316
- Зарегистрирован: 24 мар 2022, 05:54
- Репутация: 137
- Ваше звание: хм, сам не знал
- Откуда: Томск
Re: Перевод плагина в режим выбора
Здравствуйте. Если поможет, можно предварительно выделить объект(ы), а потом вызвать плагин. Например следующий код подсматривает на активный слой, и буферизирует объекты с галкой "Только выделенные"
"""
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 ()
"""
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 ()
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 23 гостя