Làm nút gọi tập lệnh Python là lệnh chứ không phải công cụ tập lệnh?


12

Tôi tin rằng trong Arc9.3, các lệnh có thể được tạo bằng các tập lệnh VBA. Để thêm một lệnh tùy chỉnh, bạn sẽ điều hướng đến Tùy chỉnh> Thanh công cụ> Tùy chỉnh ... và nhấp vào UIControls. Tuy nhiên, UIControls không có trong phiên bản 10.

Tôi đang tạo hai kịch bản riêng biệt cho một dự án sách bản đồ. Một tập lệnh sẽ lưu cài đặt bố cục vào một bảng và tập lệnh khác sẽ cập nhật bố cục với các cài đặt từ cùng một bảng. Tôi muốn cả hai tập lệnh này là các lệnh được gán cho các nút trong thanh công cụ. Tôi đã tạo chúng như các công cụ tập lệnh, nhưng bất cứ khi nào tôi nhấp vào chúng, chúng sẽ chạy tập lệnh dưới dạng công cụ xử lý địa lý. Nó đưa ra một cửa sổ tiến trình và mất nhiều thời gian để thực thi hơn khoảng 10 lần so với khi tôi chạy mã trong cửa sổ dòng lệnh Python. Tôi không muốn cửa sổ tiến độ hoặc thời gian thực hiện lâu hơn nhiều.

Làm cách nào tôi có thể làm cho nó để tập lệnh không được coi là "công cụ" và thay vào đó là một lệnh tương tự như nút Lưu?

Câu trả lời:


6

Trong macro VBA của Excel, phần sau gọi một tập lệnh Python được gọi là test.py:

Sub test()

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

End Sub

(Nguồn gốc ở đây ) Tôi đã quên cách chạy mô-đun VBA ArcGIS, nhưng có lẽ một dòng tương tự sẽ hoạt động để gọi tập lệnh python của bạn.


Một chiến lược khác có thể hoạt động có thể là biên dịch tập lệnh python của bạn thành tệp thực thi (.exe) hoặc tệp bó (.bat) và gọi nó sau đó.


Tôi chỉ thấy một câu trả lời khác trên gis.se thanh lịch hơn:

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.