7 votos

Cómo habilitar/deshabilitar el ajuste de la funcionalidad con PyQGIS?

Objetivo: El ajuste de la funcionalidad debe ser activada y desactivada.

Hago uso de la función setSnapSettingsForLayer. Conveniencia función para ajustar la configuración de ajuste por capa. Breve Ejemplo:

QgsProject.instance().setSnapSettingsForLayer(layer.id(), True, 2, 1, 10, True)

Este enfoque ya ha sido explicado en otro post: Cómo habilitar el ajuste de una capa con el valor de la tolerancia con programación python

Hasta este momento todo funciona. Ahora llegamos al problema. ¿Cómo puedo desactivar el ajuste de la funcionalidad?

Si he de poner el segundo parámetro de la función setSnapSettingsForLayer a False (para habilitar la capa de ajuste), entonces no pasa nada. El Ajuste quedará activado. Incluso si puedo cambiar otro parámetro, por ejemplo, la tolerancia, también no cambia.

Así que, ¿cómo puede el Ajuste de ser activada y desactivada, mientras que la edición?

ACTUALIZACIÓN:

A pesar de mi respuesta, el problema aún no está resuelto. Seleccionando Ajustes -> opciones de Alineación puede encontrar la siguiente ventana

enter image description here

Sólo cuando me confirman esta ventana con el botón "ACEPTAR", el código en mi respuesta obras. Sólo que ahora el Ajuste se puede activar y desactivar durante el procesamiento. Tiene alguien alguna idea?

4voto

eshant Puntos 1

Me parece que he encontrado el problema. En QGIS todas las capas se activa inicialmente para el Ajuste. En primer lugar me deshabilitar cualquier ajuste de las operaciones. Posteriormente, el Ajuste está habilitado para un par de capas.

for item in QgsMapLayerRegistry.instance().mapLayers().values():
    QgsProject.instance().setSnapSettingsForLayer(item.id(), False, 2, 0, 2, True)
    fieldLayer = mapUtils.getLayerByName(agroInstance.dictData['lpisid'])
    backgroundLpisLayer = mapUtils.getLayerByName('LPISe')
    if checked:
        # Convenience function to set snap settings per layer.
        # it defines the snapping options:
        # id : the id of your layer, True : to enable the layer snapping, 2 : options (2: vertex+segment), 0: type of unit on map, 2 : tolerance, true : avoidIntersection)
        QgsProject.instance().setSnapSettingsForLayer(layerA.id(), True, 2, 0, 2, True)
        QgsProject.instance().setSnapSettingsForLayer(layerB.id(), True, 2, 0, 2, True)

La variable 'checked' comprueba si un botón ha sido presionado. Con este feo manera puedo activar el ajuste de encendido y apagado.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X