Manual:Creating and manipulating geometry/es

En los capítulos anteriores, hemos aprendido sobre los diferentes ambientes de trabajo de FreeCAD, y cómo cada uno de ellos implementa sus propias herramientas y tipos de geometría. El mismo concepto se aplica cuando se trabaja desde el código de Python.

También vimos que la gran mayoría de los ambientes de trabajo de FreeCAD dependen de uno muy fundamental: el Ambiente de trabajo Pieza. De hecho, muchos otros ambientes de trabajo, como Borrador y Arquitectura, hacen exactamente lo que haremos en este capítulo: usar código Python para crear y manipular la geometría de la Pieza.

Así que lo primero que tenemos que hacer para trabajar con la geometría Pieza, es hacer el equivalente en Python a cambiar al Ambiente de trabajo Pieza: importar el módulo Pieza:

Tómese un minuto para explorar el contenido del módulo Pieza, escribiendo Pieza. y navegando por los diferentes métodos disponibles. El módulo Pieza ofrece varias funciones convenientes como makeBox, makeCircle, etc... que construirán instantáneamente un objeto para usted. Pruebe esto, por ejemplo:

Entrar en Cuando presione Entrar después de escribir la línea anterior, no aparecerá nada en la vista 3D, pero se imprimirá algo como esto en la consola de Python:

Aquí es donde tiene lugar un concepto importante. Lo que hemos creado aquí es una forma de pieza. No es un objeto de documento de FreeCAD (todavía). En FreeCAD, los objetos y su geometría son independientes. Piensa en un objeto documento de FreeCAD como un contenedor, que albergará una forma. Los objetos paramétricos también tendrán propiedades como Longitud y Anchura, y recalcularán su Forma sobre la marcha, siempre que una de las propiedades cambie. Lo que hemos hecho aquí es calcular una forma manualmente.

Ahora podemos crear fácilmente un objeto de documento "genérico" en el documento actual (asegúrate de tener al menos un documento nuevo abierto), y darle una forma de caja como la que acabamos de hacer:

Observe como manejamos miObj.Shape, note que se hace exactamente como lo hicimos en el capítulo anterior, cuando cambiamos otras propiedades de un objeto, como box.Height = 5. De hecho, Forma también es una propiedad, al igual que Altura'. Sólo que toma una Forma Pieza, no un número. En el próximo capítulo veremos mejor cómo se construyen estos objetos paramétricos.

Por ahora, vamos a explorar nuestras Formas Pieza con más detalle. Al final del capítulo sobre modelado tradicional con el Ambiente de trabajo Pieza mostramos una tabla que explica cómo se construyen las Formas Pieza, y sus diferentes componentes (Vértices, aristas, caras, etc). Los mismos componentes existen aquí y pueden ser recuperados desde Python. Las Formas Pieza siempre tienen los siguientes atributos: Vértices, Aristas, Hilos, Caras, Carcasas y Sólidos. Todos ellos son listas, que pueden contener cualquier número de elementos o estar vacías:

For example, let's find the area of each face of our box shape above:

Or, for each edge, its start point and end point:

As you see, if our boxShape has a "Vertexes" attribute, each Edge of the boxShape also has a "Vertexes" attribute. As we can expect, the boxShape will have 8 vertices, while the edge will only have 2, which are both part of the list of 8.

We can always check what is the type of a shape:

So to resume the topic of Part Shapes: Everything starts with Vertices. With one or two vertices, you form an Edge (full circles have only one vertex). With one or more Edges, you form a Wire. With one or more closed Wires, you form a Face (the additional Wires become "holes" in the Face). With one or more Faces, you form a Shell. When a Shell is fully closed (watertight), you can form a Solid from it. And finally, you can join any number of Shapes of any types together, which is then called a Compound.

We can now try creating complex shapes from scratch, by constructing all their components one by one. For example, let's try to create a volume like this:



We will start by creating a planar shape like this:



First, let's create the four base points:

Then we can create the two linear segments:



Note that we didn't need to create Vertices. We could immediately create Part.LineSegments from FreeCAD Vectors. This is because here we haven't created Edges yet. A Part.LineSegment (as well as Part.Circle, Part.Arc, Part.Ellipse or Part.BSpline) does not create an Edge, but rather a base geometry on which an Edge will be created. Edges are always made from such a base geometry, which is stored in its Curve attribute. So if you have an Edge, doing:

will show you what kind of Edge it is, i.e. if it's based on a line, an arc, etc... But let's come back to our exercise, and build the arc segments. For this, we will need a third point, so we can use the convenient Part.Arc, which takes 3 points:



Now we have 2 lines (L1 and L2) and 2 arcs (C1 and C2). We need to turn them into edges:

Alternatively, base geometries also have a toShape function that do exactly the same thing:

Once we have a series of Edges, we can now form a Wire, by giving it a list of Edges. We do need to take care of the order.

And we can check if our Wire was correctly understood, and that it is correctly closed:

Which will print "True" or "False". In order to make a Face, we need closed Wires, so it is always a good idea to check that before creating the Face. Now we can create a Face, by giving it a single Wire (or a list of Wires if we want holes):

Then we extrude it:

Note that P is already a Solid:

This is because when we extrude a single Face, we always get a Solid. This wouldn't be the case, for example, if we had extruded the Wire instead:

Which will of course give us a hollow shell, with the top and bottom faces missing.

Now that we have our final Shape, we are anxious to see it on screen! So let's create a generic object, and assign our new Solid to it:

Como alternativa, el módulo Pieza también proporciona un acceso directo que realiza la operación anterior más rápidamente (pero no se puede elegir el nombre del objeto):

Todo lo anterior, y mucho más, se explica en detalle en la página Guionización Pieza, junto con ejemplos.

Leer más


 * El ambiente de trabajo Pieza
 * Guionización Pieza