本文整理汇总了Python中qad_pline_cmd.QadPLINECommandClass类的典型用法代码示例。如果您正苦于以下问题:Python QadPLINECommandClass类的具体用法?Python QadPLINECommandClass怎么用?Python QadPLINECommandClass使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了QadPLINECommandClass类的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: run
def run(self, msgMapTool=False, msg=None):
if self.plugIn.canvas.mapRenderer().destinationCrs().geographicFlag():
self.showMsg(
QadMsg.translate(
"QAD", "\nThe coordinate reference system of the project must be a projected coordinate system.\n"
)
)
return True # fine comando
if self.virtualCmd == False: # se si vuole veramente salvare la polylinea in un layer
currLayer, errMsg = qad_layer.getCurrLayerEditable(self.plugIn.canvas, QGis.Polygon)
if currLayer is None:
self.showErr(errMsg)
return True # fine comando
# =========================================================================
# RICHIESTA PRIMO PUNTO PER SELEZIONE OGGETTI
if self.step == 0:
self.PLINECommand = QadPLINECommandClass(self.plugIn, True)
# se questo flag = True il comando serve all'interno di un altro comando per disegnare una linea
# che non verrà salvata su un layer
self.PLINECommand.virtualCmd = True
self.PLINECommand.asToolForMPolygon = True # per rubberband tipo poligono
self.PLINECommand.run(msgMapTool, msg)
self.step = 1
return False # continua
# =========================================================================
# RISPOSTA ALLA RICHIESTA PUNTO (da step = 0 o 1)
elif self.step == 1: # dopo aver atteso un punto si riavvia il comando
if self.PLINECommand.run(msgMapTool, msg) == True:
verticesLen = len(self.PLINECommand.vertices)
if verticesLen > 3:
self.vertices = self.PLINECommand.vertices[:] # copio la lista
firstVertex = self.vertices[0]
# se l'ultimo vertice non é uguale al primo
if self.vertices[verticesLen - 1] != firstVertex:
# aggiungo un vertice con le stesse coordinate del primo
self.vertices.append(firstVertex)
if self.virtualCmd == False: # se si vuole veramente salvare la polylinea in un layer
if qad_layer.addPolygonToLayer(self.plugIn, currLayer, self.vertices) == False:
self.showMsg(QadMsg.translate("Command_MPOLYGON", "\nPolygon not valid.\n"))
del self.vertices[:] # svuoto la lista
else:
self.showMsg(QadMsg.translate("Command_MPOLYGON", "\nPolygon not valid.\n"))
del self.PLINECommand
self.PLINECommand = None
return True # fine
return False
示例2: QadTRIMCommandClass
#.........这里部分代码省略.........
# RISPOSTA ALLA SELEZIONE OGGETTI LIMITI
elif self.step == 1:
self.limitEntitySet.set(self.SSGetClass.entitySet)
if self.limitEntitySet.count() == 0:
return True # fine comando
# si appresta ad attendere la selezione degli oggetti da estendere/tagliare
self.waitForObjectSel()
return False
#=========================================================================
# RISPOSTA ALLA SELEZIONE OGGETTI DA ESTENDERE
elif self.step == 2:
if msgMapTool == True: # il punto arriva da una selezione grafica
# la condizione seguente si verifica se durante la selezione di un punto
# é stato attivato un altro plugin che ha disattivato Qad
# quindi stato riattivato il comando che torna qui senza che il maptool
# abbia selezionato un punto
if self.getPointMapTool().point is None: # il maptool é stato attivato senza un punto
if self.getPointMapTool().rightButton == True: # se usato il tasto destro del mouse
return True # fine comando
else:
self.setMapTool(self.getPointMapTool()) # riattivo il maptool
return False
else:
value = self.getPointMapTool().point
else: # il punto arriva come parametro della funzione
value = msg
if type(value) == unicode:
if value == QadMsg.translate("Command_TRIM", "Fence") or value == "Fence":
# Seleziona tutti gli oggetti che intersecano una polilinea
self.PLINECommand = QadPLINECommandClass(self.plugIn)
# se questo flag = True il comando serve all'interno di un altro comando per disegnare una linea
# che non verrà salvata su un layer
self.PLINECommand.virtualCmd = True
self.PLINECommand.run(msgMapTool, msg)
self.step = 3
return False
elif value == QadMsg.translate("Command_TRIM", "Crossing") or value == "Crossing":
# Seleziona tutti gli oggetti che intersecano un rettangolo
self.RECTANGLECommand = QadRECTANGLECommandClass(self.plugIn)
# se questo flag = True il comando serve all'interno di un altro comando per disegnare una linea
# che non verrà salvata su un layer
self.RECTANGLECommand.virtualCmd = True
self.RECTANGLECommand.run(msgMapTool, msg)
self.step = 4
return False
elif value == QadMsg.translate("Command_TRIM", "Edge") or value == "Edge":
# Per estendere un oggetto usando anche le estensioni degli oggetti di riferimento
# vedi variabile EDGEMODE
keyWords = QadMsg.translate("Command_TRIM", "Extend") + "/" + \
QadMsg.translate("Command_TRIM", "No extend")
if self.edgeMode == 0: # 0 = nessuna estensione
self.defaultValue = QadMsg.translate("Command_TRIM", "No")
else:
self.defaultValue = QadMsg.translate("Command_TRIM", "Extend")
prompt = QadMsg.translate("Command_TRIM", "Specify an extension mode [{0}] <{1}>: ").format(keyWords, self.defaultValue)
englishKeyWords = "Extend" + "/" + "No extend"
keyWords += "_" + englishKeyWords
# si appresta ad attendere enter o una parola chiave
# msg, inputType, default, keyWords, nessun controllo
self.waitFor(prompt, \
QadInputTypeEnum.KEYWORDS, \
示例3: run
def run(self, msgMapTool = False, msg = None):
if self.plugIn.canvas.mapRenderer().destinationCrs().geographicFlag():
self.showMsg(QadMsg.translate("QAD", "\nThe coordinate reference system of the project must be a projected coordinate system.\n"))
return True # fine comando
#=========================================================================
# RICHIESTA SELEZIONE OGGETTI LIMITI
if self.step == 0: # inizio del comando
CurrSettingsMsg = QadMsg.translate("QAD", "\nCurrent settings: ")
if self.edgeMode == 0: # 0 = nessuna estensione
CurrSettingsMsg = CurrSettingsMsg + QadMsg.translate("Command_TRIM", "Edge = No extend")
else:
CurrSettingsMsg = CurrSettingsMsg + QadMsg.translate("Command_TRIM", "Edge = Extend")
self.showMsg(CurrSettingsMsg)
self.showMsg(QadMsg.translate("Command_TRIM", "\nSelect trim limits..."))
if self.SSGetClass.run(msgMapTool, msg) == True:
# selezione terminata
self.step = 1
return self.run(msgMapTool, msg)
#=========================================================================
# RISPOSTA ALLA SELEZIONE OGGETTI LIMITI
elif self.step == 1:
self.limitEntitySet.set(self.SSGetClass.entitySet)
if self.limitEntitySet.count() == 0:
return True # fine comando
# si appresta ad attendere la selezione degli oggetti da estendere/tagliare
self.waitForObjectSel()
return False
#=========================================================================
# RISPOSTA ALLA SELEZIONE OGGETTI DA ESTENDERE
elif self.step == 2:
if msgMapTool == True: # il punto arriva da una selezione grafica
# la condizione seguente si verifica se durante la selezione di un punto
# é stato attivato un altro plugin che ha disattivato Qad
# quindi stato riattivato il comando che torna qui senza che il maptool
# abbia selezionato un punto
if self.getPointMapTool().point is None: # il maptool é stato attivato senza un punto
if self.getPointMapTool().rightButton == True: # se usato il tasto destro del mouse
return True # fine comando
else:
self.setMapTool(self.getPointMapTool()) # riattivo il maptool
return False
else:
value = self.getPointMapTool().point
else: # il punto arriva come parametro della funzione
value = msg
if type(value) == unicode:
if value == QadMsg.translate("Command_TRIM", "Fence") or value == "Fence":
# Seleziona tutti gli oggetti che intersecano una polilinea
self.PLINECommand = QadPLINECommandClass(self.plugIn)
# se questo flag = True il comando serve all'interno di un altro comando per disegnare una linea
# che non verrà salvata su un layer
self.PLINECommand.virtualCmd = True
self.PLINECommand.run(msgMapTool, msg)
self.step = 3
return False
elif value == QadMsg.translate("Command_TRIM", "Crossing") or value == "Crossing":
# Seleziona tutti gli oggetti che intersecano un rettangolo
self.RECTANGLECommand = QadRECTANGLECommandClass(self.plugIn)
# se questo flag = True il comando serve all'interno di un altro comando per disegnare una linea
# che non verrà salvata su un layer
self.RECTANGLECommand.virtualCmd = True
self.RECTANGLECommand.run(msgMapTool, msg)
self.step = 4
return False
elif value == QadMsg.translate("Command_TRIM", "Edge") or value == "Edge":
# Per estendere un oggetto usando anche le estensioni degli oggetti di riferimento
# vedi variabile EDGEMODE
keyWords = QadMsg.translate("Command_TRIM", "Extend") + "/" + \
QadMsg.translate("Command_TRIM", "No extend")
if self.edgeMode == 0: # 0 = nessuna estensione
self.defaultValue = QadMsg.translate("Command_TRIM", "No")
else:
self.defaultValue = QadMsg.translate("Command_TRIM", "Extend")
prompt = QadMsg.translate("Command_TRIM", "Specify an extension mode [{0}] <{1}>: ").format(keyWords, self.defaultValue)
englishKeyWords = "Extend" + "/" + "No extend"
keyWords += "_" + englishKeyWords
# si appresta ad attendere enter o una parola chiave
# msg, inputType, default, keyWords, nessun controllo
self.waitFor(prompt, \
QadInputTypeEnum.KEYWORDS, \
self.defaultValue, \
keyWords, QadInputModeEnum.NONE)
self.step = 5
return False
elif value == QadMsg.translate("Command_TRIM", "Undo") or value == "Undo":
if self.nOperationsToUndo > 0:
self.nOperationsToUndo = self.nOperationsToUndo - 1
self.plugIn.undoEditCommand()
else:
self.showMsg(QadMsg.translate("QAD", "\nThe command has been canceled."))
elif type(value) == QgsPoint: # se é stato selezionato un punto
#.........这里部分代码省略.........
示例4: QadSSGetClass
#.........这里部分代码省略.........
if self.SingleSelection == True and self.entitySet.count() > 0:
self.plugIn.setLastEntitySet(self.entitySet)
return True # fine
if self.exitAfterSelection == True:
return True # fine
self.WaitForFirstPoint()
elif value == QadMsg.translate("Command_SSGET", "Box") or value == "Box":
# Seleziona tutti gli oggetti che intersecano o si trovano all'interno di un rettangolo specificato da due punti.
# Se i punti del rettangolo sono specificati da destra a sinistra, Riquadro equivale ad Interseca,
# altrimenti é equivalente a Finestra
# imposto il map tool
self.getPointMapTool().setSelectionMode(QadGetPointSelectionModeEnum.POINT_SELECTION)
self.getPointMapTool().setDrawMode(QadGetPointDrawModeEnum.NONE)
# si appresta ad attendere un punto
self.waitForPoint(QadMsg.translate("Command_SSGET", "First corner: "))
self.step = 2
elif value == QadMsg.translate("Command_SSGET", "All") or value == "All":
# Seleziona tutti gli oggetti
selSet = qad_utils.getSelSet("X", self.getPointMapTool(), None, \
self.getLayersToCheck())
self.elaborateSelSet(selSet, False)
if self.SingleSelection == True and self.entitySet.count() > 0:
self.plugIn.setLastEntitySet(self.entitySet)
return True # fine
if self.exitAfterSelection == True:
return True # fine
self.WaitForFirstPoint()
elif value == QadMsg.translate("Command_SSGET", "Fence") or value == "Fence":
# Seleziona tutti gli oggetti che intersecano una polilinea
self.PLINECommand = QadPLINECommandClass(self.plugIn)
# se questo flag = True il comando serve all'interno di un altro comando per disegnare una linea
# che non verrà salvata su un layer
self.PLINECommand.virtualCmd = True
self.PLINECommand.run(msgMapTool, msg)
self.step = 4
elif value == QadMsg.translate("Command_SSGET", "WPolygon") or value == "WPolygon" or \
value == QadMsg.translate("Command_SSGET", "CPolygon") or value == "CPolygon":
# "FPoligono" = Seleziona oggetti che si trovano completamente all'interno di un poligono definito da punti
# "IPoligono" = Seleziona gli oggetti che intersecano o si trovano all'interno di un poligono definito specificando dei punti
self.MPOLYGONCommand = QadMPOLYGONCommandClass(self.plugIn)
# se questo flag = True il comando serve all'interno di un altro comando per disegnare una linea
# che non verrà salvata su un layer
self.MPOLYGONCommand.virtualCmd = True
if value == QadMsg.translate("Command_SSGET", "WPolygon") or value == "WPolygon":
self.MPOLYGONCommand.setRubberBandColor(None, getColorForWindowSelectionArea())
else:
self.MPOLYGONCommand.setRubberBandColor(None, getColorForCrossingSelectionArea())
self.MPOLYGONCommand.run(msgMapTool, msg)
self.step = 7
elif value == QadMsg.translate("Command_SSGET", "WCircle") or value == "WCircle" or \
value == QadMsg.translate("Command_SSGET", "CCircle") or value == "CCircle":
# "FCerchio" = Seleziona oggetti che si trovano completamente all'interno di un cerchio
# "ICerchio" = Seleziona oggetti che intersecano o si trovano all'interno di un cerchio
self.CIRCLECommand = QadCIRCLECommandClass(self.plugIn)
# se questo flag = True il comando serve all'interno di un altro comando per disegnare un cerchio
# che non verrà salvata su un layer
self.CIRCLECommand.virtualCmd = True
if value == QadMsg.translate("Command_SSGET", "WCircle") or value == "WCircle":
self.CIRCLECommand.setRubberBandColor(None, getColorForWindowSelectionArea())
示例5: run
#.........这里部分代码省略.........
if self.SingleSelection == True and self.entitySet.count() > 0:
self.plugIn.setLastEntitySet(self.entitySet)
return True # fine
if self.exitAfterSelection == True:
return True # fine
self.WaitForFirstPoint()
elif value == QadMsg.translate("Command_SSGET", "Box") or value == "Box":
# Seleziona tutti gli oggetti che intersecano o si trovano all'interno di un rettangolo specificato da due punti.
# Se i punti del rettangolo sono specificati da destra a sinistra, Riquadro equivale ad Interseca,
# altrimenti é equivalente a Finestra
# imposto il map tool
self.getPointMapTool().setSelectionMode(QadGetPointSelectionModeEnum.POINT_SELECTION)
self.getPointMapTool().setDrawMode(QadGetPointDrawModeEnum.NONE)
# si appresta ad attendere un punto
self.waitForPoint(QadMsg.translate("Command_SSGET", "First corner: "))
self.step = 2
elif value == QadMsg.translate("Command_SSGET", "All") or value == "All":
# Seleziona tutti gli oggetti
selSet = qad_utils.getSelSet("X", self.getPointMapTool(), None, \
self.getLayersToCheck())
self.elaborateSelSet(selSet, False)
if self.SingleSelection == True and self.entitySet.count() > 0:
self.plugIn.setLastEntitySet(self.entitySet)
return True # fine
if self.exitAfterSelection == True:
return True # fine
self.WaitForFirstPoint()
elif value == QadMsg.translate("Command_SSGET", "Fence") or value == "Fence":
# Seleziona tutti gli oggetti che intersecano una polilinea
self.PLINECommand = QadPLINECommandClass(self.plugIn)
# se questo flag = True il comando serve all'interno di un altro comando per disegnare una linea
# che non verrà salvata su un layer
self.PLINECommand.virtualCmd = True
self.PLINECommand.run(msgMapTool, msg)
self.step = 4
elif value == QadMsg.translate("Command_SSGET", "WPolygon") or value == "WPolygon" or \
value == QadMsg.translate("Command_SSGET", "CPolygon") or value == "CPolygon":
# "FPoligono" = Seleziona oggetti che si trovano completamente all'interno di un poligono definito da punti
# "IPoligono" = Seleziona gli oggetti che intersecano o si trovano all'interno di un poligono definito specificando dei punti
self.MPOLYGONCommand = QadMPOLYGONCommandClass(self.plugIn)
# se questo flag = True il comando serve all'interno di un altro comando per disegnare una linea
# che non verrà salvata su un layer
self.MPOLYGONCommand.virtualCmd = True
if value == QadMsg.translate("Command_SSGET", "WPolygon") or value == "WPolygon":
self.MPOLYGONCommand.setRubberBandColor(None, getColorForWindowSelectionArea())
else:
self.MPOLYGONCommand.setRubberBandColor(None, getColorForCrossingSelectionArea())
self.MPOLYGONCommand.run(msgMapTool, msg)
self.step = 7
elif value == QadMsg.translate("Command_SSGET", "WCircle") or value == "WCircle" or \
value == QadMsg.translate("Command_SSGET", "CCircle") or value == "CCircle":
# "FCerchio" = Seleziona oggetti che si trovano completamente all'interno di un cerchio
# "ICerchio" = Seleziona oggetti che intersecano o si trovano all'interno di un cerchio
self.CIRCLECommand = QadCIRCLECommandClass(self.plugIn)
# se questo flag = True il comando serve all'interno di un altro comando per disegnare un cerchio
# che non verrà salvata su un layer
self.CIRCLECommand.virtualCmd = True
if value == QadMsg.translate("Command_SSGET", "WCircle") or value == "WCircle":
self.CIRCLECommand.setRubberBandColor(None, getColorForWindowSelectionArea())
示例6: QadMPOLYGONCommandClass
class QadMPOLYGONCommandClass(QadCommandClass):
def instantiateNewCmd(self):
""" istanzia un nuovo comando dello stesso tipo """
return QadMPOLYGONCommandClass(self.plugIn)
def getName(self):
return QadMsg.translate("Command_list", "MPOLYGON")
def getEnglishName(self):
return "MPOLYGON"
def connectQAction(self, action):
QObject.connect(action, SIGNAL("triggered()"), self.plugIn.runMPOLYGONCommand)
def getIcon(self):
return QIcon(":/plugins/qad/icons/mpolygon.png")
def getNote(self):
# impostare le note esplicative del comando
return QadMsg.translate("Command_MPOLYGON", "Draws a polygon by many methods.\nA Polygon is a closed sequence of straight line segments,\narcs or a combination of two.")
def __init__(self, plugIn):
QadCommandClass.__init__(self, plugIn)
self.vertices = []
# se questo flag = True il comando serve all'interno di un altro comando per disegnare un poligono
# che non verrà salvato su un layer
self.virtualCmd = False
self.rubberBandBorderColor = None
self.rubberBandFillColor = None
self.PLINECommand = None
def __del__(self):
QadCommandClass.__del__(self)
if self.PLINECommand is not None:
del self.PLINECommand
def getPointMapTool(self, drawMode = QadGetPointDrawModeEnum.NONE):
if self.PLINECommand is not None:
return self.PLINECommand.getPointMapTool(drawMode)
else:
return QadCommandClass.getPointMapTool(self, drawMode)
def getCurrentContextualMenu(self):
if self.PLINECommand is not None:
return self.PLINECommand.getCurrentContextualMenu()
else:
return self.contextualMenu
def setRubberBandColor(self, rubberBandBorderColor, rubberBandFillColor):
self.rubberBandBorderColor = rubberBandBorderColor
self.rubberBandFillColor = rubberBandFillColor
if self.PLINECommand is not None:
self.PLINECommand.setRubberBandColor(rubberBandBorderColor, rubberBandFillColor)
def run(self, msgMapTool = False, msg = None):
if self.plugIn.canvas.mapSettings().destinationCrs().geographicFlag():
self.showMsg(QadMsg.translate("QAD", "\nThe coordinate reference system of the project must be a projected coordinate system.\n"))
return True # fine comando
if self.virtualCmd == False: # se si vuole veramente salvare la polylinea in un layer
currLayer, errMsg = qad_layer.getCurrLayerEditable(self.plugIn.canvas, QGis.Polygon)
if currLayer is None:
self.showErr(errMsg)
return True # fine comando
#=========================================================================
# RICHIESTA PRIMO PUNTO PER SELEZIONE OGGETTI
if self.step == 0:
self.PLINECommand = QadPLINECommandClass(self.plugIn, True)
self.PLINECommand.setRubberBandColor(self.rubberBandBorderColor, self.rubberBandFillColor)
# se questo flag = True il comando serve all'interno di un altro comando per disegnare una linea
# che non verrà salvata su un layer
self.PLINECommand.virtualCmd = True
self.PLINECommand.asToolForMPolygon = True # per rubberband tipo poligono
self.PLINECommand.run(msgMapTool, msg)
self.step = 1
return False # continua
#=========================================================================
# RISPOSTA ALLA RICHIESTA PUNTO (da step = 0 o 1)
elif self.step == 1: # dopo aver atteso un punto si riavvia il comando
if self.PLINECommand.run(msgMapTool, msg) == True:
verticesLen = len(self.PLINECommand.vertices)
if verticesLen >= 3:
self.vertices = self.PLINECommand.vertices[:] # copio la lista
firstVertex = self.vertices[0]
# se l'ultimo vertice non é uguale al primo
if self.vertices[verticesLen - 1] != firstVertex:
# aggiungo un vertice con le stesse coordinate del primo
self.vertices.append(firstVertex)
if self.virtualCmd == False: # se si vuole veramente salvare la polylinea in un layer
if qad_layer.addPolygonToLayer(self.plugIn, currLayer, self.vertices) == False:
self.showMsg(QadMsg.translate("Command_MPOLYGON", "\nPolygon not valid.\n"))
del self.vertices[:] # svuoto la lista
else:
#.........这里部分代码省略.........
示例7: QadMPOLYGONCommandClass
class QadMPOLYGONCommandClass(QadCommandClass):
def instantiateNewCmd(self):
""" istanzia un nuovo comando dello stesso tipo """
return QadMPOLYGONCommandClass(self.plugIn)
def getName(self):
return QadMsg.translate("Command_list", "MPOLIGONO")
def getEnglishName(self):
return "MPOLYGON"
def connectQAction(self, action):
QObject.connect(action, SIGNAL("triggered()"), self.plugIn.runMPOLYGONCommand)
def getIcon(self):
return QIcon(":/plugins/qad/icons/mpolygon.png")
def getNote(self):
# impostare le note esplicative del comando
return QadMsg.translate("Command_MPOLYGON", "Disegna un poligono mediante diversi metodi.\n\nUn poligono é una sequenza chiusa di segmenti retti,\narchi o una combinazione dei due.")
def __init__(self, plugIn):
QadCommandClass.__init__(self, plugIn)
self.vertices = []
# se questo flag = True il comando serve all'interno di un altro comando per disegnare un poligono
# che non verrà salvato su un layer
self.virtualCmd = False
self.PLINECommand = None
def __del__(self):
QadCommandClass.__del__(self)
del self.SSGetClass
def getPointMapTool(self, drawMode = QadGetPointDrawModeEnum.NONE):
if self.PLINECommand is not None:
return self.PLINECommand.getPointMapTool(drawMode)
else:
return QadCommandClass.getPointMapTool(self, drawMode)
def run(self, msgMapTool = False, msg = None):
if self.plugIn.canvas.mapRenderer().destinationCrs().geographicFlag():
self.showMsg(QadMsg.translate("QAD", "\nIl sistema di riferimento del progetto deve essere un sistema di coordinate proiettate.\n"))
return True # fine comando
if self.virtualCmd == False: # se si vuole veramente salvare la polylinea in un layer
currLayer, errMsg = qad_layer.getCurrLayerEditable(self.plugIn.canvas, QGis.Polygon)
if currLayer is None:
self.showErr(errMsg)
return True # fine comando
#=========================================================================
# RICHIESTA PRIMO PUNTO PER SELEZIONE OGGETTI
if self.step == 0:
self.PLINECommand = QadPLINECommandClass(self.plugIn, True)
# se questo flag = True il comando serve all'interno di un altro comando per disegnare una linea
# che non verrà salvata su un layer
self.PLINECommand.virtualCmd = True
self.PLINECommand.asToolForMPolygon = True # per rubberband tipo poligono
self.PLINECommand.run(msgMapTool, msg)
self.step = 1
return False # continua
#=========================================================================
# RISPOSTA ALLA RICHIESTA PUNTO (da step = 0 o 1)
elif self.step == 1: # dopo aver atteso un punto si riavvia il comando
if self.PLINECommand.run(msgMapTool, msg) == True:
verticesLen = len(self.PLINECommand.vertices)
if verticesLen > 3:
self.vertices = self.PLINECommand.vertices[:] # copio la lista
firstVertex = self.vertices[0]
# se l'ultimo vertice non é uguale al primo
if self.vertices[verticesLen - 1] != firstVertex:
# aggiungo un vertice con le stesse coordinate del primo
self.vertices.append(firstVertex)
if self.virtualCmd == False: # se si vuole veramente salvare la polylinea in un layer
if qad_layer.addPolygonToLayer(self.plugIn, currLayer, self.vertices) == False:
self.showMsg(QadMsg.translate("Command_MPOLYGON", "\nPoligono non valido.\n"))
del self.vertices[:] # svuoto la lista
else:
self.showMsg(QadMsg.translate("Command_MPOLYGON", "\nPoligono non valido.\n"))
del self.PLINECommand
self.PLINECommand = None
return True # fine
return False
示例8: run
def run(self, msgMapTool = False, msg = None):
if self.plugIn.canvas.mapSettings().destinationCrs().geographicFlag():
self.showMsg(QadMsg.translate("QAD", "\nThe coordinate reference system of the project must be a projected coordinate system.\n"))
return True # fine comando
if self.step == 0:
self.waitForEntsel(msgMapTool, msg) # seleziona il poligono da modificare
return False # continua
#=========================================================================
# RISPOSTA ALLA SELEZIONE POLIGONO DA MODIFICARE
elif self.step == 1:
if self.entSelClass.run(msgMapTool, msg) == True:
if self.entSelClass.entity.isInitialized():
self.poligonEntity.set(self.entSelClass.entity.layer, self.entSelClass.entity.featureId)
layer = self.entSelClass.entity.layer
self.poligonEntity.deselectOnLayer()
self.WaitForMainMenu()
else:
if self.entSelClass.canceledByUsr == True: # fine comando
return True
self.showMsg(QadMsg.translate("QAD", "No geometries in this position."))
self.waitForEntsel(msgMapTool, msg)
return False # continua
#=========================================================================
# RISPOSTA ALLA RICHIESTA DEL MENU PRINCIPALE
elif self.step == 2: # dopo aver atteso una opzione si riavvia il comando
if msgMapTool == True: # il punto arriva da una selezione grafica
# la condizione seguente si verifica se durante la selezione di un punto
# é stato attivato un altro plugin che ha disattivato Qad
# quindi stato riattivato il comando che torna qui senza che il maptool
# abbia selezionato un punto
if self.getPointMapTool().point is None: # il maptool é stato attivato senza un punto
if self.getPointMapTool().rightButton == True: # se usato il tasto destro del mouse
return True # fine comando
else:
self.setMapTool(self.getPointMapTool()) # riattivo il maptool
return False
self.WaitForMainMenu()
return False
else: # l'opzione arriva come parametro della funzione
value = msg
self.poligonEntity.deselectOnLayer()
if value == QadMsg.translate("Command_MAPMPEDIT", "Add") or value == "Add":
self.SSGetClass.checkPointLayer = False # scarto i punto
self.SSGetClass.run(msgMapTool, msg)
self.step = 3
return False
elif value == QadMsg.translate("Command_MAPMPEDIT", "Delete") or value == "Delete":
self.waitForBoundary(msgMapTool, msg)
self.step = 4
return False
elif value == QadMsg.translate("Command_MAPMPEDIT", "Union") or value == "Union":
self.SSGetClass.checkPointLayer = False # scarto i layer puntuali
self.SSGetClass.run(msgMapTool, msg)
self.step = 5
return False
elif value == QadMsg.translate("Command_MAPMPEDIT", "Substract") or value == "Substract":
self.SSGetClass.checkPointLayer = False # scarto i layer puntuali
self.SSGetClass.run(msgMapTool, msg)
self.step = 6
return False
elif value == QadMsg.translate("Command_MAPMPEDIT", "Intersect") or value == "Intersect":
self.SSGetClass.checkPointLayer = False # scarto i layer puntuali
self.SSGetClass.run(msgMapTool, msg)
self.step = 7
return False
elif value == QadMsg.translate("Command_MAPMPEDIT", "split Objects") or value == "split Objects":
# Disegna una polilinea di divisione del poligono
self.PLINECommand = QadPLINECommandClass(self.plugIn)
# se questo flag = True il comando serve all'interno di un altro comando per disegnare una linea
# che non verrà salvata su un layer
self.PLINECommand.virtualCmd = True
self.PLINECommand.run(msgMapTool, msg)
self.step = 9
return False
elif value == QadMsg.translate("Command_MAPMPEDIT", "split Parts") or value == "split Parts":
# Disegna una polilinea di divisione del poligono
self.PLINECommand = QadPLINECommandClass(self.plugIn)
# se questo flag = True il comando serve all'interno di un altro comando per disegnare una linea
# che non verrà salvata su un layer
self.PLINECommand.virtualCmd = True
self.PLINECommand.run(msgMapTool, msg)
self.step = 10
return False
elif value == QadMsg.translate("Command_MAPMPEDIT", "iNclude objs") or value == "iNclude objs":
self.SSGetClass.checkPointLayer = True # includo i layer puntuali
self.SSGetClass.run(msgMapTool, msg)
self.step = 8
return False
elif value == QadMsg.translate("Command_MAPMPEDIT", "Undo") or value == "Undo":
if self.nOperationsToUndo > 0:
self.nOperationsToUndo = self.nOperationsToUndo - 1
self.plugIn.undoEditCommand()
else:
#.........这里部分代码省略.........
示例9: QadMAPMPEDITCommandClass
#.........这里部分代码省略.........
self.WaitForMainMenu()
return False
else: # l'opzione arriva come parametro della funzione
value = msg
self.poligonEntity.deselectOnLayer()
if value == QadMsg.translate("Command_MAPMPEDIT", "Add") or value == "Add":
self.SSGetClass.checkPointLayer = False # scarto i punto
self.SSGetClass.run(msgMapTool, msg)
self.step = 3
return False
elif value == QadMsg.translate("Command_MAPMPEDIT", "Delete") or value == "Delete":
self.waitForBoundary(msgMapTool, msg)
self.step = 4
return False
elif value == QadMsg.translate("Command_MAPMPEDIT", "Union") or value == "Union":
self.SSGetClass.checkPointLayer = False # scarto i layer puntuali
self.SSGetClass.run(msgMapTool, msg)
self.step = 5
return False
elif value == QadMsg.translate("Command_MAPMPEDIT", "Substract") or value == "Substract":
self.SSGetClass.checkPointLayer = False # scarto i layer puntuali
self.SSGetClass.run(msgMapTool, msg)
self.step = 6
return False
elif value == QadMsg.translate("Command_MAPMPEDIT", "Intersect") or value == "Intersect":
self.SSGetClass.checkPointLayer = False # scarto i layer puntuali
self.SSGetClass.run(msgMapTool, msg)
self.step = 7
return False
elif value == QadMsg.translate("Command_MAPMPEDIT", "split Objects") or value == "split Objects":
# Disegna una polilinea di divisione del poligono
self.PLINECommand = QadPLINECommandClass(self.plugIn)
# se questo flag = True il comando serve all'interno di un altro comando per disegnare una linea
# che non verrà salvata su un layer
self.PLINECommand.virtualCmd = True
self.PLINECommand.run(msgMapTool, msg)
self.step = 9
return False
elif value == QadMsg.translate("Command_MAPMPEDIT", "split Parts") or value == "split Parts":
# Disegna una polilinea di divisione del poligono
self.PLINECommand = QadPLINECommandClass(self.plugIn)
# se questo flag = True il comando serve all'interno di un altro comando per disegnare una linea
# che non verrà salvata su un layer
self.PLINECommand.virtualCmd = True
self.PLINECommand.run(msgMapTool, msg)
self.step = 10
return False
elif value == QadMsg.translate("Command_MAPMPEDIT", "iNclude objs") or value == "iNclude objs":
self.SSGetClass.checkPointLayer = True # includo i layer puntuali
self.SSGetClass.run(msgMapTool, msg)
self.step = 8
return False
elif value == QadMsg.translate("Command_MAPMPEDIT", "Undo") or value == "Undo":
if self.nOperationsToUndo > 0:
self.nOperationsToUndo = self.nOperationsToUndo - 1
self.plugIn.undoEditCommand()
else:
self.showMsg(QadMsg.translate("QAD", "\nThe command has been canceled."))
elif value == QadMsg.translate("Command_MAPMPEDIT", "eXit") or value == "eXit":
return True # fine comando
else:
return True # fine comando
self.WaitForMainMenu()