def rotateFeature(self): """Find the rotate feature action in QGIS toolbar and trigger it so the user can rotate the element. """
# We want to detect when the rotation is complete with a geometryChanged signal so we can commit the changes and # end the edit session. self.vector_layer.editBuffer().geometryChanged.connect(self.element_layer_rotated) # Get all actions so we can search for the mActionRotateFeature action. actions = iface.mainWindow().findChildren(QAction) action = [x for x in actions if x.objectName()=='mActionRotateFeature'][0] expression = '"Element_Nb" = ' expression = expression + "\'" + f'{self.element_number}' + "\'" QgsMessageLog.logMessage(f"expression: {expression}", "StandoffLayers", Qgis.Info) processing.run("qgis:selectbyexpression", {'INPUT':self.vector_layer, 'EXPRESSION': expression, 'METHOD':0 } ) # Inititates rotate feature action allowing to select a snap to value. action.trigger() QgsMessageLog.logMessage(f"Rotate Feature Action Triggered", "ElementPlacementTool", Qgis.Info) def element_layer_rotated(self): """When the rotate action is triggered it seems to ignore the ElementPlacementTool events, so in order to end the edit session we need to detect a geometryChanged event after the rotation is complete. """ QgsMessageLog.logMessage(f"Element Layer Rotated: {self.vector_layer.name()}", "ElementPlacementTool", Qgis.Info) # Disconnect from the signal so we can just commit the changes. self.vector_layer.editBuffer().geometryChanged.disconnect() # Save changes and end edit mode self.vector_layer.commitChanges() self.vector_layer.endEditCommand() self.deactivate() From: Jacky Volpes <jacky.vol...@oslandia.com> Sent: Thursday, August 1, 2024 8:26 AM To: Catania, Luke A ERDC-RDE-GRL-VA CIV <luke.a.cata...@erdc.dren.mil>; 'qgis-developer' <qgis-developer@lists.osgeo.org> Subject: Re: [QGIS-Developer] Rotating selected features programmatically Hi Luke, Please provide a PyQGIS code snippet to reproduce. It will be more convenient to comment and suggest modifications. Thanks, -- Jacky Volpes Ingénieur développeur SIG - Oslandia Le 26/07/2024 à 22:06, Catania, Luke A ERDC-RDE-GRL-VA CIV via QGIS-Developer a écrit : I am using the select by expression tool through python to select my features and then I trigger rotation through python I see both selected features rotating, but when I click to end the rotation, it only rotated one of the features and left the other one as is. If I do this through the QGIS using the selection by expression in the selection toolbar and the rotate in the advanced digitizing tool bar rotating both features works fine. Any Ideas? Luke _______________________________________________ QGIS-Developer mailing list QGIS-Developer@lists.osgeo.org<mailto:QGIS-Developer@lists.osgeo.org> List info: Blockedhttps://lists.osgeo.org/mailman/listinfo/qgis-developerBlocked Unsubscribe: Blockedhttps://lists.osgeo.org/mailman/listinfo/qgis-developerBlocked
_______________________________________________ QGIS-Developer mailing list QGIS-Developer@lists.osgeo.org List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer