Страница 1 из 1
					
				Перевод плагина в режим выбора
				Добавлено: 30 мар 2022, 20:21
				 Romchan
				Здравствуйте, начал осваивать qgis
Допустим, у меня существует плагин, он открывается при нажатии на его иконку, которая находится на панели
Вопрос: как сделать так, чтобы при нажатии на его иконку запускался режим выбора объекта, и он появлялся при клике на объект?
Спасибо
			 
			
					
				Re: Перевод плагина в режим выбора
				Добавлено: 31 мар 2022, 09:44
				 AlexRomantsov
				Здравствуйте. Если поможет, можно предварительно выделить объект(ы), а потом вызвать плагин. Например следующий код подсматривает на активный слой, и буферизирует объекты с галкой "Только выделенные"
"""
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 ()