Python programını çalıştırmak için ArcMap'te düğme oluşturuluyor mu?


10

Bir araç çubuğundaki bir düğme tıklatıldığında ArcMap içinde çalıştırmak istediğiniz bir komut dosyası var ve şimdiye kadar ben sadece bir komut dosyası içine komut dosyası yapmak mümkün. Bir coğrafi işlem aracı olarak değil, bir komut olarak çalıştırmak için ihtiyacım var.

Coğrafi işleme aracı olarak çalıştırmak, komut satırı penceresinden aynı kodun yürütülmesinden çok daha uzun sürer. ArcObjects'e yeni bakmaya başladım, ancak kullanmam gereken şey buysa kullanmaya başlamak istiyorum.

Herhangi bir örnek kod veya düğme oluşturmak için kaynakları varsa, bu harika olurdu.


Bunu ArcMap'te veya bir ArcGIS Engine bağımsız uygulamasında mı yapmaya çalışıyorsunuz?
MathiasWestin

Bunu ArcMap 10'da yapmak istiyorum.
Tanner

Yanıtlar:


8

Herhangi bir giriş veya çıkış parametresine ihtiyacınız yoksa, bu örnek , bir .NET uygulamasında ArcPy'yi Kaldıran özel bir komutta bir komut dosyasını çalıştırmak için kullanılabilmelidir , C # örneği:

// 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
Ayrıca bunun python'a özgü olmadığını da unutmayın. Herhangi bir harici komutu çalıştırmak için kullanılabilir.
matt wilkie

Ama işe yaradı mı, @ Tanner?
Richard

Dürüst olmak gerekirse, hiç işe yaramadım, ama o zamanlar tek programlama deneyimim sınırlı Python'du. Zamanım olsaydı ve hala bir düğme yapmam gerekiyorsa, şimdi adil bir atış yapabileceğimi hissediyorum.
Tanner

5

Komut dosyasını bir kategoriye eklemek için Araç Çubuğu / Özelleştir içindeki [Araç Ekle ...] 'yi kullanın. Sonra komut dosyasını istediğiniz araç çubuğuna çekin.


Ben de öyle yaptım. Bu yöntemi kullanarak, komut dosyası bir komut dosyası aracı olarak çalışır ve bir coğrafi işleme penceresi açar, böylece komut dosyasının yürütülmesi çok daha uzun sürer.
Tanner

3

Araç çubuklarınızın yanındaki boş bir alanı sağ tıklayın> özelleştirme penceresini açın> komutlar sekmesini tıklayın> listenin en altına gidin ve [UI Kontrolü]> Yeni UI Kontrolü Seç> istediğiniz kontrol tipini seçin ve ardından Oluştur ve Düzenle'yi tıklayın. Bu, yeni kontrol için VBA düzenleyicisini açar ve kodunuzu duymak ve kodu çağıran olayı tanımlamak için içine yazabilirsiniz. VBA ücretsiz olarak 10 ile birlikte gelir, ancak bunun için bir lisans dosyası istemeniz ve ardından bu lisansı kaydetmeniz gerekir. Bunun için ESRI'yı arayın ve size ücretsiz bir lisans vermelidirler. 10'dan sonra bu gidecek ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.