def trimFeatures(self, geom, toExtend): # geom è in map coordinates tolerance2ApproxCurve = QadVariables.get(QadMsg.translate("Environment variables", "TOLERANCE2APPROXCURVE")) LineTempLayer = None self.plugIn.beginEditCommand("Feature extended" if toExtend else "Feature trimmed", \ self.entitySet.getLayerList()) for layerEntitySet in self.entitySet.layerEntitySetList: layer = layerEntitySet.layer for featureId in layerEntitySet.featureIds: f = qad_utils.getFeatureById(layer, featureId) if f is None: continue # trasformo la geometria nel crs del canvas per lavorare con coordinate piane xy f_geom = self.layerToMapCoordinates(layer, f.geometry()) if geom.type() == QGis.Point: # ritorna una tupla (<The squared cartesian distance>, # <minDistPoint> # <afterVertex> # <leftOf>) dummy = qad_utils.closestSegmentWithContext(geom.asPoint(), f_geom) if dummy[1] is not None: intPts = [dummy[1]] else: intPts = qad_utils.getIntersectionPoints(geom, f_geom) for intPt in intPts: if toExtend: newGeom = qad_utils.extendQgsGeometry(self.plugIn.canvas.mapRenderer().destinationCrs(), f_geom, intPt, \ self.limitEntitySet, self.edgeMode, \ tolerance2ApproxCurve) if newGeom is not None: # aggiorno la feature con la geometria estesa extendedFeature = QgsFeature(f) # trasformo la geometria nel crs del layer extendedFeature.setGeometry(self.mapToLayerCoordinates(layer, newGeom)) # plugIn, layer, feature, refresh, check_validity if qad_layer.updateFeatureToLayer(self.plugIn, layer, extendedFeature, False, False) == False: self.plugIn.destroyEditCommand() return else: # trim result = qad_utils.trimQgsGeometry(self.plugIn.canvas.mapRenderer().destinationCrs(), f_geom, intPt, \ self.limitEntitySet, self.edgeMode, \ tolerance2ApproxCurve) if result is not None: line1 = result[0] line2 = result[1] atSubGeom = result[2] if layer.geometryType() == QGis.Line: updGeom = qad_utils.setSubGeom(f_geom, line1, atSubGeom) if updGeom is None: self.plugIn.destroyEditCommand() return trimmedFeature1 = QgsFeature(f) # trasformo la geometria nel crs del layer trimmedFeature1.setGeometry(self.mapToLayerCoordinates(layer, updGeom)) # plugIn, layer, feature, refresh, check_validity if qad_layer.updateFeatureToLayer(self.plugIn, layer, trimmedFeature1, False, False) == False: self.plugIn.destroyEditCommand() return if line2 is not None: trimmedFeature2 = QgsFeature(f) # trasformo la geometria nel crs del layer trimmedFeature2.setGeometry(self.mapToLayerCoordinates(layer, line2)) # plugIn, layer, feature, coordTransform, refresh, check_validity if qad_layer.addFeatureToLayer(self.plugIn, layer, trimmedFeature2, None, False, False) == False: self.plugIn.destroyEditCommand() return else: # aggiungo le linee nei layer temporanei di QAD if LineTempLayer is None: LineTempLayer = qad_layer.createQADTempLayer(self.plugIn, QGis.Line) self.plugIn.addLayerToLastEditCommand("Feature trimmed", LineTempLayer) lineGeoms = [line1] if line2 is not None: lineGeoms.append(line2) # trasformo la geometria in quella dei layer temporanei # plugIn, pointGeoms, lineGeoms, polygonGeoms, coord, refresh if qad_layer.addGeometriesToQADTempLayers(self.plugIn, None, lineGeoms, None, None, False) == False: self.plugIn.destroyEditCommand() return updGeom = qad_utils.delSubGeom(f_geom, atSubGeom) if updGeom is None or updGeom.isGeosEmpty(): # da cancellare # plugIn, layer, feature id, refresh if qad_layer.deleteFeatureToLayer(self.plugIn, layer, f.id(), False) == False: self.plugIn.destroyEditCommand() return else: trimmedFeature1 = QgsFeature(f) # trasformo la geometria nel crs del layer trimmedFeature1.setGeometry(self.mapToLayerCoordinates(layer, updGeom)) # plugIn, layer, feature, refresh, check_validity if qad_layer.updateFeatureToLayer(self.plugIn, layer, trimmedFeature1, False, False) == False: self.plugIn.destroyEditCommand() return self.plugIn.endEditCommand() self.nOperationsToUndo = self.nOperationsToUndo + 1
def breakFeatures(self): f = self.entSelClass.entity.getFeature() if f is None: return layer = self.entSelClass.entity.layer LineTempLayer = None self.plugIn.beginEditCommand("Feature broken", layer) tolerance2ApproxCurve = QadVariables.get(QadMsg.translate("Environment variables", "TOLERANCE2APPROXCURVE")) # trasformo la geometria nel crs del canvas per lavorare con coordinate piane xy g = self.layerToMapCoordinates(layer, f.geometry()) result = qad_utils.breakQgsGeometry(g, self.firstPt, self.secondPt, \ tolerance2ApproxCurve) if result is not None: line1 = result[0] line2 = result[1] atSubGeom = result[2] if layer.geometryType() == QGis.Line: if line1 is not None: updGeom = qad_utils.setSubGeom(g, line1, atSubGeom) if updGeom is None: self.plugIn.destroyEditCommand() return brokenFeature1 = QgsFeature(f) # trasformo la geometria nel crs del layer brokenFeature1.setGeometry(self.mapToLayerCoordinates(layer, updGeom)) # plugIn, layer, feature, refresh, check_validity if qad_layer.updateFeatureToLayer(self.plugIn, layer, brokenFeature1, False, False) == False: self.plugIn.destroyEditCommand() return if line2 is not None: brokenFeature2 = QgsFeature(f) # trasformo la geometria nel crs del layer brokenFeature2.setGeometry(self.mapToLayerCoordinates(layer, line2)) # plugIn, layer, feature, coordTransform, refresh, check_validity if qad_layer.addFeatureToLayer(self.plugIn, layer, brokenFeature2, None, False, False) == False: self.plugIn.destroyEditCommand() return else: # aggiungo le linee nei layer temporanei di QAD if LineTempLayer is None: LineTempLayer = qad_layer.createQADTempLayer(self.plugIn, QGis.Line) self.plugIn.addLayerToLastEditCommand("Feature broken", LineTempLayer) lineGeoms = [] if line1 is not None: lineGeoms.append(line1) if line2 is not None: lineGeoms.append(line2) # trasformo la geometria in quella dei layer temporanei # plugIn, pointGeoms, lineGeoms, polygonGeoms, coord, refresh if qad_layer.addGeometriesToQADTempLayers(self.plugIn, None, lineGeoms, None, None, False) == False: self.plugIn.destroyEditCommand() return updGeom = qad_utils.delSubGeom(g, atSubGeom) if updGeom is None or updGeom.isGeosEmpty(): # da cancellare # plugIn, layer, feature id, refresh if qad_layer.deleteFeatureToLayer(self.plugIn, layer, f.id(), False) == False: self.plugIn.destroyEditCommand() return else: brokenFeature1 = QgsFeature(f) # trasformo la geometria nel crs del layer brokenFeature1.setGeometry(self.mapToLayerCoordinates(layer, updGeom)) # plugIn, layer, feature, refresh, check_validity if qad_layer.updateFeatureToLayer(self.plugIn, layer, brokenFeature1, False, False) == False: self.plugIn.destroyEditCommand() return self.plugIn.endEditCommand()
def AddGeoms(self, currLayer): bufferGeoms = [] tolerance = QadVariables.get( QadMsg.translate("Environment variables", "TOLERANCE2APPROXCURVE")) for layerEntitySet in self.entitySet.layerEntitySetList: layer = layerEntitySet.layer geoms = layerEntitySet.getGeometryCollection() for geom in geoms: # trasformo la geometria nel crs del canvas per lavorare con coordinate piane xy newGeom = self.layerToMapCoordinates(layer, geom) g = qad_utils.ApproxCurvesOnGeom(newGeom.buffer(self.width, self.segments), \ self.segments, self.segments, \ tolerance) # trasformo la geometria nel crs del layer bufferGeoms.append(self.mapToLayerCoordinates(layer, g)) self.plugIn.beginEditCommand("Feature buffered", currLayer) # filtro le features per tipo pointGeoms, lineGeoms, polygonGeoms = qad_utils.filterGeomsByType(bufferGeoms, \ currLayer.geometryType()) # aggiungo le geometrie del tipo corretto if currLayer.geometryType() == QGis.Line: polygonToLines = [] # Riduco le geometrie in linee for g in polygonGeoms: lines = qad_utils.asPointOrPolyline(g) for l in lines: if l.type() == QGis.Line: polygonToLines.append(l) # plugIn, layer, geoms, coordTransform , refresh, check_validity if qad_layer.addGeomsToLayer(self.plugIn, currLayer, polygonToLines, None, False, False) == False: self.plugIn.destroyEditCommand() return del polygonGeoms[:] # svuoto la lista # plugIn, layer, geoms, coordTransform , refresh, check_validity if qad_layer.addGeomsToLayer(self.plugIn, currLayer, bufferGeoms, None, False, False) == False: self.plugIn.destroyEditCommand() return if pointGeoms is not None and len(pointGeoms) > 0: PointTempLayer = qad_layer.createQADTempLayer( self.plugIn, QGis.Point) self.plugIn.addLayerToLastEditCommand("Feature buffered", PointTempLayer) if lineGeoms is not None and len(lineGeoms) > 0: LineTempLayer = qad_layer.createQADTempLayer( self.plugIn, QGis.Line) self.plugIn.addLayerToLastEditCommand("Feature buffered", LineTempLayer) if polygonGeoms is not None and len(polygonGeoms) > 0: PolygonTempLayer = qad_layer.createQADTempLayer( self.plugIn, QGis.Polygon) self.plugIn.addLayerToLastEditCommand("Feature buffered", PolygonTempLayer) # aggiungo gli scarti nei layer temporanei di QAD # trasformo la geometria in quella dei layer temporanei # plugIn, pointGeoms, lineGeoms, polygonGeoms, coord, refresh if qad_layer.addGeometriesToQADTempLayers(self.plugIn, pointGeoms, lineGeoms, polygonGeoms, \ None, False) == False: self.plugIn.destroyEditCommand() return self.plugIn.endEditCommand()
def breakFeatures(self): f = self.EntSelClass.entity.getFeature() if f is None: return layer = self.EntSelClass.entity.layer LineTempLayer = None self.plugIn.beginEditCommand("Feature broken", layer) tolerance2ApproxCurve = QadVariables.get(QadMsg.translate("Environment variables", "TOLERANCE2APPROXCURVE")) # trasformo la geometria nel crs del canvas per lavorare con coordinate piane xy g = self.layerToMapCoordinates(layer, f.geometry()) result = qad_utils.breakQgsGeometry(g, self.firstPt, self.secondPt, tolerance2ApproxCurve) if result is not None: line1 = result[0] line2 = result[1] atSubGeom = result[2] if layer.geometryType() == QGis.Line: if line1 is not None: updGeom = qad_utils.setSubGeom(g, line1, atSubGeom) if updGeom is None: self.plugIn.destroyEditCommand() return brokenFeature1 = QgsFeature(f) # trasformo la geometria nel crs del layer brokenFeature1.setGeometry(self.mapToLayerCoordinates(layer, updGeom)) # plugIn, layer, feature, refresh, check_validity if qad_layer.updateFeatureToLayer(self.plugIn, layer, brokenFeature1, False, False) == False: self.plugIn.destroyEditCommand() return if line2 is not None: brokenFeature2 = QgsFeature(f) # trasformo la geometria nel crs del layer brokenFeature2.setGeometry(self.mapToLayerCoordinates(layer, line2)) # plugIn, layer, feature, coordTransform, refresh, check_validity if qad_layer.addFeatureToLayer(self.plugIn, layer, brokenFeature2, None, False, False) == False: self.plugIn.destroyEditCommand() return else: # aggiungo le linee nei layer temporanei di QAD if LineTempLayer is None: LineTempLayer = qad_layer.createQADTempLayer(self.plugIn, QGis.Line) self.plugIn.addLayerToLastEditCommand("Feature broken", LineTempLayer) lineGeoms = [] if line1 is not None: lineGeoms.append(line1) if line2 is not None: lineGeoms.append(line2) # trasformo la geometria in quella dei layer temporanei # plugIn, pointGeoms, lineGeoms, polygonGeoms, coord, refresh if qad_layer.addGeometriesToQADTempLayers(self.plugIn, None, lineGeoms, None, None, False) == False: self.plugIn.destroyEditCommand() return updGeom = qad_utils.delSubGeom(g, atSubGeom) if updGeom is None or updGeom.isGeosEmpty(): # da cancellare # plugIn, layer, feature id, refresh if qad_layer.deleteFeatureToLayer(self.plugIn, layer, f.id(), False) == False: self.plugIn.destroyEditCommand() return else: brokenFeature1 = QgsFeature(f) # trasformo la geometria nel crs del layer brokenFeature1.setGeometry(self.mapToLayerCoordinates(layer, updGeom)) # plugIn, layer, feature, refresh, check_validity if qad_layer.updateFeatureToLayer(self.plugIn, layer, brokenFeature1, False, False) == False: self.plugIn.destroyEditCommand() return self.plugIn.endEditCommand()
def offsetGeoms(self, currLayer): featuresLayers = [] # lista di (layer, features) for f in self.featureCache: layer = f[0] feature = f[1] found = False for featuresLayer in featuresLayers: if featuresLayer[0].id() == layer.id(): found = True featuresLayer[1].append(feature) break # se non c'era ancora il layer if not found: featuresLayers.append([layer, [feature]]) layerList = [] for featuresLayer in featuresLayers: layerList.append(featuresLayer[0]) PointTempLayer = None LineTempLayer = None PolygonTempLayer = None self.plugIn.beginEditCommand("Feature offseted", layerList) for featuresLayer in featuresLayers: # filtro le features per tipo pointGeoms, lineGeoms, polygonGeoms = qad_utils.filterFeaturesByType(featuresLayer[1], \ currLayer.geometryType()) # aggiungo le features con geometria del tipo corretto if currLayer.geometryType() == QGis.Line: polygonToLines = [] # Riduco le geometrie in linee for g in polygonGeoms: lines = qad_utils.asPointOrPolyline(g) for l in lines: if l.type() == QGis.Line: polygonToLines.append(l) # plugIn, layer, geoms, coordTransform , refresh, check_validity if qad_layer.addGeomsToLayer(self.plugIn, currLayer, polygonToLines, None, False, False) == False: self.plugIn.destroyEditCommand() return del polygonGeoms[:] # svuoto la lista # plugIn, layer, features, coordTransform, refresh, check_validity if qad_layer.addFeaturesToLayer(self.plugIn, currLayer, featuresLayer[1], None, False, False) == False: self.plugIn.destroyEditCommand() return if pointGeoms is not None and len(pointGeoms) > 0 and PointTempLayer is None: PointTempLayer = qad_layer.createQADTempLayer(self.plugIn, QGis.Point) self.plugIn.addLayerToLastEditCommand("Feature offseted", PointTempLayer) if lineGeoms is not None and len(lineGeoms) > 0 and LineTempLayer is None: LineTempLayer = qad_layer.createQADTempLayer(self.plugIn, QGis.Line) self.plugIn.addLayerToLastEditCommand("Feature offseted", LineTempLayer) if polygonGeoms is not None and len(polygonGeoms) > 0 and PolygonTempLayer is None: PolygonTempLayer = qad_layer.createQADTempLayer(self.plugIn, QGis.Polygon) self.plugIn.addLayerToLastEditCommand("Feature offseted", PolygonTempLayer) # aggiungo gli scarti nei layer temporanei di QAD # trasformo la geometria in quella dei layer temporanei # plugIn, pointGeoms, lineGeoms, polygonGeoms, coord, refresh if qad_layer.addGeometriesToQADTempLayers(self.plugIn, pointGeoms, lineGeoms, polygonGeoms, \ featuresLayer[0].crs(), False) == False: self.plugIn.destroyEditCommand() return self.plugIn.endEditCommand()
def AddGeoms(self, currLayer): bufferGeoms = [] tolerance = QadVariables.get(QadMsg.translate("Environment variables", "TOLERANCE2APPROXCURVE")) for layerEntitySet in self.entitySet.layerEntitySetList: layer = layerEntitySet.layer geoms = layerEntitySet.getGeometryCollection() for geom in geoms: # trasformo la geometria nel crs del canvas per lavorare con coordinate piane xy newGeom = self.layerToMapCoordinates(layer, geom) g = qad_utils.ApproxCurvesOnGeom(newGeom.buffer(self.width, self.segments), \ self.segments, self.segments, \ tolerance) # trasformo la geometria nel crs del layer bufferGeoms.append(self.mapToLayerCoordinates(layer, g)) self.plugIn.beginEditCommand("Feature buffered", currLayer) # filtro le features per tipo pointGeoms, lineGeoms, polygonGeoms = qad_utils.filterGeomsByType(bufferGeoms, \ currLayer.geometryType()) # aggiungo le geometrie del tipo corretto if currLayer.geometryType() == QGis.Line: polygonToLines = [] # Riduco le geometrie in linee for g in polygonGeoms: lines = qad_utils.asPointOrPolyline(g) for l in lines: if l.type() == QGis.Line: polygonToLines.append(l) # plugIn, layer, geoms, coordTransform , refresh, check_validity if qad_layer.addGeomsToLayer(self.plugIn, currLayer, polygonToLines, None, False, False) == False: self.plugIn.destroyEditCommand() return del polygonGeoms[:] # svuoto la lista # plugIn, layer, geoms, coordTransform , refresh, check_validity if qad_layer.addGeomsToLayer(self.plugIn, currLayer, bufferGeoms, None, False, False) == False: self.plugIn.destroyEditCommand() return if pointGeoms is not None and len(pointGeoms) > 0: PointTempLayer = qad_layer.createQADTempLayer(self.plugIn, QGis.Point) self.plugIn.addLayerToLastEditCommand("Feature buffered", PointTempLayer) if lineGeoms is not None and len(lineGeoms) > 0: LineTempLayer = qad_layer.createQADTempLayer(self.plugIn, QGis.Line) self.plugIn.addLayerToLastEditCommand("Feature buffered", LineTempLayer) if polygonGeoms is not None and len(polygonGeoms) > 0: PolygonTempLayer = qad_layer.createQADTempLayer(self.plugIn, QGis.Polygon) self.plugIn.addLayerToLastEditCommand("Feature buffered", PolygonTempLayer) # aggiungo gli scarti nei layer temporanei di QAD # trasformo la geometria in quella dei layer temporanei # plugIn, pointGeoms, lineGeoms, polygonGeoms, coord, refresh if qad_layer.addGeometriesToQADTempLayers(self.plugIn, pointGeoms, lineGeoms, polygonGeoms, \ None, False) == False: self.plugIn.destroyEditCommand() return self.plugIn.endEditCommand()
def AddGeoms(self, currLayer): bufferGeoms = [] for layerEntitySet in self.entitySet.layerEntitySetList: geoms = layerEntitySet.getGeometryCollection() width = qad_utils.distMapToLayerCoordinates( self.width, self.SSGetClass.getPointMapTool().canvas, layerEntitySet.layer ) tolerance = qad_utils.distMapToLayerCoordinates( QadVariables.get(QadMsg.translate("Environment variables", "TOLERANCE2APPROXCURVE")), self.SSGetClass.getPointMapTool().canvas, layerEntitySet.layer, ) if layerEntitySet.layer.crs() != currLayer.crs(): coordTransform = QgsCoordinateTransform( layerEntitySet.layer.crs(), currLayer.crs() ) # trasformo la geometria else: coordTransform = None for geom in geoms: g = qad_utils.ApproxCurvesOnGeom( geom.buffer(width, self.segments), self.segments, self.segments, tolerance ) if coordTransform is not None: g.transform(coordTransform) bufferGeoms.append(g) self.plugIn.beginEditCommand("Feature buffered", currLayer) # filtro le features per tipo pointGeoms, lineGeoms, polygonGeoms = qad_utils.filterGeomsByType(bufferGeoms, currLayer.geometryType()) # aggiungo le geometrie del tipo corretto if currLayer.geometryType() == QGis.Line: polygonToLines = [] # Riduco le geometrie in linee for g in polygonGeoms: lines = qad_utils.asPointOrPolyline(g) for l in lines: if l.type() == QGis.Line: polygonToLines.append(l) # plugIn, layer, geoms, coordTransform , refresh, check_validity if qad_layer.addGeomsToLayer(self.plugIn, currLayer, polygonToLines, None, False, False) == False: self.plugIn.destroyEditCommand() return del polygonGeoms[:] # svuoto la lista # plugIn, layer, geoms, coordTransform , refresh, check_validity if qad_layer.addGeomsToLayer(self.plugIn, currLayer, bufferGeoms, None, False, False) == False: self.plugIn.destroyEditCommand() return if pointGeoms is not None and len(pointGeoms) > 0: PointTempLayer = qad_layer.createQADTempLayer(self.plugIn, QGis.Point) self.plugIn.addLayerToLastEditCommand("Feature buffered", PointTempLayer) if lineGeoms is not None and len(lineGeoms) > 0: LineTempLayer = qad_layer.createQADTempLayer(self.plugIn, QGis.Line) self.plugIn.addLayerToLastEditCommand("Feature buffered", LineTempLayer) if polygonGeoms is not None and len(polygonGeoms) > 0: PolygonTempLayer = qad_layer.createQADTempLayer(self.plugIn, QGis.Polygon) self.plugIn.addLayerToLastEditCommand("Feature buffered", PolygonTempLayer) # aggiungo gli scarti nei layer temporanei di QAD # trasformo la geometria in quella dei layer temporanei # plugIn, pointGeoms, lineGeoms, polygonGeoms, coord, refresh if ( qad_layer.addGeometriesToQADTempLayers( self.plugIn, pointGeoms, lineGeoms, polygonGeoms, currLayer.crs(), False ) == False ): self.plugIn.destroyEditCommand() return self.plugIn.endEditCommand()
def breakFeatures(self): layer = self.EntSelClass.entity.layer LineTempLayer = None self.plugIn.beginEditCommand("Feature broken", layer) tolerance2ApproxCurve = qad_utils.distMapToLayerCoordinates(QadVariables.get(QadMsg.translate("Environment variables", "TOLERANCE2APPROXCURVE")), \ self.plugIn.canvas,\ layer) f = self.EntSelClass.entity.getFeature() g = f.geometry() if self.plugIn.canvas.mapRenderer().destinationCrs() != layer.crs(): # Trasformo i punti di break nel sistema di coordinate del layer self.firstPt = self.mapToLayerCoordinates(layer, self.firstPt) self.secondPt = self.mapToLayerCoordinates(layer, self.secondPt) result = qad_utils.breakQgsGeometry(layer, f.geometry(), self.firstPt, self.secondPt, \ tolerance2ApproxCurve) if result is not None: line1 = result[0] line2 = result[1] atSubGeom = result[2] if layer.geometryType() == QGis.Line: updGeom = qad_utils.setSubGeom(f.geometry(), line1, atSubGeom) if updGeom is None: self.plugIn.destroyEditCommand() return brokenFeature1 = QgsFeature(f) brokenFeature1.setGeometry(updGeom) # plugIn, layer, feature, refresh, check_validity if qad_layer.updateFeatureToLayer(self.plugIn, layer, brokenFeature1, False, False) == False: self.plugIn.destroyEditCommand() return if line2 is not None: brokenFeature2 = QgsFeature(f) brokenFeature2.setGeometry(line2) # plugIn, layer, feature, coordTransform, refresh, check_validity if qad_layer.addFeatureToLayer(self.plugIn, layer, brokenFeature2, None, False, False) == False: self.plugIn.destroyEditCommand() return else: # aggiungo le linee nei layer temporanei di QAD if LineTempLayer is None: LineTempLayer = qad_layer.createQADTempLayer(self.plugIn, QGis.Line) self.plugIn.addLayerToLastEditCommand("Feature broken", LineTempLayer) lineGeoms = [line1] if line2 is not None: lineGeoms.append(line2) # trasformo la geometria in quella dei layer temporanei # plugIn, pointGeoms, lineGeoms, polygonGeoms, coord, refresh if qad_layer.addGeometriesToQADTempLayers(self.plugIn, None, lineGeoms, None, layer.crs(), False) == False: self.plugIn.destroyEditCommand() return updGeom = qad_utils.delSubGeom(f.geometry(), atSubGeom) if updGeom is None or updGeom.isGeosEmpty(): # da cancellare # plugIn, layer, feature id, refresh if qad_layer.deleteFeatureToLayer(self.plugIn, layer, f.id(), False) == False: self.plugIn.destroyEditCommand() return else: brokenFeature1 = QgsFeature(f) brokenFeature1.setGeometry(updGeom) # plugIn, layer, feature, refresh, check_validity if qad_layer.updateFeatureToLayer(self.plugIn, layer, brokenFeature1, False, False) == False: self.plugIn.destroyEditCommand() return self.plugIn.endEditCommand()