Створення кнопки, яка викликає скрипт Python як команда, а не інструмент сценарію?


12

Я вважаю, що в Arc9.3 команди можуть бути створені за допомогою сценаріїв VBA. Щоб додати спеціальну команду, ви перейдете до Налаштувати> Панелі інструментів> Налаштувати ... та натисніть UIControls. Однак UIControls немає у версії 10.

Я створюю два окремих сценарії для проекту книги з картами. Один сценарій збереже параметри макета в таблиці, а інший оновить макет із налаштуваннями з тієї ж таблиці. Я хочу, щоб обидва ці сценарії були командами, призначеними кнопкам на панелі інструментів. Я створив їх як інструменти для скриптів, але кожного разу, коли натискаю на них, вони запускають сценарій як інструмент для геообробки. Він відкриває вікно прогресу, і його виконання займає приблизно в 10 разів більше, ніж якби я запустив код у вікні командного рядка Python. Я не хочу вікно прогресу або набагато довший час виконання.

Як я можу зробити так, щоб скрипт не вважався "інструментом", а був командою, схожою на кнопку "Зберегти"?

Відповіді:


6

У макросі Excel VBA наступні виклики називають сценарієм Python test.py:

Sub test()

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

End Sub

(Оригінальне джерело тут ) Я забув, як запустити модуль ArcGIS VBA, але, можливо, подібна лінія буде працювати для виклику вашого сценарію python.


Ще однією стратегією, яка могла б працювати, може бути компілювання вашого сценарію python до виконуваного файлу (.exe) або пакетного файлу (.bat) і викликати його тоді.


Щойно я побачив ще одну елегантну відповідь на gis.se:

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.