<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div class="elementToProof" style="font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Dear devs, </div>
<div class="elementToProof" style="font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
I'm trying to apply a symbology on a mesh when loading the layer at the end of an alg.</div>
<div class="elementToProof" style="font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
```</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
def _apply_mesh_symbology(layer: QgsMeshLayer) -> None:</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    """Default display for the output mesh: native mesh frame (edges), no colouring.</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    MDAL loads a Selafin showing the placeholder ``BOTTOM`` scalar dataset</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    coloured; this turns scalar/vector colouring off, enables the native mesh</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    frame.</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    """</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    settings = layer.rendererSettings()</div>
<div class="elementToProof">
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    settings.setActiveScalarDatasetGroup(-1)  # no BOTTOM colouring</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    settings.setActiveVectorDatasetGroup(-1)</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    edge = settings.edgeMeshSettings()</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    edge.setEnabled(True)  # draw the mesh edges</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    settings.setEdgeMeshSettings(edge)</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    native = settings.nativeMeshSettings()</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    native.setEnabled(True)  # draw the native mesh (edges)</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    triangular = settings.triangularMeshSettings()</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    triangular.setEnabled(True)  # draw the triangular mesh frame</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    settings.setTriangularMeshSettings(triangular)</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    settings.setNativeMeshSettings(native)</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    layer.setRendererSettings(settings)</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    layer.triggerRepaint()</div>
</div>
<div class="elementToProof" style="font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
class _MeshLayerPostProcessor(QgsProcessingLayerPostProcessorInterface):</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    """Finalize the Selafin mesh layer loaded on completion: CRS + default symbology."""</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    instance = None</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    def __init__(self, crs):</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
        super().__init__()</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
        self._crs = crs</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    # <a href="https://github.com/QuickOSM/QuickOSM/blob/7ddeb32239e96394335babbb50ca728e6a48e4ee/QuickOSM/quick_osm_processing/advanced/decorate_output.py#L151-L156" id="OWA27ea2f5f-be98-907c-256a-0e79e78aedfb" class="OWAAutoLink">
https://github.com/QuickOSM/QuickOSM/blob/7ddeb32239e96394335babbb50ca728e6a48e4ee/QuickOSM/quick_osm_processing/advanced/decorate_output.py#L151-L156</a></div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    @staticmethod</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    def create(crs) -> "_MeshLayerPostProcessor":</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
        _MeshLayerPostProcessor.instance = _MeshLayerPostProcessor(crs)</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
        return _MeshLayerPostProcessor.instance</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
    def postProcessLayer(self, layer, context, feedback):  # noqa: ARG002 - QGIS API signature</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
        if layer is None:</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
            return</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
        if self._crs is not None and self._crs.isValid():</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
            layer.setCrs(self._crs)</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
        if isinstance(layer, QgsMeshLayer):</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
            _apply_mesh_symbology(layer)</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
```</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
The layer is loaded with correct CRS, with scalar coloring OFF but the native mesh rendering remains OFF. </div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
I'm wondering if I'm doing something wrong...</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Once the layer is loaded, I can activate native mesh rendering using python console without issues:</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
```</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
l = iface.activeLayer()</div>
<div class="elementToProof" style="font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
r = l.rendererSettings()</div>
<div class="elementToProof" style="font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
n = r.nativeMeshSettings()</div>
<div class="elementToProof" style="font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
n.setEnabled(True)</div>
<div class="elementToProof" style="font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
r.setNativeMeshSettings(n)</div>
<div style="font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
l.setRendererSettings(r)</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
```</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Any hints?</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Kind regards, </div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Nicolas</div>
<div style="line-height: 19px; font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div class="elementToProof" style="font-family: "Calibri", "Helvetica", sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
</body>
</html>