10 votos

¿Crear un botón en ArcMap para ejecutar un programa de Python?

Tengo un script que quiero que se ejecute dentro de ArcMap cuando se haga clic en un botón de una barra de herramientas, y hasta ahora sólo he podido convertir el script en una herramienta script. Necesito que se ejecute como un comando, no como una herramienta de geoprocesamiento.

Ejecutarlo como herramienta de geoprocesamiento lleva mucho más tiempo que cuando se ejecuta el mismo código desde la ventana de la línea de comandos. Acabo de empezar a mirar en ArcObjects, pero quiero empezar a usarlo si es lo que voy a necesitar usar.

Si alguien tiene algún código de ejemplo, o recursos para crear un botón, sería genial.

0 votos

¿Está intentando hacer esto en ArcMap o en una aplicación independiente de ArcGIS Engine?

0 votos

Quiero hacer esto en ArcMap 10.

1 votos

La versión 9.3 de esta pregunta es Arcmap: adjuntar python script al botón

8voto

Isaac Solomon Puntos 16554

Si no necesitas ningún parámetro de entrada o salida, este ejemplo debería poder utilizarse para ejecutar un script en un comando personalizado Aprovechamiento de ArcPy en una aplicación .NET Ejemplo de C#:

// 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 votos

También hay que tener en cuenta que esto no es específico de python. Se puede utilizar para ejecutar cualquier comando externo.

0 votos

¿Pero funcionó, @Tanner?

0 votos

Para ser sincero, nunca conseguí que funcionara, pero por aquel entonces mi única experiencia en programación era un poco de Python. Siento que podría darle una oportunidad justa ahora si tuviera el tiempo y todavía necesitara hacer un botón.

5voto

gyurisc Puntos 4250

Utilice [Add Tools...] en Toolbar / Customize para añadir el script a una categoría. A continuación, tire del script a la barra de herramientas de su elección.

0 votos

Eso es lo que hice. Usando ese método, el script se ejecuta como una herramienta script y trae una ventana de geoprocesamiento, haciendo que el script tarde mucho más en ejecutarse.

3voto

Haz clic con el botón derecho del ratón en un área en blanco junto a tus barras de herramientas > abre la ventana de personalización > haz clic en la pestaña de comandos > desplázate hasta el final de la lista y haz clic en [UI Control] > Selecciona un nuevo UI Control > selecciona el tipo de control que quieres y luego haz clic en Crear y Editar. Esto abrirá el editor VBA para el nuevo control y podrá escribir su código dentro de hear y definir el evento que llama al código. VBA se incluye con 10 de forma gratuita, pero tendrá que solicitar un archivo de licencia para ello y luego registrar esa licencia. Llame a ESRI para esto y ellos deberían darle una licencia gratis. Después de 10 esto desaparecerá...

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X