Python scripting tutorial/es: Difference between revisions

From FreeCAD Documentation
(Updating to match new version of source page)
 
(157 intermediate revisions by 5 users not shown)
Line 1: Line 1:
<languages/>
[http://es.wikipedia.org/wiki/Python Python] es un lenguaje de programación, muy simple de utilizar y muy rápido de aprender. Es de código libre, multi plataforma, y puede utilizarse para una gran variedad de cosas, desde la programación de archivos de guión simples a programas muy complejos. Pero uno de sus usos más extendidos es como lenguaje de archivos de guión, ya que es sencillo de embeber en otras aplicaciones. Así es exactamente como se utiliza dentro de FreeCAD. Desde la consola de Python, o desde tus archivos de guión personalizados, puedes pilotar FreeCAD, y hacer que ejecute acciones muy complejas para las cuales aún no exista herramientas en la interfaz gráfica de usuario.

{{Docnav/es
|[[Introduction_to_Python/es|Introducción a Python]]
|[[FreeCAD_Scripting_Basics/es|FreeCAD Basicos del guión en Python]]
}}

{{TOCright}}

<span id="Introduction"></span>
==Introducción==

[http://es.wikipedia.org/wiki/Python Python] es un lenguaje de programación relativamente fácil de aprender y comprender. Es de código abierto y multiplataforma, y puede utilizarse para muchos fines: desde simples scripts de shell hasta programas muy complejos. Pero su uso más extendido es como lenguaje de scripting incrustado en otras aplicaciones. Así es como se utiliza dentro de FreeCAD. Desde la [[Python_console/es|Consola de Python]], o desde scripts personalizados, puedes controlar FreeCAD y hacer que realice operaciones muy complejas.


Por ejemplo, desde un archivo de guión de Python, puedes:
Por ejemplo, desde un archivo de guión de Python, puedes:
Line 10: Line 22:
* Desde el [[FreeCAD Scripting Basics/es|Interprete de Python de FreeCAD]], donde puedes dictar comandos como en una interfaz del tipo de línea de comandos
* Desde el [[FreeCAD Scripting Basics/es|Interprete de Python de FreeCAD]], donde puedes dictar comandos como en una interfaz del tipo de línea de comandos
* Desde [[macros/es|Macros]], que son una forma conveniente de añadir una herramienta que no exista a la interfaz de FreeCAD
* Desde [[macros/es|Macros]], que son una forma conveniente de añadir una herramienta que no exista a la interfaz de FreeCAD
* Desde archivos de guión externos, que pueden utilizarse para programar cosas mucho más complejas. Como [[Workbenches/es|Entornos]] completos.
* Desde archivos de guión externos, que pueden utilizarse para programar cosas mucho más complejas. Como [[Workbenches/es|Ambientes de trabajo]] completos.


En este tutorial, trabajaremos en varios ejemplos simples para que puedas iniciarte, pero existe mucha más documentación sobre los [[Power users hub/es|archivos de guión de Python]] disponible en esta wiki. Si eres totalmente nuevo en Python y quieres comprender cómo funciona, también tenemos una básica [[introduction to Python/es|Introducción a Python]].
En este tutorial, trabajaremos en varios ejemplos básicos para que puedas iniciarte, pero existe mucha más documentación sobre los [[Power users hub/es|documentación sobre guionización en Python]] disponible en esta wiki. Si eres totalmente nuevo en Python y quieres comprender cómo funciona, también tenemos una básica [[introduction to Python/es|Introducción a Python]].


<div class="mw-translate-fuzzy">
'''Important!''' Before proceeding with Python scripting, go to Edit->Prefences->General->Output window and check 2 boxes:
Antes de proceder con la escritura en Python, vaya a {{MenuCommand|Editar → Preferencias → General → Ventana de salida}} y marque dos casillas:
* Redirect internal Python output to report view
* {{MenuCommand|Redirigir salida Python interna a la vista de informe}}.
* Redirect internal Python errors to report view
* {{MenuCommand|Redirigir errores Python internos a la vista de informe}}.
Then go to View->Views and check:
Luego vaya a {{MenuCommand|Vista → Paneles}} y compruebe:
* Report view
* {{MenuCommand|Vista de informe}}.
This will save you a lot of aggravation!
</div>


<span id="Writing_Python_code"></span>
== Escribiendo código en Python ==
== Escribiendo código en Python ==


Existen dos modos sencillos de escribir código de Python en FreeCAD: Desde la consola de Python (disponible en el menú Vista -> Vistas -> Consola de Python) o desde el editor de macros (Herramientas -> Macros). En la consola, escribes comandos de Python uno a uno, que son ejecutados al presionar Enter, mientras que las macros pueden contener archivos de guión más completos formados por varias líneas, que se ejecutan sólo cuando la macro es ejecutada.
Existen dos modos sencillos de escribir código de Python en FreeCAD: Desde la consola de Python (disponible en el menú Vista -> Vistas -> Consola de Python) o desde el editor de macros (Herramientas -> Macros). En la consola, escribes comandos de Python uno a uno, que son ejecutados al presionar Enter, mientras que las macros pueden contener archivos de guión más completos formados por varias líneas, que se ejecutan sólo cuando la macro es ejecutada.


[[Image:Screenshot_pythoninterpreter.jpg|center|frame|La consola de Python de FreeCAD]]
[[Image:Screenshot_pythoninterpreter.jpg]]
{{Caption|La consola FreeCAD Python}}

En este tutorial, serás capaz de utilizar ambos métodos, ya sea copiando y pegando cada línea una a una en la consola de Python y presionando {{KEY|Return}} después de cada línea, o copiando y pegando el código entero en una ventana de macro nueva.


En este tutorial se pueden utilizar ambos métodos. Puede copiar-pegar cada línea en la consola Python y luego presionar {{KEY|Enter}}, o copiar-pegar todo el código en una nueva ventana de Macro.
{{Top}}
<span id="Exploring_FreeCAD"></span>
== Explorando FreeCAD ==
== Explorando FreeCAD ==


Vamos a empezar creando un nuevo documento vacío:
Vamos a empezar creando un nuevo documento vacío:


{{Code|code=
<syntaxhighlight>
doc = FreeCAD.newDocument()
doc = FreeCAD.newDocument()
}}
</syntaxhighlight>


<div class="mw-translate-fuzzy">
Si escribes esto en la consola de Python de FreeCAD, notaras que en cuanto escribas "FreeCAD.", una ventana aparece, permitiendo rápidamente autocompletar el resto de la línea. Aún mejor, cada entrada en la lista de autocompletar tiene una ayuda explicando lo que hace. Esto hace muy sencillo explorar las funcionalidades disponibles. Antes de seleccionar "newDocument", mira las otras opciones disponibles.
Si escribe esto en la consola de FreeCAD Python, notará que en cuanto teclee {{incode|FreeCAD.}} aparece una ventana que le permite autocompletar rápidamente el resto de su línea. Mejor aún, cada entrada de la lista de autocompletar tiene un tooltip que explica lo que hace. Esto facilita la exploración de la funcionalidad disponible. Antes de elegir {{incode|newDocument}}, eche un vistazo a las otras opciones.
</div>


[[Image:Screenshot_classbrowser.jpg|center|frame|El mecanismo de autocompletar de la consola de Python de FreeCAD]]
[[Image:Screenshot_classbrowser.jpg]]
{{Caption|El mecanismo de autocompletar de la consola Python de FreeCAD}}


<div class="mw-translate-fuzzy">
Now our new document will be created. This is similar to pressing the "new document" button on the toolbar. In fact, most buttons in FreeCAD do nothing else than executing a line or two of python code. Even better, you can set an option in {{MenuCommand|Edit->Preferences->General->Macro}} to "show script commands in python console". This will print in the console all python code executed when you press buttons. Very useful to learn how to reproduce actions in python.
Ahora nuestro nuevo documento se creará. Esto es similar a presionar el botón "Nuevo documento" en la barra de herramientas. En realidad, la mayoría de botones en FreeCAD no hacen nada más que ejecutar una línea o dos de código en Python. Aún mejor, puedes establecer una opción en Editar -> Preferencias -> General -> Macro para "mostrar los comandos de los archivos de guión en la consola de Python". Esto mostrará en la consola todo el código de Python ejecutado cuando presionas los botones. Muy útil para aprender como reproducir acciones en Python.
</div>


Ahora volvamos a nuestro documento y veamos qué podemos hacer con él:
Now let's get back to our document. Let's see what we can do with it:


{{Code|code=
<syntaxhighlight>
doc.
doc.
}}
</syntaxhighlight>


Explore las opciones disponibles. Normalmente los nombres que empiezan con mayúscula son atributos, contienen un valor, mientras que los nombres que empiezan con minúscula son funciones (también llamadas métodos), "hacen algo". Los nombres que comienzan con un guión bajo suelen estar ahí para el funcionamiento interno del módulo, y no deberías preocuparte por ellos. Vamos a utilizar uno de los métodos para añadir un nuevo objeto a nuestro documento:
Explore the available options. Usually names that begin with a capital letter are attributes, they contain a value, while names that begin with small letter are functions (also called methods), they "do something". Names that begin with an underscore are usually there for the internal working of the module, and you shouldn't care about them. Let's use one of the methods to add a new object to our document:


{{Code|code=
<syntaxhighlight>
box = doc.addObject("Part::Box","myBox")
box = doc.addObject("Part::Box", "myBox")
}}
</syntaxhighlight>


<div class="mw-translate-fuzzy">
Nothing happens. Why? Because FreeCAD is made for the big picture. One day, it will work with hundreds of complex objects, all depending one from another. Making a small change somewhere could have a big impact, you may need to recalculate the whole document, which could take a long time... For that reason, almost no command updates the scene automatically. You must do it manually:
No pasa nada. ¿Por qué? Porque FreeCAD está hecho para la gran imagen. Un día, trabajará con cientos de objetos complejos, todos dependiendo unos de otros. Hacer un pequeño cambio en algún lugar puede tener un gran impacto, puede necesitar recalcular todo el documento, lo que puede llevar mucho tiempo. Por esa razón casi ningún comando actualiza la escena automáticamente. Debes hacerlo manualmente:
</div>


{{Code|code=
<syntaxhighlight>
doc.recompute()
doc.recompute()
}}
</syntaxhighlight>


<div class="mw-translate-fuzzy">
See? Now our box appeared! Many of the buttons that add objects in FreeCAD actually do 2 things: add the object, and recompute. If you turned on the "show script commands in python console" option above, try now adding a sphere with the GUI button, you'll see the two lines of python code being executed one after the other.
Ahora nuestra caja apareció. Muchos de los botones que añaden objetos en FreeCAD en realidad hacen dos cosas: añadir el objeto, y volver a calcular. Si activaste la opción {{MenuCommand|Mostrar comandos de script en la consola de python}} de arriba, intenta añadir una esfera con el botón de la GUI, verás las dos líneas de código Python ejecutándose una tras otra.
</div>


Ahora vamos a explorar el contenido de nuestro cubo:
What about the "Part::Box" will you ask? How can I know what other kind of objects can be added? It's all here:


{{Code|code=
<syntaxhighlight>
doc.supportedTypes()
</syntaxhighlight>

Now let's explore the contents of our box:

<syntaxhighlight>
box.
box.
}}
</syntaxhighlight>


Verás automáticamente varias cosas interesantes como:
You'll immediately see a couple of very interesting things such as:


{{Code|code=
<syntaxhighlight>
box.Height
box.Height
}}
</syntaxhighlight>


Esto mostrará la altura actual de nuestro cubo. Ahora vamos a intentar cambiarla:
This will print the current height of our box. Now let's try to change that:


{{Code|code=
<syntaxhighlight>
box.Height = 5
box.Height = 5
}}
</syntaxhighlight>


<div class="mw-translate-fuzzy">
If you select your box with the mouse, you'll see that in the properties panel, in the "Data" tab, our "Height" property appears. All properties of a FreeCAD object that appear there (and also in the "View" tab, more about that later), are directly accessible by python too, by their names, like we did with the "Height" property. Try changing the other dimensions of that box.
Si seleccionas tu caja con el ratón, verás que en el [[Property_editor/es|Editor de propiedades]], en la pestaña {{MenuCommand|Datos}}, aparece nuestra propiedad {{PropertyData|Altura}}. Todas las propiedades de un objeto de FreeCAD que aparecen ahí (y también en la pestaña {{MenuCommand|Vista}}, más adelante), son directamente accesibles por Python también, por sus nombres, como hicimos con la propiedad {{PropertyData|Altura}}. Prueba a cambiar las otras dimensiones de la caja.


Traducción realizada con la versión gratuita del traductor www.DeepL.com/Translator
== Vectors and Placements ==
</div>
[http://en.wikipedia.org/wiki/Euclidean_vector Vectors] are a very fundamental concept in any 3D application. It is a list of 3 numbers (x, y and z), describing a point or position in the 3D space. A lot of things can be done with vectors, such as additions, subtractions, projections and [http://en.wikipedia.org/wiki/Vector_space much more]. In FreeCAD vectors work like this:
{{Top}}
<span id="Vectors_and_placements"></span>
== Vectores y ubicaciones ==


Los [http://es.wikipedia.org/wiki/Vector vectores] son un concepto muy fundamental en cualquier aplicación 3D. Son una lista de 3 números (X, Y y Z), describiendo un punto o posición en el espacio 3D. Un montón de cosas se pueden hacer con los vectores, como sumas, restas, proyecciones y [http://es.wikipedia.org/wiki/Espacio_vectorial mucho más]. En FreeCAD los vectores funcionan así:
<syntaxhighlight>

myvec = FreeCAD.Vector(2,0,0)
{{Code|code=
myvec
myvec = FreeCAD.Vector(2, 0, 0)
myvec.x
myvec.x
myvec.y
myvec.y
othervec = FreeCAD.Vector(0,3,0)
othervec = FreeCAD.Vector(0, 3, 0)
sumvec = myvec.add(othervec)
sumvec = myvec.add(othervec)
}}
</syntaxhighlight>


Otra característica común de los objetos de FreeCAD es su [[Placement/es|Ubicación]]. Cada objeto tiene una propiedad {{PropertyData|Ubicación}}, que contiene la {{PropertyData|Base}} (posición) y {{PropertyData|Rotación}} (orientación) del objeto. Es fácil de manipular, por ejemplo para mover nuestro objeto:
Another common feature of FreeCAD objects is their [[Placement|placement]]. Each object has a Placement attributes, which contains the position (Base) and orientation (Rotation) of the object. It is easy to manipulate, for example to move our object:


{{Code|code=
<syntaxhighlight>
box.Placement.
box.Placement
box.Placement.Base
box.Placement.Base
box.Placement.Base = sumvec
box.Placement.Base = sumvec
Line 110: Line 134:
otherpla = FreeCAD.Placement()
otherpla = FreeCAD.Placement()
box.Placement = otherpla
box.Placement = otherpla
}}
</syntaxhighlight>


Ahora deberías comprender varios conceptos importantes antes de continuar avanzando.
Now you must understand a couple of important concepts before we get further.
{{Top}}
<span id="App_and_Gui"></span>
== App y Gui ==


FreeCAD ha sido diseñado para que también pueda ser utilizado sin su interfaz de usuario, como una aplicación de línea de comandos. Por lo tanto, casi todos los objetos de FreeCAD constan de dos partes: un {{incode|Object}}, su componente de "geometría", y un {{incode|ViewObject}}, su componente "visual". Cuando trabajas en modo línea de comandos, la parte de geometría está presente, pero la parte visual está desactivada.
== App and Gui ==
FreeCAD is made from the beginning to work as a command-line application, without its user interface. As a result, almost everything is separated between a "geometry" component and a "visual" component. When you work in command-line mode, the geometry part is present, but all the visual part is simply disabled. Almost any object in FreeCAD therefore is made of two parts, an Object and a ViewObject.


Para ilustrar el concepto, veamos nuestro objeto cubo. Las propiedades geométricas del cubo, como sus dimensiones, posición, etc. se almacenan en el {{incode|Objeto}}. Mientras que sus propiedades visuales, como su color, grosor de línea, etc. se almacenan en el {{incode|VistaObjeto}}. Esto se corresponde con las pestañas '''Datos''' y '''Vista'''' del [[Property_editor/es|Editor de propiedades]]. El objeto vista de un objeto se accede así:
To illustrate the concept, see our cube object, the geometric properties of the cube, such as its dimensions, position, etc... are stored in the object, while its visual properties, such as its color, line thickness, etc... are stored in the viewobject. This corresponds to the "Data" and "View" tabs in the property window. The view object of an object is accessed like this:


{{Code|code=
<syntaxhighlight>
vo = box.ViewObject
vo = box.ViewObject
}}
</syntaxhighlight>
Ahora también puedes cambiar las propiedades en la pestaña '''Vista'''':
Now you can also change the properties of the "View" tab:


{{Code|code=
<syntaxhighlight>
vo.Transparency = 80
vo.Transparency = 80
vo.hide()
vo.hide()
vo.show()
vo.show()
}}
</syntaxhighlight>


When you start FreeCAD, the python console already loads 2 base modules: FreeCAD and FreeCADGui (which can also be accessed by their shortcuts App and Gui). They contain all kinds of generic functionality to work with documents and their objects. To illustrate our concept, see that both FreeCAD and FreeCADGui contain an ActiveDocument attribute, which is the currently opened document. FreeCAD.ActiveDocument and FreeCADGui.ActiveDocument are not the same object. They are the two components of a FreeCAD document, and they contain different attributes and methods. For example, FreeCADGui.ActiveDocument contains ActiveView, which is the currently opened 3D view
Cuando se inicia FreeCAD, la consola de Python ya carga dos módulos base: {{incode|FreeCAD}} y {{incode|FreeCADGui}} (a los que también se puede acceder por sus accesos directos {{incode|App}} y {{incode|Gui}}). Contienen todo tipo de funcionalidades genéricas para trabajar con documentos y sus objetos. Para ilustrar nuestro concepto, veamos que tanto {{incode|FreeCAD}} como {{incode|FreeCADGui}} contienen un atributo {{incode|ActiveDocument}}, que es el documento actualmente abierto. {{incode|FreeCAD.ActiveDocument}} y {{incode|FreeCADGui.ActiveDocument}} no son el mismo objeto. Son los dos componentes de un documento de FreeCAD, y contienen diferentes atributos y métodos. Por ejemplo, {{incode|FreeCADGui.ActiveDocument}} contiene {{incode|ActiveView}}, que es la [[3D_view/es|Vista 3D]] actualmente abierta.
{{Top}}
<span id="Modules"></span>
== Módulos ==


El verdadero poder de FreeCAD reside en sus fieles módulos, con sus respectivos bancos de trabajo. La aplicación base de FreeCAD es más o menos un contenedor vacío. Sin sus módulos no puede hacer mucho más que crear nuevos documentos vacíos. Cada módulo no sólo añade nuevos ambientes de trabajo a la interfaz, sino también nuevos comandos de Python y nuevos tipos de objetos. Como resultado, varios tipos de objetos diferentes, e incluso totalmente incompatibles, pueden coexistir en el mismo documento. Los módulos más importantes de FreeCAD que veremos en este tutorial son:[[Part_Workbench/es|Piezas]], [[Mesh_Workbench/es|Mallas]], [[Sketcher_Workbench/es|Croquizador]] o [[Draft_Workbench/es|Borrador]].
== Modules ==
Now you must surely wonder, what else than "Part::Box" can I do? The FreeCAD base application is more or less an empty container. Without its modules, it can do little more than creating new, empty documents. The true power of FreeCAD is in its faithful modules. Each of them adds not only new workbenches to the interface, but also new python commands and new object types. As a result, several different or even totally incompatible object types can coexist in the same document. The most important modules in FreeCAD, that we'll look at in this tutorial, are [[Part Module|Part]], [[Mesh Module|Mesh]], [[Sketcher Workbench|Sketcher]] or [[Draft Module|Draft]].


[[Sketcher_Workbench/es|Croquizador]] y [[Draft_Workbench/es|Borrador]] ambos utilizan el módulo [[Part_Workbench/es|Piezas]] para crear y manejar sus geometrías. Mientras que [[Mesh_Workbench|Malla]] es totalmente independiente, y maneja sus propios objetos. Más sobre esto a continuación.
[[Sketcher Workbench|Sketcher]] and [[Draft Module|Draft]] both use the [[Part Module|Part]] module to create and handle their geometry, which are BRep while [[Mesh Module|Mesh]] is totally independent, and handles its own objects. More about that below.


Puedes comprobar todos los tipos de objeto base disponibles para el documento actual así:
You can check all the available base object types for the current document like this:


{{Code|code=
<syntaxhighlight>
doc.supportedTypes()
doc.supportedTypes()
}}
</syntaxhighlight>


Los diferentes módulos de FreeCAD no se cargan automáticamente en la consola de Python. Esto es para evitar tener un arranque muy lento. Los módulos se cargan sólo cuando los necesitas. Así, por ejemplo, para explorar lo que hay dentro del módulo Pieza:
The different FreeCAD modules, although they added their object types to FreeCAD, are not automatically loaded in the python console. This is to avoid having a very slow startup. Modules are loaded only when you need them. So, for example, to explore what's inside the Part module:


{{Code|code=
<syntaxhighlight>
import Part
import Part
Part.
Part.
}}
</syntaxhighlight>


Pero ya hablaremos más adelante del módulo de Piezas.
But we'll talk more about the Part module below.
{{Top}}
<span id="Mesh_module"></span>
<div class="mw-translate-fuzzy">
==Malla==
</div>


Las [https://en.wikipedia.org/wiki/Polygon_mesh Mallas] son un tipo de objeto 3D muy simple, utilizado por ejemplo por [https://en.wikipedia.org/wiki/SketchUp Sketchup], [https://en.wikipedia.org/wiki/Blender_(software) Blender] y [https://en.wikipedia.org/wiki/Autodesk_3ds_Max 3D Studio Max]. Están compuestos por 3 elementos: puntos (también llamados vértices), líneas (también llamadas aristas) y caras. En muchas aplicaciones, incluido FreeCAD, las caras sólo pueden tener 3 vértices. Por supuesto, nada te impide tener una cara más grande formada por varios triángulos coplanares.
By now, you know a bit more about the different modules of FreeCAD: The core modules (FreeCAD, FreeCADGui), and the workbenches modules (Part, Mesh, Sketcher). The other important modules are the 3d scene module (pivy) and the interface module (pyqt), we'll talk about them too below.


Las mallas son simples, pero como son simples puedes tener fácilmente millones de ellas en un solo documento. Sin embargo, en FreeCAD tienen menos uso y están principalmente ahí para que puedas importar objetos en formatos de malla ({{FileName|.stl}}, {{FileName|.obj}}) desde otras aplicaciones. El módulo de malla también se utilizó ampliamente como el principal módulo de prueba en el primer mes de vida de FreeCAD.
Now it's time to explore a bit deeper the important ones, which are the workbench modules.


Los objetos de malla y los objetos de FreeCAD son cosas diferentes. Puedes ver el objeto FreeCAD como un contenedor para un objeto Malla (y como veremos más adelante, para los objetos Pieza también). Así que para añadir un objeto malla a FreeCAD, primero debemos crear un objeto FreeCAD y un objeto Malla, y luego añadir el objeto Malla al objeto FreeCAD:
== Mesh ==


{{Code|code=
[http://en.wikipedia.org/wiki/Polygon_mesh Meshes] are a very simple kind of 3D objects, used for example by [http://en.wikipedia.org/wiki/SketchUp Sketchup], [http://en.wikipedia.org/wiki/Blender_%28software%29 Blender] or [http://en.wikipedia.org/wiki/Autodesk_3ds_Max 3D studio Max]. They are composed of 3 elements: points (also called vertices), lines (also called edges) and faces. In many applications, FreeCAD included, faces can have only 3 vertices. But of course nothing prevents you from having a bigger plane face made of several coplanar triangles.

Meshes are simple, this can be a bad thing, but for many applications such as those above, it turns to be an advantage, because they are so simple that you can easily have millions of them in a single document. In FreeCAD, though, they have less use, and are mostly there so you can import objects in mesh formats (.stl, .obj) from other applications. It was also extensively used as the main test module in the first month of life of FreeCAD.

Mesh objects and FreeCAD objects are different things. You can see the FreeCAD object as a container for a Mesh object (like, we'll see below, for Part objects too). So in order to add a mesh object to FreeCAD, we must first create a FreeCAD object and a Mesh object, then add the Mesh object to the FreeCAD object:

<syntaxhighlight>
import Mesh
import Mesh
mymesh = Mesh.createSphere()
mymesh = Mesh.createSphere()
mymesh.
mymesh.Facets
mymesh.Facets
mymesh.Points
mymesh.Points
meshobj = doc.addObject("Mesh::Feature","MyMesh")
meshobj = doc.addObject("Mesh::Feature", "MyMesh")
meshobj.Mesh = mymesh
meshobj.Mesh = mymesh
doc.recompute()
doc.recompute()
}}
</syntaxhighlight>


Este es un ejemplo estándar que utiliza el método {{incode|createSphere()}} para crear una esfera, pero también puedes crear mallas personalizadas desde cero definiendo sus vértices y caras.
This is a standard example, that uses the createSphere() method to automatically create a sphere, but you can very well create custom meshes from scratch, by defining their vertices and faces.


[[Mesh Scripting|Read more about mesh scripting...]]
[[Mesh Scripting/es|Leer más sobre guionización de malla...]]
{{Top}}
<span id="Part_module"></span>
<div class="mw-translate-fuzzy">
== Piezas ==
</div>


El [[Part_Workbench/es|Pieza]] módulo es el módulo más potente de todo FreeCAD. Te permite crear y manipular objetos [http://en.wikipedia.org/wiki/Boundary_representation BREP]. BREP significa "Representación de Límites". Un objeto BREP está definido por superficies que encierran y definen un volumen interior. A diferencia de las mallas, los objetos BREP pueden tener una gran variedad de componentes, desde caras planas hasta superficies NURBS muy complejas.
== Part ==
The [[Part Module]] is the most powerful module of the whole FreeCAD. It allows to create and manipulate [http://en.wikipedia.org/wiki/Boundary_representation BRep] objects. This kind of object, unlike meshes, can have a wide variety of components. To resume a bit, Brep means Boundary Representation. which means that they are defined by their surfaces, which enclose and define an inner volume. These surface can be a variety of things, such as plane faces or very complex NURBS surfaces. They also carry the concept of volume.


The Part module is based on the powerful [http://en.wikipedia.org/wiki/Open_CASCADE_Technology OpenCasCade] library, which allows a wide range of complex operations to be easily performed on those objects, such as boolean operations, filleting, lofts, etc...
El módulo de Piezas está basado en la potente librería [https://en.wikipedia.org/wiki/Open_CASCADE_Technology OpenCasCade], que permite realizar una amplia gama de operaciones complejas sobre estos objetos, como operaciones booleanas, fileteado, lofts, etc.


El módulo de Piezas funciona del mismo modo que el módulo de mallas: Se crea un objeto de FreeCAD, un objeto de Pieza, luego añadir el objeto de pieza al objeto de FreeCAD:
The Part module works the same way as the Mesh module: You create a FreeCAD object, a Part object, then add the Part object to the FreeCAD object:


{{Code|code=
<syntaxhighlight>
import Part
import Part
myshape = Part.makeSphere(10)
myshape = Part.makeSphere(10)
myshape.
myshape.Volume
myshape.Volume
myshape.Area
myshape.Area


shapeobj = doc.addObject("Part::Feature","MyShape")
shapeobj = doc.addObject("Part::Feature", "MyShape")
shapeobj.Shape = myshape
shapeobj.Shape = myshape
doc.recompute()
doc.recompute()
}}
</syntaxhighlight>


El módulo Pieza (como el módulo de Mallas) también tiene un atajo que automáticamente crea un objeto de FreeCAD y le añade una forma, por lo que puede acortar las tres últimas líneas a:
The Part module (like the Mesh module) also has a shortcut that automatically creates a FreeCAD object and add a shape to it, so you can skip the 3 last lines above:


{{Code|code=
<syntaxhighlight>
Part.show(myshape)
Part.show(myshape)
}}
</syntaxhighlight>


By exploring the contents of myshape, you will notice many interesting available subcomponents such as Faces, Edges, Vertexes, Solids or Shells, and a wide range of geometry operations such as cut (subtraction), common (intersection) or fuse (union). The [[Topological data scripting]] page explains all that in detail.
Al explorar el contenido de myshape, notarás muchos subcomponentes interesantes como {{incode|Faces}}, {{incode|Edges}}, {{incode|Vertexes}}, {{incode|Solids}} y {{incode|Shells}}, y una amplia gama de operaciones de geometría como {{incode|cut}} (sustracción), {{incode|common}} (intersección) o {{incode|fuse}} (unión). En la página [[Topological_data_scripting/es|Guionización de topología de datos]] se explica todo esto en detalle.


[[Topological_data_scripting/es|
[[Topological data scripting|Read more about part scripting...]]
Leer más sobre guionización pieza...]]
{{Top}}
<span id="Draft_module"></span>
<div class="mw-translate-fuzzy">
== Borrador ==
</div>


FreeCAD proporciona varios módulos, como el [[Sketcher_Workbench/es|Croquizador]] o [[Draft_Workbench/es|Borrador]], que también crean objetos de piezas, pero le añade parámetros, o incluso un nuevo modo de manejar la geometría de las piezas. Nuestro cubo de ejemplo de arriba, es un perfecto ejemplo de objeto paramétrico. Todo lo que necesitas, para definir el cubo, es especificar un conjunto de parámetros, como las altura, ancho y longitud. Basados en los cuales, el objeto calculará automáticamente su forma de Pieza. FreeCAD te permite [[Scripted_objects/es|crear dichos objetos en Python]].
== Draft ==
FreeCAD features many more modules, such as [[Sketcher Workbench|Sketcher]] or [[Draft Module|Draft]], which also create Part objects, but add parameters to it, or even carry a whole new way to handle the Part geometry in them. Our box example above, is a perfect example of parametric object. All you need, to define the box, is to specify a couple of parameters, such as height, width and length. Based on those, the object will automatically calculate its Part shape. FreeCAD allows you to [[Scripted objects|create such objects in python]].


El [[Draft_Workbench/es|Borrador]] Módulo añade tipos de objetos paramétricos 2D (que son todos objetos Pieza) como líneas y círculos, y también proporciona algunas funciones genéricas que no sólo funcionan con objetos Borrador, sino con cualquier objeto Pieza. Para explorar lo que está disponible, simplemente haga:
The [[Draft Module]] adds a couple of 2D parametric objects types (which are all Part objects) such as lines and circles, and also provides some generic functions that work not only on Draft-made objects, but on any Part object. To explore what is available, simply do:


{{Code|code=
<syntaxhighlight>
import Draft
import Draft
rec = Draft.makeRectangle(5, 2)
Draft.
mvec = FreeCAD.Vector(4, 4, 0)
rec = Draft.makeRectangle(5,2)
Draft.move(rec, mvec)
mvec = FreeCAD.Vector(4,4,0)
Draft.move(rec,mvec)
Draft.move(box, mvec)
}}
Draft.move(box,mvec)
{{Top}}
</syntaxhighlight>
<span id="Interface"></span>
== Interfaz ==


La interfaz de usuario de FreeCAD está creada con [http://es.wikipedia.org/wiki/Qt_(biblioteca) Qt], un poderoso sistema de interfaces gráficas, responsable de dibujar y manejar todos los controles, menús, barras de herramientas y botones en toda la vista 3D. Qt proporciona un módulo, denominado PyQt, que permite a Python acceder y modificar interfaces Qt, como la de FreeCAD. Vamos a tratar de lidiar con la interfaz de Qt y producir un letrero de diálogo simple:
== Interface ==
The FreeCAD user interface is made with [http://en.wikipedia.org/wiki/Qt_%28framework%29 Qt], a powerful graphical interface system, responsible for drawing and handling all the controls, menus, toolbars, buttons around the 3D view. Qt provides a module, called PyQt, which allows python to access and modify Qt interfaces, such as FreeCAD. Let's try to fiddle with the Qt interface and produce a simple dialog:


{{Code|code=
<syntaxhighlight>
from PyQt4 import QtGui
from PySide import QtGui
QtGui.QMessageBox.information(None,"Apollo program","Houston, we have a problem")
QtGui.QMessageBox.information(None, "Apollo program", "Houston, we have a problem")
}}
</syntaxhighlight>


Observa que el diálogo que aparece tiene el icono de FreeCAD en su barra de herramientas, lo que significa que Qt sabe que la orden ha sido emitida desde dentro de la aplicación FreeCAD. Es posible manipular cualquier parte de la interfaz de FreeCAD.
See that the dialog that appears has the FreeCAD icon in its toolbar, meaning that Qt knows that the order has been issued from inside the FreeCAD application. We can therefore easily directly manipulate any part of the FreeCAD interface.


Qt es un sistema de interfaz muy potente que permite hacer cosas muy complejas. También tiene algunas herramientas fáciles de usar como el Qt Designer con el que puedes diseñar diálogos gráficamente y luego añadirlos a la interfaz de FreeCAD con unas pocas líneas de código Python.
Qt is a very powerful interface system, that allows you to do very complex things, but also has a couple of very easy-to use tools such as the Qt Designer with which you can design dialogs graphically and then add them to the FreeCAD interface with a couple of lines of python.

[[PyQt|Read more about pyqt here...]]


[[PySide/es|Lee más sobre PySide aquí...]]
{{Top}}
<span id="Macros"></span>
== Macros ==
== Macros ==
Now that you have a good understanding of the basics, where are we going to keep our python scripts, and how are we going to launch them easily from FreeCAD? There is an easy mechanism for that, called [[Macros]]. A macro is simply a python script, that can then be added to a toolbar and be launched from a simple mouse click. FreeCAD provides you with a simple text editor (Macro -> Macros -> Create) where you can write or paste scripts. Once it is done, the Tools -> Customize -> Macros allow you to define a button for it, that can be added to toolbars.


Ahora que tienes una buena comprensión de los conceptos básicos, a dónde vamos para mantener nuestros archivos de guión en Python, y cómo vamos a ejecutarlos fácilmente desde FreeCAD? Existe un sencillo mecanismo para ello, denominado [[Macros/es|Macros]]. Una macro es simplemente un archivo de guión en Python, que puede ser añadida a una barra de herramientas y lanzada desde un simple clic de ratón. FreeCAD proporciona un simple editor de textos (Macro -> Macros -> Crear) donde puedes escribir o pegar archivos de guión. Una vez esté terminado, Herramientas -> Personalizar -> Macros te permite definir un botón para ella, que se puede añadir a las barras de herramientas.
Now you are ready for more in-depth FreeCAD scripting. Head on to the [[Power users hub]]!


==External scripts==
{{docnav|Introduction to Python|FreeCAD Scripting Basics}}


An alternative method for creating, saving, and running your own Python scripts is to create them outside FreeCAD, using an editor of your choice (for example, Vim). To run your Python script inside FreeCAD, be sure to save it with the {{FileName|.py}} extension.
[[Category:Tutorials]]


Then use {{MenuCommand|File → Open}} to open your script. It will load into a new tab in the [[Main_view_area|Main view area]]. You can run your script by clicking the {{Button|[[Image:Std_DlgMacroExecuteDirect.svg|16px]] [[Std_DlgMacroExecuteDirect|Execute macro]]}} button. Any errors or script output will be shown in the [[Report_view|Report view]].
{{clear}}

<languages/>
When you make and save any modifications to your already-loaded script, a dialog box will appear asking whether you want to reload the modified script into FreeCAD.

<div class="mw-translate-fuzzy">
Ahora estás listo para profundizar en guionización FreeCAD. Así que dirígete al [[Power_users_hub/es|Centro usuarios avanzados]]!
</div>
{{Top}}

{{Docnav/es
|[[Introduction_to_Python/es|Introducción a Python]]
|[[FreeCAD_Scripting_Basics/es|FreeCAD Basicos del guión en Python]]
}}

{{Powerdocnavi{{#translation:}}}}
[[Category:Developer Documentation{{#translation:}}]]
[[Category:Python Code{{#translation:}}]]

Latest revision as of 20:02, 9 August 2023

Introducción

Python es un lenguaje de programación relativamente fácil de aprender y comprender. Es de código abierto y multiplataforma, y puede utilizarse para muchos fines: desde simples scripts de shell hasta programas muy complejos. Pero su uso más extendido es como lenguaje de scripting incrustado en otras aplicaciones. Así es como se utiliza dentro de FreeCAD. Desde la Consola de Python, o desde scripts personalizados, puedes controlar FreeCAD y hacer que realice operaciones muy complejas.

Por ejemplo, desde un archivo de guión de Python, puedes:

  • Crear nuevos objetos.
  • Modificar los objetos existentes.
  • Modificar la representación 3D de dichos objetos
  • Modificar la interfaz de FreeCAD

También existen diversas formas de utilizar Python en FreeCAD:

  • Desde el Interprete de Python de FreeCAD, donde puedes dictar comandos como en una interfaz del tipo de línea de comandos
  • Desde Macros, que son una forma conveniente de añadir una herramienta que no exista a la interfaz de FreeCAD
  • Desde archivos de guión externos, que pueden utilizarse para programar cosas mucho más complejas. Como Ambientes de trabajo completos.

En este tutorial, trabajaremos en varios ejemplos básicos para que puedas iniciarte, pero existe mucha más documentación sobre los documentación sobre guionización en Python disponible en esta wiki. Si eres totalmente nuevo en Python y quieres comprender cómo funciona, también tenemos una básica Introducción a Python.

Antes de proceder con la escritura en Python, vaya a Editar → Preferencias → General → Ventana de salida y marque dos casillas:

  • Redirigir salida Python interna a la vista de informe.
  • Redirigir errores Python internos a la vista de informe.

Luego vaya a Vista → Paneles y compruebe:

  • Vista de informe.

Escribiendo código en Python

Existen dos modos sencillos de escribir código de Python en FreeCAD: Desde la consola de Python (disponible en el menú Vista -> Vistas -> Consola de Python) o desde el editor de macros (Herramientas -> Macros). En la consola, escribes comandos de Python uno a uno, que son ejecutados al presionar Enter, mientras que las macros pueden contener archivos de guión más completos formados por varias líneas, que se ejecutan sólo cuando la macro es ejecutada.

La consola FreeCAD Python

En este tutorial se pueden utilizar ambos métodos. Puede copiar-pegar cada línea en la consola Python y luego presionar Enter, o copiar-pegar todo el código en una nueva ventana de Macro.

Inicio

Explorando FreeCAD

Vamos a empezar creando un nuevo documento vacío:

doc = FreeCAD.newDocument()

Si escribe esto en la consola de FreeCAD Python, notará que en cuanto teclee FreeCAD. aparece una ventana que le permite autocompletar rápidamente el resto de su línea. Mejor aún, cada entrada de la lista de autocompletar tiene un tooltip que explica lo que hace. Esto facilita la exploración de la funcionalidad disponible. Antes de elegir newDocument, eche un vistazo a las otras opciones.

El mecanismo de autocompletar de la consola Python de FreeCAD

Ahora nuestro nuevo documento se creará. Esto es similar a presionar el botón "Nuevo documento" en la barra de herramientas. En realidad, la mayoría de botones en FreeCAD no hacen nada más que ejecutar una línea o dos de código en Python. Aún mejor, puedes establecer una opción en Editar -> Preferencias -> General -> Macro para "mostrar los comandos de los archivos de guión en la consola de Python". Esto mostrará en la consola todo el código de Python ejecutado cuando presionas los botones. Muy útil para aprender como reproducir acciones en Python.

Ahora volvamos a nuestro documento y veamos qué podemos hacer con él:

doc.

Explore las opciones disponibles. Normalmente los nombres que empiezan con mayúscula son atributos, contienen un valor, mientras que los nombres que empiezan con minúscula son funciones (también llamadas métodos), "hacen algo". Los nombres que comienzan con un guión bajo suelen estar ahí para el funcionamiento interno del módulo, y no deberías preocuparte por ellos. Vamos a utilizar uno de los métodos para añadir un nuevo objeto a nuestro documento:

box = doc.addObject("Part::Box", "myBox")

No pasa nada. ¿Por qué? Porque FreeCAD está hecho para la gran imagen. Un día, trabajará con cientos de objetos complejos, todos dependiendo unos de otros. Hacer un pequeño cambio en algún lugar puede tener un gran impacto, puede necesitar recalcular todo el documento, lo que puede llevar mucho tiempo. Por esa razón casi ningún comando actualiza la escena automáticamente. Debes hacerlo manualmente:

doc.recompute()

Ahora nuestra caja apareció. Muchos de los botones que añaden objetos en FreeCAD en realidad hacen dos cosas: añadir el objeto, y volver a calcular. Si activaste la opción Mostrar comandos de script en la consola de python de arriba, intenta añadir una esfera con el botón de la GUI, verás las dos líneas de código Python ejecutándose una tras otra.

Ahora vamos a explorar el contenido de nuestro cubo:

box.

Verás automáticamente varias cosas interesantes como:

box.Height

Esto mostrará la altura actual de nuestro cubo. Ahora vamos a intentar cambiarla:

box.Height = 5

Si seleccionas tu caja con el ratón, verás que en el Editor de propiedades, en la pestaña Datos, aparece nuestra propiedad DatosAltura. Todas las propiedades de un objeto de FreeCAD que aparecen ahí (y también en la pestaña Vista, más adelante), son directamente accesibles por Python también, por sus nombres, como hicimos con la propiedad DatosAltura. Prueba a cambiar las otras dimensiones de la caja.

Traducción realizada con la versión gratuita del traductor www.DeepL.com/Translator

Inicio

Vectores y ubicaciones

Los vectores son un concepto muy fundamental en cualquier aplicación 3D. Son una lista de 3 números (X, Y y Z), describiendo un punto o posición en el espacio 3D. Un montón de cosas se pueden hacer con los vectores, como sumas, restas, proyecciones y mucho más. En FreeCAD los vectores funcionan así:

myvec = FreeCAD.Vector(2, 0, 0)
myvec.x
myvec.y
othervec = FreeCAD.Vector(0, 3, 0)
sumvec = myvec.add(othervec)

Otra característica común de los objetos de FreeCAD es su Ubicación. Cada objeto tiene una propiedad DatosUbicación, que contiene la DatosBase (posición) y DatosRotación (orientación) del objeto. Es fácil de manipular, por ejemplo para mover nuestro objeto:

box.Placement
box.Placement.Base
box.Placement.Base = sumvec
 
otherpla = FreeCAD.Placement()
box.Placement = otherpla

Ahora deberías comprender varios conceptos importantes antes de continuar avanzando.

Inicio

App y Gui

FreeCAD ha sido diseñado para que también pueda ser utilizado sin su interfaz de usuario, como una aplicación de línea de comandos. Por lo tanto, casi todos los objetos de FreeCAD constan de dos partes: un Object, su componente de "geometría", y un ViewObject, su componente "visual". Cuando trabajas en modo línea de comandos, la parte de geometría está presente, pero la parte visual está desactivada.

Para ilustrar el concepto, veamos nuestro objeto cubo. Las propiedades geométricas del cubo, como sus dimensiones, posición, etc. se almacenan en el Objeto. Mientras que sus propiedades visuales, como su color, grosor de línea, etc. se almacenan en el VistaObjeto. Esto se corresponde con las pestañas Datos y Vista' del Editor de propiedades. El objeto vista de un objeto se accede así:

vo = box.ViewObject

Ahora también puedes cambiar las propiedades en la pestaña Vista':

vo.Transparency = 80
vo.hide()
vo.show()

Cuando se inicia FreeCAD, la consola de Python ya carga dos módulos base: FreeCAD y FreeCADGui (a los que también se puede acceder por sus accesos directos App y Gui). Contienen todo tipo de funcionalidades genéricas para trabajar con documentos y sus objetos. Para ilustrar nuestro concepto, veamos que tanto FreeCAD como FreeCADGui contienen un atributo ActiveDocument, que es el documento actualmente abierto. FreeCAD.ActiveDocument y FreeCADGui.ActiveDocument no son el mismo objeto. Son los dos componentes de un documento de FreeCAD, y contienen diferentes atributos y métodos. Por ejemplo, FreeCADGui.ActiveDocument contiene ActiveView, que es la Vista 3D actualmente abierta.

Inicio

Módulos

El verdadero poder de FreeCAD reside en sus fieles módulos, con sus respectivos bancos de trabajo. La aplicación base de FreeCAD es más o menos un contenedor vacío. Sin sus módulos no puede hacer mucho más que crear nuevos documentos vacíos. Cada módulo no sólo añade nuevos ambientes de trabajo a la interfaz, sino también nuevos comandos de Python y nuevos tipos de objetos. Como resultado, varios tipos de objetos diferentes, e incluso totalmente incompatibles, pueden coexistir en el mismo documento. Los módulos más importantes de FreeCAD que veremos en este tutorial son:Piezas, Mallas, Croquizador o Borrador.

Croquizador y Borrador ambos utilizan el módulo Piezas para crear y manejar sus geometrías. Mientras que Malla es totalmente independiente, y maneja sus propios objetos. Más sobre esto a continuación.

Puedes comprobar todos los tipos de objeto base disponibles para el documento actual así:

doc.supportedTypes()

Los diferentes módulos de FreeCAD no se cargan automáticamente en la consola de Python. Esto es para evitar tener un arranque muy lento. Los módulos se cargan sólo cuando los necesitas. Así, por ejemplo, para explorar lo que hay dentro del módulo Pieza:

import Part
Part.

Pero ya hablaremos más adelante del módulo de Piezas.

Inicio

Malla

Las Mallas son un tipo de objeto 3D muy simple, utilizado por ejemplo por Sketchup, Blender y 3D Studio Max. Están compuestos por 3 elementos: puntos (también llamados vértices), líneas (también llamadas aristas) y caras. En muchas aplicaciones, incluido FreeCAD, las caras sólo pueden tener 3 vértices. Por supuesto, nada te impide tener una cara más grande formada por varios triángulos coplanares.

Las mallas son simples, pero como son simples puedes tener fácilmente millones de ellas en un solo documento. Sin embargo, en FreeCAD tienen menos uso y están principalmente ahí para que puedas importar objetos en formatos de malla (.stl, .obj) desde otras aplicaciones. El módulo de malla también se utilizó ampliamente como el principal módulo de prueba en el primer mes de vida de FreeCAD.

Los objetos de malla y los objetos de FreeCAD son cosas diferentes. Puedes ver el objeto FreeCAD como un contenedor para un objeto Malla (y como veremos más adelante, para los objetos Pieza también). Así que para añadir un objeto malla a FreeCAD, primero debemos crear un objeto FreeCAD y un objeto Malla, y luego añadir el objeto Malla al objeto FreeCAD:

import Mesh
mymesh = Mesh.createSphere()
mymesh.Facets
mymesh.Points
 
meshobj = doc.addObject("Mesh::Feature", "MyMesh")
meshobj.Mesh = mymesh
doc.recompute()

Este es un ejemplo estándar que utiliza el método createSphere() para crear una esfera, pero también puedes crear mallas personalizadas desde cero definiendo sus vértices y caras.

Leer más sobre guionización de malla...

Inicio

Piezas

El Pieza módulo es el módulo más potente de todo FreeCAD. Te permite crear y manipular objetos BREP. BREP significa "Representación de Límites". Un objeto BREP está definido por superficies que encierran y definen un volumen interior. A diferencia de las mallas, los objetos BREP pueden tener una gran variedad de componentes, desde caras planas hasta superficies NURBS muy complejas.

El módulo de Piezas está basado en la potente librería OpenCasCade, que permite realizar una amplia gama de operaciones complejas sobre estos objetos, como operaciones booleanas, fileteado, lofts, etc.

El módulo de Piezas funciona del mismo modo que el módulo de mallas: Se crea un objeto de FreeCAD, un objeto de Pieza, luego añadir el objeto de pieza al objeto de FreeCAD:

import Part
myshape = Part.makeSphere(10)
myshape.Volume
myshape.Area

shapeobj = doc.addObject("Part::Feature", "MyShape")
shapeobj.Shape = myshape
doc.recompute()

El módulo Pieza (como el módulo de Mallas) también tiene un atajo que automáticamente crea un objeto de FreeCAD y le añade una forma, por lo que puede acortar las tres últimas líneas a:

Part.show(myshape)

Al explorar el contenido de myshape, notarás muchos subcomponentes interesantes como Faces, Edges, Vertexes, Solids y Shells, y una amplia gama de operaciones de geometría como cut (sustracción), common (intersección) o fuse (unión). En la página Guionización de topología de datos se explica todo esto en detalle.

Leer más sobre guionización pieza...

Inicio

Borrador

FreeCAD proporciona varios módulos, como el Croquizador o Borrador, que también crean objetos de piezas, pero le añade parámetros, o incluso un nuevo modo de manejar la geometría de las piezas. Nuestro cubo de ejemplo de arriba, es un perfecto ejemplo de objeto paramétrico. Todo lo que necesitas, para definir el cubo, es especificar un conjunto de parámetros, como las altura, ancho y longitud. Basados en los cuales, el objeto calculará automáticamente su forma de Pieza. FreeCAD te permite crear dichos objetos en Python.

El Borrador Módulo añade tipos de objetos paramétricos 2D (que son todos objetos Pieza) como líneas y círculos, y también proporciona algunas funciones genéricas que no sólo funcionan con objetos Borrador, sino con cualquier objeto Pieza. Para explorar lo que está disponible, simplemente haga:

import Draft
rec = Draft.makeRectangle(5, 2)
mvec = FreeCAD.Vector(4, 4, 0)
Draft.move(rec, mvec)
Draft.move(box, mvec)

Inicio

Interfaz

La interfaz de usuario de FreeCAD está creada con Qt, un poderoso sistema de interfaces gráficas, responsable de dibujar y manejar todos los controles, menús, barras de herramientas y botones en toda la vista 3D. Qt proporciona un módulo, denominado PyQt, que permite a Python acceder y modificar interfaces Qt, como la de FreeCAD. Vamos a tratar de lidiar con la interfaz de Qt y producir un letrero de diálogo simple:

from PySide import QtGui
QtGui.QMessageBox.information(None, "Apollo program", "Houston, we have a problem")

Observa que el diálogo que aparece tiene el icono de FreeCAD en su barra de herramientas, lo que significa que Qt sabe que la orden ha sido emitida desde dentro de la aplicación FreeCAD. Es posible manipular cualquier parte de la interfaz de FreeCAD.

Qt es un sistema de interfaz muy potente que permite hacer cosas muy complejas. También tiene algunas herramientas fáciles de usar como el Qt Designer con el que puedes diseñar diálogos gráficamente y luego añadirlos a la interfaz de FreeCAD con unas pocas líneas de código Python.

Lee más sobre PySide aquí...

Inicio

Macros

Ahora que tienes una buena comprensión de los conceptos básicos, a dónde vamos para mantener nuestros archivos de guión en Python, y cómo vamos a ejecutarlos fácilmente desde FreeCAD? Existe un sencillo mecanismo para ello, denominado Macros. Una macro es simplemente un archivo de guión en Python, que puede ser añadida a una barra de herramientas y lanzada desde un simple clic de ratón. FreeCAD proporciona un simple editor de textos (Macro -> Macros -> Crear) donde puedes escribir o pegar archivos de guión. Una vez esté terminado, Herramientas -> Personalizar -> Macros te permite definir un botón para ella, que se puede añadir a las barras de herramientas.

External scripts

An alternative method for creating, saving, and running your own Python scripts is to create them outside FreeCAD, using an editor of your choice (for example, Vim). To run your Python script inside FreeCAD, be sure to save it with the .py extension.

Then use File → Open to open your script. It will load into a new tab in the Main view area. You can run your script by clicking the Execute macro button. Any errors or script output will be shown in the Report view.

When you make and save any modifications to your already-loaded script, a dialog box will appear asking whether you want to reload the modified script into FreeCAD.

Ahora estás listo para profundizar en guionización FreeCAD. Así que dirígete al Centro usuarios avanzados!

Inicio