- Introducción
- Descubriendo FreeCAD
- Trabajar con FreeCAD
- Guiones en Python
- La comunidad
Python es un popular lenguaje de programación de código abierto, muy a menudo incrustado en aplicaciones como lenguaje de guionización, como es el caso de FreeCAD. Tiene una serie de características que lo hacen adecuado para nosotros los usuarios de FreeCAD: Es muy fácil de aprender, especialmente para la gente que nunca ha programado antes, y está incrustado en muchas otras aplicaciones. Esto hace que sea una herramienta valiosa para aprender, ya que podrás utilizarla en otros programas, como Blender, Inkscape o GRASS.
Python ofrece varias ventajas que lo hacen especialmente adecuado para los usuarios de FreeCAD. Es fácil de usar para principiantes, con una sintaxis clara e intuitiva que facilita el aprendizaje, incluso para personas sin experiencia previa en programación. Esta accesibilidad es especialmente valiosa en la comunidad de FreeCAD, donde muchos usuarios provienen de diversos ámbitos, como la ingeniería, la arquitectura y el diseño, y carecen de amplia experiencia en programación.
Además, la amplia adopción de Python en otras aplicaciones, como Blender para modelado 3D, Inkscape para gráficos vectoriales y GRASS GIS para análisis geoespacial, lo convierte en una característica esencial para quienes buscan ampliar sus capacidades de programación. Dominar Python en FreeCAD no solo mejora la capacidad de crear herramientas y macros personalizadas, sino que también proporciona habilidades transferibles que se pueden aplicar en diversas plataformas de software.
En FreeCAD, la programación en Python le permite:
- Automatice tareas repetitivas para ahorrar tiempo y reducir errores.
- Cree objetos paramétricos personalizados que se adapten dinámicamente a los cambios.
- Desarrolle macros y herramientas personalizadas adaptadas a flujos de trabajo específicos.
- Interactúe con la interfaz de programación de aplicaciones (API) de FreeCAD para acceder y manipular geometría, escenas y elementos de la interfaz de usuario mediante programación.
Al aprovechar Python, los usuarios de FreeCAD pueden liberar todo el potencial del software, transformándolo en una herramienta potente y flexible adaptada a sus necesidades específicas.
FreeCAD incluye una consola Python avanzada, accesible a través de Ver → Paneles → Consola Python. Esta herramienta permite a los usuarios realizar operaciones más allá de la interfaz gráfica, como acceder a funciones avanzadas, solucionar problemas de geometría y automatizar tareas. También registra los comandos Python para las acciones de la interfaz gráfica si la opción Mostrar comandos de script en la consola Python está habilitada en Editar → Preferencias → Python → Macro). Al mantener la consola abierta, puede observar cómo se ejecuta el código Python mientras trabaja, lo que ofrece una forma intuitiva de aprender el lenguaje mientras explora las capacidades de FreeCAD. Por último, FreeCAD también cuenta con un sistema de macros system que permite grabar acciones para reproducirlas posteriormente. Este sistema también utiliza la consola Python, simplemente registrando todo lo que se hace en ella.
Archivo:FreeCAD Python Console.png
En este capítulo, descubriremos de forma general el lenguaje Python. Si le interesa aprender más, la wiki de documentación de FreeCAD tiene una sección extensa relacionada con la programación en Python (Python programming).
Escribiendo código Python
En FreeCAD, puedes escribir código Python de dos maneras principales: a través de la consola de Python (View → Panels → Python Console) o usando el editor de macros (Macro → Macros → Create). La consola de Python te permite introducir comandos uno a uno, que se ejecutan inmediatamente al pulsar Intro, lo que la hace perfecta para pruebas rápidas o exploración interactiva. El editor de macros, por otro lado, se utiliza para escribir y guardar scripts más complejos que constan de varias líneas de código. Estas macros se pueden ejecutar completas posteriormente desde la ventana Macros, lo que proporciona una forma eficaz de automatizar tareas repetitivas y ampliar la funcionalidad de FreeCAD. En este capítulo, podrás usar ambos métodos, pero se recomienda encarecidamente usar la consola de Python, ya que te informará inmediatamente de cualquier error que cometas al escribir.
Si es la primera vez que usa Python, considere leer esta breve introducción a la programación en Python antes de continuar, ya que le ayudará a comprender mejor los conceptos básicos de Python.
Manipulación de objetos de FreeCAD
Comencemos creando un nuevo documento vacío:
doc = FreeCAD.newDocument()
En la consola de Python de FreeCAD, al escribir FreeCAD. (la palabra "FreeCAD" seguida de un punto), aparece una ventana de autocompletado. Esta función no solo agiliza tu flujo de trabajo, al sugerir los comandos disponibles, sino que también te ayuda a descubrir nuevas funciones y características de FreeCAD. Cada entrada de la lista incluye una información sobre herramientas explicando su propósito, lo que facilita la comprensión y exploración de la funcionalidad disponible. Esta función de autocompletado es especialmente útil para quienes se inician en la programación con Python y para usuarios avanzados que navegan con eficiencia por la extensa API de FreeCAD. Tómate un momento para explorar las opciones en la ventana de autocompletado: podrías descubrir comandos que simplifiquen tu flujo de trabajo o te abran nuevas posibilidades.
Al escribir FreeCAD.newDocument() se crea un documento nuevo y vacío en FreeCAD, al igual que al hacer clic en el botón Nuevo documento de la barra de herramientas. Al ejecutar doc = FreeCAD.newDocument(), el nuevo objeto del documento se asigna a la variable doc, lo que permite manipularlo mediante programación. Con doc, puede añadir objetos, cambiar propiedades o guardar el documento.
En Python, el punto (.) se utiliza para indicar que un elemento está contenido dentro de otro. Por ejemplo, newDocument es una función dentro del módulo FreeCAD, por lo que escribimos FreeCAD.newDocument. La ventana de autocompletado que aparece muestra todo lo disponible dentro del módulo FreeCAD. Si escribieras un punto después de newDocument (sin añadir los paréntesis), se mostraría todo lo que pertenece a la función newDocument. Esto describe cómo Python organiza y accede a los objetos y sus componentes. Es importante tener en cuenta que los paréntesis son obligatorios al llamar a una función de Python, ya que indican la ejecución de la función.
Ahora volvamos a nuestro documento. Veamos qué podemos hacer con él. Teclea lo siguiente y explora las opciones disponibles:
doc.
En FreeCAD, las convenciones de nomenclatura para los comandos de Python pueden ayudarte a comprender su propósito:
- Los nombres que comienzan con mayúscula suelen ser atributos, que almacenan valores o datos, como las propiedades de un objeto.
- Los nombres que comienzan con minúscula suelen ser funciones (también llamadas métodos), que realizan acciones u operaciones, como crear o modificar objetos.
- Los nombres que comienzan con un guion bajo (_) generalmente se utilizan internamente dentro del módulo y suelen ignorarse.
Esta distinción te ayuda a navegar por la API de FreeCAD y seleccionar el comando adecuado para tus necesidades. Por ejemplo, podrías usar un método para agregar un nuevo objeto a un documento. El método realiza la acción de crear y agregar el objeto, mientras que los atributos almacenan las propiedades del objeto. Comprender esta estructura facilita la exploración de la funcionalidad disponible, especialmente al usar la función de autocompletar o leer las sugerencias de herramientas. Agreguemos un cuadro.
box = doc.addObject("Part::Box", "myBox")
El comando box = doc.addObject("Part::Box", "myBox") agrega un nuevo objeto de caja 3D al documento. Aquí hay una explicación sencilla:
- doc.addObject: Indica a FreeCAD que añada un nuevo objeto al documento.
- Part::Box: Especifica el tipo de objeto a crear; en este caso, una caja 3D.
- myBox: Asigna un nombre al nuevo objeto, facilitando su identificación y referencia posterior.
El resultado de este comando es que aparece un cuadro en el documento activo, y la variable `box` almacena una referencia al mismo para que puedas modificarlo o interactuar con él posteriormente. Nuestro cuadro se añade a la vista de árbol, pero aún no ocurre nada en la vista 3D, ya que al trabajar con Python, el documento nunca se recalcula automáticamente. Debemos hacerlo manualmente cuando sea necesario.
doc.recompute()
Ahora nuestra caja ha aparecido en la vista 3D. Muchos de los botones de la barra de herramientas para añadir objetos en FreeCAD realizan dos acciones: añadir el objeto y recalcular. Intente ahora añadir una esfera con el botón correspondiente en el Entorno de trabajo (Part Workbench) de piezas y verá cómo se ejecutan las dos líneas de código Python una tras otra.
Archivo:FreeCAD python Sphere.png
Puedes obtener una lista de todos los tipos de objetos posibles como Part::Box:
doc.supportedTypes()
Ahora vamos a explorar el contenido de nuestra caja:
box.
Enseguida verás un par de cosas muy interesantes, como por ejemplo:
box.Height
Esto imprimirá la altura actual de nuestra caja. Ahora intentemos cambiarla:
box.Height = 5
Si selecciona el cuadro con el ratón, verá que en el panel de propiedades, en la pestaña Datos, aparece nuestra propiedad Altura con el nuevo valor. Todas las propiedades de un objeto FreeCAD que aparecen en las pestañas Datos y Vista también son directamente accesibles desde Python, por sus nombres, como hicimos con la propiedad Altura. Se accede a las propiedades de datos directamente desde el propio objeto, por ejemplo:
box.Length
En FreeCAD, las propiedades visuales se gestionan mediante un objeto de vista (ViewObject). Cada objeto de FreeCAD tiene un ViewObject asociado, que almacena información sobre cómo se muestra el objeto en la interfaz gráfica, como el color, la transparencia o la visibilidad. Sin embargo, el ViewObject solo es accesible cuando FreeCAD se ejecuta con su interfaz gráfica. Si FreeCAD se inicia en modo no gráfico, por ejemplo, desde una terminal con la opción de línea de comandos -c o cuando se utiliza como biblioteca de Python en un script externo, el ViewObject no está disponible. Esto se debe a que en estos modos no hay una representación visual del objeto, ya que la interfaz gráfica no está cargada.
Pruebe el siguiente ejemplo para acceder al color de la línea de nuestra caja:
box.ViewObject.LineColor
Vectores y ubicaciones
Los vectores son un concepto fundamental en cualquier aplicación 3D. Un vector es, esencialmente, una lista de tres números (x, y, z) que describen un punto, una posición o una dirección en el espacio tridimensional. Los vectores son esenciales para definir la geometría, las transformaciones y las interacciones en el entorno 3D. Sirven como elementos básicos para operaciones como traslaciones, rotaciones y escalados.
En FreeCAD, los vectores se utilizan ampliamente para crear y manipular objetos. Permiten realizar una amplia gama de operaciones matemáticas, como suma, resta, producto vectorial, producto escalar y proyecciones. Estas operaciones permiten calcular distancias, ángulos y direcciones, así como definir relaciones entre objetos en el espacio.
Comprender los vectores y su funcionamiento es fundamental para la creación de scripts y la eficaz personalización en FreeCAD. Por ejemplo, los vectores se utilizan para referenciar y ubicar objetos, definir su orientación o incluso calcular las trayectorias para operaciones complejas como barridos o superficies de transición.
En FreeCAD, los vectores se representan mediante la clase Vector, que proporciona diversos métodos y propiedades para realizar operaciones y acceder a sus componentes. Dominar estas capacidades mejorará significativamente su habilidad para interactuar de manera programada con el entorno 3D de FreeCAD. En FreeCAD, los vectores funcionan de la siguiente manera:
myvec = FreeCAD.Vector(2, 0, 0)
print(myvec)
print(myvec.x)
print(myvec.y)
othervec = FreeCAD.Vector(0, 3, 0)
sumvec = myvec.add(othervec)
print(box.Placement)
print(box.Placement.Base)
box.Placement.Base = sumvec
otherpla = FreeCAD.Placement()
otherpla.Base = FreeCAD.Vector(5, 5, 0)
box.Placement = otherpla
Aquí tienes un breve desglose de los comandos anteriores:
- print(box.Placement): Imprime la ubicación de la caja, incluyendo su posición, rotación y orientación en el espacio 3D.
- print(box.Placement.Base): Imprime la posición (Base) de la caja, que es un vector que representa su ubicación en el espacio 3D.
- box.Placement.Base = sumvec: Establece la posición base (ubicación) de la caja al vector sumvec, moviendo la caja a esta nueva posición.
- otherpla = FreeCAD.Placement(): Crea un nuevo objeto de ubicación llamado otherpla.
- otherpla.Base = FreeCAD.Vector(5,5,0): Establece la posición base de otherpla a un vector en las coordenadas (5, 5, 0).
- box.Placement = otherpla: Aplica otherpla a la caja, actualizando su ubicación a la nueva posición y orientación definidas por otherpla.
Leer más
Esta página ha sido recuperada de https://wiki.freecad.org/Manual:A_gentle_introduction