वह बटन बनाना जो स्क्रिप्ट टूल के बजाय पायथन स्क्रिप्ट को कमांड के रूप में कहता है?


12

मेरा मानना ​​है कि Arc9.3 में, VBA लिपियों का उपयोग करके कमांड बनाए जा सकते हैं। कस्टम कमांड जोड़ने के लिए, आप कस्टमाइज़> टूलबार> कस्टमाइज़ ... पर नेविगेट करेंगे और UIControls पर क्लिक करेंगे। हालाँकि, UIControls संस्करण 10 में नहीं है।

मैं एक मैप बुक प्रोजेक्ट के लिए दो अलग स्क्रिप्ट बना रहा हूं। एक स्क्रिप्ट लेआउट सेटिंग्स को एक टेबल पर बचाएगा, और दूसरा उसी टेबल से सेटिंग के साथ लेआउट को अपडेट करेगा। मैं चाहता हूं कि इन दोनों लिपियों को एक टूलबार में बटनों को सौंपा जाए। मैंने उन्हें स्क्रिप्ट टूल के रूप में बनाया, लेकिन जब भी मैं उन पर क्लिक करता हूं, वे स्क्रिप्ट को जियोप्रोसेसिंग टूल के रूप में चलाते हैं। यह एक प्रगति विंडो लाता है, और अगर मुझे पायथन कमांड लाइन विंडो में कोड चलाया था, तो इसे निष्पादित करने में लगभग 10 गुना अधिक समय लगता है। मैं प्रगति खिड़की या अधिक लंबे समय तक निष्पादन समय नहीं चाहता।

मैं इसे कैसे बना सकता हूं ताकि स्क्रिप्ट को "टूल" न माना जाए और इसके बजाय सेव बटन के समान कमांड हो?

जवाबों:


6

एक एक्सेल VBA मैक्रो के भीतर, निम्नलिखित पायथन स्क्रिप्ट को कॉल करता है test.py:

Sub test()

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

End Sub

( यहाँ मूल स्रोत ) मैं भूल गया हूँ कि एक आर्कजीएस वीबीए मॉड्यूल कैसे चलाया जाता है, लेकिन शायद एक समान रेखा आपके पायथन स्क्रिप्ट को कॉल करने के लिए काम करेगी।


एक और रणनीति जो काम कर सकती है वह आपकी अजगर स्क्रिप्ट को एक निष्पादन योग्य (.exe) या बैच फ़ाइल (.bat) पर संकलित करने और फिर कॉल करने के लिए हो सकती है।


मैंने अभी-अभी gis.se पर एक और उत्तर देखा है जो अधिक सुरुचिपूर्ण है:

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

3
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.