Befehle
Über Application.Commands kann man auf die Befehle zugreifen.
Handling von Return-Werten
Für die Auswertung der Rückgabewerte siehe auch: Tipps
resultDie Struktur der Return-Werte, die von den Scripting-Befehlen zurückgeliefert werden ist bei allen Befehlsaufrufen gleich und beinhaltet folgende Attribute:
Attribut | Beschreibung |
---|---|
Ok | Beinhaltet den Status des Aufrufes, mögliche Werte sind:True.....erfolgreichFalse...Fehler oder nicht ausgeführt |
Object | Optional - beinhaltet ein Objekt aus dem aktuellen Projekt |
Folgendes Beispiel fügt ein Punktobjekt ein und wertet den Aufrufstatus aus:
result = Application.Commands.PointNew('Laubbaum', (20780, 285795))
if result.Ok:
print ('Aufruf war erfolgreich')
else:
print ('Fehler oder Aufruf abgebrochen')
result.Object Wie bereits in der obigen Auflistung beschrieben kann optional auf dem Return-Werte eine Struktur Object vorhanden sein, diese ist wie folgt aufgebaut:
Attribut | Beschreibung |
---|---|
Id | Optional - beinhaltet eine eineutige Id um ein Objekt im aktuellen Projekt eindeutig zu identifizieren |
Geometry | Optional - beinhaltet die Koordinaten eines Objektes im aktuell geladenen Projekt |
Folgendes Beispiel generiert einen Linienzug und produziert auf Punkten des generierten Linienzuges zusätzlich noch punkthafte Objekte:
pointList = [(10,15), (20, 20), (30, 20)]
ls1 = Application.Commands.LinestringNew("Mauer",pointList)
punkttyp = "Triangulierungspunkt"
punkttyp2 = "Messpunkt"
if ls1.Ok:
print ("Erzeuge Startpunkt '" + punkttyp + "'")
if Application.Commands.PointNew(punkttyp, ls1.Geometry[0]).Ok:
print ("Erfolgreich!")
print "Erzeuge Endpunkt '" + punkttyp + "'"
if Application.Commands.PointNew(punkttyp, ls1.Geometry[-1]).Ok:
print ("Erfolgreich!")
count = len(ls1.Geometry)
print "Erzeuge Zwischenpunkte '" + punkttyp2 + "'"
for i in range(1, count-1):
Application.Commands.PointNew(punkttyp2, ls1.Geometry[i])
else:
print ("Abbruch bei Endpunkt.")
else:
print ("Abbruch bei Startpunkt.")
else:
print ("Abbruch bei Linienzug")
Folgendes Beispiel generiert einen Linienzug und führt im Anschluss sofort ohne Userinteraktion " Linienzug schließen " auf dem angelegten Objekt aus:
pointList = [(10,15), (20, 20), (30, 20)]
result = Application.Commands.LinestringNew("Mauer",pointList)
closed = Application.Commands.LinestringClose(result.Object)