Beispiel #1
0
    def stretch(self, entity, ptList, offSetX, offSetY, tolerance2ApproxCurve):
        # entity = entità da stirare
        # ptList = lista dei punti da stirare
        # offSetX, offSetY = spostamento da fare
        # tolerance2ApproxCurve = tolleranza per ricreare le curve
        # verifico se l'entità appartiene ad uno stile di quotatura
        if entity.whatIs() == "ENTITY":
            stretchedGeom = entity.getGeometry()
            # controllo inserito perchè con le quote, questa viene cancellata e ricreata quindi alcuni oggetti potrebbero non esistere più
            if stretchedGeom is None:  # se non c'è lo salto senza errore
                return True

            # trasformo la geometria nel crs del canvas per lavorare con coordinate piane xy
            coordTransform = QgsCoordinateTransform(
                entity.layer.crs(),
                self.plugIn.canvas.mapSettings().destinationCrs())
            stretchedGeom.transform(coordTransform)
            # stiro la feature
            stretchedGeom = qad_stretch_fun.gripStretchQgsGeometry(stretchedGeom, self.basePt, ptList, \
                                                                   offSetX, offSetY, \
                                                                   tolerance2ApproxCurve)

            if stretchedGeom is not None:
                # trasformo la geometria nel crs del layer
                coordTransform = QgsCoordinateTransform(
                    self.plugIn.canvas.mapSettings().destinationCrs(),
                    entity.layer.crs())
                stretchedGeom.transform(coordTransform)

                f = entity.getFeature()
                f.setGeometry(stretchedGeom)
                if self.copyEntities == False:
                    # plugIn, layer, feature, refresh, check_validity
                    if qad_layer.updateFeatureToLayer(self.plugIn,
                                                      entity.layer, f, False,
                                                      False) == False:
                        return False
                else:
                    # plugIn, layer, features, coordTransform, refresh, check_validity
                    if qad_layer.addFeatureToLayer(self.plugIn, entity.layer,
                                                   f, None, False,
                                                   False) == False:
                        return False

        elif entity.whatIs() == "DIMENTITY":
            # stiro la quota
            if self.copyEntities == False:
                if entity.deleteToLayers(self.plugIn) == False:
                    return False
            newDimEntity = QadDimEntity(entity)  # la copio
            newDimEntity.stretch(ptList, offSetX, offSetY)
            if newDimEntity.addToLayers(self.plugIn) == False:
                return False
            # non so per quale motivo a volte non si aggiorna la mappa quindi forzo l'aggiornamento
            self.plugIn.canvas.refresh()

        return True
Beispiel #2
0
   def stretch(self, entity, ptList, offSetX, offSetY, tolerance2ApproxCurve):
      # entity = entità da stirare
      # ptList = lista dei punti da stirare
      # offSetX, offSetY = spostamento da fare
      # tolerance2ApproxCurve = tolleranza per ricreare le curve
      # verifico se l'entità appartiene ad uno stile di quotatura
      if entity.whatIs() == "ENTITY":
         stretchedGeom = entity.getGeometry()
         # controllo inserito perchè con le quote, questa viene cancellata e ricreata quindi alcuni oggetti potrebbero non esistere più
         if stretchedGeom is None: # se non c'è lo salto senza errore
            return True

         # trasformo la geometria nel crs del canvas per lavorare con coordinate piane xy
         coordTransform = QgsCoordinateTransform(entity.layer.crs(), self.plugIn.canvas.mapSettings().destinationCrs())
         stretchedGeom.transform(coordTransform)           
         # stiro la feature
         stretchedGeom = qad_stretch_fun.gripStretchQgsGeometry(stretchedGeom, self.basePt, ptList, \
                                                                offSetX, offSetY, \
                                                                tolerance2ApproxCurve)
         
         if stretchedGeom is not None:
            # trasformo la geometria nel crs del layer
            coordTransform = QgsCoordinateTransform(self.plugIn.canvas.mapSettings().destinationCrs(), entity.layer.crs())
            stretchedGeom.transform(coordTransform)
                       
            f = entity.getFeature()
            f.setGeometry(stretchedGeom)
            if self.copyEntities == False:
               # plugIn, layer, feature, refresh, check_validity
               if qad_layer.updateFeatureToLayer(self.plugIn, entity.layer, f, False, False) == False:
                  return False
            else:
               # plugIn, layer, features, coordTransform, refresh, check_validity
               if qad_layer.addFeatureToLayer(self.plugIn, entity.layer, f, None, False, False) == False:
                  return False
               
      elif entity.whatIs() == "DIMENTITY":
         # stiro la quota
         if self.copyEntities == False:
            if entity.deleteToLayers(self.plugIn) == False:
               return False                      
         newDimEntity = QadDimEntity(entity) # la copio
         newDimEntity.stretch(ptList, offSetX, offSetY)
         if newDimEntity.addToLayers(self.plugIn) == False:
            return False
         # non so per quale motivo a volte non si aggiorna la mappa quindi forzo l'aggiornamento
         self.plugIn.canvas.refresh()
            
      return True