पायथन प्रोग्राम चलाने के लिए आर्केप में बटन बनाना?


10

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

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

यदि किसी के पास बटन बनाने के लिए कोई नमूना कोड या संसाधन हैं, तो यह बहुत अच्छा होगा।


क्या आप आर्कपैक या आर्कगिस इंजन स्टैंडअलोन एप्लिकेशन में ऐसा करने की कोशिश कर रहे हैं?
मैथियासवेस्टिन

मैं आर्कपेक 10. में यह करना चाहता हूं
टान्नर

जवाबों:


8

यदि आपको किसी इनपुट या आउटपुटपामेटर्स की आवश्यकता नहीं है, तो यह नमूना किसी .NET कमांड , C # उदाहरण में ArcPy के कस्टम कमांड में स्क्रिप्ट चलाने के लिए उपयोग करना संभव है :

// Executes a shell command synchronously.
// Example of command parameter value is
// "python " + @"C:\scripts\geom_input.py".
//
public static void ExecuteCommand(object command)
{
    try
    {
        // Create the ProcessStartInfo using "cmd" as the program to be run,
        // and "/c " as the parameters.
        // "/c" tells cmd that you want it to execute the command that follows,
        // then exit.
        System.Diagnostics.ProcessStartInfo procStartInfo = new
            System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);

        // The following commands are needed to redirect the standard output.
        // This means that it will be redirected to the Process.StandardOutput StreamReader.
        procStartInfo.RedirectStandardOutput = true;
        procStartInfo.UseShellExecute = false;

        // Do not create the black window.
        procStartInfo.CreateNoWindow = true;

        // Now you create a process, assign its ProcessStartInfo, and start it.
        System.Diagnostics.Process proc = new System.Diagnostics.Process();
        proc.StartInfo = procStartInfo;
        proc.Start();

        // Get the output into a string.
        string result = proc.StandardOutput.ReadToEnd();

        // Display the command output.
        Console.WriteLine(result);
    }
    catch (Exception objException)
    {
        Console.WriteLine(objException.Message);
        // Log the exception and errors.
    }
}

1
यह भी ध्यान दें कि यह अजगर विशिष्ट नहीं है। इसका उपयोग किसी भी बाहरी कमांड को चलाने के लिए किया जा सकता है।
मैट विल्की

लेकिन क्या यह काम किया, @ टैनर?
रिचर्ड

सच कहूं तो मुझे यह काम करने के लिए कभी नहीं मिला, लेकिन फिर मेरा एकमात्र प्रोग्रामिंग अनुभव कुछ सीमित पायथन था। मुझे लगता है कि अगर मेरे पास समय होता और मैं अभी भी एक बटन बनाने की जरूरत होती तो मैं इसे एक अच्छा शॉट दे सकता था।
टेनर

5

टूलबार / स्क्रिप्ट को श्रेणी में जोड़ने के लिए [टूल जोड़ें ...] का उपयोग करें। फिर स्क्रिप्ट को पसंद के टूलबार पर खींचें।


वही मैंने किया। उस पद्धति का उपयोग करते हुए, स्क्रिप्ट एक स्क्रिप्ट टूल के रूप में चलती है और एक जियोप्रोसेसिंग विंडो लाती है, जिससे स्क्रिप्ट को निष्पादित होने में अधिक समय लगता है।
टान्नर 19

3

अपने टूलबार के बगल में एक खाली क्षेत्र पर राइट क्लिक करें> अनुकूलित विंडो खोलें> कमांड टैब पर क्लिक करें> सूची के नीचे स्क्रॉल करें और [यूआई नियंत्रण] पर क्लिक करें> नया UI नियंत्रण चुनें> उस प्रकार के नियंत्रण का चयन करें जिसे आप चाहते हैं और फिर Create and Edit पर क्लिक करें। यह नए नियंत्रण के लिए VBA संपादक को खोलेगा और आप अपने कोड को सुनने के अंदर लिख सकते हैं और कोड को कॉल करने वाली घटना को परिभाषित कर सकते हैं। VBA को मुफ्त में 10 के साथ शामिल किया गया है, लेकिन आपको इसके लिए लाइसेंस फ़ाइल का अनुरोध करना होगा और फिर उस लाइसेंस को पंजीकृत करना होगा। इसके लिए ESRI को कॉल करें और उन्हें आपको एक लाइसेंस मुफ्त देना चाहिए। 10 के बाद ये चली जाएगी ...

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