Fare un pulsante che chiama lo script Python come comando anziché come strumento di script?


12

Credo che in Arc9.3, i comandi potrebbero essere creati usando gli script VBA. Per aggiungere un comando personalizzato, accedere a Personalizza> Barre degli strumenti> Personalizza ... e fare clic su UIControls. Tuttavia, UIControls non è presente nella versione 10.

Sto creando due script separati per un progetto di libro di mappe. Uno script salverà le impostazioni del layout in una tabella e l'altro aggiornerà il layout con le impostazioni della stessa tabella. Voglio che entrambi questi script siano comandi assegnati ai pulsanti in una barra degli strumenti. Li ho creati come strumenti di script, ma ogni volta che faccio clic su di essi, eseguono lo script come strumento di geoprocessing. Richiama una finestra di avanzamento e richiede circa 10 volte più tempo per l'esecuzione rispetto a se avessi eseguito il codice nella finestra della riga di comando di Python. Non voglio la finestra di avanzamento o il tempo di esecuzione molto più lungo.

Come posso farlo in modo che lo script non sia considerato uno "strumento" e sia invece un comando simile al pulsante Salva?

Risposte:


6

All'interno di una macro VBA di Excel, quanto segue chiama uno script Python chiamato test.py:

Sub test()

rsp = Shell(Environ$("COMSPEC") & " /c C:/test.py", vbNormalFocus)

End Sub

(Fonte originale qui ) Ho dimenticato come eseguire un modulo VBA ArcGIS, ma forse una linea simile funzionerebbe per chiamare il tuo script Python.


Un'altra strategia che potrebbe funzionare potrebbe essere quella di compilare lo script Python in un file eseguibile (.exe) o batch (.bat) e chiamarlo quindi.


Ho appena visto un'altra risposta su gis.se che è più elegante:

Private Sub python_Click()
    Shell "C:\Python25\python.exe ""C:\rowcount.py"
End Sub

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.