FreeCAD Scripting Basics/es

guiones Python en FreeCAD
FreeCAD está construido desde cero para que sea totalmente controlado por guiones (scripts) Python. Casi todas las partes de FreeCAD como la interfaz, el contenido de la escena, e incluso la representación de ese contenido en las vistas 3d, son accesibles desde el intérprete de Python incorporado, o desde sus propios scripts. Como resultado, FreeCAD es, probablemente, una de las aplicaciones de diseño ingenieril más personalizables disponibles en la actualidad.

En su estado actual, sin embargo, FreeCAD tiene muy pocos comandos "nativos" para interactuar sobre los objetos 3D. Sobre todo porque se encuentra todavía en fase temprana de desarrollo, pero también porque la filosofía que hay detrás es más para proporcionar una plataforma para el desarrollo CAD que una aplicación de usuario "a medida". Pero la facilidad de usar guiones Python dentro FreeCAD probablemente ayudará a que pronto veamos funcionalidades nuevas que desarrollen los "usuarios avanzados", o, más abundantes, los usuarios que conocen un poco de programación Python, como usted, Eso esperamos.

Si usted no está familiarizado con Python, le recomendamos buscar tutoriales en Internet, y echar un rápido vistazo a su estructura. Python es un lenguaje muy fácil de aprender, sobre todo porque se puede ejecutar dentro de un intérprete, donde tanto comandos simples como programas completos pueden ejecutarse sobre la marcha, sin necesidad de compilar nada. FreeCAD ha incorporado un intérprete de Python.

El intérprete
Desde el intérprete puede acceder a todos los módulos de Python instalados en el sistema, así como a los módulos FreeCAD incorporados, y a todos los módulos adicionales FreeCAD que pueda instalar más tarde. La imagen siguiente muestra el intérprete de Python:



También, puede ejecutar código Python y navegar a través de las clases y funciones disponibles. FreeCAD proporciona un navegador de clases muy útil para la exploración de su nuevo mundo FreeCAD. Cuando se escribe el nombre de una clase conocida seguido de un punto (.) (significando que quiere añadir algo de esa clase), se abre una ventana de navegador de clases, donde se puede navegar entre las subclases y métodos disponibles. Cuando se selecciona algo, se mostrará un texto de ayuda asociado (si existe):



Así que, comience por esto escribiendo '''App.  o Gui. ''' y vea qué pasa. Otra forma más genérica de exploración de los contenidos de los módulos y las clases Python es usar el comando print dir. Por ejemplo, escribiendo print dir listará todos los módulos cargados en FreeCAD. print Dir(App) le mostrará todo el interior del módulo App, etc

Otra característica útil del intérprete es la posibilidad de volver atrás en el historial de comandos y recuperar una línea de código que ya ha escrito antes. Para navegar en la historia de comandos, sólo tiene que utilizar CTRL +flecha arriba o CTRL + flecha ABAJO.

Al hacer clic derecho en la ventana del intérprete también tiene otras opciones, tales como copia de toda la historia (útil para experimentar con algo, y luego hacer un guión con todo ello), o insertar el nombre de un archivo con su ruta completa.

Ayuda de Python
En el menú Ayuda de FreeCAD, encontrará una entrada llamada "ayuda Python", que abrirá una ventana que contiene una documentación completa, generada en tiempo real, de todos los módulos de Python a disposición del intérprete FreeCAD, incluyendo Python y módulos propios de FreeCAD, los módulos instalados por el sistema, y los módulos FreeCAD adicionales. La documentación disponible depende del esfuerzo que cada desarrollador de módulos puso en documentar su código pero, en general, los módulos Python tienen la reputación de estar bastante bien documentados. Su ventana FreeCAD debe permanecer abierta para que este sistema de documentación funcione.

Módulos incorporados (Built-in)
Como FreeCAD está diseñado para poder ser ejecutado sin interfaz gráfica de usuario, casi toda su funcionalidad se separa en dos grupos: las funciones principales, llamado App, y la funcionalidad Gui, llamado Gui. Así, nuestros dos principales módulos incorporados en FreeCAD se llaman App y Gui. Estos dos módulos también son accesibles desde fuera de las guiones de comandos del intérprete, con los nombres respectivos de FreeCAD y FreeCADGui.


 * En el módulo App, encontrará todo lo relacionado con la aplicación en sí, como los métodos para abrir o cerrar archivos, y lo relacionado con los documentos, como los ajustes del documento activo o listar su contenido.


 * En el módulo Gui, encontrará herramientas para la gestión de la GUI y el acceso a sus elementos, como los entornos (workbench) y sus barras de herramientas y, más interesante, la representación gráfica de todo el contenido FreeCAD.

Listar los contenidos de todos esos módulos es una tarea poco "productiva" ya que crecen muy rápido a lo largo del desarrollo de FreeCAD. Pero las dos herramientas de navegación (el navegador de clases y la ayuda Python) le debería dar, en cualquier momento, una documentación actualizada y completa de estos módulos.

los objetos App y los objetos GUI
Como hemos dicho, en FreeCAD, todo esta repartido entre el núcleo y la representación. Esto incluye también los objetos en 3D. Puede acceder a la definición de propiedades de los objetos (llamadas características de FreeCAD) a través del módulo de la aplicación, y cambiar la forma en que están representados en la pantalla a través del módulo GUI. Por ejemplo, un cubo tiene propiedades que lo definen, como anchura, longitud, altura, que se almacenan en un objeto App, y las propiedades de la representación, como el color de las caras, modo de dibujo, que se almacenan en su correspondiente objeto GUI.

Esta forma de hacer permite una amplia gama de usos, como los algoritmos que sólo funcionan en la parte definitoria de características, sin la necesidad de ocuparse de ningun aspecto visual, o incluso redirigir el contenido del documento con la aplicación no-gráfica, como listas, hojas de cálculo o análisis de elementos.

Por cada objeto App de su documento, existe su correspondiente objeto GUI. El documento en sí mismo, en realidad, también tiene objetos App y GUI. Esto, por supuesto, sólo es válido cuando se ejecuta FreeCAD con su interfaz completo. En la versión de línea de comandos, no existe interfaz gráfica de usuario, por lo que sólo habrá objetos App. Tenga en cuenta que la parte Gui de los objetos se genera nuevamente cada vez que un objeto App se marca como "que se vuelven a calcular" (por ejemplo, cuando uno de sus parámetros ha cambiado), por lo que los cambios que podría haber hecho al objeto Gui directamente podrían perderse.

para acceder a la parte App de algo, escriba:

myObject = App.ActiveDocument.getObject("ObjectName")

donde "ObjectName" es el nombre de su objeto. Tambien puede poner:

myObject = App.ActiveDocument.ObjectName

para acceder la la parte GUI del mismo objeto, escriba:

myViewObject = Gui.ActiveDocument.getObject("ObjectName")

donde "ObjectName" es el nombre de su objeto. Tambien puede escribir:

myViewObject = App.ActiveDocument.ObjectName.ViewObject

Si no tenemos GUI (por ejemplo en el modo de línea de comandos), la última línea no devolverá nada.

Los objetos de documento
En FreeCAD todo su trabajo reside en el interior los documentos. Un documento contiene la geometría y se pueden guardar en un archivo. Varios documentos se pueden abrir al mismo tiempo. El documento, al igual que la geometría contenidos en el interior, tiene objetos App y Gui. El objeto App contiene las definiciones de geometría real, mientras que el objeto Gui contiene los puntos de vista diferentes de su documento. Puede abrir varias ventanas, cada mostrando su trabajo con un factor de zoom diferente o un determinado punto de vista. Estas vistas forman parte del objeto Gui de su documento.

Para acceder a la parte App del documento abierto actualmente (activo), teclee: myDocument = App.ActiveDocument Para crear un nuevo documento, teclee: myDocument = App.newDocument("Document Name") Para acceder a la parte GUI del documento abierto actualmente (active), teclee: myGuiDocument = Gui.ActiveDocument Para acceder a la vista actual, teclee: myView = Gui.ActiveDocument.ActiveView