Manual/es

From FreeCAD Documentation
Jump to navigation Jump to search

Este es el manual de FreeCAD. Incluye las partes esenciales de la Wiki de documentación de FreeCAD. Está creado principalmente para ser impreso como un gran documento, de modo que, si lo estas leyendo online, posiblemente prefieras dirigirte directamente a la versión de la Ayuda en línea, que es más sencilla de manejar.


150

Bienvenido a la ayuda en línea de FreeCAD

Este documento ha sido creado automáticamente a partir del contenido de la documentación oficial FreeCAD wiki, que puede leerse en línea en http://www.freecadweb.org/wiki/index.php?title=Main_Page/es. Dado que el wiki es mantenido activamente, y está siendo continuamente desarrollado por la comunidad de desarrolladores y usuarios de FreeCAD, es posible que la versión en línea contenga más información o más reciente que este documento. Allí también encontrarás los procesos de traducción en marcha de esta documentación en diversos idiomas. Pero en todo caso, esperamos que encuentres aquí toda la información que necesites. En caso de tener preguntas que no encuentren respuestas en el presente documento, echa un vistazo en FreeCAD foro, donde tal vez puedas encontrar respuestas a tus preguntas, o a alguien capaz de ayudarte.

Cómo usar esta ayuda

Este documento se divide en varias secciones: introducción, uso, scripting (archivos de guión o secuencias de comandos) y desarrollo. Las tres secciones indicadas se dirigen específicamente a los tres grandes tipos de usuarios de FreeCAD: usuarios finales, que simplemente quieren usar el programa, los usuarios avanzados, que se interesan por las capacidades de scripting de FreeCAD y les gustaría personalizar algunos de sus aspectos, y los desarrolladores, que consideran FreeCAD como base para desarrollar sus propias aplicaciones. Si eres totalmente nuevo en FreeCAD, te sugerimos que simplemente empieces por la introducción.

Como Contribuir

Como habrás notado en ocasiones, los programadores no son buenos escritores de manuales de ayuda! Para ellos todo está bastante claro, aunque no esté suficientemente explicado (¡porque lo han hecho ellos mismos!). Por lo tanto es vital que los usuarios experimentados nos ayuden a escribir y revisar la documentación. Sí, lo decimos francamente!. ¿Y Cómo lo hago?, te preguntarás. Sólo tienes que ir a la Wiki http://www.freecadweb.org/wiki/index.php en la sección de usuario. Para entrar necesitarás una cuenta en FreeCAD wiki, pregunta en los foros o en le canal de IRC para permisos de escritura en la wiki (la wiki está protegida contra escritura para evitar el spam) y nosotros crearemos una cuenta para ti.Actualmente la cuenta wiki esta separada de la cuenta del foro pero crearemos la cuenta wiki con el mismo nombre que la cuenta del foro. Después ya puedes empezar a editar! También comprueba la página http://www.freecadweb.org/wiki/index.php?title=Help_FreeCAD para ver cómo puedes contribuir con FreeCAD.

Arrow-left.svg Ayuda en linea Anterior:
Siguiente: Acerca de FreeCAD Arrow-right.svg

Introducción

Freecad default.jpg

FreeCAD es un modelador CAD 3D paramétrico de propósito general. El desarrollo es completamente código abierto (Licencia LGPL). FreeCAD esta orientado a Diseño mecánico y diseño de productos pero también ajusta en un amplio rango de usos alrededor de ingeniería, tal como arquitectura u otras especialidades de ingeniería.

FreeCAD presenta herramientas similares a Catia, SolidWorks ó Solid Edge, y por lo tanto tambien cae dentro de la categoría de MCAD, PLM, CAx y CAE. Es un modelado basado en características paramétricas con una arquitectura de programa modular el cual lo hace sencilla de proveer funcionalidades adicionales sin modificar el núcleo del sistema.

Como con muchos modeladores modernos CAD 3D tiene muchos componentes 2D para dibujar las formas 2D o extraer detalles diseños a partir del modelo 3D para crear dibujos 2D de producción, pero dibujos 2D directos (como AutoCAD)no es el enfoque, tampoco animación o diseños organicos (como Maya,3ds Max,Blender ó Cinema 4D), de esta manera, gracias a su amplia adaptabilidad, FreeCAD tal vez empiece a ser útil en una área mas amplia que los enfocados actualmente.

FreeCAD hace uso pesado de todas bibliotecas de código abierto existentes allá, afuera dentro del campo de Computación cientifica. varios de ellos son OpenCascade un nucleo CAD potente, Coin3D una encarnación de Open Inventor, Qt el mundilamente famoso marco de trabajo para IU y Python uno de los mejores lenguajes de guión disponibles. Freecad también puede ser utilizado como una biblioteca por otros programas.

FreeCAD es también completamente multi-plataforma, y actualmente corre sin problemas sobre sistemas Windows, Linux/Unix y Mac OSX con exacta misma vista y funcionalidad sobre todas las plataformas.

Para más información acerca de la compatibilidad de FreeCAD, hecha un vistazo a las Listas de Características y las latest release notes

Acerca del proyecto FreeCAD

El proyecto FreeCAD fue iniciado a lo mucho en el 2001, como se describio en la pagina historia

FreeCAD es mantenido y desarrollado por una comunidad de entusiastas desarrolladores y usuarios ver la pagina contribuidores. Ellos trabajan en FreeCAD voluntariamente, en su tiempo libre.Ellos no pueden garantizar que FreeCAD contiene o contendrá todo lo que tu deses, pero ellos hacen su mejor esfuerzo! la comunidad se reúne en el Foro FreeCAD, donde la mayoría de las ideas y decisiones son discutidas. siéntete libre de unirtenos allí.

Esta es una lista extensa (aunque incompleta) de las características que tiene FreeCAD. Si quieres saber que se incluirá en el futuro mira el Mapa de desarrollo. Para obtener una descripción rápida, un buen punto para empezar son las Capturas de pantalla.

Notas de la versión

Características clave

  • Feature3.jpg
    A full parametric model. All FreeCAD objects are natively parametric, meaning their shape can be based on properties or even depend on other objects. All changes are recalculated on demand, and recorded by an undo/redo stack. New object types can be added easily, and can even be fully programmed in Python.
  • Feature4.jpg
    A modular architecture that allows plugin extensions (modules) to add functionality to the core application. An extension can be as complex as a whole new application programmed in C++ or as simple as a Python script or self-recorded macro. You have complete access to almost any part of FreeCAD from the built-in Python interpreter, macros or external scripts, be it geometry creation and transformation, the 2D or 3D representation of that geometry (scenegraph) or even the FreeCAD interface
  • Feature5.jpg
    Import/export to standard formats such as STEP, IGES, OBJ, STL, DXF, SVG, STL, DAE, IFC or OFF, NASTRAN, VRML in addition to FreeCAD's native FCStd file format. The level of compatibility between FreeCAD and a given file format can vary, since it depends on the module that implements it.
  • Feature7.jpg
    A Sketcher with integrated constraint-solver, allowing you to sketch geometry-constrained 2D shapes. The constrained 2D shapes built with Sketcher may then be used as a base to build other objects throughout FreeCAD.
  • Feature9.jpg
    A Robot simulation module that allows you to study robot movements in a graphical environment.
  • Feature8.jpg
    A technical drawing module with options for detail views, cross sectional views, dimensioning and others, allowing you to generate 2D views of existing 3D models. The module then produces ready-to-export SVG or PDF files. An older Drawing module with sparse Gui-commands but a powerful Python functionality also exists.
  • Feature-raytracing.jpg
    A Rendering module that can export 3D objects for rendering with external renderers. It currently only supports povray and LuxRender, but is expected to be extended to other renderers in the future.


Características generales:

  • FreeCAD es multiplataforma. Se ejecuta y se comporta exactamente de la misma manera en Windows, Linux y macOS.
  • FreeCAD es una completa aplicación de interfaz gráfica de usuario (GUI). FreeCAD cuenta con una completa interfaz gráfica de usuario basada en el famoso entorno Qt, con un visualizador 3D basado en Open Inventor, que permite un rápido renderizado de escenas 3D y una representación gráfica de escenas muy accesible.
  • FreeCAD también se ejecuta como una aplicación de línea de comandos, con menos requerimientos de memoria. En el modo de línea de comandos, FreeCAD se ejecuta sin su interfaz gráfica GUI, pero con todas sus herramientas de geometría. Puede ser, por ejemplo, utilizado como servidor para producir contenidos para otras aplicaciones.
  • FreeCAD puede ser importado como un módulo de Python, dentro de otras aplicaciones que puedan ejecutar archivos guión de python, o en una consola python. Al igual que en modo consola, la parte de interfaz GUI de FreeCAD no está disponible, pero todas las herramientas de geometría son accesibles.
  • concepto de entorno de trabajo (Workbench) : En la interfaz de FreeCAD, las herramientas se agrupan en entornos de trabajo (Workbenches). Esto permite mostrar sólo las herramientas utilizadas para llevar a cabo una cierta tarea, manteniendo el espacio de trabajo ordenado y acondicionado, y que la aplicación se cargue rápidamente.
  • FreeCAD puede ser importado como un módulo de Python, dentro de otras aplicaciones que puedan ejecutar scripts Python, o en una consola Python. Al igual que en modo consola, la parte de interfaz GUI de FreeCAD no está disponible, pero todas las herramientas de geometría son accesibles.
  • Objetos de documento con asociación paramétrica: Todos los objetos en un documento FreeCAD puede ser definido por parámetros. Estos parámetros se pueden modificar sobre la marcha, y los objetos se vuelven a calcular en cualquier momento. La relación entre los objetos también se almacena, por lo que al modificar un objeto también se modifican sus objetos dependientes.
  • Formas paramétricas primitivas como cajas, esferas, cilindros, conos o toros.
  • Operaciones de modificación gráfica como traducción, rotación, escala, espejado, compensado (trivial o después Jung/Shin/Choi) o forma de conversión, en cualquier plano del espacio 3D
  • creación gráfica de elementos simples de geometría plana tales como líneas, curvas, rectángulos, arcos o círculos en cualquier plano del espacio 3D
  • Modelado con extrusión o revolución, secciones yredondeos.
  • Componentes topológicos como vertices, bordes, contornos yplanos (por medio de programación en python).
  • Herramientas para chequeo y reparación de mallas: Prueba de conversión en sólido, detección de elementos duplicados, comprobación de auto-interseccion, relleno de huecos y orientacion uniforme.
  • Anotaciones como textos o cotas dimensionales
  • Entorno deshacer/Rehacer: Todas las acciones admiten los procesos deshacer/rehacer. Hay acceso al historial de acciones, de modo que en un solo paso se pueden deshacer múltiples acciones.
  • Gestión de transacciones: La pila del historial deshacer/rehacer almacena transacciones de documentos y no solo acciones individuales. Lo que permite definir exactamente lo que hay que deshacerse o rehacerse con cada herramienta.
  • Incorpora un sistema de gestión de archivos de guión en Python: FreeCAD cuenta con un intérprete Python interno, y una API que cubre casi cualquier parte de la aplicación, la interfaz, la geometría y la representación de esta geometría en el visualizador 3D. El intérprete puede ejecutar tanto comandos individuales como Archivos de guión (Scripts) complejos, de hecho en Python se pueden programar módulos completos para FreeCAD.
  • Incorpora una consola de Python con resaltado de sintaxis, autocompletado y búscador (browser) de clases: Los comandos de Python pueden ser introducidos directamente en FreeCAD y los resultados aparecen de inmediato. Permitiendo que los programadores puedan probar la funcionalidad sobre la marcha, explorar el contenido de los módulos y aprender fácilmente sobre el funcionamiento interno de FreeCAD.
  • La interacción del usuario refleja "eco" en la consola: Todo lo que hace el usuario en la interfaz de FreeCAD ejecuta código Python, que se puede ver en la consola y grabarse en macros.
  • Grabación y edición completa de macros: Los comandos python emitidos cuando el usuario manipula la interfaz GUI se pueden grabar, editar si fuera necesario, y guardarlos para su reproducción posterior.
  • Guarda el documento en formato Compuesto (basado en ZIP): Los documentos guardados con FreeCAD con extensión .fcstd pueden contener muchos tipos diferentes de información, tales como la geometría, las secuencias de comandos o iconos en miniatura, por lo que un archivo FreeCAD guardado ha sido comprimido.
  • Interfaz gráfica de usuario (GUI) totalmente configurable/programable por medio de scripts. El interfaz de FreeCAD, basado en Qt es totalmente accesible a través del intérprete de Python. Aparte de las funciones simples que FreeCAD proporciona a los entornos de trabajo, todo el entorno Qt es también accesible, permitiendo cualquier operación desde la interfaz gráfica de usuario, tales como crear, agregar, acoplar, modificar o eliminar widgets y barras de herramientas.
  • Miniaturas Thumbnailer (De momento solo en sistemas Linux): Los iconos de archivos de FreeCAD muestran el contenido del fichero en la mayoría de las aplicaciones de gestión de archivos, como por ejemplo el Nautilus de GNOME.
  • Un instalador MSI modular permite instalaciones flexibles en sistemas Windows. También se soportan paquetes para sistemas Ubuntu.

En el desarrollo

  • Feature-assembly.jpg
    Un modulo Ensamble permite para trabajar con múltiples proyectos, varias formas, varios documentos, archivos múltiples, múltiples relaciones...

Mesas de Trabajo Extras

Usuarios de Poder han creado varias Mesas de Trabajo Extras customizadas.


Instalación

Instalación en Windows


El modo más sencillo de instalar FreeCAD en Windows es descargar el instalador de abajo.

Windows.png Windows 32 bit (sha256)

Windows.png Windows 64 bit (sha256)


Después de descargar el archivo .msi (Microsoft Installer), simplemente haz doble clic en él para iniciar el proceso de instalación.

Abajo hay más información sobre opciones técnicas. Si parece desalentador, no te preocupes! La mayoría de usuarios de Windows no necesitan más que el archivo .msi para instalar FreeCAD y dar sus primeros pasos started!

Instalación simple con el instalador de Microsoft

El modo más sencillo de instalar FreeCAD en Windows es utilizar el instalador de arriba. Esta página describe el uso y las características de Microsoft Installer para tener más opciones de instalación.

The easiest way to install FreeCAD on Windows is by using the downloadable installer bundle above. This page describes the usage and features of the NSIS Installer for more installation options.

Si quieres descargar una versión de 64 bits o en desarrollo, mira la página de Descargas.

Chocolatey

However, it is highly recommended that you use a package manager such as Chocolatey to keep your software updated. You can installed Chocolatey following these instructions and then open a PowerShell terminal as admin and run:

choco install freecad

every once in a while you can update your software with

choco upgrade freecad

to get the latest version available on Chocolatey repository. If there are any issues with the chocolatey package, you may contact maintainers on this page.

Instalación desde la línea de comandos

Con las utilidades del comando msiexec.exe, están disponibles características adicionales, como la instalación no interactiva y la instalación administrativa.

With the msiexec.exe command line utility, additional features such as non-interactive installation and administrative installation are available. See examples below.

Instalación no interactiva

Con la línea de comandos

With the command line

msiexec /i FreeCAD<version>.msi

la instalación se puede iniciar mediante programación. Se pueden pasar parámetros adicionales al final de esta línea de comandos, como

msiexec /i FreeCAD-2.5.msi TARGETDIR=R:\FreeCAD25

Interfaz de usuario limitada

La cantidad de interfaces de usuario que le instalador muestra puede controlarse con opciones /q, en particular:

The amount of user control permitted by the installer can be controlled with /q options:

  • /qn - Sin interfaz
  • /qb - Interfaz básica - simplemente un pequeño letrero de diálogo mostrando el progreso de la instalación
  • /qb! - Como /qb, pero ocultando el botón de cancelar
  • /qr - Interfaz reducida - Muestra todos los letreros de diálogo que no requieren interacción del usuario (evita todos los letreros de diálogo modales)
  • /qn+ - Como /qn, pero muestra el letrero de diálogo "Completed" al final
  • /qb+ - Como /qb, pero muestra el letrero de diálogo "Completed" al final

Directorio de destino

El directorio de destino correspondiente (TARGETDIR) determina el directorio raíz de la instalación de FreeCAD. Por ejemplo, se puede indicar una unidad de instalación diferente con

The property TARGETDIR determines the root directory of the FreeCAD installation. For example, a different installation drive can be specified with

TARGETDIR=R:\FreeCAD25

El directorio de destino por defecto (TARGETDIR) es [WindowsVolume\Programm Files\]FreeCAD<version>.

Instalación para todos los usuarios

La adicción de

Adding

ALLUSERS=1

realiza la instalación para todos los usuarios. Por defecto, la instalación no interactiva instala la aplicación solo para el usuario actual, y la instalación interactiva muestra un letrero de diálogo que con la opción "para todos los usuarios" si el usuario actual tiene los permisos necesarios en Windows.

Selección de características

Un número de propiedades permite la selección de características a ser instaladas, reinstaladas, o eliminadas. El conjunto de características para el instalador de FreeCAD son

A number of properties allow selection of features to be installed, reinstalled, or removed. The set of features for the FreeCAD installer is

  • DefaultFeature - Instala el software adecuado, más las librerías principales
  • Documentation - Instala la documentación
  • Source code - Instala el código fuente
  • ... ToDo

Además, ALL especifica todas las características. Todas las características dependen de DefaultFeature, así que instalando cualquier característica automáticamente también se instala la característica por defecto. Las siguientes propiedades controlan las operaciones a ser instaladas o eliminadas

  • ADDLOCAL - Lista de características a ser instaladas en la máquina local
  • REMOVE - Lista de características a ser eliminadas
  • ADDDEFAULT - Lista de características añadidas en su configuración por defecto (la cual es local para todas las características de FreeCAD)
  • REINSTALL - Lista de características a ser reinstaladas/reparadas
  • ADVERTISE - Lista de características para las cuales realizar un anuncio de instalación

Hay algunas propiedades adicionales disponibles; mira la documentación del MSDN para más detalles.

Con estas opciones, añadiendo

ADDLOCAL=Extensions

instala el interprete y registra las extensiones, pero no instala nada más.

Desinstalación

Con

With

msiexec /x FreeCAD<version>.msi

se puede desinstalar FreeCAD. No es necesario disponer del archivo MSI para la desinstalación; alternativamente, el paquete o código del producto también puede ser especificado. Puedes encontrar el código del producto buscando en las propiedades del acceso directo de desinstalación que es instalado por FreeCAD en el menú de Inicio.

Instalación Administrativa

Con

With

msiexec /a FreeCAD<version>.msi

se puede iniciar una instalación "administrativa" (de red). Los archivos se descomprimen en el directorio de destino (que debería estar en un directorio en red), pero no se realiza ninguna otra modificación al sistema local. Además, se genera otro archivo mis (más pequeño) en el directorio de destino, cuyos clientes pueden utilizar para realizar una instalación local (Las futuras versiones podrán también ofrecer mantener algunas características completamente en la unidad de red).

Actualmente, no hay una interfaz de usuario para la instalación administrativa, de modo que el directorio de destino debe pasarse en la línea de comandos.

No existe un procedimiento específico de desinstalación para una instalación administrativa - simplemente eliminar el directorio de destino si ningún cliente ya no lo utiliza más.

Anuncios

Con

With

msiexec /jm FreeCAD<version>.msi

sería posible, en principio, "anunciar" FreeCAD a una máquina (con /ju para un usuario). Esto hará que los iconos aparezcan en el menú de inicio, y que las extensiones sean registradas, sin el software realmente instalado. El primer uso de una característica hará que dicha característica sea instalada.

El instalador de FreeCAD actualmente soporta simplemente los anuncios de las entradas en el menú de inicio, pero no los de los accesos directos.

Instalación automática en un grupo de máquinas

Con las políticas de grupo de Windows, es posible automáticamente instalar FreeCAD en un grupo de máquinas. Para hacerlo, hay que realizar los siguientes pasos:

  1. Acceder al controlador de dominio
  2. Copiar el archivo MSI en un directorio que esté compartido con acceso a todas las máquinas.
  3. Abrir el complemento MMC "Directorio activo de usuarios y ordenadores"
  4. Navegar hasta el grupo de ordenadores que necesitan FreeCAD
  5. Abrir las Propiedades
  6. Abrir las políticas de grupo
  7. Añadir una nueva política, y editarla
  8. En Configuración del ordenador/Instalación de software, seleccionar Nuevo/Paquete
  9. Seleccionar el archivo MSI a través de la ruta de red
  10. Opcionalmente, seleccionar que quieres que FreeCAD sea desinstalado si los ordenadores abandonan el alcance de la política.

With Windows Group Policy, it is possible to automatically install FreeCAD on a group of machines. To do so, perform the following steps:

  1. Log on to the domain controller
  2. Copy the MSI file into a folder that is shared with access granted to all target machines.
  3. Open the MMC snapin "Active Directory users and computers"
  4. Navigate to the group of computers that need FreeCAD
  5. Open Properties
  6. Open Group Policies
  7. Add a new policy, and edit it
  8. In Computer Configuration/Software Installation, choose New/Package
  9. Select the MSI file through the network path
  10. Optionally, select that you want FreeCAD to be de-installed if the computer leaves the scope of the policy.

La propagación de las políticas de grupo tipicamente lleva algo de tiempo - para deplegar el paquete de duentes fiables, todas las máquinas deberían reiniciarse.

Instalación en Linux utilizando Crossover Office

Puedes instalar la versión de Windows de FreeCAD en un sistema Linux utilizando CXOffice 5.0.1. Ejecuta msiexec desde la línea de comandos de CXOffice, asumiendo que el paquete de instalación está ubicado en el directorio "software" el cual tiene asignado a la unidad "Y:":

msiexec /i Y:\\software\\FreeCAD<version>.msi

FreeCAD está ejecutándose, pero informará que la visualización de OpenGL no funcionará, como con otros programas ejecutándose bajo Wine Por ejemplo, SketchUp.

msiexec /i Y:\\software\\FreeCAD<version>.msi

FreeCAD is running, but it has been reported that the OpenGL display does not work, like with other programs running under Wine i.e. Google SketchUp.

Instalación en Unix/Linux

La instalación de FreeCAD en los sistemas Linux más conocidos ha sido ahora aprobada por la comunidad, y FreeCAD debería estar disponible directamente a través del gestor de paquetes disponible en tu distribución. El equipo de FreeCAD también proporciona varios paquetes "oficiales" cuando las nuevas versiones están definidas, y un par de repositorios PPA experimentales para probar las últimass características que se están desarrollando.

Una vez tengas instalado FreeCAD, es hora de dar tus primeros pasos!

Ubuntu and Ubuntu-based systems

Muchas distribuciones de Linux están basadas en Ubuntu y comparten repositorios. Aparte de las variantes oficiales (Kubuntu, Lubuntu y Xubuntu), hay versiones no oficiales como Linux Mint, Voyager y otros. Las opciones de instalación debajo deberían ser compatibles con estos sistemas.

Repositorio Oficial de Ubuntu

FreeCAD está disponible en los repositorios de Ubuntu y puede ser instalado a través del Centro de Software o con este comando en una terminal:

sudo apt install freecad

Pero es probable que esta version estable sea actualizada, y no tenga las ultimas caracteristicas. para obtener la ultima version liberada, por favor use el PPA.

Estable PPA con GUI

Para instalar FreeCAD utilizando el PPA, a partir de la interface grafica, por favor sigue esas intruciones.La comunidad de FreeCAD proove una

Tu necesitas agrega a las Fuentes de Software de tu sistema el siguiente PPA. Para hacer eso navega al centro de software de ubuntu > Editar > fuentes de código > otro programa. clickear sobre agregar y copiar y pegar el codigo de abajo:

ppa:freecad-maintainers/freecad-stable
  • Add the source, close the dialog, and reload your software sources, if asked.

Actualiza tus fuentes de aplicaciones, si pregunta. Ahora, puedes encontrar e instalar la ultima version en el Centro de Aplicaciones de Ubuntu.

PPA estable desde la consola

Escribe, o copia y pega estos comandos en una consola para agregar el PPA:

sudo add-apt-repository ppa:freecad-maintainers/freecad-stable

No olvides recuperar la lista de paquetes actualizados:

sudo apt update

Después, instala FreeCAD según la documentación:

sudo apt install freecad freecad-doc

Note: due to packaging problems, in certain versions of Ubuntu the freecad-doc package has collided with the installation of FreeCAD or one of its dependencies; if this is the case, remove the freecad-doc package, and only install the freecad package. If the freecad-doc package doesn't exist, then ignore it.

Once you have the stable PPA added to your sources, the freecad package will install this PPA version over the one provided by the Ubuntu Universe repository. You can see the available versions with apt-cache.

apt-cache policy freecad
freecad:
  Installed: (none)
  Candidate: 2:0.18.4+dfsg1~201911060029~ubuntu18.04.1
  Version table:
     2:0.18.4+dfsg1~201911060029~ubuntu18.04.1 500
        500 http://ppa.launchpad.net/freecad-maintainers/freecad-stable/ubuntu bionic/main amd64 Packages
     0.16.6712+dfsg1-1ubuntu2 500
        500 http://archive.ubuntu.com/ubuntu bionic/universe amd64 Packages
ubuntu@ubuntu:~$ apt-cache policy freecad-doc

Ejecuta este comando para abrir la versión estable de FreeCAD:

freecad

PPA Diaria con Consola

Si tu quieres instalar la ultima versión inestable de FreeCAD, por favor utilice el PPA nombrado "freecad-daily" Repositorio PPA sobre Launchpad. De esta forma puedes acceder a lo ultimo del desarrollo de FreeCAD. Este PPA es automáticamente compilado a diario a partir del repositorio de la derivación oficial principal de FreeCAD. Usualmente contiene numerosos corrección de errores y actualización de características.

This version is compiled daily from the official master repository. Please beware that although it will contain new features and bug fixes, it may also have newer bugs, and be unstable.

Para el PPA diario:

sudo add-apt-repository ppa:freecad-maintainers/freecad-daily
sudo apt-get update
sudo apt-get install freecad-daily

Every day you can update to the latest daily:

sudo apt-get update
sudo apt-get install freecad-daily

Note: in some cases new code or dependencies added to FreeCAD will cause packaging errors; if this happens, a daily package may not be generated until the maintainers manually fix the problems. If you wish to continue testing the latest code, you should get the source code and compile FreeCAD directly; for instructions see compiling.

Ejecute este comando para abrir la construcción diaria de FreeCAD:

freecad-daily

Note: it is possible to install both the -stable and -daily packages in the same system. This is useful if you wish to work with a stable version, and still be able to test the latest features in development. Notice that the executable for the daily version is freecad-daily, but for the stable version it is just freecad.

Debian y otros sistemas basados en Debian

A partir de Debian Lenny, FreeCAD está disponible directamente de los repositorios de software Debian y puede ser installado vía synaptic o simplemente con:

sudo apt-get install freecad

OpenSUSE

FreeCAD se instala normalmente con:

For installing of stable releases, please visit for a survey:

Survey of stable repositories on openSUSE


Generally for selecting the correct openSUSE distribution needed it is necessary to click on the particular view button.

The stable package version of FreeCAD could be found under:

Stable repositories on openSUSE

The correct openSUSE distribution version must be selected in the lower part of the web page.

FreeCAD is typically installed with YAST (abbr. Yet another Setup Tool) the Linux operating system setup and configuration tool, or in any terminal (root rights required) with:

zypper install FreeCAD

This procedure only covers the installation of officially released stable FreeCAD program versions, depending on the installed links to the program package repositories of your OS.

To check out the latest development releases (unstable) you have to visit:

Unstable repositories on openSUSE

It is recommended to grab the binary packages directly. Then select the correct distribution for your installed openSUSE OS.

Gentoo

FreeCAD se puede construir/instalar simplemente ejecutando:

emerge freecad

Fedora

FreeCAD has been included in the official Fedora packages since Fedora 20. It can be installed from the command line with:

sudo dnf install freecad

On older Fedora releases, that was:

sudo yum install freecad

The gui packages managers can also be used. Search for "freecad". The official release package version tends to be well behind the FreeCAD releases. Package: freecad shows the versions included in the Fedora repositories over time and versions.

More current versions can be obtained by downloading one of the .AppImage releases from the github repository. These work fine on Fedora.

If you want to keep up with the absolute latest daily builds, FreeCAD is also available on copr. To install the build from there, in a terminal session, enter:

sudo dnf copr enable @freecad/nightly
sudo dnf install freecad

That leaves the copr repository active, so

sudo dnf upgrade

or equivalent, will update to the latest FreeCAD build, along with updates from any of the other active repos. If you want something a bit more stable, you can disable @freecad/nightly again after the initial install. The copr repository only keeps builds from the past 2 weeks. This is not a solution if you want to pick a specific older version.

Instructions are also available on compile FreeCAD yourself, including a script specifically for Fedora. With a minor change, to checkout the specific commit from git, any version since about FreeCAD 0.15 can be built on any distribution since Fedora 21.

Arch

Installing FreeCAD on Arch Linux and derivatives (ex. Manjaro):

pacman -S freecad

Otros

Si averiguas que tu sistema incorpora FreeCAD pero no está incluido en esta página, por favor dínoslo en los foros!

Diversos paquetes de FreeCAD alternativos, no oficiales están disponibles en la red, por ejemplo para sistemas como Slackware o Fedora. Una búsqueda en la red puede darte rápidamente algunos resultados.

Instalación manual en sistemas basados en .deb

Si por cualquier razón no puedes utilizar los métodos de arriba, siempre puedes descargar uno de los paquetes .deb disponibles en la página de Descargas.

Linux.png Ubuntu 32/64bit AppImage-logo.png AppImage 64bit

Una vez descargues el .deb correspondiente a tu versión del sistema, si tienes el paquete Gdebi instalado (normalmente es así), simplemente necesitas navegar a donde esté to archivo descargado, y hacer doble clic en él. Las dependencias necesarias se cogerán automáticamente por tu sistema de gestión de paquetes. Alternativamente también puedes instalar desde el terminal, navegando a donde esté ubicado el archivo descargado, y escribiendo:

sudo dpkg -i Name_of_your_FreeCAD_package.deb

cambiando Name_of_your_FreeCAD_package.deb por el nombre del archivo que has descargado.

Después de instalar FreeCAD, un icono de inicio se añadirá en la sección de "Gráficos" de tu menú de inicio.

Instalación en otros sistemas Linux/Unix

Many common Linux distros now include a precompiled FreeCAD as part of the standard packages. This is often out of date, but is a place to start. Check the standard package managers for your system. One of the following (partial) list of commands could install the official version of FreeCAD for your distro from the terminal. These probably need administrator privileges.

apt-get install freecad
dnf install freecad
emerge freecad
slackpkg install freecad
yum install freecad
zypper install freecad

The package name is case sensitive, so try `FreeCAD` as well as `freecad`. If that does not work for you, either because your package manager does not have a precompiled FreeCAD version available, or because the available version is too old for your needs, you can try downloading one of the .AppImage releases from the github repository. These tend to work on most 64 bit Linux distributions, without any special installation. Just make sure the downloaded file is marked as executable, then run it.

Por desgracia, hasta el momento, no está disponible ningún paquete precompilado para otros sistemas Linux/Unix, así que necesitaras compilar FreeCAD tu mismo.

Instalación de la versión para Windows en Linux

Mira la página de la Instalación para Windows.

Instalación en Mac

FreeCAD puede instalarse en Mac OS X en un solo paso utilizando el instalador.

Stable.pngMac.png MacOS 10.11 El Capitan 64-bit (sha256)


and the nightly build can be downloaded from

Nightly.pngNightly 19_pre (sha256)

However, it is highly recommended to use a package manager such as HomeBrew to keep your software updated. Instructions to install HomeBrew can be seen here. When HomeBrew installed you can simply install FreeCAD through your bash terminal with

brew cask install freecad

and to upgrade the software to the latest version available on HomBrew Cask you may run

brew cask upgrade freecad

If there are any issues with the HomeBrew Cask formula you may report here.

Esta pagina describe el uso y las caracteristicas del instalador. Tambien incluye instrucciones para des instalación. Una vez instalado, tu puedes Comenzar!

Instalación simple

El instalador de FreeCAD se proporciona como un paquete de app (.app) incluido en un archivo de imagen de disco.

The FreeCAD installer is provided as a app package (.app) enclosed in a disk image file.

Puedes descargar la última versión del instalador desde la página de Descargas. Después de descargar el archivo, simplemente monta la imagen del disco, y luego arrastra el paquete dentro carpeta de aplicaciones o una carpeta de tu elección.

Mac installer 1.png

Eso es todo.Solo da clic sobre app para ejecutar FreeCAD. Si tu tienes este mensaje "FreeCAD can't be open as it is from unidentified developer." Abre la carpeta (Application) y da clic derecho sobre app luego da clic en abrir y acepta abrir la aplicación.

Des instalación

No existe actualmente un des instalados para FreeCAD. Para eliminar por completo FreeCAD y todos los componentes instalados, arrastra los siguientes archivos y carpetas a la papelera:

  • En /Applications:
    • FreeCAD

Eso es todo.

Descubriendo FreeCAD

Arrow-left.svg Previous: Install on Mac

Introducción

FreeCAD es una aplicación de modelado paramétrico CAD/CAE. Esta primeramente hecha para diseño mecánico, pero también sirve a muchos otros usos donde donde necesitas modelado 3D con precisión y control sobre historial de modelado.

FreeCAD está aún en etapa temprana de desarrollo,aunque te ofrece una larga(y creciente) lista de características falta mucho, especialmente comparándolo con las soluciones comerciales, y quizá no lo encuentres suficientemente desarrollado aún para usarlo en un ambiente productivo. Existe una rápida y creciente comunidad de usuarios entusiastas, puedes encontrar muchos ejemplos de proyectos de calidad desarrollados con FreeCAD.

Como todos los proyectos de código abierto, el proyecto FreeCAD no es un proyecto de una sola entrega para ti por los desarrolladores. Depende mucho sobre el crecimiento de la comunidad, ganancia de características y estabilidad (tener los errores reparados)entonces no olvides esto cuando empieces a utilizar FreeCAD, si te gusta, puedes directamente influir y ayudar al proyecto!

Instalación

En primer lugar descarga (si no lo hiciste ya) e instala FreeCAD. Mira la página de Descargas de información acerca de las versiones y actualizaciones. Hay paquetes de instalación preparados para Windows (. Msi), Ubuntu y Debian (. Deb), openSUSE (. Rpm) y Mac OSX.

As FreeCAD is open-source, if you are adventurous, but want to have a look at the brand-new features being developed right now, you can also grab the source code and compile FreeCAD yourself.

Explorando FreeCAD

FreeCAD interface.png
  1. El visor 3D, Mostrando el contenido de tu documento
  2. Vista en árbol, el cual muestra la herencia y el historial de construcción de todos los objectos en tu documento
  3. El editor de propiedades, el cual te permite ver y modificar propiedades de los objecto(s) seleccionado(s)
  4. La vista de reporte (o ventana de salida), es donde FreeCAD imprime mensajes, advertencias y errores
  5. La consola python, donde todos los comandos ejecutados por FreeCAD son impresos, y donde tu puedes ingresar código python
  6. El selector de bancos de trabajo, donde seleccionas el banco de trabajo activo

El concepto principal detras de la interface de Freecad es que esta separado en bancos de trabajos. Un banco de trabajo es una colección de herramientas adecuadas para una tarea especifica, tal como trabajar con mallas, o dibujar objetos 2D, o bocetos acotados. Puedes cambiar el banco de trabajo actual con el selector de banco de trabajo(6). Puedes personalizar la herramientas incuidas en cada banco de trabajo, agregar herramientas de otros bancos de trabajo o incluso herramientas propias, que nosotros llamamos macros.Puntos de inicio ampliamente utilizados son Banco de trabajo Diseño de parte and Banco de trabajo Parte.

Cuando comienzas con FreeCAD por primera vez, se te presenta el centro de inicio:

Startcenter0.16 screenshot.jpg

El centro de inicio te permite dirigirte rapidamente a uno de los banco de trabajo mas comunes, abre uno de los archivos recientes, u observa las ultimas noticias del mundo de FreeCAD. Puedes cambiar el banco de trabajo predeterminado dentro de preferencias.

Navegando en el espacio 3D

FreeCAD tiene tres diferentes Modos de navegación disponibles, que se pueden establecer en las preferencias del diálogo de configuración o cambiar pulsando el botón derecho en la vista 3D. Para ver más detalles sobre los modos mira la página Modos de navegación. Para el modo de navegación por defecto Navegación CAD(Puedes cambiar rapidamente el actual modo de navegación dado clic derecho en un area vaci de la vista 3D):

Selección Encuadre Zoom Rotar vista
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png
Selección Encuadre Zoom Rotar vista
Presiona el botón izquierdo sobre el objeto que quieras seleccionar. Manteniendo pulsadas la tecla CRTL se permite la selección de múltiples objetos. Pulsa el botón del medio. Utiliza la rueda del ratón para acercar o alejar la vista. Pulsa primero con el botón del medio, mantén el botón presionado y pulsa el botón izquierdo sobre cualquier parte visible de cualquier pieza de un objeto y arrástralo en la dirección deseada. Esto funciona como si se girase una bola que rotase sobre su centro. Si liberas el botón antes de parar el movimiento, el objeto continua girando, si está activado. Un doble clic con el botón del medio sobre cualquier parte de un objeto establece en ese punto el nuevo centro de rotación y acerca la vista a él.
Select Pan Zoom Rotate view
First method
Rotate view
Alternate method
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png Rotate cursor.png
Mouse LMB.svg Mouse MMB hold.svg Mouse MMB rotate.svg Mouse MMB+LMB hold.svg Mouse MMB+RMB hold.svg
Press the left mouse button over an object you want to select.

Holding down Ctrl allows the selection of multiple objects.

Hold the middle mouse button, then move the pointer. Use the mouse wheel to zoom in and out.

Clicking the middle mouse button re-centers the view on the location of the cursor.

Hold the middle mouse button, then press and hold the left mouse button, then move the pointer.

The cursor location when the middle mouse button is pressed determines the center of rotation. Rotation works like spinning a ball which rotates around its center. If the buttons are released before you stop the mouse motion, the view continues spinning, if this is enabled.

A double click with the middle mouse button sets a new center of rotation.

Hold the middle mouse button, then press and hold the right mouse button, then move the pointer.

With this method the middle mouse button may be released after the right mouse button is held pressed.

Users who use the mouse with their right hand may find this method easier than the first method.

Ctrl+Mouse RMB.svg Ctrl+Shift+Mouse RMB.svg Shift+Mouse RMB.svg
Pan mode: hold the Ctrl key, press the right mouse button once, then move the pointer. introduced in version 0.17 Zoom mode: hold the Ctrl and Shift keys, press the right mouse button once, then move the pointer. introduced in version 0.17 Rotate mode: hold the Shift key, press the right mouse button once, then move the pointer. introduced in version 0.17

Holding down Ctrl allows the selection of multiple objects. |Pan_text=Hold the middle mouse button, then move the pointer. |Pan_mode_text=Pan mode: hold the Ctrl key, press the right mouse button once, then move the pointer. introduced in version 0.17 |Zoom_text=Use the mouse wheel to zoom in and out.

Clicking the middle mouse button re-centers the view on the location of the cursor. |Zoom_mode_text=Zoom mode: hold the Ctrl and Shift keys, press the right mouse button once, then move the pointer. introduced in version 0.17 |Rotate_view_text=Hold the middle mouse button, then press and hold the left mouse button, then move the pointer.

The cursor location when the middle mouse button is pressed determines the center of rotation. Rotation works like spinning a ball which rotates around its center. If the buttons are released before you stop the mouse motion, the view continues spinning, if this is enabled.

A double click with the middle mouse button sets a new center of rotation. |Rotate_view_mode_text=Rotate mode: hold the Shift key, press the right mouse button once, then move the pointer. introduced in version 0.17 |Rotate_view_alt_text=Hold the middle mouse button, then press and hold the right mouse button, then move the pointer.

With this method the middle mouse button may be released after the right mouse button is held pressed.

Users who use the mouse with their right hand may find this method easier than the first method. }}

También tiene varias vistas preconfiguradas (vista superior, vista frontal, etc.) disponibles en el menú Ver y en la barra de herramientas Ver y, por atajos numéricos (1, 2, etc...), y dado clic derecho sobre un objeto o sobre un area vacia de la vista 3D, tienes acceso directo a algunas operaciones comunes, tal como configurar una vista particular, o ubicar un objeto en la vista de arbol.

Primeros paso con FreeCAD

El enfoque de FreeCAD es permitirte hacer modelos 3D de alta presición, para mantener un control ajustado sobre estos modelos(ser capaz de retroceder dentro del historial de modelado y cambiar parametros), y eventualmente construir estos modelos (impresion 3D, mecanizado CNC o incluso sitio de construción).Es por lo tanto muy diferente de algunas otras aplicaciones 3D hechas para otros propositos, tal como animacion o juegos. Su curva de aprendizaje puede ser doloroza, especialmente si este es tu primer contacto con modelado 3D. Si esta atorado en algun punto, no olvides que la amigable comunidad de usuarios en el Foro de FreeCAD podrian sacarte en poco tiempo.

El banco de trabajo que empezaras a utilizar depende sobre el tipo de trabajo que necesitas hacer: Si tu vas a trabajar sobre modelos mecanicos, o más generalmente hablando cualquier objecto de pequeña escala, tu podrias probablemente querer probar el banco de trabajo diseño de parte. Si vas a trabajar en 2D, entonces cambia a el banco de trabajo Dibujo o el banco de trabajo Boceto si necesitas acotaciones. si tu quieres hacer BIM, ejecuta el banco de trabajo Arquitectura. Si estas trabajando con diseño de barcos, allí esta un banco de trabajo Navío para tí. Y si tu vienes del mundo de OpenSCAD prueba el banco de trabajo OpenSCAD.

Tú puedes cambiar de bancos de trabajo en el momento que quieras, y también customize tu bancos de trabajo favoritos agregando herramientas de otros bancos de trabajos.

Trabajando con el banco de trabajo Diseño de parte y banco de trabajo Boceto

El banco de trabajo diseño de parte esta especialmente hecho para hacer objetos complejos, iniciando a partir de simples formas, y agregando o removiendo piezas (que nosotros llamamos "características"),hasta que obtienes tu objeto final.Todas las características que tu apliques durante el proceso modelado seran almacenadas en una vista separada llamada vista de árbol, el cual contiene los otros objetos de tu documento.Puedes pensar que los objetos de diseño de parte son como una sucesión de operaciones, cada una aplicada al resultado del que lo precede, formando una gran cadena. Dentro de la vista de árbol, puedes ver el objeto final, pero puedes expandirla y contraer todos los estados que lo preceden, y cambiar cualquiera de sus parámetros, el cual automáticamente actualiza el objeto final.

El banco de trabajo diseño de parte es fuertemente utilizado por otros bancos de trabajo, el banco de trabajo Boceto. El Boceto te permite dibujar formas 2D, las cuales son definidas aplicando cotas a las formas 2D.Por ejemplo, tal vez quieras dibujar un rectángulo y colocar el tamaño de lado a lado de una cota de longitud a una esquina de los lados. Ese lado entonces no puede ser cambiar el tamaño mas(al menos que la cota sea cambiada).

Esas formas 2D hechas con Boceto son utilizadas mucho en el banco de trabajo diseño de parte, por ejemplo para crear volúmenes 3D, o para dibujar áreas sobre una de las caras de tu objeto que luego sera ahuecado a partir del del volumen principal. Este es un flujo de trabajo típico de diseño de parte:

  1. Crear un boceto nuevo
  2. Crea un dibujo con forma cerrada(asegurarse que todos los puntos están cerrados)
  3. Cerrar el boceto
  4. Expandir el boceto a un solido 3D utilizando la herramienta de rellenado.
  5. Selecciona una cara del solido
  6. Crea un segundo boceto (Esta vez sera dibujado sobre la cara seleccionada)
  7. Dibuja una forma cerrada
  8. Cierra el boceto
  9. Crea un vaciado a partir del segundo boceto, sobre el primer objeto

El cual te da un objeto como este:

Partdesign example.jpg

En cualquier momento, puedes seleccionar el origen del croquis y modificarlo, o cambiar los parametros de extrusión de la plataforma u operaciones de baciado, las cuales actualizarán el objeto final.

Trabajando con el banco de trabajo Borrador y el banco de trabajo Arquitectura

El banco de trabajo Borrador y banco de trabajo Arquitectura se comportan un poco diferente que los otros bancos de trabajo de arriba, a pesar que ellos siguen las mismas reglas, las cuales son comunes de todo FreeCAD. En breve, mientras el Boceto y diseño de parte están hechas primeramente para diseñar piezas sencillas, borrador y arquitectura son hechos para facilitar tu trabajo cuando están trabajando con varios, objetos sencillos.

El banco de trabajo Borrador le ofrece herramientas 2D un poco similares a las que puede encontrar en aplicaciones CAD 2D tradicionales como AutoCAD. Sin embargo, el dibujo en 2D está muy lejos del alcance de FreeCAD, no espere encontrar allí la gama completa de herramientas que ofrecen estas aplicaciones dedicadas. La mayoría de las herramientas de Draft funcionan no solo en un plano 2D sino también en el espacio 3D completo, y se benefician de los sistemas auxiliares especiales tales como Planos de trabajo y ajuste de objeto.

El Arch Workbench agrega herramientas BIM a FreeCAD, lo que le permite construir modelos arquitectónicos con objetos paramétricos. El Ambiente de trabajo Arch se basa mucho en otros módulos, como Draft y Sketcher. Todas las herramientas de borrador están también presentes en el banco de trabajo de Arch, y la mayoría de las herramientas de Arch hacen uso de los sistemas de ayuda de Draft.

Un flujo de trabajo típico con los ambientes de trabajo Arch y Draft podría ser:

  1. Dibuja un par de líneas con la herramienta línea de Draft
  2. Selecciona cada línea y presione la herramienta Muro para construir un muro en cada una de ellas
  3. Une las paredes seleccionándolas y presionando la herramienta Arch Add
  4. Crea un objeto de piso y mueve tus muros dentro desde la vista de árbol
  5. Crea un objeto de construcción y mueve tu piso dentro desde la vista de árbol
  6. Crea una ventana haciendo clic en la herramienta Ventana, selecciona un ajuste preestablecido en su panel y luego haz clic en una cara de un muro
  7. Añade dimensiones configurando primero el plano de trabajo si es necesario, luego usando la herramienta Draft Dimension

El cual te dará esto:

Arch workflow example.jpg

Más en la página tutoriales

Programación de archivos de guión

Freecad, as an open source software, offers the possibility to supplement its workbenches with addons.

The Addon principle is based on the development of a workbench complement. Any user can develop a function that he or she deems to be missing for her/his own needs or, ultimately, for the community. With the forum, the user can request an opinion, help on the forum. It can share, or not, the object of its development according to copyright rules to define. Free to her/him. To develop, the user has available scripting functions.

There are two types of addons:

  1. Macros: short snippets of Python code that provide a new tool or functionality. Macros usually start as a way to simplify or automate the task of drawing or editing a particular object. If many of these macros are collected inside a directory, the entire directory may be distributed as a new workbench.
  2. External workbenches: collections of tools programmed in Python or C++ that extend FreeCAD in an important way. If a workbench is sufficiently developed and is well documented, it may be included as one of the base workbenches in FreeCAD. Under External workbenches, you'll find the principle and a list of existing library.

Scripting

Y finalmente, una de las características más poderosas de FreeCAD es el entorno de Programación de archivos de guión. Desde la consola integrada de Python (o desde cualquier otro archivo de guión de Python), puedes acceder a casi cualquier parte de FreeCAD, crear o modificar geometría, modificar la representación de esos objetos en la escena 3D o acceder y modificar la interfaz de FreeCAD. Los archivos de guión de Python también pueden utilizarse en Macros, las cuales proporcionan un método sencillo de crear comandos personalizados.

Novedades

Trabajando con FreeCAD

Navegación 3D

Contents

The FreeCAD mouse model consists of the commands used to visually navigate the 3D space and interact with the objects displayed. There are currently 3 different mouse navigation schemes in FreeCAD. The default navigation style is referred to as "CAD Navigation," and is very simple and practical, but FreeCAD also has two alternative navigation styles modeled after Inventor and Blender navigation.

Navigation

La manipulación de objetos es común a todos los entornos de trabajo. Las siguientes acciones del ratón se pueden utilizar para controlar la posición y visualización de los objetos de acuerdo con el estilo de navegación que esté seleccionado.

Hay dos formas de cambiar el estilo de navegación:

  • En el Editor de Preferencias, sección Display, pestaña Vista 3D;
  • Pulsando con el botón derecho en un área vacía de la vista 3D y seleccionando Estilo de navegación en el menú contextual.

Navegación CAD (por defecto)

Este es el estilo de navegación por defecto y permite al usuario un control simple de la vista, y no requiere el uso del teclado con la excepción de la realización de selecciones múltiples.

Selección Encuadre Zoom Rotar vista
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png
Selección Encuadre Zoom Rotar vista
Presiona el botón izquierdo sobre el objeto que quieras seleccionar. Manteniendo pulsadas la tecla CRTL se permite la selección de múltiples objetos. Pulsa el botón del medio. Utiliza la rueda del ratón para acercar o alejar la vista. Pulsa primero con el botón del medio, mantén el botón presionado y pulsa el botón izquierdo sobre cualquier parte visible de cualquier pieza de un objeto y arrástralo en la dirección deseada. Esto funciona como si se girase una bola que rotase sobre su centro. Si liberas el botón antes de parar el movimiento, el objeto continua girando, si está activado. Un doble clic con el botón del medio sobre cualquier parte de un objeto establece en ese punto el nuevo centro de rotación y acerca la vista a él.


Select Pan Zoom Rotate view
First method
Rotate view
Alternate method
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png Rotate cursor.png
Mouse LMB.svg Mouse MMB hold.svg Mouse MMB rotate.svg Mouse MMB+LMB hold.svg Mouse MMB+RMB hold.svg
Press the left mouse button over an object you want to select.

Holding down Ctrl allows the selection of multiple objects.

Hold the middle mouse button, then move the pointer. Use the mouse wheel to zoom in and out.

Clicking the middle mouse button re-centers the view on the location of the cursor.

Hold the middle mouse button, then press and hold the left mouse button, then move the pointer.

The cursor location when the middle mouse button is pressed determines the center of rotation. Rotation works like spinning a ball which rotates around its center. If the buttons are released before you stop the mouse motion, the view continues spinning, if this is enabled.

A double click with the middle mouse button sets a new center of rotation.

Hold the middle mouse button, then press and hold the right mouse button, then move the pointer.

With this method the middle mouse button may be released after the right mouse button is held pressed.

Users who use the mouse with their right hand may find this method easier than the first method.

Ctrl+Mouse RMB.svg Ctrl+Shift+Mouse RMB.svg Shift+Mouse RMB.svg
Pan mode: hold the Ctrl key, press the right mouse button once, then move the pointer. introduced in version 0.17 Zoom mode: hold the Ctrl and Shift keys, press the right mouse button once, then move the pointer. introduced in version 0.17 Rotate mode: hold the Shift key, press the right mouse button once, then move the pointer. introduced in version 0.17
Select Pan Zoom Rotate view
First method
Rotate view
Alternate method
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png Rotate cursor.png
Mouse LMB.svg Mouse MMB hold.svg Mouse MMB rotate.svg Mouse MMB+LMB hold.svg Mouse MMB+RMB hold.svg
Press the left mouse button over an object you want to select.

Holding down Ctrl allows the selection of multiple objects.

Hold the middle mouse button, then move the pointer. Use the mouse wheel to zoom in and out.

Clicking the middle mouse button re-centers the view on the location of the cursor.

Hold the middle mouse button, then press and hold the left mouse button, then move the pointer.

The cursor location when the middle mouse button is pressed determines the center of rotation. Rotation works like spinning a ball which rotates around its center. If the buttons are released before you stop the mouse motion, the view continues spinning, if this is enabled.

A double click with the middle mouse button sets a new center of rotation.

Hold the middle mouse button, then press and hold the right mouse button, then move the pointer.

With this method the middle mouse button may be released after the right mouse button is held pressed.

Users who use the mouse with their right hand may find this method easier than the first method.

Ctrl+Mouse RMB.svg Ctrl+Shift+Mouse RMB.svg Shift+Mouse RMB.svg
Pan mode: hold the Ctrl key, press the right mouse button once, then move the pointer. introduced in version 0.17 Zoom mode: hold the Ctrl and Shift keys, press the right mouse button once, then move the pointer. introduced in version 0.17 Rotate mode: hold the Shift key, press the right mouse button once, then move the pointer. introduced in version 0.17


Navegación de Inventor

En la Navegación de Inventor, modelada a partir de Open Inventor (no se confunda con Autodek Inventor), no se puede seleccionar sólo con el ratón. Para seleccionar objetos, debes mantener presionada la tecla CTRL.

Selección Encuadre Zoom Rotar vista
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png
ctrl +para seleccionar para encuadrar para hacer Zoom in o Zoom out o para hacer Zoom in o Zoom out para Rotar la vista
Manten pulsado CTRL y presiona el botón izquierdo del ratón sobre un objeto que quieras seleccionar. Pulsa el botón izquierdo del ratón y mover cerca del objeto. Utiliza la rueda del ratón para hacer zoom in y zoom out, o pulsa y manten presionado el botón central y pulsa el botón izquierdo del ratón. Pulsa y arrastra con el botón izquierdo para rotar la vista


Select Pan Zoom Rotate view
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png
Ctrl+Mouse LMB.svg Mouse MMB hold.svg Mouse MMB rotate.svg Mouse MMB+LMB hold.svg Mouse LMB hold.svg
Hold Ctrl, then press the left mouse button over an object you want to select. Hold the middle mouse button, then move the pointer. Use the mouse wheel to zoom in and out.

Alternatively, hold the middle mouse button, then press and hold the left mouse button, then move the pointer.

Hold the left mouse button, then move the pointer.

This mode is not based on Autodesk Inventor.

Select Pan Zoom Rotate view
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png
Ctrl+Mouse LMB.svg Mouse MMB hold.svg Mouse MMB rotate.svg Mouse MMB+LMB hold.svg Mouse LMB hold.svg
Hold Ctrl, then press the left mouse button over an object you want to select. Hold the middle mouse button, then move the pointer. Use the mouse wheel to zoom in and out.

Alternatively, hold the middle mouse button, then press and hold the left mouse button, then move the pointer.

Hold the left mouse button, then move the pointer.


Navegación de Blender

En la Navegación de Blender, no se puede hacer un encuadre sólo con el ratón. Para hacer un encuadre, debes mantener presionada la tecla SHIFT.

Selección Encuadre Zoom Rotar vista
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png
Selección shift+Encuadre o Mouse LMB+RMB.svg Zoom Rotar vista
Presiona el botón izquierdo del ratón sobre el objeto que quieras seleccionar. Mantén presionada la tecla de mayúsculas (shift) y pulsa el botón del medio del ratón, o mantenga presionados los botones Izquierda y Derecha y mueva. Utiliza la rueda del ratón para alejar o acercar la vista. Pulsa y arrastra con el botón del medio del ratón.


Select Pan Zoom Rotate view
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png
Mouse LMB.svg Shift+Mouse MMB hold.svg Mouse LMB+RMB hold.svg Mouse MMB rotate.svg Mouse MMB hold.svg
Press the left mouse button over an object you want to select. Hold Shift and the middle mouse button, then move the pointer.

Alternatively, hold both left and right mouse buttons, and then move the pointer.

Use the mouse wheel to zoom in and out. Hold the middle mouse button, then move the pointer.

Alternatively, hold both left and right mouse buttons, and then move the pointer. |Zoom_text=Use the mouse wheel to zoom in and out. |Rotate_view_text=Hold the middle mouse button, then move the pointer. }}

Navegación Touchpad

En la Navegación Touchpad, ni el barrido, ni el acercamiento, ni la rotación de vista son operaciones exclusivas del ratón (o del touchpad).

Select Pan Zoom Rotate View
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png
to Select shift+to Pan PgUp / PgDn alt+to Rotate
Press the left mouse button over an object you want to select. Hold shift and move the object around. Use PgUp and PgDn to zoom in and out. Hold alt and move the pointer.
or or
shift+ctrl+to Zoom shift+ctrl+to ROtate
Hold down both the shift and the ctrl keys, press the left mouse button, and move the pointer. Hold down both the shift and the ctrl keys and move the pointer.


Select Pan Zoom Rotate view
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png
Touchpad LB.svg Shift+Touchpad.svg PageUp, PageDown Alt+Touchpad.svg
Press the left mouse button over an object you want to select. Hold Shift, then move the pointer. Use PageUp and PageDown to zoom in and out. Hold Alt, then move the pointer.
Shift+Ctrl+Touchpad.svg Shift+Touchpad LB hold.svg
Alternatively, hold Shift and Ctrl, then move the pointer. Alternatively, hold Shift and the left button, then move the pointer.

Gesture Navigation (v0.16)

This navigation style was tailored for usability with touchscreen and pen, but is very usable with mouse too.

Select Pan Zoom Rotate view Tilt view
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png Rotate cursor.png
Mouse LMB.svg Mouse RMB hold.svg Mouse MMB rotate.svg Mouse LMB hold.svg Mouse LMB+RMB hold.svg
Press the left mouse button over an object you want to select. Hold the right mouse button, then move the pointer. Use the mouse wheel to zoom in and out. Hold the left mouse button, then move the pointer.

In Sketcher and other edit modes, this behavior is disabled. Hold Alt when pressing the mouse button to enter rotation mode.

To set the camera's focus point for rotation, click a point with the middle mouse button. Alternatively, aim the cursor at a point and press H on the keyboard.

Hold both left and right mouse buttons, and then move the pointer sideways.
Touch Tap.svg Touch Two-Finger-Drag.svg Touch Tap-Hold-Drag.svg Touch Pinch.svg Touch One-Finger-Drag.svg Touch Rotate.svg
Tap to select. Drag with two fingers.

Alternatively, tap and hold, then drag. This simulates the pan with the right mouse button.

Drag two fingers (pinch) closer or farther apart. Drag with one finger to rotate.

Hold Alt when in the Sketcher.

Rotate the imaginary line formed by two touch points.

On v0.18 this method is disabled by default. To enable, go to Edit → Preferences → Display, and untick "Disable touchscreen tilt gesture" checkbox.

Alternatively, tap and hold, then drag. This simulates the pan with the right mouse button. |Zoom_text=Use the mouse wheel to zoom in and out. |Zoom_gesture_text=Drag two fingers (pinch) closer or farther apart. |Rotate_view_text=Hold the left mouse button, then move the pointer. In Sketcher and other edit modes, this behavior is disabled. Hold Alt when pressing the mouse button to enter rotation mode.

To set the camera's focus point for rotation, click a point with the middle mouse button. Alternatively, aim the cursor at a point and press H on the keyboard. |Rotate_view_gesture_text=Drag with one finger to rotate.

Hold Alt when in the Sketcher. |Tilt_view_text=Hold both left and right mouse buttons, then move the pointer sideways. |Tilt_view_gesture_text=Rotate the imaginary line formed by two touch points.

On v0.18 this method is disabled by default. To enable, go to Edit → Preferences → Display, and untick "Disable touchscreen tilt gesture" checkbox. }}

Maya-Gesture Navigation

In Maya-Gesture Navigation, all view movements are activated pressing ALT and a mouse button, so that it will be needed to have a 3 button mouse in order to correctly use this navigation mode. Alternately it's possible to use gestures as this mode was been developed over the normal Gesture Navigation mode.

Select Pan Zoom Rotate view
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png
Mouse LMB.svg Alt+Mouse MMB hold.svg Alt+Mouse RMB hold.svg Mouse MMB rotate.svg Alt+Mouse LMB hold.svg
Press the left mouse button over an object you want to select. Hold Alt and the middle mouse button, then move the pointer. Hold Alt and the right mouse button, then move the pointer.

Alternatively, use the mouse wheel to zoom in and out.

Hold Alt and the left mouse button, then move the pointer.

Alternatively, use the mouse wheel to zoom in and out. |Rotate_view_text=Hold Alt and the left mouse button, then move the pointer. }}


Revit Navigation

This style was introduced in version 0.18.

Select Pan Zoom Rotate view
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png
Mouse LMB.svg Mouse MMB hold.svg Mouse LMB+RMB hold.svg Mouse MMB rotate.svg Shift+Mouse MMB hold.svg Mouse MMB+RMB hold.svg


Press the left mouse button over an object you want to select. Hold the middle mouse button, then move the pointer.

Alternatively, hold both left and right mouse buttons, then move the pointer.

Use the mouse wheel to zoom in and out. Hold Shift and the middle mouse button, then move the pointer.

Alternatively, hold the middle mouse button, then press and hold the right mouse button, then move the pointer.


OpenCascade

This style was introduced in version 0.18.

Select Pan Zoom Rotate view
Hand cursor.png Pan cursor.png Zoom cursor.png Rotate cursor.png
Mouse LMB.svg Ctrl+Mouse MMB hold.svg Mouse MMB hold.svg Mouse MMB rotate.svg Ctrl+Mouse LMB hold.svg Ctrl+Mouse RMB hold.svg


Press the left mouse button over an object you want to select. Hold the middle mouse button, then move the pointer. Use the mouse wheel to zoom in and out.

Alternatively, hold Ctrl and the left mouse button, then move the pointer.

Hold Ctrl and the right mouse button, then move the pointer.


Seleccionando objetos

Los objetos pueden seleccionarse mediante un clic con el botón izquierdo del ratón o bien pulsando sobre el objeto en la vista 3D o seleccionándolo en la vista en árbol.

También hay un mecanismo de preselección que resalta los tobjetos y muestra información de ellos antes de seleccionarlos con sólo pasar el ratón sobre ellos. Si no te gusta ese comportamiento o si tienes una máquina lenta, puedes desactivar la opción de preselección en el menú de preferencias.

Manipulación de Objetos

FreeCAD ofrece manipuladores que se pueden utilizar para modificar un objeto o su aspecto visual.

Soporte de Hardware

FreeCAD también soporta algún Dispositivo de entrada 3D.

Problemas en Mac OS X

Recientemente hemos recibido reportes en el foro de usuarios Mac que esas combinaciones de ratón y tecla no funcionan como se espera. Desafortunadamente, ninguno de los desarrolladores posee una Mac, tampoco otros contribuidores regulares. Necesitamos de tu ayuda para determinar que combinaciones de ratón y tecla funcionan para poder actualizar este wiki.

El documento de FreeCAD

Screenshot treeview.jpg

Un documento FreeCAD contiene todos los objetos de la escena. Puede contener grupos y objetos hechos con cualquier entorno de trabajo. Por lo tanto, puedes cambiar entre los entornos de trabajo, y seguir trabajando en el mismo documento. El documento es lo que se guarda en el disco al guardar tu trabajo. También puedes abrir varios documentos al mismo tiempo en FreeCAD, y abrir varias vistas del mismo documento.

En el documento, los objetos se pueden mover e incorporar a grupos, y cada objeto tiene un nombre único, exclusivo. La gestión de grupos, objetos y nombres de objeto se hace principalmente en la vista de árbol. También se puede hacer, por supuesto, como todo en FreeCAD, desde el intérprete de Python. En la vista de árbol, se pueden crear grupos, mover objetos a grupos, eliminar objetos o grupos,... haciendo clic con el botón derecho del ratón en la vista en árbol o en un objeto, cambiar el nombre de los objetos haciendo doble clic sobre sus nombres,... o posiblemente otras operaciones, en función del entorno de trabajo en curso.

Los objetos dentro de un documento FreeCAD pueden ser de diferentes tipos. Cada entorno de trabajo puede crear sus propios tipos de objetos, por ejemplo, el Entorno de trabajo de mallas crea objetos de malla, el Entorno de trabajo de piezas crear objetos de piezas, el Entorno de croquizado 2D también crea objetos Pieza, etc

Si hay uno o más documentos abiertos en FreeCAD, siempre alguno de ellos, y sólo uno, será el documento activo. Ese es el documento que aparece en la vista 3D actual, el documento con el que se está trabajando actualmente.

Aplicación e interfaz de usuario

Como casi todo lo demás en FreeCAD, la interfaz de usuario (GUI) del entorno de trabajo de piezas está separada de la aplicación base de piezas. Esto también es válido para los documentos. Los documentos también están hechos de dos partes: el documento de la aplicación, que contiene nuestros objetos, y el documento Vista, que contiene la representación en pantalla de nuestros objetos.

Piensa en ello como dos espacios, donde los objetos están definidos. Sus parámetros constructivos (¿es un cubo? ¿Un cono? ¿Qué tamaño? ...) se almacenan en el documento de aplicación, mientras que su representación gráfica (¿es dibujado con línea negra? ¿Con las caras azules? ...) se almacena en el documento Vista. ¿Por qué? Porque FreeCAD también puede ser utilizado sin interfaz gráfica, por ejemplo dentro de otros programas y, aún así, tenemos que ser capaces de manipular nuestros objetos, incluso si no se dibujan en la pantalla.

Otra cosa que está contenida en el documento Vista son las vistas 3D. Un documento puede tener varias vistas abiertas, así que puedes inspeccionar tu documento desde varios puntos de vista al mismo tiempo. Tal vez te gustaría ver una vista superior y una vista frontal de tu trabajo, al mismo tiempo. De ese modo, tendrías dos puntos de vista del mismo documento, ambos almacenados en el documento Vista. Crear puntos de vista nuevos o cerrar vistas se puede hacer desde el menú Vista o haciendo clic derecho en la pestaña de una vista.

Archivos de guión

Los documentos se pueden crear fácilmente, acceder y modificar desde el intérprete de Python. Por ejemplo:

FreeCAD.ActiveDocument

devolverá el documento activo actual

FreeCAD.ActiveDocument.Blob

accedería a un objeto llamado "Blob" dentro de tu documento

FreeCADGui.ActiveDocument

devolvería el documento vista asociado al documento actual

FreeCADGui.ActiveDocument.Blob

accedería a la parte representación gráfica (vista) de nuestro objeto Blob

FreeCADGui.ActiveDocument.ActiveView

devolverá la vista actual

Definiendo las preferencias de usuario

Introduction

Las preferencias del sistema de FreeCAD se encuentra en el menú Editar → Preferencias.

La funcionalidad de FreeCAD está dividida en diferentes módulos, cada módulo se hace cargo del funcionamiento de un determinado Entorno de trabajo. FreeCAD también utiliza un concepto llamado carga tardía, lo que significa que los componentes se cargan sólo cuando se necesitan. Habrás notado que, cuando se selecciona un entorno de trabajo en la barra de herramientas de FreeCAD, tanto el entorno como todos sus componentes se cargan en ese momento. Esto incluye la configuración de tus preferencias.

Sin ningún módulo cargado, tendrás acceso a dos secciones de configuración, las correspondientes a la configuración general de la aplicación y a la configuración de la visualización en pantalla.

Clicking the Reset button in the lower left corner of any preferences display will set all of the FreeCAD preferences to their default values.

La configuración de las preferencias generales

Cuando se inicia FreeCAD sin un entorno de trabajo cargado, la ventana de preferencias mostrará un contenido mínimo. A medida que se cargan módulos adicionales, en la ventana de preferencias aparecerán nuevas secciones, lo que permite configurar los detalles de cada entorno de trabajo.

General

In the General tab you can specify the following:

Name Description
Change language Select the language of FreeCAD's user interface
Size of recent file list Specification how many files should be listed in the recent files list
Enable tiled background If checked, the background of FreeCAD's main window will by default consist of tiles of this image: Background.png

This option only has an effect if in Style sheet/No style sheet is selected.

The image can be changed by adding the folders Gui/Images in the folder

%APPDATA%/FreeCAD (on Windows),

$HOME/.FreeCAD (on Linux) or

$HOME/Library/Preferences/FreeCAD (on MacOS).

Put there a file named background.png and uncheck/check this option to see the changed file.

Style sheet Selection of a style sheet. The style sheets define how the user interface of FreeCAD looks.
Size of toolbar icons Selection of the size for the toolbar icons
Tree view mode Customization how the tree view is shown in the panel (restart required). The options are:
  • Combo View: combine tree view and property view into one panel.
  • TreeView and PropertyView: split tree view and property view into separate panel.
  • Both: keep all three panels, and you can have two sets of tree view and property view.
Auto load module after start up Selection what workbench will be used directly after starting FreeCAD
Enable splash screen at start up If checked, the splash screen of FreeCAD is shown when starting.

The splash screen image can be changed by adding the folders Gui/Images in the folder %APPDATA%/FreeCAD (where %APPDATA% is the the user-specific application folder of FreeCAD of your operating system). Put there a file named splash_image.png and restart FreeCAD to see the changed splash screen.

Enable word wrap Words will be wrapped when they exceed the available horizontal space in the Python console. This console is shown using the menu View → Panels → Python console.
Preference General Tab 01.png

Documento

In the Document tab you can specify the following:

Name Description
Create new document at start up If checked, FreeCAD will create a new document when started
Document save compression level Specification of the compression level for FCStd files. FCStd files are ZIP-compressed files. Therefore you can rename their suffix .FCStd to .zip and open them with a ZIP archive program.
Using Undo/Redo on documents If checked, all changes in documents are stored so that they can be undone/redone
Maximum Undo/Redo steps Specification how many Undo/Redo steps should be recorded
Allow aborting recomputation Allow to aborting the document recomputation by pressing Esc. This may slightly increase the recomputation time.
Run AutoRecovery at startup If there is a recovery file available FreeCAD will automatically run a file recovery when it is started. This way files can be restored if a crash occurred.
Save AutoRecovery information every Specification how often a recovery file is written.
Save thumbnail into project file when saving document If checked, also a thumbnail will be stored when the document is saved. The thumbnail will for example be shown in the list of recent files in the Start workbench. It is possible to select a Size between 128×128 and 512×512 pixels for the thumbnail. Common sizes are the powers of two: 128, 256, 512.
Add the program logo to the generated thumbnail If checked, the FreeCAD program logo FreeCAD-logo.svg will be added to the thumbnail. This option only has an effect if Save thumbnail into project file when saving document is used.
Maximum number of backup files to keep when resaving document If checked, backup files will be kept when saving the document. You can specify how many backup files will be kept. They contain the previously saved document version. The first backup file will have the file suffix .FCStd1, the second .FCStd2 and so on.
Use date and FCBak extension If checked, backup files will get the extension .FCbak and their file names get a date suffix according to the specified date format. For a description of the date format see this site.

With the default settings the backup file will get for example this name TD-Cube.20200315-215654.FCBak (original filename is TD-Cube.FCStd).

Allow duplicate object labels in one document If checked, objects can have the same label/name. For example different parts or features can then have the same name in the same document.
Disable partial loading of external linked objects Enable partial loading of external linked document. When enabled, only the referenced objects and their dependencies will be loaded when a linked document is auto opened together with the main document. A partially loaded document cannot be edited. Double click the document icon in the tree view to reload it in full. A more detailed explanation of the feature can be found on the Assembly3 documentation page
Author name All documents that will be created will get the specified author name. Keep the author field blank for an anonymous author. If the option Set on save is checked, the field Last modified by will be set to the specified author when saving the file. This field can be viewed using the menu File → Project information.
Company All documents that will be created will get the specified company name
Default license Selection of a default license for new documents. For predefined license the License URL will automatically be set accordingly. Select 'Other' for an own or special license.
License URL Specification of an URL describing the license selected in Default license
Preference General Tab 02.png

Editor

The editor preferences settings affect the behavior of the macro editor. This editor can be opened using the menu Macro → Macros... → Edit/Create.

The color and font settings also affect the Python console. This console is shown using the menu View → Panels → Python console.

In the Editor tab you can specify the following:

Name Description
Display Items Selection of the code type. The color and font settings will be applied to the selected type. The result can be seen in the Preview field.
Family Specification of the font family that should be used for the selected code type
Size Specification of the font size that should be used for the selected code type
Color Specification of the color that should be used for the selected code type
Enable line numbers If checked, the code lines will be numbered
Tab size Specification of the tabulator raster (how many spaces). If it is for example set to '6', pressing Tab will jump to character 7 or 13 or 19 etc., depending the current cursor position. This setting is only used if Keep tabs is selected.
Indent size Specification of how many spaces will be inserted when pressing Tab. This setting is only used if Insert spaces is selected.
Keep tabs If selected, pressing Tab will insert a tabulator with the raster defined by Tab size
Insert spaces If selected, pressing Tab will insert the amount of spaces defined by Indent size
Preference General Tab 03.png

Ventana de salida

The output preferences affect the behavior of the Report view.

In the Output tab you can specify the following:

Name Description
Record log messages If checked, also log messages will be recorded. They will be output in the Report view panel with the color set in Log messages. This panel is shown using the menu View → Panels → Report view.
Record warnings If checked, warnings will be recorded. They will be output in the Report view panel with the color set in Warnings.
Record error messages If checked, error messages will be recorded. They will be output in the Report view panel with the color set in Errors
Show report view on error or warning If checked, the report view panel will show up automatically when an error or warning is logged.
Normal messages Specification of the font color for normal messages in the Report view panel.
Log messages Specification of the font color for log messages in the Report view panel.
Warnings Specification of the font color for warning messages in the Report view panel.
Errors Specification of the font color for error messages in the Report view panel.
Redirect internal Python output to report view If checked, internal Python output will be redirected from the Python console to the Report view panel. The Python console is shown using the menu View → Panels → Python console
Redirect internal Python errors to report view If checked, internal Python error messages will be redirected from the Python console to the Report view panel.
Preference General Tab 04.png

Macro

These options control certain aspects of running macros.

In the Macro tab you can specify the following:

Name Description
Run macros in local environment If checked, variables defined by macros are created as local variables, otherwise as global Python variable
Macro path Specification of a path to macro files
Recording GUI commands If checked, recorded macros will also contain user interface commands
Record as comment If checked, recorded macros will also contain user interface commands but as comments. This is useful if you don't want to execute visible actions when running the macro but to see what could be done visibly.
Show script commands in python console If checked, the commands executed by the macro scripts are shown in the Python console. This console is shown using the menu View → Panels → Python console.
Preference General Tab 05.png

Unidades

This tab configures how Units are shown.

In the Units tab you can specify the following:

Name Description
User system Selection of a unit system that should be used for all parts of FreeCAD
Number of decimals The number of decimals that should be shown for numbers and dimensions in FreeCAD
Minimum fractional inch Minimum fractional inch that should be displayed. This setting is only available if the unit system Building US (ft-in/sqft/cuft) is used.
Preference General Tab 06.png

La configuración de pantalla

This preferences section has two general tabs, 3D View and Colors, and further tabs depending in the used workbenches.

3D View

This tab is always available, and controls certain characteristics of the 3D view.

In the 3D View tab you can specify the following:

Name Description
Show coordinate system in the corner If checked, the main coordinate system will always be shown at the lower right in opened files
Show counter of frames per second If checked, the time needed for the last operation and the resulting frame rate will always be shown at the lower left in opened files
Remember active workbench by tab introduced in version 0.19 If checked, the application will remember what is the active workbench for each tab independently. This way, the active workbench will be automatically restored when changing tab in the multiple-document interface (MDI) view.
Use OpenGL Vertex Buffer Object If checked, Vertex Buffer Objects (VBO) will be used. A VBO is an OpenGL feature that provides methods for uploading vertex data (position, normal vector, color, etc.) to the graphics card. VBOs offer substantial performance gains because the data resides in the graphics memory rather than the system memory and so it can be rendered directly by GPU. For more background info see this webpage.
Render Cache introduced in version 0.19 "Render Cache" or "Render Acceleration" is explained in more detail in Link#render-caching. There are 3 options:
  • Auto (default), let Coin3D decide where to cache.
  • Distributed, manually turn on cache for all view provider root nodes.
  • Centralized, manually turn off cache in all nodes of all view providers, and only cache at the scene graph root node. This offers the fastest rendering speed, but slower response to any scene changes.
Anti-Aliasing Selection if and what kind of multisample anti-aliasing is used
Transparent objects introduced in version 0.19 Render type of transparent objects. The types are:
  • One pass (default), rendering is done in one pass. For non-solid objects like faces or meshes this can lead to artifacts. This image shows such an artifact (black triangle) and that the type Backface pass avoids this.
  • Backface pass, has only an effect for non-solid objects. They are then rendered in two passes: Back-facing polygons are rendered in the first pass and the front-facing in the second pass.
Marker size Selection of the size of vertices (points) in the Sketcher workbench. The clickable area of points can be additionally enlarged by increasing Pick radius (on Colors tab).
Eye to eye distance for stereo modes Specification of the eye-to-eye distance used for stereo projections. The specified value is a factor that will be multiplied with the bounding box size of the 3D object that is currently displayed.
Backlight color If checked, backlight is enabled with the defined color. Backlight is used for rendering back sides of faces (usually, you don't see them in solids, unless you slice one with a clipping plane, or if the faces aren't oriented correctly). It is only active for objects whose Lighting property (on View tab) is set to "One side". If disabled, back sides of faces of objects in "One side" lighting mode will be black.

The related Intensity setting specifies the intensity of the backlight.

Camera type Selection of the camera projection type.


Preference Display Tab 01.png

Navigation

This tab is always available, and controls the behavior of the navigation tools.


In the Navigation tab you can specify the following:

Name Description
Navigation cube If checked, the navigation cube will always be shown. Related Steps by turn defines how many steps (notches) will be applied when using the Navigation cube rotation arrows. Related Corner defines where the Navigation cube is displayed on the screen when creating/opening a document
3D Navigation Selection of a navigation settings set. To see what each set defines, select a set and press the button Mouse....
Orbit style Selection of the rotation orbit style. When viewing a part in the x-y plane an being in the rotation mode of the 3D navigation, the difference is: If Trackball is selected, moving the mouse horizontally will rotate the part around the y-axis, if Turntable is selected the part will be rotated around the z-axis.
New Document Camera Orientation Selection of the camera orientation for new documents
New Document Scale Affects the initial "zoom level" of camera for new documents. The value you set is the diameter of a sphere that fits in 3D view. Default is 100 mm, convenient for objects like boxes for Arduino. It also sets initial size of origin features (base planes in a new PartDesign Body).
Enable animation If checked, rotations can be animated. If for example the 3D Navigation set CAD is used and the mouse is moved while the scroll wheel and the right mouse button is pressed, parts are rotated. If one keeps the mouse moving while releasing e.g. the right mouse button, the rotation will continue as animation. To end the animation left-click with the mouse.
Zoom at cursor If checked, zoom operations will be performed at the position of the mouse pointer. Otherwise zoom operations will be performed at the center of the current view. The Zoom step defines how much will be zoomed. A zoom step of '1' means a factor of 7.5 for every zoom step.
Invert zoom If checked, the direction of zoom operations will be inverted.
Disable touchscreen tilt gesture If checked, the tilting gesture will be disabled for pinch-zooming (two-finger zooming). This only affects the 3D Navigation set Gesture.
Rotate at cursor If checked, rotations in 3D will use the current cursor position as center for the rotation. Otherwise always the center of the screen will be used.
Preference Display Tab 01.png

Colores

This tab is always available.

In the Colors tab you can specify the following:

Name Description
Enable preselection highlighting If checked, preselection is turned on and will be highlighted by the specified color. Preselection means that for example edges in parts will be highlighted while hovering with the mouse over them to indicate that they can be selected.
Enable selection highlighting If checked, selection highlighting is turned on and the specified color will be used for it
Pick radius Sets the area for picking elements in 3D view. Larger value makes it easier to pick things, but can make some small features impossible to select.
Simple color If selected, the background for parts will have the selected color
Color gradient If selected, the background for parts will have a vertical color gradient. The first color is the color at the top of the background, the second one the color at the bottom.
Middle color Is only enabled if Color gradient is selected. If checked, the color gradient will get the selected color as middle color.
Object being edited Selection of the background color for objects in the tree view that are currently edited
Active container Selection of the background color for active containers in the tree view. For example if there are several parts in the tree view and one part is toggled as active body, it will get the selected background color in the tree view.
Preference Display Tab 02.png

Colores de la parte

This tab is only shown if you are in the Part or PartDesign Workbench or if you have been in these workbenches before.

In the Part colors tab you can specify the following:

Name Description
Shape color Color for new shapes. If the option Random is set, a random color is used instead.
Line color Line color for new shapes
Line width Line thickness for new shapes
Vertex color Color for new vertices
Vertex size Size for new vertices
Bounding box color Color of bounding boxes in the 3D view
Two-side rendering If checked, the bottom side of the surface will be rendered the same way than the top side. If not checked, it depends on the option Backlight color; either the backlight color will be used or black.
Text color Text color for document annotations. There is currently no dialog to add annotations to documents. Annotations can only be added using the Python console with this command:

obj=App.ActiveDocument.addObject("App::Annotation", "Label")

This console is shown using the menu View → Panels → Python console.

Preference Display Tab 03.png

Mesh view

This tab is only shown if you are in the Mesh Workbench or if you have been in this workbench before.

In the Mesh view tab you can specify the following:

Name Description
Default mesh color Selection of the default color for new meshes
Default line color Selection of the default line color for new meshes
Mesh transparency Specification of the default mesh transparency for new meshes
Line transparency Specification of the default line transparency for new meshes
Two-side rendering If checked, the bottom side of the surface will be rendered the same way than the top side. If not checked, it depends on the option Enable backlight color (see section 3D view). Either the backlight color will be used or black.
Show bounding-box for highlighted or selected meshes If checked, a yellow bounding box will be displayed for highlighted or selected meshes.
Define normal per vertex If checked, Phong shading is used, otherwise flat shading. Shading defines the appearance of surfaces.

With flat shading the surface normals are not defined per vertex that leads to a unreal appearance for curved surfaces while using Phong shading leads to a smoother appearance.

Crease angle The crease angle is a threshold angle between two faces. It can only be set if the option Define normal per vertex is used.
If face angle ≥ crease angle, facet shading is used
If face angle < crease angle, smooth shading is used

Mesh View Preferences.png

Import-Export Settings

The Import-Export settings affect how files are imported and exported to and from FreeCAD. They are described in the page Import Export Preference.

Workbench preferences

This section is incomplete and requires mentioning the preference pages of each core workbench


Preferences for the more common workbenches are linked below. Some workbenches have no preferences. Other optional workbenches may not be listed. These links are also listed in Category:Preferences

El módulo Draft tiene su pantalla preferences

External workbenches

This section is incomplete and requires mentioning the preference pages of each External workbench


Personalizando la interfaz

Introduction

Como la interfaz de FreeCAD se basa en el moderno toolkit Qt, su diseño es de última generación. Los Widgets, menús, barras de herramientas y demás elementos se pueden modificar, mover o compartir entre los diversos entornos de trabajo. Se puede establecer métodos abreviados de teclado, cambiarlos, y se pueden grabar y reproducir macros. Para acceder a la ventana de personalización se usa el menú Herramientas -> Personalizar:

Std DlgCustomize tab Toolbars.png

Screenshot-customize.jpg

Usage

  1. The commands available in the Customize dialog box depend on the workbenches that have been loaded in the current FreeCAD session. So you should first load all workbenches whose commands you want to have access to.
  2. There are several ways to invoke the Std DlgCustomize.svg Std DlgCustomize command:
    • Select the Tools → Std DlgCustomize.svg Customize... option from the menu.
    • Right-click a toolbar area and choose Std DlgCustomize.svg Customize... from the context menu.
  3. The Customize dialog box opens. For more information see Options.
  4. The Help button does not work at this time.
  5. Press the Close button to close the dialog box.

Options

In the Customize dialog box the following tabs are available:

Commands

Std DlgCustomize tab Commands.png

The Commands tab


On this tab you can browse the available commands.

Browse commands

  1. Select a command category in the Category panel on the left. Some categories match menu entries.
  2. The tools available in the selected category are shown in the panel on the right.
  3. Hover a command: its tooltip appears.
  4. Select a command: its status bar text is displayed below the two panels.

top

Keyboard

Std DlgCustomize tab Keyboard.png

The Keyboard tab


On this tab custom keyboard shortcuts can be defined. Shortcuts for macro commands can be defined on the Macros tab.

Add a custom shortcut

  1. Select a command category from the Category dropdown list.
  2. Select a command from the Commands panel.
  3. The Current shortcut box displays the current short cut, if available.
  4. Enter a new shortcut in the Press new shortcut input box. Shortcuts can be up to 4 inputs long. Each input is either a single character, a combination of one or more special keys or a combination of one or more special keys and a character. Use Backspace to correct mistakes.
  5. If the shortcut is already in use, a dialog box will ask you if you want to override it, and the command the shortcut is assigned to will appear in the Currently assigned to panel.
  6. Press the Assign button to assign the new shortcut.
  7. Press the Clear button to remove the entered shortcut. This will also remove the content of the Current shortcut box. Note that default shortcuts are not permanently removed. They will be restored upon restarting FreeCAD.

Remove a custom shortcut

  1. Select a command category from the Category dropdown list.
  2. Select a command from the Commands panel.
  3. Press the Reset button.

Remove all custom shortcuts

  1. Press the Reset All button.

Notes (Keyboard)

  • Shortcuts only work if their commands appear in the standard menu or in the menu of a workbench that has been loaded in the current FreeCAD session, or if their commands appear on a visible toolbar.
  • In V0.19 there is an issue with some Draft commands. Their default shortcuts do not work and/or custom shortcuts cannot be assigned to them.

top

Workbenches

Std DlgCustomize tab Workbenches.png

The Workbenches tab


On this tab the Workbench selector list can be changed. The Enabled workbenches list shows the workbenches as they will appear in the Workbench selector.

Disable a workbench

  1. Select a workbench in the Enabled workbenches list.
  2. Press the Button left.svg button.
  3. The workbench will be moved to the Disabled workbenches list

Re-enable a workbench

  1. Select a workbench in the Disabled workbenches list.
  2. Press the Button right.svg button.
  3. The workbench will be moved to the Enabled workbenches list

Re-enable all workbenches

  1. Press the Button add all.svg button.

Change a workbench position

  1. Select a workbench in the Enabled workbenches list.
  2. Press the Button up.svg button or the Button down.svg button.
  3. Optionally repeat this until the workbench is in the correct position.

Sort workbenches alphabetically

  1. Press the Button sort.svg button.

top

Toolbars

Std DlgCustomize tab Toolbars.png

The Toolbars tab


On this tab custom toolbars can be created and modified.

Select the workbench

  1. In the dropdown list on the right select the workbench whose custom toolbars you want to modify. The Global option is there for custom toolbars that should be available in all workbenches.

Create a toolbar

  1. Press the New... button.
  2. Enter a name in the dialog box that opens.
  3. Press the OK button.
  4. The new toolbar will appear in the panel on the right.

Rename a toolbar

  1. Select a toolbar in the panel on the right.
  2. Press the Rename... button.
  3. Enter a new name in the dialog box that opens.
  4. Press the OK button.

Delete a toolbar

  1. Select a toolbar in the panel on the right.
  2. Press the Delete button.

Disable a toolbar

  1. Uncheck the checkbox in front of the toolbar name in the panel on the right.
  2. A disabled toolbar will be invisible in the FreeCAD interface.

Add a command

  1. Select the correct toolbar in the panel on the right. If no toolbar is selected, the command will be added to the first toolbar in the list.
  2. Select a category from the dropdown list on the left. Macro commands that have been set up on the Macros tab appear in the 'Macros' category.
  3. Select a command from the panel on the left.
  4. Or select '<Separator>' to add a separator (a line between two toolbar buttons).
  5. Press Button right.svg button.

Remove a command

  1. If required, expand the toolbar in the panel on the right.
  2. Select a command.
  3. Press Button left.svg button.

Change a command position

  1. If required, expand the toolbar in the panel on the right.
  2. Select a command.
  3. Press the Button up.svg button or the Button down.svg button.
  4. Optionally repeat this until the command is in the correct position.

Notes (Toolbars)

  • Toolbars belonging to the current workbench are updated immediately, but after disabling/re-enabling a toolbar a workbench change is required (switch to a different workbench and then switch back).
  • To update global toolbars a workbench change (if commands have been added or removed) or a restart (if the order of a toolbar has changed or a toolbar was renamed) is required.
  • In V0.19 there is an issue with some Draft commands. After adding them to a custom toolbar and exiting the FreeCAD application the user.cfg file must be manually edited for these commands. Search for the name of the custom toolbar and in that section change the content of the FCText items that start with gui_ to DraftTools.

top

Macros

Std DlgCustomize tab Macros.png

The Macros tab


On this tab user macro commands can be set up. Once set up, they can be added to custom toolbars. FreeCAD uses a dedicated folder for user macros and only macros in that folder can be set up. Use the Std DlgMacroExecute.svg Std DlgMacroExecute command to find this folder on your system.

If you download a macro with the Std AddonMgr.svg Addon Manager then make sure that you also download its icon image file. Most macros have an image link on the information page that appears in the Addon Manager. You can for example put this image file in the user macros folder.

Add a macro command

  1. In the Macro dropdown list select a macro.
  2. Enter a Menu text. This will be the name used to identify the macro command and will also appear in the toolbar if there is no icon.
  3. Optionally enter a Tool tip. This text will appear near the location of the mouse when you hover the toolbar icon.
  4. Optionally enter a Status text. This text will appear in the status bar when you hover the toolbar icon.
  5. Optionally enter the wiki page for the macro, if available, in the What's this input box. Enter the page name, not the full URL.
  6. Optionally enter a shortcut in the Accelerator input box. See Keyboard for more information.
  7. To add an icon:
    1. Press the Pixmap ... button.
    2. The Choose Icon dialog box opens.
    3. If required press the Icon folders... button to add an icon folder.
    4. Select an icon from the panel. The Choose Icon dialog box closes automatically.
  8. Press the Add button.
  9. The macro command appears in the panel on the left.
  10. The macro command can now be selected on the Toolbars tab.

Remove a macro command

  1. Select the macro command in the panel on the left.
  2. Press the Remove button.

Change a macro command

  1. Double-click the macro command in the panel on the left.
  2. Make the required changes. Note that you cannot remove the icon, you can only replace it.
  3. Press the Replace button.

top

Spaceball Motion

This is tab is blank if no Spaceball is detected. See: 3Dconnexion input devices.

top

Spaceball Buttons

This is tab is blank if no Spaceball is detected. See: 3Dconnexion input devices.

top

Addons

Addons offer yet another way to customize the use interface. Below are some addons created by users in the FreeCAD community. They can be downloaded through the Std AddonMgr.svg Addon Manager (note: they are listed on the Workbenches tab).

CubeMenu

Glass

IconThemes

Launcher

PieMenu

RemBench

ShortCut

top

Template:Interface navi/es

Propiedades de objetos


Introduction

Una propiedad es un pedazo de información, tal como un número o una cadena de texto, que se adjunta a un documento de FreeCAD o a un objeto en un documento. Las propiedades pueden ser vistas y modificadas (sólo si tienes permisos para ello) con el Editor de propiedades.

Las Propiedades juegan un papel muy importante en FreeCAD, ya que el programa fue concebido desde el principio para trabajar con objetos paramétricos, que son objetos definidos únicamente por sus propiedades.

En FreeCAD, los Archivos de guión para crear objetos personalizados por el usuario pueden tener propiedades de los siguientes tipos:


Boolean
Float
FloatList
FloatConstraint
Angle
Distance
Integer
IntegerConstraint
Percent
Enumeration
IntegerList
String
StringList
Link
LinkList
Matrix
Vector
VectorList
Placement
PlacementLink
Color
ColorList
Material
Path
File
FileIncluded
PartShape
FilletContour
Circle

Properties play a very important role in FreeCAD. As objects in FreeCAD are "parametric", this means that their behavior is defined by their properties, and how these properties are used as input for their class methods.

All property types

Custom scripted objects can use any of the property types defined in the base system:

Bool
Float
FloatList
FloatConstraint
Angle
Distance
ExpressionEngine
Integer
IntegerConstraint
Percent
Enumeration
IntegerList
String
StringList
Length
Link
LinkList
LinkSubList
Matrix
Vector
VectorList
VectorDistance
Placement
PlacementLink
PythonObject
Color
ColorList
Material
Path
File
FileIncluded
PartShape
FilletContour
Circle

Internally, the property name is prefixed with App::Property:

App::PropertyBool
App::PropertyFloat
App::PropertyFloatList
...

Remember that these are property types. A single object may have many properties of the same type, but with different names.

For example:

obj.addProperty("App::PropertyFloat", "Length")
obj.addProperty("App::PropertyFloat", "Width")
obj.addProperty("App::PropertyFloat", "Height")

This indicates an object with three properties of type "Float", named "Length", "Width", and "Height", respectively.

Scripting

See also: FreeCAD scripting basics

A scripted object is created first, and then properties are assigned.

obj = App.ActiveDocument.addObject("Part::Feature", "CustomObject")

obj.addProperty("App::PropertyFloat", "Velocity", "Parameter", "Body speed")
obj.addProperty("App::PropertyBool", "VelocityEnabled", "Parameter", "Enable body speed")

In general, Data properties are assigned by using the object's addProperty() method. On the other hand, View properties are normally provided automatically by the parent object from which the scripted object is derived.

For example:

  • Deriving from App::FeaturePython provides only 4 View properties: "Display Mode", "On Top When Selected", "Show In Tree", and "Visibility".
  • Deriving from Part::Feature provides 17 View properties: the previous four, plus "Angular Deflection", "Bounding Box", "Deviation", "Draw Style", "Lighting", "Line Color", "Line Width", "Point Color", "Point Size", "Selectable", "Selection Style", "Shape Color", and "Transparency".

Nevertheless, View properties can also be assigned using the view provider object's addProperty() method.

obj.ViewObject.addProperty("App::PropertyBool", "SuperVisibility", "Base", "Make the object glow")

Source code

In the source code, properties are located in various src/App/Property* files.

They are imported and initialized in src/App/Application.cpp.

#include "Property.h"
#include "PropertyContainer.h"
#include "PropertyUnits.h"
#include "PropertyFile.h"
#include "PropertyLinks.h"
#include "PropertyPythonObject.h"
#include "PropertyExpressionEngine.h"

Template:Powerdocnavi/es


Trabajando con los entornos

FreeCAD, al igual que muchas aplicaciones de diseño moderno, como [Revit] o [Catia], se basa en el concepto de entorno de trabajo. Un entorno de trabajo (o banco de trabajo) puede describirse como un conjunto de herramientas especialmente agrupadas para facilitar una determinada tarea. En un taller de muebles tradicionales, podríamos tener una mesa de trabajo para la persona que trabaja con madera, otra para el que trabaja con piezas de metal, y quizás una tercera para el individuo que monta todas las piezas juntas.

En FreeCAD se aplica el mismo concepto. Las herramientas se agrupan en entornos de trabajo de acuerdo con las tareas a las que se vinculan.

Cuando cambia de un entorno de trabajo a otro, cambian las herramientas disponibles en la interfaz. Las barras de herramientas, barras de comandos y posiblemente otras partes de la interfaz cambian al nuevo entorno de trabajo, pero el contenido de su escena no cambia. Podría, por ejemplo, comenzar a dibujar formas 2D con Draft Workbench, y luego trabajar con ellos en Part Workbench.

Nótese que algunas veces un banco de trabajo es referido como un "Módulo". Sin embargo, Bancos de trabajo y módulos son diferentes entidades. Un módulo es cualquier extensión de FreeCAD, mientras un banco de trabajo es una configuración GUI especial que agrupar algunas barras de herramienta y menús. Usualmente cada módulo contiene su propio banco de trabajo, de ahí el uso transversal del nombre.

Entornos de trabajo incorporados

Los siguientes entornos de trabajo están disponibles en cada instalación de FreeCAD:

  • Freecad16.svg Std Base. This is not really a workbench, but this category serves to collect all "standard" commands and tools of the system which can be used in all workbenches.

Deprecated

The following workbenches are still included in the base installation for compatibility purposes, but they should no longer be used.

Entornos de trabajo externos

Los entornos de trabajo de FreeCAD son fáciles de programar en Python, por lo tanto, hay muchas personas que desarrollan entornos de trabajo adicionales fuera de la base de código de FreeCAD. La página External workbenches tiene información y tutoriales sobre algunos de ellos, y el proyecto FreeCAD Addons tiene como objetivo recopilarlos y hacerlos fácilmente instalables desde FreeCAD. .

The external workbenches page lists all that are known to this community. Most are easily installable from within FreeCAD, using the Addon Manager, found under menu Tools → AddonManager.svg Addon manager.

Hay nuevos entornos de trabajo en proceso de desarrollo, mantente atento!


El entorno de Malla

Mesh workbench icon

Introduction

El Entorno de trabajo para mallas maneja triangle mesh. Las mallas son un tipo especial de objeto 3D, compuesto de triángulos conectados por sus bordes y sus esquinas (también llamados vértices).

Muchas aplicaciones 3D usan mallas como su objeto 3D básico, como sketchup, blender, maya o 3d studio max. Dado que las mallas son objetos muy simples, que contiene sólo los vértices (puntos), los bordes y las caras (triangulares), son muy fáciles de crear, modificar, dividir, estirar, y fácilmente se puede pasar de una aplicación a otra sin ningún tipo de pérdida. Además, ya que contienen datos muy sencillos, las aplicaciones 3D pueden manejar gran cantidad de mallas sin ningún problema. Por estas razones, las mallas son a menudo el tipo de objeto 3D de elección preferente en aplicaciones de tratamiento de películas, animación y creación de imágenes.

En el campo de la ingeniería, sin embargo, las mallas presentan una gran limitación: son objetos muy simples, solo compuestos de puntos, líneas y caras. Solo están hechos de superficies y no tienen información masiva, por lo que no se comportan como sólidos. En una malla no hay forma automática de saber si un punto está dentro o fuera del objeto. Esto significa que todas las operaciones basadas en sólidos, como la suma o la resta, siempre son un poco difíciles de realizar en las mallas, y retorna errores a menudo.

Mesh example.jpg

Usando el módulo de Malla

El módulo de malla tiene actualmente una interfaz muy simple, todas sus funciones están agrupadas en la entrada del menú Malla. Las operaciones más importantes que puede hacer actualmente con mallas son:

General tools

  • Mesh Regular Solid.png Regular solid ... Crea mallas primitivas , como cubos, cilindros, conos o esferas:
    • Mesh Cube.png Crea un cubo de malla
    • Mesh Cylinder.png Crear un cilindro de malla
    • Mesh Cone.png Crea un cono de malla
    • Mesh Sphere.png Crea una esfera de malla
    • Mesh Ellipsoid.png Crea un elipsoide de malla
    • Mesh Torus.png Crear un toro de malla
  • Realiza operaciones ' Booleanas con mallas
    • Union: hace una unión (fusión) con mallas
    • Intersection: hace una intersección (común) en mallas
    • Difference: Hace una diferencia (corte) en mallas

Cutting

Preferences

Estas son solo algunas de las operaciones básicas actualmente presentes en la interfaz del módulo Mesh.
Hay más herramientas de malla disponibles en OpenSCAD Workbench.
Pero las mallas de FreeCAD también pueden manejarse de muchas maneras por scripting.

Meshes can also be handled via Python using Mesh Scripting.

Enlaces


El entorno de Pieza

Part workbench icon

Las capacidades CAD de FreeCAD se basan en el núcleo de OpenCasCade. El módulo de Piezas permite a FreeCAD utilizar y acceder a los objetos y funciones de OpenCascade. OpenCascade es un núcleo de CAD de nivel profesional, que cuenta con avanzadas capacidades de manipulación de geometría 3D y objetos. Los objetos Pieza, en contraste con los objetos Malla, son mucho más complejos y, por tanto, permiten operaciones mucho más avanzadas, como operaciones booleanas coherentes, historial de modificaciones y comportamiento paramétrico.

The objects created with the Part Workbench are relatively simple; they are intended to be used with boolean operations (unions and cuts) in order to build more complex shapes. This modeling paradigm is known as the constructive solid geometry (CSG) workflow, and it was the traditional methodology used in early CAD systems. On the other hand, the PartDesign Workbench provides a more modern workflow to constructing shapes: it uses a parametrically defined sketch, that is extruded to form a basic solid body, which is then modified by parametric transformations (feature editing), until the final object is obtained.

Part objects are more complex than mesh objects created with the Mesh Workbench, as they permit more advanced operations like coherent boolean operations, modifications history, and parametric behaviour.

Part Workbench relationships.svg

The Part Workbench is the basic layer that exposes the OCCT drawing functions to all workbenches in FreeCAD


Las herramientas

Las herramientas del módulo Pieza están todas situadas en el menú Pieza, que aparece cuando se carga el módulo Piezas.

Primitivas

Estas son las herramientas para crear primitivas de objetos.

  • Part Box.png Caja: Dibuja una caja especificando sus dimensiones
  • Part Cylinder.png Cilindro: Dibuja un cilindro especificando sus dimensiones
  • Part Sphere.png Esfera: Dibuja una esfera especificando sus dimensiones
  • Part Cone.png Cono: Dibuja un cono especificando sus dimensiones
  • Part Torus.png Toro: Dibuja un toro (anillo) especificando sus dimensiones
  • Part CreatePrimitives.png CreatePrimitives: Una herramienta para crear diversas primitivas geométricas paramétricas.
  • Part Shapebuilder.png Shapebuilder: Una herramienta para crear formas más complejas a partir de diversas primitiv geométricas paramétricas

Modificando objetos

Estas son las herramientas para modificar los objetos existentes. Permiten seleccionar los objetos a modificar.

  • Part Extrude.png Extrusión: Extruye caras planas de un objeto
  • Part Revolve.png Revolución: Crea un objeto haciendo que gire otro objeto alrededor de un eje
  • Part Mirror.png Simetría: Crea una simetría de los objetos seleccionados alrededor de un plano de simetría dado
  • Part Fillet.png Redondear: Redondea las aristas de un objeto
  • Part Chamfer.png Chaflán: Crea un chaflán en las aristas de un objeto
  • Part RuledSurface.png Ruled Surface:
  • Part Loft.png Loft: Lofts de un perfil a otro.
  • Part Sweep.png Sweep: Barre uno o más perfiles a lo largo de un camino
  • Part Thickness.svg Thickness: Hollows out a solid, leaving openings next to select faces.

Measure

Std Measure Menu.png Measure: Allows linear and angular measurement between points, edges, and faces.

Otras herramientas

Preferencias

Explicando conceptos

En la terminología OpenCascade, distinguimos entre primitivas geométricas y formas (topológicas). Una primitiva geométrica puede ser un punto, una línea, un círculo, un plano, etc, o incluso algunos tipos más complejos como una superficie o una curva B-Spline. Una forma puede ser un vértice, un borde, un alambre, una cara, un sólido o un compuesto de otras formas. Las primitivas geométricas no están hechas para ser visualizadas directamente en la escena 3D, sino que se utilizarán para la construcción de la geometría de las formas. Por ejemplo, un borde (forma, shape) puede construirse a partir de una línea o de un arco de círculo (primitivas).

Podríamos decir, para resumir, que las primitivas geométricas son bloques de construcción "inmateriales" (abstractos, "sin forma"), y las formas son la verdadera geometría espacial ("materializada") construida sobre ellas.

Para obtener una lista completa de todos ellos puedes ir a OCC documentation (Alternativa: sourcearchive.com) y búscar Geom_* (para la geometría) yTopoDS_* (para las formas). Allí también se puede leer más acerca de las diferencias entre las formas y los objetos geométricos. Ten en cuenta que, lamentablemente, la documentación oficial de OCC no está disponible en línea (se debe descargar un archivo) y está dirigida básicamente a los programadores, no a los usuarios finales. Pero posiblemente puedas encontrar allí información suficiente para iniciarse en esto.

At a very high level, topology tells what pieces an object is made of, and the logical relationships between them. A shape is made of a certain set of faces. A face is bounded by a certain set of edges. Two faces are adjacent if they share a common edge.

Topology alone does not tell you the size, curvature, or 3D locations of any of those pieces. However, each piece of topology does knows about it's underlying geometry. A face knows what surface it lies on. An edge knows what curve it lies on. The geometry knows about curvature and location in space. - Source


Thus, Topology defines the relationship between simple geometric entities, which can be linked together to represent complex shapes. - Modeling Data User's Guide

ClassTopoDS Shape inherit graph.png

Los tipos geométricos en realidad se puede dividir en dos grandes grupos: las curvas y superficies. A partir de las curvas (líneas, círculos, ...) se puede construir un borde, a partir de las superficies (plano, cilindro, ...) se puede construir una cara. Por ejemplo, la primitiva geométrica línea es ilimitada, es decir, se define por un vector de base y un vector de dirección, mientras que su representación como forma será algo limitado por un punto de inicio y otro de fin. Y, de modo similar, una caja - un sólido - puede ser creada con seis planos limitados.

Desde un borde o cara también puede volver a su contraparte geométrica primitiva.

Así, a partir de las formas se pueden crear piezas muy complejas o, al revés, se pueden extraer todas las sub-formas de las que está hecha otra forma más compleja.


Thus, out of shapes you can build very complex parts or, the other way round, extract all sub-shapes a more complex shape is made of.

Part TopoShape relationships.svg

The Part::TopoShape class is the geometrical object that is seen on screen. Essentially all workbenches use these TopoShapes internally to build and display edges, faces, and solids.


Archivos de guión

See also: Part scripting

La estructura de datos más utilizada en el módulo de Piezas es el Tipo BRep de OpenCascade. Prácticamente todos los contenidos y los tipos de objeto del módulo de Piezas ya están disponibles para los archivos de guión con Python . Esto incluye primitivas geométricas, tales como la Línea y el Círculo (o arco), y toda la gama de TopoShapes, como vértices, bordes, alambres, caras, sólidos y compuestos. Cada uno de esos objetos puede ser creado de varios modos, y para algunos de tales objetos, especialmente los TopoShapes, también son posibles operaciones avanzadas, como la unión/diferencia/intersección booleana. Explore el contenido del módulo de Piezas, como se describe en la página Conceptos básicos de archivos de guión en FreeCAD, para saber más.

The most basic object that can be created is a Part Feature, which has a simple DataPlacement property, and basic properties to define its color and appearance.

Another simple object used in 2D geometrical objects is Part Part2DObject, which is the base of Sketcher SketchObject (Sketcher), and most Draft elements.

Test script

Test the creation of Part Primitives with a script. introduced in version 0.19

import parttests.part_test_objects as pto
pto.create_test_file("example_file")

This script is located in the installation directory of the program, and can be examined to see how the basic primitives are built.

$INSTALL_DIR/Mod/Part/parttests/part_test_objects.py

Ejemplos

Para crear un elemento línea pasa a la consola de Python y escribe:

import Part,PartGui 
doc=App.newDocument()  
l=Part.LineSegment()
l.StartPoint=(0.0,0.0,0.0)
l.EndPoint=(1.0,1.0,1.0)
doc.addObject("Part::Feature","Line").Shape=l.toShape() 
doc.recompute()

Vamos a ver paso a paso el anterior ejemplo en Python:

import Part,PartGui
doc=App.newDocument()

Carga el módulo de piezas y crea un nuevo documento

l=Part.LineSegment()
l.StartPoint=(0.0,0.0,0.0)
l.EndPoint=(1.0,1.0,1.0)

Line es, de hecho, un segmento de recta, por ello la asignación de los puntos de inicio y fin.

doc.addObject("Part::Feature","Line").Shape=l.toShape()

Esto añade un objeto del tipo pieza al documento y le asigna la forma de representación del segmento de línea a la propiedad 'Forma' del objeto agregado. Es importante entender aquí que se utilizó una primitiva geométrica (el Part.line) para crear un TopoShape a partir de la misma (el método toShape () ). En el documento sólo se pueden añadir formas. En FreeCAD, las primitivas geométricas se utilizan como "estructuras de soporte" para las formas.

doc.recompute()

Actualiza el documento. Esto también prepara la representación visual del nuevo objeto Parte.

Ten en cuenta que una línea se pueden crear especificando sus puntos de inicio y final directamente en el constructor, por ejemplo . Part.Line (punto1, punto2) o podemos crear una línea predeterminada y establecer sus propiedades después, como lo hicimos aquí.

A Line can be created also using:

import FreeCAD
import Part
DOC = FreeCAD.newDocument()

def mycreateLine(pt1, pt2, objName):
    obj = DOC.addObject("Part::Line", objName)
    obj.X1 = pt1[0]
    obj.Y1 = pt1[2]
    obj.Z1 = pt1[2]

    obj.X2 = pt2[0]
    obj.Y2 = pt2[1]
    obj.Z2 = pt2[2]

    DOC.recompute()
    return obj

line = mycreateLine((0,0,0), (0,10,0), "LineName")


Podemos crear un círculo de modo similar:

import Part
doc = App.activeDocument()
c = Part.Circle() 
c.Radius=10.0  
f = doc.addObject("Part::Feature", "Circle")
f.Shape = c.toShape()
doc.recompute()

or using:

import FreeCAD
import Part
DOC = FreeCAD.newDocument()

def mycreateCircle(rad, objName):
    obj = DOC.addObject("Part::Circle", objName)
    obj.Radius = rad

    DOC.recompute()
    return obj

circle = mycreateCircle(5.0, "CircleName")


Observa de nuevo: Se utilizó el círculo (primitiva geométrica) para construir una forma a partir de él. Por supuesto, después podemos seguir teniendo acceso a la geometría de nuestra construcción, haciendo:

s = f.Shape
e = s.Edges[0]
c = e.Curve

Aquí tomamos la forma de nuestro objeto f, después tomamos la lista de los bordes, en este caso sólo habrá uno porque hemos hecho toda la forma a partir de un solo círculo, así que tomamos sólo el primer elemento de la lista de bordes, y tomamos su curva. Cada borde tiene una curva, que es la primitiva geométrica en la que se sustenta.

Diríjete a la página Archivos de guión de topología de datos si quieres saber más.

Tutoriales


El entorno de Dibujo

Development of the Drawing Workbench stopped in FreeCAD 0.16, and the new TechDraw Workbench aiming to replace it was introduced in v0.17. Both workbenches are still provided in v0.17, but the Drawing Workbench may be removed in future releases.


Drawing workbench icon

Introduction

El módulo de Dibujo te permite poner en papel tu trabajo 3D. Es decir, sirve para poner vistas de tus modelos en una ventana 2D e insertar esas ventanas en un dibujo, por ejemplo una hoja con un formato, un título y tu logotipo y, finalmente, imprimir esa hoja. El módulo de Dibujo está en desarrollo y es más o menos una muestra de sus posibilidades!

Drawing extraction.png

Herramientas GUI

Estas son las herramientas para la creación, configuración y exportación de hojas de dibujo 2D

  • Drawing View.png Insertar una vista: Inserta una vista de los objetos seleccionados en la hoja de dibujo activa
  • Drawing Annotation.png Annotation: Adds an annotation to the current drawing sheet
  • Drawing Clip.png Clip: Adds a clip group to the current drawing sheet
  • Drawing Openbrowser.png Open Browser: Opens a preview of the current sheet in the browser
  • Drawing Orthoviews.png Ortho Views: Automatically creates orthographic views of an object on the current drawing sheet
  • Drawing Symbol.png Symbol: Adds the contents of a SVG file as a symbol on the current drawing sheet
  • Drawing DraftView.png Draft View: Inserts a special Draft view of the selected object in the current drawing sheet
  • Drawing SpreadsheetView.png Spreadsheet View: Inserts a view of a selected spreadsheet in the current drawing sheet
  • Project Shape: Creates a projection of the selected object (Source) in the 3D view.

Nota La herramienta vista de boceto es utilizada principalmente para ubicar objetos boceto sobre papel. Tiene unas cuantas capacidades extras sobre las herramientas usuales de bocetos, y soporta objectos especificos como Dimensiones de boceto.

En la imagen se ven los principales elementos del módulo de Dibujo. El documento contiene un objeto forma (Schenkel) que queremos poner en papel. Para ello creamos una "Página". Una página se crea a partir de una plantilla, en este caso la plantilla "A3_apaisado". La plantilla es un documento SVG que puede contener la disposición habitual de tus dibujos, tu logotipo o los estándares que utilices.

En la página puedes insertar una o varias vistas. Cada vista tiene una posición en la página (Propiedades X, Y), un factor de escala (Propiedad escala) y propiedades adicionales. Cada vez que la página, o la vista, o el objeto referenciado cambia, la página se regenera y la visualización de la página se actualiza.

Archivos de guión

De momento, el interfaz (GUI) para el usuario final está poco desarrollado, por lo que los archivos de guión de la API son más interesantes. A continuación veremos ejemplos de cómo utilizar los archivos de guión de la API del módulo de Dibujo.

See the Drawing API example page for a description of the functions used to create drawing pages and views.

Aquí un guión que fácilmente puede llenar el Macro_CartoucheFC hoja FreeCAD A3_Landscape.

Plantillas

FreeCAD viene con un juego de plantillas básico, pero se pueden obtener más en la página Drawing templates/es.

Extending the Drawing Module

Some notes on the programming side of the drawing module will be added to the Drawing Documentation page. This is to help quickly understand how the drawing module works, enabling programmers to rapidly start programming for it.

Tutorials

External links

El entorno de Renderizado

The Raytracing workbench is essentially obsolete. New development is happening in the Render Workbench, which is intended as its replacement. This workbench is fully programmed in Python so it is much easier to extend.

Nevertheless, the information in this page is generally useful for the new workbench, as both modules work basically in the same way.


Raytracing workbench icon

El módulo de Trazado de rayos es usado para generar imágenes fotorealistas de tus modelos al renderizarlos con un renderizador externo. El módulo de Trazado de rayos trabaja con plantillas, de la misma manera que el Módulo de Dibujo, al permitirte crear projectos de Trazado de rayos en los que agregas vistas de tus objetos. El proyectos puede ser exportado a un archivo listo para renderizar o renderizarlo directamente.

The Workbench Raytracing.svg Raytracing Workbench is used to generate photorealistic images of your models by processing them with an external renderer.

El módulo de trazado de rayos opera con plantillas, que son archivos de escena para un renderizador dado, incluyendo iluminación y posiblemente geometría adicional como son planos de suelo. Estos archivos de escena contienen apartados, en los que FreeCAD insertará la posición de la cámara, y la geometría e información de materiales de cada objeto que insertes en el proyecto. La escena modificada es exportada después al renderizador externo.

De momento, dos renderizadores son soportados povray y luxrender. Para poder renderizar directamente en FeeCAD, al menos uno de esos renderizadores debe estar instalado en tu sistema, y su ubicación debe ser configurada en las preferencias de trazado de rayos de FreeCAD. Si ningún renderizador está instalado, todavía puedes exportar un archivo de escena que puede ser utilizado por alguno de los renderizadores después, o en otra máquina.

Actualmente existe un nuevo entorno de renderizado en desarrollo para soportar múltiples back-ends de renderizado como Lux y Yafaray. Puedes ver información para utilizar la versión en desarrollo en el Proyecto de Render

Raytracing example.jpg

Flujo de trabajo típico

  1. Crea o abre un proyecto FreeCAD, agrega algunos objetos basados en sólidos (por el momento no se soportan mallas)
  2. Crea un proyecto de trazado de rayos (luxrender o povray)
  3. Selecciona los objetos que desees agregar al proyecto de trazado de rayos y agrçegalos con la herramienta "Insertar Parte"
  4. Exporta el proyecto o renderízalo directamente


Raytracing Workbench workflow.svg


Workflow of the Raytracing Workbench; the workbench prepares a project file from a given template, and then calls an external program to produce the actual rendering of the scene. The external renderer can be used independently of FreeCAD.


Herramientas GUI

Project tools

These are the main tools for exporting your 3D work to external renderers.

  • Raytrace New.svg New PovRay project: Insert new PovRay project in the document
  • Raytrace Lux.svg New LuxRender project: Insert new LuxRender project in the document
  • Raytrace NewPartSegment.svg Insert part: Insert a view of a Part in a raytracing project
  • Raytrace ResetCamera.svg Reset camera: Matches the camera position of a raytracing project to the current view
  • Raytrace ExportProject.svg Export project: Exports a raytracing project to a scene file for rendering in an external renderer
  • Raytrace Render.svg Render: Renders a raytracing project with an external renderer

Utilities

These are helper tools to perform specific tasks manually.

Preferences

  • Preferences-raytracing.svg Preferences: Preferences available in for the Raytracing tools.

Tutorials

Creando el archivo povray manualmente

Las herramientas descritas anteriormente te permiten exportar la vista 3D actual y todos sus contenidos a un archivo Povray. Primero, debes de cargar o crear tu información de CAD y posicionar la orientación de vista 3D como desees. Después selecciona "Utilidades->Exportar Vista..." del menu de trazado de rayos.

FreeCAD Raytracing.jpg

Se te solicitará la ubicación para guardar el archivo *.pov resultante. Después de ello puedes abrirlo en Povray y renderizar:

Povray.jpg

Como siempre, en un renderizador puedes hacer imágenes grandes y bonitas:

Scharniergreifer render.jpg

Archivos de guión

See the Raytracing API example for information on writing scenes programmatically.

Enlaces

Sobre POV-Ray:

Luxrender

Future possible renderers to implement

Exporting to Kerkythea

Although direct export to the Kerkythea XML-File-Format is not supported yet, you can export your Objects as Mesh-Files (.obj) and then import them in Kerkythea.

  • if using Kerkythea for Linux, remember to install the WINE-Package (needed by Kerkythea for Linux to run)
  • you can convert your models with the help of the mesh workbench to meshes and then export these meshes as .obj-files
  • If your mesh-export resulted in errors (flip of normals, holes ...) you may try your luck with netfabb studio basic
Free for personal use, available for Windows, Linux and Mac OSX.
It has standard repair tools which will repair you model in most cases.
  • another good program for mesh analysing/repairing is Meshlab
Open Source, available for Windows, Linux and Mac OSX.
It has standard repair tools which will repair you model in most cases (fill holes, re-orient normals, etc.)
  • you can use "make compound" and then "make single copy" or you can fuse solids to group them before converting to meshes
  • remember to set in Kerkythea an import-factor of 0.001 for obj-modeler, since Kerkythea expects the obj-file to be in m (but standard units-scheme in FreeCAD is mm)
Within WIndows 7 64-bit Kerkythea does not seem to be able to save these settings.
So remember to do that each time you start Kerkythea
  • if importing multiple objects in Kerkythea you can use the "File → Merge" command in Kerkythea

Development

These pages refer to the new workbench, programmed in Python, meant to replace the current Raytracing Workbench.

Outdated

These pages refer to a replacement workbench, programmed in C++, proposed around 2012, which was never completed.

El entorno de Imágenes

Image workbench icon

Introduction

El módulo de imagen maneja diferentes tipos de imágenes de mapa de bits, y le permite abrirlos en FreeCAD.

Actualmente, los módulos le permiten abrir los formatos de archivo .bmp, .jpg, .png y .xpm en una ventana de visualización separada.

Currently, the module supports opening BMP, JPG, PNG, and XPM file formats.

Tools

Image Import.png Importar Imagen

Features

  • Like a Sketch, an imported image can be attached to one of the main planes XY, XZ, or YZ, and given a positive or negative offset.
  • The image is imported with relation of 1 pixel to 1 millimeter.
  • The recommendation is to have the imported image at a reasonable resolution.

Consejo:
Trazar con elementos de sketcher sobre una imagen funciona mejor si la imagen tiene un pequeño desplazamiento (negativo) al plano de sketch.
Puede establecer un desplazamiento de -0,1 mm en la importación o posterior editando la ubicación de la imagen.

Tracing over an image works best if the image has a small negative offset, for example, -0.1 mm, from the working plane. This means that the image will be slightly behind the plane where you draw your 2D geometry, so you won't draw on the image itself.

The offset of the image can be set during import, or changed later through its properties.



El entorno de Croquizado

Draft workbench icon

El entorno de Boceto permite dibujar rápidamente objetos 2D simples en el documento actual, y ofrecer diversas herramientas para poderlas modificar después. Algunas de dichas herramientas también funcionan sobre otros objetos de FreeCAD, no sólo en los creados con el entorno de Boceto. También proporciona un completo sistema de ajuste, y varias utilidades para manejar objetos y configuraciones.

The created 2D objects can be used for general drafting in a way similar to Inkscape or Autocad. These 2D shapes can also be used as the base components of 3D objects created with other workbenches, for example, the Part and Arch Workbenches. Conversion of Draft objects to Sketches is also possible, which means that the shapes can also be used with the PartDesign Workbench for the creation of solid bodies.

FreeCAD is primarily a 3D modelling application, and thus its 2D tools aren't as advanced as in other drawing programs. If your primary goal is the production of complex 2D drawings and DXF files, and you don't need 3D modelling, you may wish to consider a dedicated software program for technical drafting such as LibreCAD, QCad, TurboCad, and others.

Draft Workbench Example

Dibujando objetos

Estas son las herramientas para crear objetos.

  • Draft Line.png Línea de 2 puntos: Dibuja un segmento de línea entre 2 puntos
  • Draft Wire.png Polilínea (Línea de múltiples puntos): Dibuja una polilínea compuesta por múltiples segmentos de línea
  • Draft Circle.png Circunferencia: Dibuja una circunferencia a partir de su centro y radio
  • Draft Arc.png Arco: Dibuja un segmento de arco a partir de su centro, radio ángulo de inicio y ángulo final
  • Draft Ellipse.png Ellipse: Draws an ellipse from two corner points
  • Draft Polygon.png Polígono: Dibuja un polígono regular a partir del centro y radio de la circunferencia que lo circunscribe
  • Draft Rectangle.png Rectángulo: Dibuja un rectángulo a partir de 2 puntos de su diagonal
  • Draft Text.png Texto: Dibuja una anotación de múltiples líneas de texto
  • Draft Dimension.png Cota: Dibuja una cota dimensional
  • Draft BSpline.png BSpline: Dibuja una B-Spline a partir de una serie de puntos
  • Draft Point.png Punto: Inserta un objeto punto
  • Draft ShapeString.png ShapeString: The ShapeString tool inserts a compound shape representing a text string at a given point in the current document
  • Draft Facebinder.png Facebinder: Creates a new object from selected faces on existing objects
  • Draft BezCurve.png Bezier Curve: Draws a Bezier curve from a series of points
  • Draft Label.png Label: Places a label with an arrow pointing to a selected element Disponible en la versión 0.17

Annotation objects

Modificando objetos

Estas son las herramientas para la edición de los objetos existentes. Trabajan sobre los objetos seleccionados, pero si no hay ningún objeto seleccionado, permiten seleccionar uno.

Many operation tools (move, rotate, array, etc.) also work on solid objects (Part, PartDesign, Arch, etc.).

  • Draft Shape2DView.svg Shape 2D View: creates a 2D object which is a flattened 2D view of a 3D object.

Obsolete

This command is considered obsolete because the Drawing Workbench is obsolete. However, the command itself is still available.

These commands have been removed from the interface.

Draft Tray toolbar

The Draft tray toolbar appears when the workbench is started, and allows selecting the working plane, together with some visual properties like the line color, shape color, text size, line width, and automatic group.

Draft Snap toolbar

The Draft Snap toolbar allows selecting the currently snapping mode. Its button keep depressed when a mode is active.

  • Draft ToggleSnap.svg Toggle snap: toggles object snapping globally on or off.
  • Snap Endpoint.svg Endpoint: snaps to the endpoints of line, arc and spline segments.
  • Snap Midpoint.svg Midpoint: snaps to the middle point of line and arc segments.
  • Snap Center.svg Center: snaps to the center point of arcs and circles.
  • Snap Angle.svg Angle: snaps to the special cardinal points of circles and arcs, at 45° and 90°.
  • Snap Intersection.svg Intersection: snaps to the intersection of two line or arc segments. Hover the mouse over the two desired objects to activate their intersection snaps.
  • Snap Perpendicular.svg Perpendicular: on line and arc segments, snaps perpendicularly to the latest point.
  • Snap Extension.svg Extension: snaps on an imaginary line that extends beyond the endpoints of line segments. Hover the mouse over the desired object to activate its extension snap.
  • Snap Parallel.svg Parallel: snaps on an imaginary line parallel to a line segment. Hover the mouse over the desired object to activate its parallel snap.
  • Snap Special.svg Special: snaps on special points defined by the object. introduced in version 0.17
  • Snap Near.svg Near: snaps to the closest point or edge on the nearest object.
  • Snap Ortho.svg Ortho: snaps on imaginary lines that cross the last point, and extend at 0°, 45° and 90°.
  • Snap Grid.svg Grid: snaps to the intersections of the grid lines, if the grid is visible.
  • Snap WorkingPlane.svg Working plane: always places the snapped point on the current working plane, even if you snap to a point outside that working plane.
  • Snap Dimensions.svg Dimensions: shows temporary X and Y dimensions while snapping.
  • Draft ToggleGrid.svg Toggle grid: toggles the visibility of the grid on or off.

Herramientas de utilidad

Utility menu

Herramientas adicionales disponibles desde el menú contextual del botón derecho del ratón, dependiendo de los objetos seleccionados.

Obsolete

These tools were removed from the interface in v0.19 because they no longer had any purpose.

Preferencias

Formatos de archivo

El módulo de Boceto proporciona a FreeCAD importadores y exportadores para los siguientes formatos de archivo:

Install importers

Características adicionales

  • Ajuste: Permite colocar los nuevos puntos en lugares especiales de los objetos existentes
  • Restricciones: Permite situar los puntos nuevos horizontal o verticalmente respecto a puntos previos
  • Trabajando con coordenadas manualmente: Permite introducir coordenadas manualmente, en lugar de indicarlas en la pantalla
  • Working plane: Allows you to define a plane in the 3D space, where next operations will take place

Unit tests

See also: Test Workbench.

To run the unit tests of the workbench execute the following from the operating system terminal.

freecad -t TestDraft

Archivos de guión

El módulo Boceto presenta una completa Draft API para que pueda usar sus funciones en scripts y macros

The workbench includes a module to create samples of all objects in a new document. introduced in version 0.19

Use this to test that all objects are produced correctly.

import drafttests.draft_test_objects as dto
doc = dto.create_test_file()

Inspecting the code of this module is useful to understand how to use the programming interface.

$INSTALLDIR/Mod/Draft/drafttests/draft_test_objects.py

Where $INSTALLDIR is the toplevel directory where the software was installed; for example, in Linux it may be /usr/share/freecad.

Draft test objects.png

Test objects for the Draft Workbench.


Archivos de guión y macros

Macros

Introduction

Las macros son una forma cómoda de crear acciones complejas en FreeCAD. Simplemente graba las acciones a medida que las haces, a continuación, lo guardas con un nombre, y las podrás reproducir siempre que lo desees. Dado que las macros son en realidad una lista de comandos de Python, también puedes editar y crear archivos de guión (scrips) o secuencias de comandos muy complejos.

While Python scripts normally have the .py extension, FreeCAD macros should have the .FCMacro extension. A collection of macros written by experienced users is found in the macros recipes page.

See the Power users hub to learn more about the Python programming language, and about writing macros. In particular, you should start with these pages:

¿Cómo funciona?

Si habilitas la salida en consola (Menú Editar -> Preferencias -> Macro -> Mostrar comandos de archivos de guión en la consola de Python), verás que en FreeCAD, cada acción que hacemos, como presionar un botón, da como salida un comando Python. Esos comandos son lo que se pueden grabar en una macro. La principal herramienta para la grabación de las macros es la barra de herramientas de macros: Macros toolbar.jpg. En ella tienes 4 botones: Grabar, detener la grabación, editar y reproducir la macro actual.

Enable the console output in the menu Edit → Preferences → General → Macro → Show scripts commands in python console. You will see that in FreeCAD, every action you do, such as pressing a button, outputs a Python command. Those commands are what can be recorded in a macro. The main tool for making macros is the macros toolbar: Macros toolbar.jpg. On it you have 4 buttons: Record, stop recording, edit and play the current macro.

Es muy sencillo de utilizar: Presiona el botón de grabación, se pedirá que le asignes un nombre a tu macro, a continuación, realizar algunas acciones. Cuando termines, haz clic en el botón Detener grabación, y tus acciones se guardarán. Ahora puedes acceder al letrero de diálogo de macro con el botón de edición:

Macros.jpg

Allí puedes manejar tus macros, eliminar, editar o crear otras nuevas desde cero. Si editas una macro, esta se abrirá en una ventana del editor donde se pueden realizar cambios en su código.

Ejemplo

Pulsa el botón de grabar, dale un nombre, digamos "cilindro de 10x10, entonces, en el Entorno de Pieza, crea un cilindro con radio = 10 y altura = 10. A continuación, pulsa el botón "Detener la sesión de grabación de la macro". En el letrero de diálogo de edición macros, puedes ver el código Python que se ha registrado, y, si lo deseas, realizar modificaciones en él. Para ejecutar la macro, basta con pulsar el botón de ejecutar en la barra de herramientas mientras la macro se encuentra en el editor. Tu macro siempre se guarda en el disco, por lo que cualquier cambio que hagas, o cualquier macro nueva que crees, siempre estará disponible la próxima vez que inicies FreeCAD.

Press the record button, give a name, let's say "cylinder 10x10", then, in the Part Workbench, create a cylinder with radius = 10 and height = 10. Then, press the "stop recording" button. In the edit macros dialog, you can see the python code that has been recorded, and, if you want, make alterations to it. To execute your macro, simply press the execute button on the toolbar while your macro is in the editor. You macro is always saved to disk, so any change you make, or any new macro you create, will always be available next time you start FreeCAD.

Personalización

Por supuesto que no es práctico cargar una macro en el editor con el fin de usarla. FreeCAD proporciona formas mucho mejores de iniciar la macro, como la asignación de un atajo de teclado, o poner una entrada en el menú. Una vez que la macro se crea, todo esto se puede hacer a través de menú -> Herramientas -> Personalizar:

Of course it is not practical to load a macro in the editor in order to use it. FreeCAD provides much better ways to use your macro, such as assigning a keyboard shortcut to it or putting an entry in the menu. Once your macro is created, all this can be done via the Tools → Customize menu.

Macros config.jpg

Así puedes hacer que tu macro se convierta en una auténtica herramienta, al igual que cualquier herramienta estándar de FreeCAD. Esto, sumado a la potencia de Python en FreeCAD, permite añadir fácilmente tus propias herramientas a la interfaz. Sigue leyendo en la página del Centro de usuarios avanzados si quieres saber más sobre los archivos de guión en lenguaje Python ...

See Customize Toolbars for a more detailed description.

Creación de macros sin grabar

También puedes copiar/pegar directamente código python en una macro, sin grabar acciones de la interfaz gráfica de usuario. Basta con crear una nueva macro, editarla, y pegar el código. A continuación, puedes guardar la macro del mismo modo que se guarda un documento de FreeCAD. La próxima vez que se inicie FreeCAD, la macro aparecerá bajo el apartado "Macros instaladas" del menú Macro.

You can also directly copy/paste python code into a macro, without recording GUI action. Simply create a new macro, edit it, and paste your code. You can then save your macro the same way as you save a FreeCAD document. Next time you start FreeCAD, the macro will appear under the "Installed Macros" item of the Macro menu.

See How to install macros for a more detailed description.

Repositorio de Macros

Visita la página Recetas de macros para recoger algunas macros útiles para añadir a tu instalación de FreeCAD.

Visit the Macros recipes page to pick some useful macros to add to your FreeCAD installation.

Additional information

Tutorials

You can manually install extensions, however, it is much simpler to just use the Addon Manager.

Template:Powerdocnavi/es


Introducción a Python


Introduction

Este es un pequeño tutorial hecho para quien sea nuevo en Python. Python es un lenguaje de programación de código abierto y multiplataforma. Python tiene varias características que lo hacen muy diferente de otros lenguajes de programación comunes, y es muy accesible para usuarios nuevos como tu:

  • Ha sido diseñado especialmente para ser fácil de leer por los seres humanos, por lo que es muy fácil de aprender y entender.
  • Se interpreta, es decir, a diferencia de los lenguajes compilados como C, su programa no necesita compilarse antes de ejecutarse. El código que escriba puede ejecutarse inmediatamente, línea por línea si lo desea. Debido a que puede ir lentamente, paso a paso, es extremadamente fácil de aprender y encontrar errores en su código.
  • Se puede incrustar en otros programas para usarlos como lenguaje de scripting. FreeCAD tiene un intérprete de Python incorporado; puede escribir código Python en FreeCAD, que manipulará partes de FreeCAD, por ejemplo, para crear geometría. Esto es extremadamente poderoso, en lugar de hacer clic en el botón "Crear esfera", que algunos programadores han codificado; tiene la libertad de construir fácilmente su propia herramienta, creando exactamente la geometría que desea, de una manera o forma que el programador no pueda prever.
  • Es extensible, puede conectar fácilmente nuevos módulos en su instalación de Python y ampliar su funcionalidad. Por ejemplo, tiene módulos que le permiten a Python leer y escribir imágenes jpg, comunicarse con twitter, programar tareas que realizará su sistema operativo, etc.

Así que, ¡manos a la obra! Ten en cuenta que lo que viene ahora es una introducción muy simple, de ningún modo un completo tutorial. Pero espero que después, tengas la base suficiente para explorar más profundamente en las interioridades de FreeCAD.

El intérprete

Por lo general, cuando escribes programas de ordenador, abres un editor de texto o tu entorno de programación favorito (que en la mayoría de los casos constará de un editor de texto con varias herramientas a su alrededor), escribes tu programa, a continuación, lo compilas y lo ejecutarás. La mayoría de las veces habrás cometido errores al escribir, así que tu programa no funcionará, y recibirás un mensaje de error diciendo lo que salió mal. Entonces regresarás a tu editor de texto, corregirás los errores, ejecutarás de nuevo, y así sucesivamente hasta que el programa funcione bien.

Todo este proceso se puede hacer, en Python, de forma transparente dentro del intérprete de Python. El intérprete es una ventana de Python con un símbolo del sistema, donde puedes simplemente escribir código Python. Si instalas en su ordenador Python (descargarlo desde su website si estás en Windows o Mac, o instalar desde el repositorio de paquetes si estás en linux), tendrás un intérprete Python en el menú de inicio. Pero FreeCAD también tiene un intérprete de Python en su parte inferior:

FreeCAD Python console.png

Screenshot pythoninterpreter.jpg

(If you don't have it, click on View --> Panels --> Python console.)

El intérprete muestra la versión de Python, y luego el símbolo >>>, que es el símbolo del sistema, es decir, donde se introduce el código Python. Escribir código en el intérprete es simple: una línea es una instrucción. Al pulsar Intro, tu línea de código se ejecutará (después de ser compilado de modo instantáneo e invisible). Por ejemplo, trata de escribir esto:

print("hello")

print es una palabra clave especial de Python que significa, obviamente, imprimir algo en la pantalla. Al pulsar Intro, la operación se ejecuta, y el mensaje "hola" se imprime. Si cometes un error, por ejemplo vamos a escribir:

print(hello)

Python nos dirá que no sabe lo que es hola. El caracter " especifica que el contenido es una cadena, que es simplemente, en la jerga de programación, un pedazo de texto. Sin el signo ", el comando de impresión cree que hola no era un trozo de texto, sino una palabra clave especial de Python. Lo importante es, que inmediatamente se notifica que has cometido un error. Al pulsar la flecha hacia arriba (o, en el intérprete FreeCAD, CTRL + flecha hacia arriba), puedes volver a la última orden que has escrito y corregirlo.

El intérprete de Python también incoEpora un sistema de ayuda. Prueba a escribir:

help("print")

Entonces obtendrás una descripción más larga y completa de todo lo que el comando print puede hacer.

Ahora dominamos por completo nuestro intérprete, y podemos empezar con cosas serias.

top

Variables

Por supuesto, imprimir "hola" no es muy interesante. Más interesante es la impresión de cosas que no conocía antes, o dejar que Python las busque para ti. Ahí es donde el concepto de variable entra en juego. Una variable es simplemente un valor que se almacenan bajo un nombre. Por ejemplo, escribe lo siguiente:

a = "hello"
print(a)

Supongo que entiendes lo que ocurrió, "guardaste" la cadena "hola" con el nombre a. Ahora, a ya no es un nombre desconocido más! Podemos utilizarlo en cualquier lugar, por ejemplo, en el comando de impresión. Podemos usar cualquier nombre que desees, respetando unas simples normas , como no usar espacios ni puntuación. Por ejemplo, podríamos escribir:

hello = "my own version of hello"
print(hello)

¿Ves? ahora hola no es una palabra indefinida más. ¿Qué pasa si, por una mala suerte terrible, elegiste un nombre que ya existe en Python? Supongamos que queremos almacenar nuestra cadena con el nombre de "print":

myVariable = "hello"
print(myVariable)
myVariable = "good bye"
print(myVariable)

Hemos cambiado el valor de miVariable. También podemos copiar variables:

var1 = "hello"
var2 = var1
print(var2)

Ten en cuenta que es interesante dar buenos nombres para las variables, ya que cuando vayas a escribir programas largos, después de un tiempo no te acordarás de para que era su variable llamada "a". Pero si la llamas, por ejemplo miMensajeBienvenida, cuando vuelvas a verlo recordarás fácilmente para que se utiliza.

El caso es muy importante. myVariable no es lo mismo que myvariable, la diferencia en mayúsculas / minúsculas v. Si ingresara print myvariable volvería con un error como no está definido.

top

Números

Por supuesto, debes saber que la programación es útil para tratar todo tipo de datos, y los números en especial, no sólo cadenas de texto. Una cosa es importante, Python debe saber con que tipo de datos está tratando. Vimos en nuestro ejemplo print hola, que el comando de impresión print reconoció nuestro cadena "hola". Eso se debe a que mediante el caracter ", le dijimos específicamente al comando de impresión print que lo que vendría después era una cadena de texto.

Siempre se puede comprobar que tipo de datos contiene una variable con la palabra clave especial de python: Type()

myVar = "hello"
type(myVar)

Nos dirá el contenido de myVar es "str", o una cadena en la jerga de python. Tenemos también otros tipos de datos, como números enteros y números en coma flotante:

firstNumber = 10
secondNumber = 20
print(firstNumber + secondNumber)
type(firstNumber)

Esto ya es mucho más interesante, ¿no? Ahora ya tenemos una potente calculadora! Mira bien cómo funciona, Python sabe que el 10 y 20 son números enteros. Así que se almacenan como "int", y Python puede hacer con ellos todo lo que puede hacer con números enteros. Mira los resultados de este:

firstNumber = "10"
secondNumber = "20"
print(firstNumber + secondNumber)

¿Ves? Estamos obligando a Python a considerar que nuestras dos variables no son números sino simples piezas de texto. Python puede unir dos fragmentos de texto en conjunto, pero no va a tratar de calcular el resultado de la suma. Pero estábamos hablando de números enteros. También hay números en coma flotante. La diferencia es que los números enteros no tienen parte decimal, mientras que los números en coma flotante pueden tener una parte decimal:

var1 = 13
var2 = 15.65
print("var1 is of type ", type(var1))
print("var2 is of type ", type(var2))

Int and Float pueden mezclarse sin problemas:

total = var1 + var2
print(total)
print(type(total))

Por supuesto que 'total' tiene decimales, ¿verdad? Por eso Python automáticamente decidió que el resultado es un float. En varios casos como éste, python decide automáticamente qué tipo dar al resultado. En otros casos no es así. Por ejemplo:

varA = "hello 123"
varB = 456
print(varA + varB)

Esto nos dará un error, varA es un string y varB es un int, y Python no sabe que hacer. Pero podemos obligar a Python a convertir entre tipos:

varA = "hello"
varB = 123
print(varA + str(varB))

Ahora los dos son strings, la operación se puede hacer! Fíjate que convertimos en "string" a varB en el momento de implimir, peo no cambiamos VarB. Si quisieramos cambiar varB permanentemente en un string, necesitariamos hacer así:

varB = str(varB)

Tambien podemos usar int() y float() para convertir en int y float si queremos:

varA = "123"
print(int(varA))
print(float(varA))

Habrás visto que en esta sección hemos usado el comando print de varias formas. Hemos impreso variables, sumas, varias cosas separadas por comas e incluso el resultado de otro comando Python como es type(). Tambien habrás notado que estos dos comandos:

type(varA)
print(type(varA))

dan exactamente el mismo resultado. Eso es porque estamos en un interprete, y todo es automáticamente impreso en la pantalla. Cuando escribamos programas mayores que corran fuera del interprete, no imprimirán automaticaemnte todo en la pantalla, por eso tendremos que usar el comando print. Pero desde ahora y hasta entonces, dejaremos de usar print aqui (iremos más rápido), de modo que escribiremos simplemente:

myVar = "hello friends"
myVar

top

Listas

Otro tipo de dato interesante son las listas. Las listas son, simplemente, listas de otros datos. Del mismo modo que definimos una cadena de texto, string, usando " ", definimos listas usando [ ]:

myList = [1, 2, 3]
type(myList)
myOtherList = ["Bart", "Frank", "Bob"]
myMixedList = ["hello", 345, 34.567]

Verás que pueden contener cualquier tipo de datos. Las listas son muy útiles porque pueden agrupar datos. Despues puede hacer muchas cosas con ellos, por ejemplo contarlos:

len(myOtherList)

u obtener un elemento de una lista:

myName = myOtherList[0]
myFriendsName = myOtherList[1]

Como vés, mientras el comando len() devuelve el número total de elementos en una lista, sus posiciones en la lista empiezan en 0. El primer elemento en una lista está simepre en la posición 0. Así, en myOtherList, "Bob" estará en la posición 2. Se pueden hacer muchas cosas con listas, como se muestra en aquí, como es ordenar sus contenidos, añadir o quitar elementos.

Una cosa interesante y divertida para ti: Un string es, en realidad, una lista de caracteres! Intenta hacer esto:

myvar = "hello"
len(myvar)
myvar[2]

Normalmente, todo lo que puedes hacer con listas, también puede hacerse con strings.

Además de strings, ints, floats y lists, hay más tipos de datos incorporados, como son diccionarios, o puedes incluso crear tus propios tipos con clases.

top

Indentación

Un uso típico de las listas es el de ojearlas y hacer algo con cada elemento. Por ejemplo, mira esto:

alldaltons = ["Joe", "William", "Jack", "Averell"]
for dalton in alldaltons:
    print(dalton + " Dalton")

Aquí iteramos (es jerga de programación!) en nuestra lista con el comando "for ... in ..." y hacemos algo con cada uno de los elementos. Observa la especial sintaxis: el comando for termina con : lo que indica que lo que siga será un bloque de uno o más comandos.

Inmediatamente después de que metas la línea de comando terminada en : el cursor donde se meten los comandos cambia a ... lo que indica que Python ha visto la línea terminada en : y que lo que siga será parte de ella.

How will Python know how many of the next lines will be to be executed inside the for...in operation? For that, Python uses indentation. That is, your next lines won't begin immediately. You will begin them with a blank space, or several blank spaces, or a tab, or several tabs. Other programming languages use other methods, like putting everything inside parenthesis, etc. As long as you write your next lines with the same indentation, they will be considered part of the for-in block. If you begin one line with 2 spaces and the next one with 4, there will be an error. When you finished, just write another line without indentation, or simply press Enter to come back from the for-in block

El indentado es estupendo, porque si los haces grandes (por ejemplo usando tabulador en lugar de espacios, porque es más grande), cuando se escribe un gran programa tendrás una visión clara de lo que se ejecuta dentro de cada cosa.

Veremos que muchos comandos distintos de los bloques for-in también puede tener sangría de código.

Los comandos for-in se pueden utilizar para muchas cosas que hay que hacer más de una vez. Por ejemplo se puede combinar con el comando range():

serie = range(1,11)
total = 0
print("sum")
for number in serie:
    print(number)
    total = total + number
print("----")
print(total)

(If you have been running the code examples in an interpreter by Copying and Pasting, you will find the previous block of text will throw an error. Instead, copy to the end of the indented block, i.e. the end of the line total = total + number and then paste to the interpreter. In the interpreter issue an <enter> until the three dot prompt disappears and the code runs. Then copy the final two lines into the interpreter followed by one or more <enter> The final answer should appear.)

If you would type into the interpreter help(range) you would see:

range(...)
    range(stop) -> list of integers
    range(start, stop[, step]) -> list of integers

Here the square brackets denote an optional parameter. However all are expected to be integers. Below we will force the range parameters to be an integer using int()

range(...)
    range(stop) -> list of integers
    range(start, stop[, step]) -> list of integers

Here the square brackets denote an optional parameter. However all are expected to be integers. Below we will force the step parameter to be an integer using int():

number = 1000
for i in range(0, 180 * number, int(0.5 * number)):
    print(float(i) / number)

O cosas mas complejas como esto:

alldaltons = ["Joe", "William", "Jack", "Averell"]
for n in range(4):
    print(alldaltons[n], " is Dalton number ", n)

El comando range() tambien tiene la extraña particularidad de que comienza con 0 (si no se especifica el número de inicio) y que su último número será uno menos del número final que le indique. Esto es, por supuesto, para que trabaje bien con otros comandos Python. Por ejemplo:

alldaltons = ["Joe", "William", "Jack", "Averell"]
total = len(alldaltons)
for n in range(total):
    print(alldaltons[n])

Otro interesante uso de los bloques indentados es con el comando if. If ejecuta el bloque de código solo si se cumple una determianda condición. Por ejemplo:

alldaltons = ["Joe", "William", "Jack", "Averell"]
if "Joe" in alldaltons:
    print("We found that Dalton!!!")

Por supuesto, esto siempre imprimirá la primera frase. Pero trata de sustituir la segunda línea por:

if "Lucky" in alldaltons:

Entonces no se imprime nada. También podemos especificar una clausula else:

alldaltons = ["Joe", "William", "Jack", "Averell"]
if "Lucky" in alldaltons:
    print("We found that Dalton!!!")
else:
    print("Such Dalton doesn't exist!")

top

Funciones

Los comandos estandard de Python no son tantos. En la actual version de Python hay unos 30, y ya conocemos algunos de ellos. ¿Pero, imagina que pudieramos inventar nuestros propios comandos? Pues podemos, y es sumamente fácil. De hecho, la mayoría de los módulos adicionales que puedes cargar en su instalación hacen eso. Añaden comandos que puedes usar. Un comando de usuario en Python se llama función y se crean así:

def printsqm(myValue):
    print(str(myValue) + " square meters")

printsqm(45)

Extremely simple: the def() command defines a new function. You give it a name, and inside the parenthesis you define arguments that we'll use in our function. Arguments are data that will be passed to the function. For example, look at the len() command. If you just write len() alone, Python will tell you it needs an argument. That is, you want len() of something, right? Then, for example, you'll write len(myList) and you'll get the length of myList. Well, myList is an argument that you pass to the len() function. The len() function is defined in such a way that it knows what to do with what is passed to it. Same as we did here.

El nombre "myValue" puede ser cualquier cosa, y sólo será utilizado dentro de la función. Es sólo un nombre que se le asigna al argumento para que puedas hacer algo con él, pero también sirve para que la función sepa cuantos argumentos debe esperar. Por ejemplo, si haces esto:

printsqm(45,34)

Habrá un error. Nuestra función fue programada para recibir un solo argumento, pero recibió dos, 45 y 34. En su lugar, podríamos hacer algo como esto:

def sum(val1, val2):
    total = val1 + val2
    return total

myTotal = sum(45, 34)

Hicimos una función que recibe dos argumentos, los suma, y devuelve ese valor. Devolver algo es muy útil, porque podemos hacer algo con el resultado, como almacenarlo en la variable myTotal. Por supuesto, ya que estamos en el intérprete y todo lo que hacemos se imprime, haciendo:

top

Módulos

Ahora que tenemos una buena idea de cómo funciona Python, necesitamos una última cosa: Cómo trabajar con archivos y módulos.

Hasta ahora, escribimos instrucciones de Python línea por línea en el intérprete, ¿verdad? ¿Y si pudiéramos escribir varias líneas juntas y ejecutarlas todas a la vez? Sin duda sería más práctico hacer cosas más complejas. Y podríamos salvar nuestro trabajo también. Bueno, eso también es extremadamente fácil. Simplemente abra un editor de texto (como el bloc de notas de Windows, Linux gedit, emacs o vi) y escriba todas sus líneas de Python, de la misma forma que las escribe en el intérprete, con sangrías, etc. Luego, guarde ese archivo en algún lugar , preferiblemente con una extensión .py. Eso es todo, tienes un programa completo de Python. Por supuesto, hay editores mucho mejores que el bloc de notas, pero es solo para mostrarle que un programa Python no es más que un archivo de texto.

Para hacer a Python ejecutar ese programa, hay cientos de maneras. En Windows, simplemente haz clic derecho en el archivo, abrirlo con Python, y ejecutarlo. Pero también se puede ejecutar desde el intérprete de Python en sí. Para ello, el intérprete debe saber dónde está tu programa .Py. En FreeCAD, la forma más fácil es colocar su programa en un lugar que el intérprete de Python de FreeCAD sabe por defecto, como la carpeta bin de FreeCAD, o cualquiera de las carpetas Mod. Supongamos que escribes un archivo así:

def sum(a,b):
    return a + b

print("myTest.py succesfully loaded")

y lo guardas como test.py en el directorio /bin de FreeCAD. Ahora, vamos a iniciar FreeCAD, y en la ventana del intérprete, escribe:

import myTest

sin la extensión. py. Esto simplemente ejecuta el contenido del archivo, línea por línea, como si se hubiera escrito en el intérprete. La función suma se creará, y el mensaje se imprimirá. Pero hay una gran diferencia: el comando de importación sirve no sólo para ejecutar programas escritos en los archivos, como el nuestro, sino también para cargar las funciones que tienen en el interior, de modo que estén disponibles para el intérprete. Los archivos que contienen funciones, como la nuestra, se llaman módulos.

Normalmente cuando escribimos una función sum() en el intérprete, simplemente se ejecuta, así:

sum(14,45)

como hicimos antes. Al importar un módulo que contiene nuestra función sum(), la sintaxis es un poco diferente. Hacemos:

myTest.sum(14,45)

Es decir, el módulo se importa como un "contenedor", y todas sus funciones se encuentran dentro. Esto es muy útil, ya que puedes importar una gran cantidad de módulos, y mantener todo bien organizado. Así que, básicamente, Allá donde veas algo.algoMas, con un punto intermedio, lo que significa es que algoMas está dentro de algo.

También podemos sacar la parte test, e importar nuestra función sum() directamente en el espacio principal del intérprete, así:

from myTest import *
sum(12,54)

Básicamente todos los módulos se comportan así. Importa un módulo, y ya puedes utilizar sus funciones así: module.function(argumento). Casi todos los módulos hacen eso: definen funciones, nuevos tipos de datos y clases que se pueden usar en el intérprete o en sus propios módulos de Python, porque nada impide que importes módulos dentro de tu módulo!

Una última cosa muy útil. ¿Cómo sabemos los módulos que tenemos, qué funciones se encuentran dentro y cómo utilizarlos (es decir, qué tipo de argumentos necesitan)? Vimos ya que Python tiene una función ayuda(). Si haces:

help("modules")

Nos dará una lista de todos los módulos disponibles. Podemos ahora escribir q (de quit) para salir de la ayuda interactiva, e importar cualquiera de ellos. Incluso puedes navegar por su contenido con el comando dir()

import math
dir(math)

Vamos a ver todas las funciones contenidas en el módulo de matemáticas, así como material extraño llamado __doc__, __file__, __name__. The __doc__ es extremadamente útil, es un texto de documentación. Cada función de un módulo (bien hecho) tiene un __doc__ que explica cómo usarlo. Por ejemplo, vemos que existe una función seno en el módulo de matemáticas. ¿Quieres saber cómo usarlo?

print(math.sin.__doc__)

(Puede que no sea evidente, pero a cada lado del documento hay dos caracteres de subrayado).

Y, por último, un último pequeño regalo: cuando trabajamos en un módulo nuevo o existente, es mejor reemplazar la extensión del archivo con py, como: myModule.FCMacro => myModule.py. A menudo queremos probarlo, así que lo cargaremos como se muestra arriba.

import importlib
importlib.reload(myTest)

Sin embargo, hay dos alternativas: dentro de una macro use las funciones execfile o exec de Python.

exec(open("C:/PathToMyMacro/myMacro.FCMacro").read())

top

Empezando con FreeCAD

Bien, creo que debes tener una buena idea de cómo funciona Python, y puedes empezar a explorar lo que FreeCAD puede ofrecer. Las funciones Python de FreeCAD están todas bien organizadas en diferentes módulos. Algunos de ellos están ya cargados (importados) cuando inicias FreeCAD. Así, que simplemente haz

dir()

top

Notes

  • FreeCAD was originally designed to work with Python 2. Since Python 2 reached the end of its life in 2020, future development of FreeCAD will be done exclusively with Python 3, and backwards compatibility will not be supported.
  • Much more information about Python can be found in the official Python tutorial and the official Python reference.

top

Template:Powerdocnavi/es


Archivos de guión de Python en FreeCAD

FreeCAD está construido desde cero para que sea totalmente controlado por archivos de guión (scripts) de 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 archivos de guión. Como resultado, FreeCAD es, probablemente, una de las aplicaciones de diseño para ingeniería más personalizables de las disponibles en la actualidad.

En su estado actual, sin embargo, FreeCAD tiene muy pocos comandos "nativos" para interactuar con los objetos 3D. Sobre todo porque se encuentra todavía en una fase temprana de desarrollo, pero también porque la filosofía que hay detrás es más la de proporcionar una plataforma para el desarrollo CAD que una aplicación para un uso específico. Pero la facilidad de usar archivos de guión de Python dentro de FreeCAD probablemente ayudará a que pronto veamos funcionalidades nuevas que desarrollen los "usuarios avanzados", o, como de costumbre, los usuarios que conocen un poco de programación en Python. Python es uno de los lenguajes interpretados más populares, y debido a que es generalmente considerado como sencillo de aprender, tu también puedes estar proto creando tus propias macros de "usuario avanzado" sobre FreeCAD.

Si no estás familiarizado con Python, te 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. Si no ves la ventana denominada 'Consola de Python' como se muestra más abajo, puedes activarla en el menú Vista -> Vistas -> Consola de Python para mostrar el interprete.

El intérprete

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

The FreeCAD Python interpreter

También, puedes 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 quieres añadir algo de esa clase), se abre una ventana del 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):

The FreeCAD class browser

Así que, comienza por esto escribiendo App. o Gui. y verás qué pasa. Otra forma más genérica de exploración del contenido de los módulos y las clases de Python es usar el comando print dir(). Por ejemplo, escribiendo print dir() listará todos los módulos cargados en FreeCAD. print Dir(App) te 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 has escrito antes. Para navegar en el historial de comandos, sólo tienes que utilizar CTRL + flecha arriba o CTRL + flecha abajo.

Al hacer clic derecho en la ventana del intérprete también tienes otras opciones, tales como copiar todo el historial (útil para experimentar con algo, y luego hacer un archivo de 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ás una entrada llamada "Módulos de 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 de FreeCAD, incluyendo Python y los módulos propios de FreeCAD, los módulos instalados por el sistema, y los módulos de FreeCAD adicionales. La documentación disponible depende del esfuerzo que cada desarrollador de los módulos puso en documentar su código pero, en general, los módulos de Python tienen la reputación de estar bastante bien documentados. Tu ventana de 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 de la interfaz gráfica de usuario, 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 los archivos de guiones de comandos del intérprete, con los nombres respectivos de FreeCAD y FreeCADGui.

  • En el módulo App, encontrarás 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ás herramientas para la gestión de la interfaz gráfica de usuario 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 de 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 de Python) te 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. Puedes 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 las cosas 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 tu 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. Ten en cuenta que la parte de interfaz gráfica de usuario 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, escribe:

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

donde "ObjectName" es el nombre de tu objeto. Tambien puedes poner:

myObject = App.ActiveDocument.ObjectName

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

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

donde "ObjectName" es el nombre de tu objeto. También puedes 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 tu trabajo reside en el interior de 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 tu documento. Puedes abrir varias ventanas, cada una mostrando tu trabajo con un factor de zoom diferente o un determinado punto de vista. Estas vistas forman parte del objeto Gui de tu documento.

Para acceder a la parte App del documento abierto actualmente (activo), teclea:

myDocument = App.ActiveDocument

Para crear un nuevo documento, teclea:

myDocument = App.newDocument("Document Name")

Para acceder a la parte GUI del documento abierto actualmente (active), teclea:

myGuiDocument = Gui.ActiveDocument

Para acceder a la vista actual, teclea:

myView = Gui.ActiveDocument.ActiveView

Utilizando módulos adicionales

Los módulos FreeCAD y FreeCADGui son exclusivamente responsables de la creación y mantenimiento de objetos en el documento de FreeCAD. Normalmente no hacen nada como crear o modificar geometría. Eso es porque esa geometría puede ser de diversos tipos, y así es manejada por módulos adicionales, cada uno responsable de manejar ciertos tipos de geometría. Por ejemplo, el Módulo de pieza utiliza el kernel de OpenCascade, y por tanto es capaz de crear y manipular geometría de tipo B-rep, la cual es para la que se ha construido OpenCascade. El Módulo de malla es capaz de construir y modificar objetos de malla. De ese modo, FreeCAD es capaz de manejar un amplio rango de tipos de objetos, que pueden coexistir todos en el mismo documento, y nuevos tipos se podrían añadir fácilmente en el futuro.

Creación de objetos

Cada módulo tiene su propio modo de tratar sus geometrías, pero algo que todos ellos normalmente pueden hacer es crear objetos en el documento. Pero el documento de FreeCAD es consciente de los tipos de objetos disponibles proporcionados por los módulos:

FreeCAD.ActiveDocument.supportedTypes()

listará todos los objetos que puedes crear. Por ejemplo, vamos a crear una malla (tratada por el módulo de malla) y una pieza (tratada por el módulo de pieza):

myMesh = FreeCAD.ActiveDocument.addObject("Mesh::Feature","myMeshName")
myPart = FreeCAD.ActiveDocument.addObject("Part::Feature","myPartName")

El primer argumento es el tipo de objeto, el segundo el nombre del objeto. Nuestros dos objetos parecen casi lo mismo: Aún no contienen geometría, y la mayoría de sus propiedades son iguales cuando los inspeccionas con dir(myMesh) y dir(myPart). Excepto por una cosa, myMesh tiene una propiedad "Mesh" y "Part" tiene una propiedad "Shape". Eso es donde la malla y la pieza son almacenadas. Por ejemplo, vamos a crear una pieza de cubo y almacenarla en nuestro objeto myPart:

import Part
cube = Part.makeBox(2,2,2)
myPart.Shape = cube

Podrías probar almacenando el cubo dentro de la propiedad Mesh del objeto myMesh, devolverá un error quejándose de un tipo erróneo. Eso es porque dichas propiedades están creadas para almacenar sólo un cierto tipo. En la propiedad Mesh de myMesh, sólo puedes almacenar algo creado con el módulo de malla. Observa que la mayoría de módulos también tienen un atajo para añadir su geometría al documento:

import Part
cube = Part.makeBox(2,2,2)
Part.show(cube)

Modificando objetos

La modificación de un objeto se hace del mismo modo:

import Part
cube = Part.makeBox(2,2,2)
myPart.Shape = cube

Ahora vamos a cambiar la forma por una mayor:

biggercube = Part.makeBox(5,5,5)
myPart.Shape = biggercube

Preguntando a los objetos

Siempre puedes mirar el tipo de un objeto así:

myObj = FreeCAD.ActiveDocument.getObject("myObjectName")
print myObj.TypeId

o saber si un objeto es derivado de uno de los básicos (característica de Pieza, característica de malla, etc):

print myObj.isDerivedFrom("Part::Feature")

Ahora puedes empezar a jugar con FreeCAD de verdad! Para ver lo que puedes hacer con el Módulo de pieza, lee la página Archivos de guión de Piezas, o la página Archivos de guión de mallas para trabajar con el Módulo de malla. Observa que, aunque los módulos de Pieza y Malla son los más completos y ampliamente utilizados, otros módulos como el Módulo de Boceto también tienen archivos de guión APIs que pueden ser útiles para ti. Para ver una lista completa de cada módulo y sus herramientas disponibles, visita la sección Category:API/es.

Template:Powerdocnavi/es


Introducción

En primer lugar tienes que importar el módulo Malla:

First of all you have to import the Mesh module:

import Mesh

Después de eso, ya tendrás acceso al módulo Malla y la clase Malla, que ofrecen las funciones del nucleo FreeCAD C++ Mesh-Kernel.

Creación y Carga

Para crear un objeto malla vacío sólo tienes que utilizar el constructor estándar:

mesh = Mesh.Mesh()

También puedes crear un objeto desde un archivo

mesh = Mesh.Mesh('D:/temp/Something.stl')

(Una lista de formatos de archivo compatibles se puede encontrar bajo 'Mallas' aquí.)

O también puedes crear la malla a partir de un conjunto de triángulos descrito por sus vértices:

planarMesh = [
# triangle 1
[-0.5000,-0.5000,0.0000],[0.5000,0.5000,0.0000],[-0.5000,0.5000,0.0000],
#triangle 2
[-0.5000,-0.5000,0.0000],[0.5000,-0.5000,0.0000],[0.5000,0.5000,0.0000],
]
planarMeshObject = Mesh.Mesh(planarMesh)
Mesh.show(planarMeshObject)

El núcleo de mallas, Mesh-Kernel, se encarga de crear una estructura topológica de datos correcta, ordenando conjuntamente los puntos coincidentes y los bordes.

Más adelante podrás ver cómo examinar y revisar los datos de la malla.

Modelado

Para crear geometrías regulares puedes utilizar el script de Python BuildRegularGeoms.py.

To create regular geometries you can use the Python script BuildRegularGeoms.py.

import BuildRegularGeoms

Esta secuencia de comandos proporciona métodos para definir cuerpos de revolución sencillos, como esferas, elipsoides, cilindros, toroides y conos. Y también tiene un método para crear un cubo simple. Para crear un toroide, por ejemplo, se puede hacer de la siguiente manera:

t = BuildRegularGeoms.Toroid(8.0, 2.0, 50) # list with several thousands triangles
m = Mesh.Mesh(t)

Los dos primeros parámetros definen los radios del toroide y el tercer parámetro es un factor de submuestreo relacionado con el número de triángulos que se han de crear. Cuanto mayor sea este valor, más suave es la forma y mejor acabado tiene el cuerpo.

m1, m2              # are the input mesh objects
m3 = Mesh.Mesh(m1)  # create a copy of m1
m3.unite(m2)        # union of m1 and m2, the result is stored in m3
m4 = Mesh.Mesh(m1)
m4.intersect(m2)    # intersection of m1 and m2
m5 = Mesh.Mesh(m1)
m5.difference(m2)   # the difference of m1 and m2
m6 = Mesh.Mesh(m2)
m6.difference(m1)   # the difference of m2 and m1, usually the result is different to m5

Por último, un ejemplo completo que calcula la intersección entre una esfera y un cilindro que corta a la esfera.

import Mesh, BuildRegularGeoms
sphere = Mesh.Mesh( BuildRegularGeoms.Sphere(5.0, 50) )
cylinder = Mesh.Mesh( BuildRegularGeoms.Cylinder(2.0, 10.0, True, 1.0, 50) )
diff = sphere
diff = diff.difference(cylinder)
d = FreeCAD.newDocument()
d.addObject("Mesh::Feature","Diff_Sphere_Cylinder").Mesh=diff
d.recompute()

Examen y pruebas

Escribe tus propios algoritmos

Exportación

Puedes incluso escribir la malla en un módulo de Python:

m.write("D:/Develop/Projekte/FreeCAD/FreeCAD_0.7/Mod/Mesh/SavedMesh.py")
import SavedMesh
m2 = Mesh.Mesh(SavedMesh.faces)

Interfaces gráficas de usuario relacionadas

Ajustes y pruebas

Una extensa, aunque dificil de usar, librería de archivos de guión relacionados con mallas son los scripts de prueba del módulo Malla. En esta unidad, literalmente todos los métodos son invocados, y se ajustan todas las propiedades y atributos. Así que si eres lo suficientemente audaz, echa un vistazo al Módulo de prueba de unidades.

An extensive (though hard to use) source of Mesh related scripting are the unit test scripts of the Mesh-Module. In this unit tests literally all methods are called and all properties/attributes are tweaked. So if you are bold enough, take a look at the Unit Test module.

See also Mesh API

Template:Powerdocnavi/es


Base ExampleCommandModel.png Tutorial

Tema
Programming
Nivel
Intermediate
Tiempo para completar
Autor
Versión de FreeCAD
Archivo(s) de ejemplo(s)



Esta página describe diversos métodos para crear y modificar formas de piezas desde Python. Antes de leer esta página, si eres nuevo en Python, es una buena idea leer la Introducción a Python y como funcionan los archivos de guión en FreeCAD.

Introducción

Aquí le explicamos cómo controlar el Módulo de Pieza directamente desde el intérprete de Python de FreeCAD, o desde cualquier archivo de guión externo. Asegúrate de navegar por la sección Archivos de guión y las páginas Conceptos básicos de archivos de guión en FreeCAD si necesitas más información acerca de cómo funcionan los archivos de guión de Python en FreeCAD.

Diagrama de clases

Ésta es una descripción Lenguaje Unificado de Modelado (UML) de las clases más importante del módulo de Pieza:

Python classes of the Part module

Geometría

Los objetos geométricos son la piedra angular de todos los objetos topológicos:

  • geom clase base de los objetos geométricos
  • line Una línea recta en 3D, definido por el punto de inicio y el punto final
  • circle Círculo o segmento de círculo definido por un punto centro y los puntos de inicio y final
  • ...... Y en breve más cosas

Topología

Los siguientes tipos de datos topológicos están disponibles:

  • compound Un grupo de cualquier tipo de objetos topológicos.
  • compsolid Un sólido compuesto es un grupo de sólidos concetados por sus caras. Es una extensión de las nociones de WIRE y SHELL en el ámbito de los sólido.
  • solid Una región del espacio limitada por shells. Es tridimensional.
  • shell Un conjunto de caras conectadas por sus bordes. Una shell puede ser abierta o cerrada.
  • face En 2D es parte de un plano; en 3D es parte de una superficie. Su geometría está limitada por sus contornos. Es un ente bidimensional.
  • wire Un grupo de bordes conectados por sus vértices. Puede tener un contorno abierto o cerrado, dependiendo que que sus bordes estén o no conectados.
  • edge Un elemento topológico que corresponde a una curva limitada. Un borde está normalmente limitado por vértices. Es un ente unidimensional.
  • vertex Un elemento topológico que se corresponde con un punto. Tiene dimensión cero.
  • shape Un concepto genérico que abarca todos los anteriores.

Ejemplo rápido: Creación de topologías básicas

Wire


Crearemos ahora una topología por construcción de geometría simple. Como un caso de estudio utilizaremos una pieza como se puede ver en la imagen que consiste en cuatro vértices, dos circunferencias y dos líneas.

Creación de geometría

Primero tenemos que crear las distintas partes de la geometría de este contorno. Y tenemos que tener cuidado de que los vértices de las partes de la geometría están en la misma posición. De otro modo después podríamos no ser capaces de conectar las partes de la geometría en una topología!

Así que primero creamos los puntos:

from FreeCAD import Base
V1 = Base.Vector(0,10,0)
V2 = Base.Vector(30,10,0)
V3 = Base.Vector(30,-10,0)
V4 = Base.Vector(0,-10,0)

Arco

Circle


Para crear un arco de circunferencia crearemos puntos de ayuda y crearemos el arco a través de tres puntos:

VC1 = Base.Vector(-10,0,0)
C1 = Part.Arc(V1,VC1,V4)
# and the second one
VC2 = Base.Vector(40,0,0)
C2 = Part.Arc(V2,VC2,V3)

Línea

Line


La línea puede crearse de forma muy simple a partir de los puntos:

L1 = Part.LineSegment(V1,V2)
# and the second one
L2 = Part.LineSegment(V3,V4)

Note: in FreeCAD 0.16 Part.Line was used, for FreeCAD 0.17 Part.LineSegment has to be used

Poniendo todo junto

El último paso es poner los elementos base de la geometría juntos y formar una forma topológica:

S1 = Part.Shape([C1,L1,C2,L2])

Crear un prisma

Ahora extruir el contorno en una dirección y crear una forma 3D real:

W = Part.Wire(S1.Edges)
P = W.extrude(Base.Vector(0,0,10))

Mostrar todo

Part.show(P)

Creación de formas básicas

Puedes crear fácilmente objetos topológicos simples con los métodos "make...()" del Módulo Parte:

b = Part.makeBox(100,100,100)
Part.show(b)

Otros métodos make...() disponibles:

  • makeBox(l,w,h) -- construye una caja ubicada en p y apuntando en la dirección d con las dimensiones (l, w, h).
  • makeCircle(radius) -- Hace un círculo con un radio dado.
  • makeCone(radius1,radius2,height) -- Hace un cono con un radio y altura dados.
  • makeCylinder(radius,height) -- Hace un cilindro con un radio y altura dados.
  • makeLine((x1,y1,z1),(x2,y2,z2)) -- Hace una línea entre 2 puntos
  • makePlane(length,width) -- Hace un plano con longitud y anchura dados.
  • makePolygon(list) -- Hace un polígono con una lista de puntos
  • makeSphere(radius) -- Hace una esfera con un radio dado.
  • makeTorus(radius1,radius2) -- Hace un toro con sus radios dados.

Mira la página APIde piezas para una lista completa de los métodos disponibles del módulo de pieza.

Importing the needed modules

Primero tenemos que importar el módulo de piezas así podremos utilizar su contenido en Python. También importamos el módulo base desde dentro del módulo de FreeCAD:

import Part
from FreeCAD import Base

Creación de un Vector

Los Vectores son una de las piezas de información más importantes cuando se construyen formas. Contienen 3 números normalmente (pero no necesariamente siempre) las coordenadas cartesianas X, Y y Z. Puedes crear un vector así:

myVector = Base.Vector(3,2,0)

Simplemente creamos un vector en las coordenadas X=3, Y=2, Z=0. En el módulo de pieza, los vectores se utilizan en todas partes. Las formas de las piezas también utilizan otro tipo de representaciones de punto, llamada Vértice, el cual en realidad no es más que un contenedor para un vector. Puedes acceder al vector de un vértice así:

myVertex = myShape.Vertexes[0]
print myVertex.Point
> Vector (3, 2, 0)

Creación de una arista

Un borde no es otra cosa mas que una linea entre dos vértices:

edge = Part.makeLine((0,0,0), (10,0,0))
edge.Vertexes
> [<Vertex object at 01877430>, <Vertex object at 014888E0>]

Nota: También puedes crear una arista pasándole dos vértices.

vec1 = Base.Vector(0,0,0)
vec2 = Base.Vector(10,0,0)
line = Part.LineSegment(vec1,vec2)
edge = line.toShape()

Se puede determinar la longitud y el centro de un borde así:

edge.Length
> 10.0
edge.CenterOfMass
> Vector (5, 0, 0)

Poniendo la forma en la pantalla

Hemos creado un objeto arista, pero no aparece en ninguna parte de la pantalla. Esto es porque simplemente manejamos objetos de Python aquí. La escena 3D de FreeCAD sólo muestra lo que le digas que se muestre. Para hacerlo, utilizamos este simple método:

Part.show(edge)

Un objeto se creará en nuestro documento de FreeCAD, y nuestra forma "edge" será atribuido a él. Utiliza esto si es momento para mostrar tu creación en la pantalla.

Creación de un contorno

Un contorno es una línea de múltiples aristas y se puede crear a partir de una lista de aristas, o incluso de una lista de contornos:

edge1 = Part.makeLine((0,0,0), (10,0,0))
edge2 = Part.makeLine((10,0,0), (10,10,0))
wire1 = Part.Wire([edge1,edge2]) 
edge3 = Part.makeLine((10,10,0), (0,10,0))
edge4 = Part.makeLine((0,10,0), (0,0,0))
wire2 = Part.Wire([edge3,edge4])
wire3 = Part.Wire([wire1,wire2])
wire3.Edges
> [<Edge object at 016695F8>, <Edge object at 0197AED8>, <Edge object at 01828B20>, <Edge object at 0190A788>]
Part.show(wire3)

Part.show(wire3) mostrará las 4 aristas que componen nuestro contorno. Otra información útil se puede recuperar fácilmente:

wire3.Length
> 40.0
wire3.CenterOfMass
> Vector (5, 5, 0)
wire3.isClosed()
> True
wire2.isClosed()
> False

Creación de una cara

Sólo serán válidas las caras creadas a partir de contornos cerrados. En este ejemplo, wire3 es un contorno cerrado pero wire2 no es un contorno cerrado (mira más arriba)

face = Part.Face(wire3)
face.Area
> 99.999999999999972
face.CenterOfMass
> Vector (5, 5, 0)
face.Length
> 40.0
face.isValid()
> True
sface = Part.Face(wire2)
face.isValid()
> False

Sólo las caras tendrán un área, ni los contornos ni las aristas.

Creación de una circunferencia

Una circunferencia se puede crear de forma tan simple como esta:

circle = Part.makeCircle(10)
circle.Curve
> Circle (Radius : 10, Position : (0, 0, 0), Direction : (0, 0, 1))

Si deseas crearlo en cierta posición y con cierta dirección:

ccircle = Part.makeCircle(10, Base.Vector(10,0,0), Base.Vector(1,0,0))
ccircle.Curve
> Circle (Radius : 10, Position : (10, 0, 0), Direction : (1, 0, 0))

ccircle se creará a una distancia de 10 en el eje x desde el origen, y estará orientado hacia el eje x. Nota: makeCircle sólo acepta Base.Vector() para posición y normal, pero no admite tuplas. Tambien puedes crear una parte de una circunferencia dando su ángulo de inicio y fin, así:

from math import pi
arc1 = Part.makeCircle(10, Base.Vector(0,0,0), Base.Vector(0,0,1), 0, 180)
arc2 = Part.makeCircle(10, Base.Vector(0,0,0), Base.Vector(0,0,1), 180, 360)

Juntando arc1 y arc2 obtendremos una circunferencia. Los ángulos deberán indicarse en grados, si los tienes en radianes simplemente conviertelos según la fórmula: degrees = radians * 180/PI o usando el módulo Python de matemáticas (después de importarlo, obviamente):

degrees = math.degrees(radians)

Creación de un arco por varios puntos

Desafortunadamente no hay ninguna función makeArc pero tenemos la función Part.Arc para crear un arco a lo largo de tres puntos. Básicamente se puede suponer como un arco de unión entre el punto de partida y el punto final, pasando por el punto medio. Part.Arc crea un objeto arco en el que .toShape() tiene que ser llamado para obtener el objeto arista, del mismo modo como utilizamos Part.Line en lugar de Part.makeLine.

arc = Part.Arc(Base.Vector(0,0,0),Base.Vector(0,5,0),Base.Vector(5,5,0))
arc
> <Arc object>
arc_edge = arc.toShape()

Arc solo acepta puntos como Base.Vector() no acepta tuplas. arc_edge es lo que queremos que podemos mostrar utilizando Part.show(arc_edge). También puedes obtener un arco utilizando una porción de una circunferencia:

arc_edge es lo que queríamos conseguir, y podemos visualizar utilizando Part.show (arc_edge). Si desea una pequeña parte de un círculo como un arco, también es posible:

from math import pi
circle = Part.Circle(Base.Vector(0,0,0),Base.Vector(0,0,1),10)
arc = Part.Arc(circle,0,pi)

Los arcos son aristas válidas, como las líneas. Así que también pueden utilizarse en los contornos.

Creación de un polígono

Un polígono es simplemente un contorno con múltiples aristas rectas. La función makePolygon toma una lista de puntos y crea un contorno a través de dichos puntos:

lshape_wire = Part.makePolygon([Base.Vector(0,5,0),Base.Vector(0,0,0),Base.Vector(5,0,0)])

Creating a Bézier curve

Bézier curves are used to model smooth curves using a series of poles (points) and optional weights. The function below makes a Part.BezierCurve from a series of FreeCAD.Vector points. (Note: when "getting" and "setting" a single pole or weight, indices start at 1, not 0.)

def makeBCurveEdge(Points):
   geomCurve = Part.BezierCurve()
   geomCurve.setPoles(Points)
   edge = Part.Edge(geomCurve)
   return(edge)

Creación de un plano

Un plano es simplemente una superficie rectangular plana. El método utilizado para crear uno es este: makePlane(length,width,[start_pnt,dir_normal]). Por defecto start_pnt = Vector(0,0,0) y dir_normal = Vector(0,0,1). Utilizando dir_normal = Vector(0,0,1) crearemos el plano orientado hacia el eje Z, mientras que con dir_normal = Vector(1,0,0) crearemos el plano orientado hacia el eje X:

plane = Part.makePlane(2,2)
plane
><Face object at 028AF990>
plane = Part.makePlane(2, 2, Base.Vector(3,0,0), Base.Vector(0,1,0))
plane.BoundBox
> BoundBox (3, 0, 0, 5, 0, 2)

BoundBox es un prisma encerrando el plano con una diagonal empezando en (3,0,0) y terminando en (5,0,2). Aquí el espesor de BoundBox en el eje Y es cero, ya que nuestra forma es totalmente plana.

Nota: makePlane sólo acepta Base.Vector() para start_pnt y dir_normal pero no tuplas

Creación de una elipse

Para crear una elipse existen varios métodos:

Part.Ellipse()

Crea una elipse cuyo radio mayor es 2 y el radio menor 1 con centro en el (0,0,0)

Part.Ellipse(Ellipse)

Crea una copia de la elipse dada

Part.Ellipse(S1,S2,Center)

Crea una elipse centrada en el punto Center, donde el plano de la elipse está definido por Center, S1 y S2, su eje mayor está definido por Center y S1, su radio mayor es la distancia entre Center y S1, y su radio menor es la distancia entre S2 y el eje mayor.

Part.Ellipse(Center,MajorRadius,MinorRadius)

Crea una elipse con radios mayor y menor MajorRadius y MinorRadius respectivamente, y ubicada en el plano definido por Center y la normal (0,0,1)

eli = Part.Ellipse(Base.Vector(10,0,0),Base.Vector(0,5,0),Base.Vector(0,0,0))
Part.show(eli.toShape())

En el código de arriba hemos pasado S1, S2 y center. De forma similar a Arc, Ellipse también crea un objeto elipse pero no una arista, así que tenemos que convertirlo en una arista utilizando toShape() para mostrarlo.

Nota: Arc sólo acepta Base.Vector() para puntos pero no tuplas

eli = Part.Ellipse(Base.Vector(0,0,0),10,5)
Part.show(eli.toShape())

para el constructor de la elipse de arriba hemos pasado el centro, MajorRadius y MinorRadius

Creación de un toro

Utilizando el método makeTorus(radius1,radius2,[pnt,dir,angle1,angle2,angle]). Por defecto pnt=Vector(0,0,0),dir=Vector(0,0,1),angle1=0,angle2=360 y angle=360. Considera un toro como un pequeño circulo barrido a lo largo de una circunferencia grande. Radius1 es el radio de la circunferencia grande, radius2 es el radio del círculo pequeño, pnt es el centro del toro y dir es la dirección normal. angle1 y angle2 son ángulos en radianes para el círculo pequeño, el último parámetro angle es para hacer una sección del toro:

torus = Part.makeTorus(10, 2)

El código de arriba creará un toro con diámetro 20 (radio 10) y espesor 4 (radio del círculo pequeño 2)

tor=Part.makeTorus(10, 5, Base.Vector(0,0,0), Base.Vector(0,0,1), 0, 180)

El código de arriba creará una sección del toro

tor=Part.makeTorus(10, 5, Base.Vector(0,0,0), Base.Vector(0,0,1), 0, 360, 180)

El código de arriba creará un semi toro, sólo el último parámetro se ha cambiado, dando el valor 180 creará el toro desde 0 hasta 180, eso es, medio toro.

Creación de un cubo o prisma

Utilizando makeBox(length,width,height,[pnt,dir]). Por defecto pnt=Vector(0,0,0) y dir=Vector(0,0,1)

box = Part.makeBox(10,10,10)
len(box.Vertexes)
> 8

Creación de una esfera

Utilizando makeSphere(radius,[pnt, dir, angle1,angle2,angle3]). Por defecto pnt=Vector(0,0,0), dir=Vector(0,0,1), angle1=-90, angle2=90 y angle3=360. angle1 y angle2 son el punto vertical mínimo y máximo de la esfera, angle3 es el diámetro de la esfera.

sphere = Part.makeSphere(10)
hemisphere = Part.makeSphere(10,Base.Vector(0,0,0),Base.Vector(0,0,1),-90,90,180)

Creación de un cilindro

Utilizando makeCylinder(radius,height,[pnt,dir,angle]). Por defecto pnt=Vector(0,0,0),dir=Vector(0,0,1) y angle=360

cylinder = Part.makeCylinder(5,20)
partCylinder = Part.makeCylinder(5,20,Base.Vector(20,0,0),Base.Vector(0,0,1),180)

Creación de un cono

Utilizando makeCone(radius1,radius2,height,[pnt,dir,angle]). Por defecto pnt=Vector(0,0,0), dir=Vector(0,0,1) y angle=360

cone = Part.makeCone(10,0,20)
semicone = Part.makeCone(10,0,20,Base.Vector(20,0,0),Base.Vector(0,0,1),180)

Modificando formas

Existen diversos métodos para modificar formas. Algunas son simples operaciones de transformación como mover o rotar formas, otras son más complejas, como la unión y diferencia de una forma y otra. are simple transformation operations such as moving or rotating shapes, other are more complex, such as unioning and subtracting one shape from another. Tenlo en cuenta

Operaciones de transformación

Traslación de una forma

Traslación es el acto de mover una forma de una situación a otra. Cualquier forma (aristas, caras, cubos, etc...) se puede trasladar del mismo modo:

myShape = Part.makeBox(2,2,2)
myShape.translate(Base.Vector(2,0,0))

Esto moverá nuestra forma "myShape" 2 unidades en la dirección del eje X.

Rotación de una forma

Para rotar una forma, necesitas especificar el centro de rotación, el eje, y el ángulo de rotación:

myShape.rotate(Vector(0,0,0),Vector(0,0,1),180)

El código de arriba rotará la forma 180 grados alrededor del eje Z.

Transformaciones genéricas con matrices

Una matriz es un modo muy conveniente de almacenar transformaciones en el mundo 3D. En una simple matriz, puedes establecer traslaciones, rotaciones y valores de escala a ser aplicados a un objeto. Por ejemplo:

myMat = Base.Matrix()
myMat.move(Base.Vector(2,0,0))
myMat.rotateZ(math.pi/2)

Nota: Las matrices de FreeCAD funcionan en radianes. También, casi todas las operaciones de matrices que toman un vector pueden tomar 3 números, así estas dos líneas hacen lo mismo:

myMat.move(2,0,0)
myMat.move(Base.Vector(2,0,0))

Cuando nuestra matriz es establecida, podemos aplicarla a nuestra forma. FreeCAD proporciona 2 métodos para hacerlo: transformShape() y transformGeometry(). La diferencia es que con el primero, estas seguro de que no ocurrirá ninguna deformación (mira "escalando una forma" más abajo). Podemos aplicar nuestra transformación así:

myShape.transformShape(myMat)

o

myShape.transformGeometry(myMat)

Escalando una forma

Escalando una forma es una operación más peligrosa porque, a diferencia de la traslación o rotación, un escalado no uniforme (con diferentes valores para los ejes X,Y y Z) puede modificar la estructura de la forma. Por ejemplo, escalando una circunferencia con un valor horizontal superior al vertical la transformará en una elipse, que se comporta matemáticamente de forma muy diferente. Para el escalado, no podemos utilizar transformShape, tenemos que usar transformGeometry():

myMat = Base.Matrix()
myMat.scale(2,1,1)
myShape=myShape.transformGeometry(myMat)

Operaciones Booleanas

Diferencia

La diferencia de una forma con otra se llama "corte" en el argot de OCC/FreeCAD y se hace así:

cylinder = Part.makeCylinder(3,10,Base.Vector(0,0,0),Base.Vector(1,0,0))
sphere = Part.makeSphere(5,Base.Vector(5,0,0))
diff = cylinder.cut(sphere)

Intersección

del mismo modo, la intersección entre dos formas es denominada "común" y se hace de este modo:

cylinder1 = Part.makeCylinder(3,10,Base.Vector(0,0,0),Base.Vector(1,0,0))
cylinder2 = Part.makeCylinder(3,10,Base.Vector(5,0,-5),Base.Vector(0,0,1))
common = cylinder1.common(cylinder2)

Unión

La unión se llama "fusión" y funciona del mismo modo:

cylinder1 = Part.makeCylinder(3,10,Base.Vector(0,0,0),Base.Vector(1,0,0))
cylinder2 = Part.makeCylinder(3,10,Base.Vector(5,0,-5),Base.Vector(0,0,1))
fuse = cylinder1.fuse(cylinder2)

Sección

Una sección es la intersección entre una forma de un sólido y una forma de un plano. Devolverá una curva de intersección, un componente con aristas

cylinder1 = Part.makeCylinder(3,10,Base.Vector(0,0,0),Base.Vector(1,0,0))
cylinder2 = Part.makeCylinder(3,10,Base.Vector(5,0,-5),Base.Vector(0,0,1))
section = cylinder1.section(cylinder2)
section.Wires
> []
section.Edges
> [<Edge object at 0D87CFE8>, <Edge object at 019564F8>, <Edge object at 0D998458>, 
 <Edge  object at 0D86DE18>, <Edge object at 0D9B8E80>, <Edge object at 012A3640>, 
 <Edge object at 0D8F4BB0>]

Extrusión

Extrusión es el acto de "empujar" una forma plana en determinada dirección resultando en un cuerpo sólido. Piensa en una círculo convirtiéndose en un tubo:

circle = Part.makeCircle(10)
tube = circle.extrude(Base.Vector(0,0,2))

Si tu círculo está hueco, obtendrás un tubo hueco. Si no es hueco, obtendrás un cilindro sólido:

wire = Part.Wire(circle)
disc = Part.Face(wire)
cylinder = disc.extrude(Base.Vector(0,0,2))

Exploración de formas

Puedes explorar fácilmente la estructura de datos topológicos:

import Part
b = Part.makeBox(100,100,100)
b.Wires
w = b.Wires[0]
w
w.Wires
w.Vertexes
Part.show(w)
w.Edges
e = w.Edges[0]
e.Vertexes
v = e.Vertexes[0]
v.Point

Escribiendo las líneas de arriba en el interprete de Python, conseguirás una buena comprensión de la estructura de los objetos de piezas. Aquí, nuestro comando makeBox() crea una forma sólida. Este sólido, como todos los sólidos de piezas, contiene caras. Las caras siempre contienen contornos, que son listas de aristas que bordean la cara. Cada cara tiene al menos un contorno cerrado (puede tener más si la cara tiene huecos). En el contorno, podemos mirar en cada arista de forma separada, y dentro de cada arista, podemos ver los vértices. Las aristas rectas tienen sólo dos vértices, obviamente.

Análisis de aristas

En el caso de una arista con una curva arbitraria, es más probable que quieras hacer una discretización. En FreeCAD las aristas son parametrizadas por sus longitudes. Eso significa que puedes recorrer una arista/curva por su longitud:

import Part
box = Part.makeBox(100,100,100)
anEdge = box.Edges[0]
print anEdge.Length

Ahora puedes acceder a un montón de propiedades de la arista utilizando la longitud como una posición. Eso significa que si la arista es de 100mm de longitud el punto inicial es y la posición final es 100.

anEdge.tangentAt(0.0)      # tangent direction at the beginning
anEdge.valueAt(0.0)        # Point at the beginning
anEdge.valueAt(100.0)      # Point at the end of the edge
anEdge.derivative1At(50.0) # first derivative of the curve in the middle
anEdge.derivative2At(50.0) # second derivative of the curve in the middle
anEdge.derivative3At(50.0) # third derivative of the curve in the middle
anEdge.centerOfCurvatureAt(50) # center of the curvature for that position
anEdge.curvatureAt(50.0)   # the curvature
anEdge.normalAt(50)        # normal vector at that position (if defined)

Utilizando la selección

Aquí vemos ahora cómo podemos utilizar la selección que el usuario hizo en la vista. Antes de nada creamos un cubo y lo mostramos en la vista

import Part
Part.show(Part.makeBox(100,100,100))
Gui.SendMsgToActiveView("ViewFit")

Selecciona ahora algunas caras o aristas. Con este archivo de guión puedes iterar todos los objetos seleccionados y sus subelementos:

for o in Gui.Selection.getSelectionEx():
	print o.ObjectName
	for s in o.SubElementNames:
		print "name: ",s
	for s in o.SubObjects:
		print "object: ",s

Selecciona algunas aristas y este archivo de guión calculará la longitud:

length = 0.0
for o in Gui.Selection.getSelectionEx():
	for s in o.SubObjects:
		length += s.Length
print "Length of the selected edges:" ,length

Examen completo: La botella OCC

Un ejemplo típico encontrado en la página de primeros pasos de OpenCasCade es cómo construir una botella. Este es un buen ejercicio también para FreeCAD. En realidad, puedes seguir nuestro ejemplo de abajo y la página de OCC simultáneamente, comprenderás bien cómo están implementadas las estructuras de OCC en FreeCAD. El archivo de guión completo de abajo está también incluido en la instalación de FreeCAD (dentro del directorio Mod/Part) y puede llamarse desde el interprete de Python escribiendo:

import Part
import MakeBottle
bottle = MakeBottle.makeBottle()
Part.show(bottle)

El archivo de guión completo

Aquí está el archivo de guión completo MakeBottle:

import Part, FreeCAD, math
from FreeCAD import Base

def makeBottle(myWidth=50.0, myHeight=70.0, myThickness=30.0):
   aPnt1=Base.Vector(-myWidth/2.,0,0)
   aPnt2=Base.Vector(-myWidth/2.,-myThickness/4.,0)
   aPnt3=Base.Vector(0,-myThickness/2.,0)
   aPnt4=Base.Vector(myWidth/2.,-myThickness/4.,0)
   aPnt5=Base.Vector(myWidth/2.,0,0)
   
   aArcOfCircle = Part.Arc(aPnt2,aPnt3,aPnt4)
   aSegment1=Part.LineSegment(aPnt1,aPnt2)
   aSegment2=Part.LineSegment(aPnt4,aPnt5)
   aEdge1=aSegment1.toShape()
   aEdge2=aArcOfCircle.toShape()
   aEdge3=aSegment2.toShape()
   aWire=Part.Wire([aEdge1,aEdge2,aEdge3])
   
   aTrsf=Base.Matrix()
   aTrsf.rotateZ(math.pi) # rotate around the z-axis
   
   aMirroredWire=aWire.transformGeometry(aTrsf)
   myWireProfile=Part.Wire([aWire,aMirroredWire])
   myFaceProfile=Part.Face(myWireProfile)
   aPrismVec=Base.Vector(0,0,myHeight)
   myBody=myFaceProfile.extrude(aPrismVec)
   myBody=myBody.makeFillet(myThickness/12.0,myBody.Edges)
   neckLocation=Base.Vector(0,0,myHeight)
   neckNormal=Base.Vector(0,0,1)
   myNeckRadius = myThickness / 4.
   myNeckHeight = myHeight / 10
   myNeck = Part.makeCylinder(myNeckRadius,myNeckHeight,neckLocation,neckNormal)	
   myBody = myBody.fuse(myNeck)
   
   faceToRemove = 0
   zMax = -1.0
   
   for xp in myBody.Faces:
       try:
           surf = xp.Surface
           if type(surf) == Part.Plane:
               z = surf.Position.z
               if z > zMax:
                   zMax = z
                   faceToRemove = xp
       except:
           continue
   
   myBody = myBody.makeFillet(myThickness/12.0,myBody.Edges)
   
   return myBody

el = makeBottle()
Part.show(el)

Explicación detallada

import math
import Part
import FreeCAD
from FreeCAD import Base

Necesitaremos, desde luego, el módulo de piezas, pero también el módulo FreeCAD.Base, que contiene estructuras básicas de FreeCAD como vectores y matrices.

def makeBottle(myWidth=50.0, myHeight=70.0, myThickness=30.0):
    aPnt1 = Base.Vector(-myWidth/2.,0,0)
    aPnt2 = Base.Vector(-myWidth/2.,-myThickness/4.,0)
    aPnt3 = Base.Vector(0,-myThickness/2.,0)
    aPnt4 = Base.Vector(myWidth/2.,-myThickness/4.,0)
    aPnt5 = Base.Vector(myWidth/2.,0,0)

Aquí definimos nuestra función makeBottle. Esta función se puede llamar sin argumentos, como hicimos arriba, en cuyo caso se utilizaran los valores por defecto para ancho, alto, y espesor. Luego, definimos un conjunto de puntos que serán utilizados para construir nuestro perfil base.

...
    aArcOfCircle = Part.Arc(aPnt2,aPnt3, aPnt4)
    aSegment1 = Part.LineSegment(aPnt1, aPnt2)
    aSegment2 = Part.LineSegment(aPnt4, aPnt5)

Aquí en realidad definimos la geometría: un arco, creado por 3 puntos, y dos segmentos de línea, creados por 2 puntos.

...
    aEdge1 = aSegment1.toShape()
    aEdge2 = aArcOfCircle.toShape()
    aEdge3 = aSegment2.toShape()
    aWire = Part.Wire([aEdge1, aEdge2, aEdge3])

Recuerdas la diferencia entre geometría y formas? Aquí construimos formas a partir de nuestra geometría de construcción. 3 aristas (las aristas pueden ser rectas o curvas), luego un contorno creado a partir de dichas tres aristas.

...
    aTrsf = Base.Matrix()
    aTrsf.rotateZ(math.pi) # rotate around the z-axis
    aMirroredWire = aWire.transformGeometry(aTrsf)
    myWireProfile = Part.Wire([aWire, aMirroredWire])

Hasta ahora construimos sólo medio perfil. Más sencillo que construir el perfil completo del mismo modo, simplemente podemos crear una simetría de lo que hicimos, y pegar ambas partes. Así primero creamos una matriz. Una matriz es un modo muy común para aplicar transformaciones a objetos en el mundo 3D, ya que puede contener en una estructura todas las transformaciones básicas que los objetos pueden sufrir (mover, rotar y escalar). Aquí, después de crear la matriz, creamos una simétrica, y creamos una copia de nuestro contorno con esa matriz de transformación aplicada. Ahora tenemos 2 contornos, y podemos crear un tercer contorno a partir de ellos, ya que los contornos son en realidad listas de aristas.

...
    myFaceProfile = Part.Face(myWireProfile)
    aPrismVec = Base.Vector(0,0,myHeight)
    myBody = myFaceProfile.extrude(aPrismVec)
    myBody = myBody.makeFillet(myThickness/12.0,myBody.Edges)

Ahora que tenemos un contorno cerrado, se puede convertir en una cara. Una vez que tengamos una cara, podemos extruirla. Haciendo esto, creamos un sólido. Entonces aplicamos un pequeño redondeo a nuestro objeto porque queremos crear un buen diseño, no es así?

...
    neckLocation = Base.Vector(0, 0, myHeight)
    neckNormal = Base.Vector(0, 0, 1)
    myNeckRadius = myThickness / 4.0
    myNeckHeight = myHeight / 10
    myNeck = Part.makeCylinder(myNeckRadius, myNeckHeight, neckLocation, neckNormal)

El cuerpo de nuestra botella está creado, aún tenemos que crear el cuello. Así que creamos un nuevo sólido, con un cilindro.

...
    myBody = myBody.fuse(myNeck)

La operación de fusión, que en otras aplicaciones es llamada unión, es muy potente. Tendrá cuidado de pegar lo que necesita ser pegado y eliminar las partes que necesiten ser eliminadas.

...
    return myBody

Obtenemos nuestro sólido de pieza como resultado de nuestra función. Ese sólido de pieza, como cualquier otra forma de piezas, se puede atribuir a un objeto en el documento de FreeCAD, con:

el = makeBottle()
Part.show(el)

o, de forma más simple:

Box pierced

Here is a complete example of building a pierced box.

The construction is done one side at a time; when the cube is finished, it is hollowed out by cutting a cylinder through it.

import Draft, Part, FreeCAD, math, PartGui, FreeCADGui, PyQt4
from math import sqrt, pi, sin, cos, asin
from FreeCAD import Base

size = 10
poly = Part.makePolygon( [ (0,0,0), (size, 0, 0), (size, 0, size), (0, 0, size), (0, 0, 0)])

face1 = Part.Face(poly)
face2 = Part.Face(poly)
face3 = Part.Face(poly)
face4 = Part.Face(poly)
face5 = Part.Face(poly)
face6 = Part.Face(poly)
     
myMat = FreeCAD.Matrix()
myMat.rotateZ(math.pi/2)
face2.transformShape(myMat)
face2.translate(FreeCAD.Vector(size, 0, 0))

myMat.rotateZ(math.pi/2)
face3.transformShape(myMat)
face3.translate(FreeCAD.Vector(size, size, 0))

myMat.rotateZ(math.pi/2)
face4.transformShape(myMat)
face4.translate(FreeCAD.Vector(0, size, 0))

myMat = FreeCAD.Matrix()
myMat.rotateX(-math.pi/2)
face5.transformShape(myMat)

face6.transformShape(myMat)               
face6.translate(FreeCAD.Vector(0,0,size))

myShell = Part.makeShell([face1,face2,face3,face4,face5,face6])   

mySolid = Part.makeSolid(myShell)
mySolidRev = mySolid.copy()
mySolidRev.reverse()

myCyl = Part.makeCylinder(2,20)
myCyl.translate(FreeCAD.Vector(size/2, size/2, 0))

cut_part = mySolidRev.cut(myCyl)

Part.show(cut_part)

Cargando y guardando

Existen diversas formas de guardar tu trabajo en el módulo de piezas. Puedes desde luego guardar el documento de FreeCAD, pero también puedes guardar objetos de pieza directamente en formatos de CAD comunes, como BREP, IGS, STEP y STL.

El guardado de una forma en un archivo es sencillo. Existen los métodos exportBrep(), exportIges(), exportStl() y exportStep() disponibles para todos los objetos de forma. Así, haciendo:

import Part
s = Part.makeBox(0,0,0,10,10,10)
s.exportStep("test.stp")

se guardará nuestro cubo en un archivo STEP. Para cargar un archivo BREP, IGES o STEP, simplemente haz lo contrario:

import Part
s = Part.Shape()
s.read("test.stp")

To convert an .stp file to an .igs file:

import Part
 s = Part.Shape()
 s.read("file.stp")       # incoming file igs, stp, stl, brep
 s.exportIges("file.igs") # outbound file igs

Observa que la importación y apertura de archivos BREP, IGES o STEP también se puede hacer directamente desde el menú Archivo -> Abrir o Archivo -> Importar, mientras que la exportación es con Archivo -> Exportar

Template:Powerdocnavi/es


Convertir Objetos parte en mallas

La conversión de objetos de alto nivel, tales como formas de Piezas en objetos más simples como mallas es una operación bastante sencilla, en la que todas las caras de un objeto Pieza son triangularizadas. El resultado de esa triangulación (o teselado) se utiliza para construir una malla:

#let's assume our document contains one part object
import Mesh
faces = []
shape = FreeCAD.ActiveDocument.ActiveObject.Shape
triangles = shape.tessellate(1) # the number represents the precision of the tessellation)
for tri in triangles[1]:
    face = []
    for i in range(3):
        vindex = tri[i]
        face.append(triangles[0][vindex])
    faces.append(face)
m = Mesh.Mesh(faces)
Mesh.show(m)

En ocasiones, la triangulación ofrecida por OpenCascade para algunas caras es bastante fea. Si la cara tiene un espacio de parámetros rectangular y no contiene ningún agujero o curvas de corte también puedes crear una malla por tu cuenta:

import Mesh
def makeMeshFromFace(u,v,face):
	(a,b,c,d)=face.ParameterRange
	pts=[]
	for j in range(v):
		for i in range(u):
			s=1.0/(u-1)*(i*b+(u-1-i)*a)
			t=1.0/(v-1)*(j*d+(v-1-j)*c)
			pts.append(face.valueAt(s,t))

	mesh=Mesh.Mesh()
	for j in range(v-1):
		for i in range(u-1):
			mesh.addFacet(pts[u*j+i],pts[u*j+i+1],pts[u*(j+1)+i])
			mesh.addFacet(pts[u*(j+1)+i],pts[u*j+i+1],pts[u*(j+1)+i+1])

	return mesh

Convertir Mallas en objetos Pieza

La conversión de mallas en objetos Pieza es una operación muy importante en el trabajo de CAD, ya que a menudo se reciben datos 3D en formato de malla de otras personas o son generados con otras aplicaciones. Las mallas son muy prácticas para representar la geometría de forma libre y para grandes escenas visuales, ya que son muy ligeras. Pero, por lo general, el CAD prefiere objetos de nivel superior que llevan mucha más información, como la idea de sólidos, o caras hechas de curvas, en lugar de triángulos.

La conversión de las mallas a esos objetos de nivel superior (manejados por el Módulo de Piezas en FreeCAD) no es una operación fácil. Las mallas pueden tener miles de triángulos (por ejemplo, los generados por un escáner 3D), y si los sólidos se hacen con el mismo número de caras, serían extremadamente pesados de manipular. Así que por lo general, se desea optimizar el objeto durante la conversión.

FreeCAD actualmente ofrece dos métodos para convertir mallas en piezas. El primer método es una conversión sencilla, directa, sin ningún tipo de optimización:

import Mesh
import Part

mesh = Mesh.createTorus()
shape = Part.Shape()
shape.makeShapeFromMesh(mesh.Topology,0.05) # the second arg is the tolerance for sewing
solid = Part.makeSolid(shape)
Part.show(solid)

El segundo método ofrece la posibilidad de considerar coplanares las facetas de malla que forman entre si un pequeño ángulo. Esto permite la construcción de formas mucho más simples:

# let's assume our document contains one Mesh object
import Mesh
import Part
import MeshPart

faces = []
mesh = App.ActiveDocument.ActiveObject.Mesh
segments = mesh.getPlanes(0.00001) # use rather strict tolerance here
 
for i in segments:
  if len(i) > 0:
     # a segment can have inner holes
     wires = MeshPart.wireFromSegment(mesh, i)
     # we assume that the exterior boundary is that one with the biggest bounding box
     if len(wires) > 0:
        ext = None
        max_length=0
        for i in wires:
           if i.BoundBox.DiagonalLength > max_length:
              max_length = i.BoundBox.DiagonalLength
              ext = i

        wires.remove(ext)
        # all interior wires mark a hole and must reverse their orientation, otherwise Part.Face fails
        for i in wires:
           i.reverse()

        # make sure that the exterior wires comes as first in the list
        wires.insert(0, ext)
        faces.append(Part.Face(wires))

shell = Part.Compound(faces)
Part.show(shell)
# solid = Part.Solid(Part.Shell(faces))
# Part.show(solid)

Template:Powerdocnavi/es

Arrow-left.svg Previous: Mesh to Part
Next: Pivy Arrow-right.svg

Introduction

La geometría que aparece en las vistas 3D de FreeCAD son renderizadas por la biblioteca Coin3D. Coin3D es una implementación del estandard OpenInventor. El software OpenCascade también proporciona la misma funcionalidad, pero se decidió, al comenzar el desarrollo de FreeCAD, no utilizar el visor de OpenCascade, sino cambiar al software Coin3D, por tener mejor rendimiento. Un buen modo de aprender sobre esa librería es el libro Open Inventor Mentor.

Description

OpenInventor es en realidad un lenguaje de descripción de escena 3D. La escena descrita en openInventor es seguidamente renderizada en la pantalla con OpenGL. Coin3d se encarga de hacer esto, por lo que el programador no tiene que lidiar con complejas llamadas a OpenGL, bastará con que le proporcione código OpenInventor válido. La gran ventaja es que openInventor es un estándard muy bien conocido y bien documentado.

Uno de los trabajos mas inportantes que FreeCAD hace por ti es, básicamente, traducir la información de geometría OpenCascade al idioma de openInventor.

OpenInventor describe una escena 3D en forma de una escena gráfica (scenegraph), como la siguiente:

Scenegraph.gif

Scenegraph.gif image from Inventor mentor

Una escena gráfica de openInventor describe todo lo que es parte de una escena 3D, como la geometría, colores, materiales, luces, etc, y organiza todos los datos en una estructura cómoda y clara. Todo puede agruparse en sub-estructuras, lo que te permite organizar los contenidos de tu escena más o menos de la forma que quiera. He aquí un ejemplo de un archivo de openInventor:

#Inventor V2.0 ascii
 
Separator { 
    RotationXYZ {	
       axis Z
       angle 0
    }
    Transform {
       translation 0 0 0.5
    }
    Separator {	
       Material {
          diffuseColor 0.05 0.05 0.05
       }
       Transform {
          rotation 1 0 0 1.5708
          scaleFactor 0.2 0.5 0.2
       }
       Cylinder {
       }
    }
}

Como puedes ver, la estructura es muy simple. Utiliza separadores para organizar los datos en bloques, parecido a como harías al organizar tus archivos en carpetas. Cada declaración afecta a lo que viene después, por ejemplo los dos primeros puntos de nuestro separador raíz son una rotación y una traslación, todo ello afectará al siguiente elemento, que es un separador. En ese separador, se define un material y otra transformación. Nuestro cilindro por lo tanto se verá afectado por las dos transformaciones, la que le fue aplicada directamente, y la que se aplicó al separador que le contiene.

También tenemos muchos otros tipos de elementos para organizar nuestra escena, como los grupos, conmutadores o anotaciones. Podemos definir materiales muy complejos para nuestros objetos, con el color, las texturas, los modos de sombreado y transparencia. También podemos definir las luces, cámaras, e incluso movimiento. También es posible integrar pedazos de secuencias de comandos en los archivos de openInventor, para definir comportamientos más complejos.

Si estás interesado en aprender más sobre openInventor, vete directamente a su referencia más famosa, Inventor mentor.

En FreeCAD, normalmente, no es necesario interactuar directamente con la escena gráfica (scenegraph) de openInventor. Cada objeto en un documento de FreeCAD, ya sea una malla, una forma de pieza o cualquier otra cosa, se convierte automáticamente en código de openInventor y se inserta en la escena gráfica (scenegraph) principal que aparecen en una vista 3D. Esa escena gráfica se actualiza continuamente cuando se hacen modificaciones, se añaden o eliminan objetos en el documento. De hecho, cada objeto (en el espacio App) tiene un proveedor de vista (un objeto correspondiente en el espacio de la interfaz gráfica del usuario GUI), responsable de la expedición de código de openInventor.

Pero poder acceder a la escena gráfica directamente tiene muchas ventajas. Por ejemplo, puedes cambiar temporalmente la apariencia de un objeto, o podemos agregar objetos a la escena que no tienen existencia real en el documento de FreeCAD, como la geometría constructiva, ayudantes, sugerencias o herramientas gráficas como manipuladores o información en pantalla.

FreeCAD cuenta con varias herramientas para ver o modificar código de openInventor. Por ejemplo, el código de Python siguiente muestra la representación en openInventor de un objeto seleccionado:

obj = FreeCAD.ActiveDocument.ActiveObject
viewprovider = obj.ViewObject
print viewprovider.toString()

Pero también tenemos un módulo de Python que permite un acceso completo a todo lo controlado por Coin3d, como la escena gráfica (scenegraph) de FreeCAD. Sigue leyendo en Pivy.

Template:Powerdocnavi/es


Arrow-left.svg Previous: Scenegraph
Next: PySide Arrow-right.svg

Introduction

Pivy es una biblioteca para enlazar Python con Coin3d, la biblioteca de renderizado-3D utilizada en FreeCAD. Cuando se importa en un intérprete de Python en ejecución, permite dialogar directamente con cualquier escenas gráficas (scenegraphs) de Coin3d en ejecución, como las vistas 3D de FreeCAD, o incluso para crear otras nuevas. Pivy se incluye en la instalación estándar de FreeCAD.

La biblioteca de Coin se divide en varias partes, la propia Coin, para manipular escenas gráficas, y pasarelas a varios sistemas de interfaz gráfica de usuario (GUI), tales como Windows o, en nuestro caso, Qt. Esos módulos están también disponibles para Pivy, si están presentes en el sistema. El módulo Coin está siempre presente, y es lo que vamos a utilizar en todos los casos, y no tendrás que preocuparte de anclar nuestra pantalla 3D en ninguna interfaz, ya que FreeCAD ya lo ha hecho por si mismo. Todo lo que necesitamos hacer es esto:

from pivy import coin

Acceso y modificación de la escena gráfica

Vimos en la Página de escenas gráficas cómo se organiza una típica escena de Coin. Todo lo que aparece en una vista 3D de FreeCAD es una escena gráfica de Coin, organizada de la misma manera. Tenemos un nodo raíz, y todos los objetos en la pantalla son sus hijos.

FreeCAD tiene una sencilla forma de acceder al nodo raíz de una escenas gráficas en vista 3D:

sg = FreeCADGui.ActiveDocument.ActiveView.getSceneGraph()
print(sg)

Esto devolverá el nodo raíz:

<pivy.coin.SoSelection; proxy of <Swig Object of type 'SoSelection *' at 0x360cb60> >

Podemos inspeccionar los elementos secundarios inmediatos de nuestra escena:

for node in sg.getChildren():
    print(node)

Algunos de esos nodos, tales como SoSeparators o SoGroups, pueden tener sus propios hijos. La lista completa de los objetos de Coin disponibles se puede encontrar en la documentación oficial de Coin.

Ahora vamos a tratar de añadir algo a nuestra escena gráfica. Vamos a añadir un bonito cubo rojo:

col = coin.SoBaseColor()
col.rgb = (1,0,0)
cub = coin.SoCube()
myCustomNode = coin.SoSeparator()
myCustomNode.addChild(col)
myCustomNode.addChild(cub)
sg.addChild(myCustomNode)

y aquí está nuestro (magnífico) cubo rojo. Ahora, vamos a probar esto:

col.rgb = (1, 1, 0)

¿Ves? todo se mantiene accesible y modificable sobre la marcha. No hay necesidad de volver a calcular o dibujar cualquier cosa, Coin se encarga de todo. Puedes agregar cosas a la escena gráfica, cambiar las propiedades, ocultar cosas, mostrar objetos temporales, cualquier cosa. Por supuesto, esto sólo afecta a la pantalla en la vista 3D. Esa pantalla se vuelve a calcular por FreeCAD al abrir el archivo, y cuando un objeto necesita recalcularse. Por lo tanto, si cambias el aspecto de un objeto FreeCAD existente, esos cambios se perderán si el objeto se vuelve a recalcular o cuando se vuelve a abrir el archivo.

Una de las claves para trabajar con escenas gráficas en los archivos de guión es poder tener acceso cuando sea necesario a ciertas propiedades de los nodos que has añadido. Por ejemplo, si quisieramos mover nuestro cubo, habríamos añadido un nodo SoTranslation a nuestro nodo de referencia, y se vería así:

col = coin.SoBaseColor()
col.rgb=(1,0,0)
trans = coin.SoTranslation()
trans.translation.setValue([0,0,0])
cub = coin.SoCube()
myCustomNode = coin.SoSeparator()
myCustomNode.addChild(col)
myCustomNode.addChild(trans)
myCustomNode.addChild(cub)
sg.addChild(myCustomNode)

Recuerda que en una escena gráfica de openInventor, el orden es importante. Un nodo afecta a lo que viene a continuación, por lo que puedes decir algo como: color rojo, cubo, color amarillo, esfera, y obtendrás un cubo rojo y una esfera amarilla. Si ahora añadimos la traslación a nuestro nodo de referencia existente, eso llegaría después del cubo, y no lo afectaría. Si lo hubieramos insertado cuando lo creamos, como aquí arriba, ahora podríamos hacer:

trans.translation.setValue([2,0,0])

Y nuestro cubo saltaría 2 unidades a la derecha. Por último, para eliminar algo se hace con:

sg.removeChild(myCustomNode)

La utilización de mecanismos de devolución de llamada

Un callback mechanism (mecanismo de devolución de llamada) es un sistema que permite a una biblioteca que se está utilizando, como la biblioteca Coin, que le devuelva la llamada, es decir, que llame a una función específica de tu objeto de Python ejecutado actualmente. Esto es muy útil, porque de esa manera Coin puede avisarte si algún evento específico se produce en la escena. Coin pueden ver cosas muy diferentes, como la posición del ratón, clics en un botón del ratón, las teclas del teclado que son pulsadas y muchas otras cosas.

FreeCAD cuenta con una sencilla manera de utilizar devoluciones de llamada de este tipo:

class ButtonTest:
    def __init__(self):
        self.view = FreeCADGui.ActiveDocument.ActiveView
        self.callback = self.view.addEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),self.getMouseClick) 

    def getMouseClick(self,event_cb):
        event = event_cb.getEvent()
        if event.getState() == SoMouseButtonEvent.DOWN:
            print("Alert!!! A mouse button has been improperly clicked!!!")
            self.view.removeEventCallbackSWIG(SoMouseButtonEvent.getClassTypeId(),self.callback) 
 
ButtonTest()

La devolución de llamada tiene que ser iniciada por un objeto, y ese objeto debe estar todavía en ejecución cuando la devolución de llamada se produzca. Mira también una lista completa de los eventos posibles y sus parámetros, o la documentación oficial de Coin.

Documentación

Lamentablemente Pivy aún no tiene una documentación formal, pero como es una traducción exacta de Coin, puedes utilizar con seguridad la documentación de Coin como referencia, y utilizar el estilo de Python en lugar del estilo de C++ (por ejemplo, SoFile::getClassTypeId() se escribiría en Pivy como: SoFile.getClassId() )

In C++:

SoFile::getClassTypeId()

In Pivy

SoFile.getClassId()

Template:Powerdocnavi/es


Arrow-left.svg Previous: Pivy

Introduction

PySide es un enlace Python del conjunto de herramientas GUI multiplataforma Qt. FreeCAD utiliza PySide para todos los fines de la GUI (interfaz de usuario gráfica) dentro de Python. PySide es una alternativa al paquete PyQt que fue utilizado anteriormente por FreeCAD para su GUI. PySide tiene una licencia más permisible. Ver Differences Between PySide and PyQt Para más información sobre las diferencias.

When you install FreeCAD, you should get both Qt and PySide as part of the package. If you are compiling yourself, then you must verify that these two libraries are installed, in order for FreeCAD to run correctly. Of course, PySide will only work if Qt is present.

In the past, FreeCAD used PyQt, another Qt binding for Python, but in 2013 (1dc122dc9a) the project migrated to PySide because it has a more permissible license.

For more information see:

PySideScreenSnapshot1.jpg PySideScreenSnapshot2.jpg

Examples created with PySide. Left: a simple dialog. Right: a more complex dialog with graphs.


PySide in FreeCAD with Qt5

FreeCAD was developed to be used with Python 2 and Qt4. As these two libraries became obsolete, FreeCAD transitioned to Python 3 and Qt5. In most cases this transition was done without needing to break backwards compatibility.

Normally, the PySide module provides support for Qt4, while PySide2 provides support for Qt5. However, in FreeCAD, there is no need to use PySide2 directly, as a special PySide module is included to handle Qt5.

This PySide module is located in the Ext/ directory of an installation of FreeCAD compiled for Qt5.

/usr/share/freecad/Ext/PySide

This module just imports the necessary classes from PySide2, but places them in the PySide namespace. This means that in most cases the same code can be used with both Qt4 and Qt5, as long as it imports the single PySide module.

PySide2.QtCore -> PySide.QtCore
PySide2.QtGui -> PySide.QtGui
PySide2.QtSvg -> PySide.QtSvg
PySide2.QtUiTools -> PySide.QtUiTools

The only unusual aspect is that the PySide2.QtWidgets classes are placed in the PySide.QtGui namespace.

PySide2.QtWidgets.QCheckBox -> PySide.QtGui.QCheckBox

Real examples of PySide use

The examples of PySide are divided into 3 parts, differentiated by level of exposure to PySide, Python and the FreeCAD internals. The first page has an overview on PySide; the second and third pages are mostly code examples at different levels.

It is expected that these examples are useful to get started, and afterwards the user can consult other resources online, or the official documentation.

Documentation

There are some differences in handling of widgets in Qt4 (PySide) and Qt5 (PySide2). The programmer should be aware of these incompatibilities, and should consult the official documentation if something doesn't seem to work as expected in a given platform. Nevertheless, Qt4 is considered obsolete, so most development should target Qt5 and Python 3.

The PySide documentation refers to the Python-style classes; however, since Qt is originally a C++ library, the same information should be available in the corresponding C++ reference.

Arrow-left.svg Previous: Pivy

Template:Powerdocnavi/es


Arrow-left.svg Previous: PySide

Además de los tipos de objetos estándar, tales como anotaciones, mallas y objetos de pieza, FreeCAD también ofrece la estupenda posibilidad de construir objetos de archivos de guión hechos al 100% en Python, llamados Funcionalidades Python (Feature Python). Esos objetos se comportan exactamente como cualquier otro objeto de FreeCAD, y se guardar y restauran automáticamente al guardar o cargar archivos.

Debe comprenderse una particularidad, dichos objetos son guardados en archivos FcStd de FreeCAD con el módulo de Python cPickle. Este módulo devuelve un objeto de Python como una cadena de texto, permitiendo que se añada al guardado del archivo. En la carga, el módulo cPickle utiliza esa cadena de texto para recrear los objetos originales, proporcionándole acceso al código fuente que creó el objeto. Es decir que si guardas un objeto personalizado y lo abres en un ordenador en el que el código de Python que generó dicho objeto no está presente, el objeto no será recreado. Si distribuyes dichos objetos a otros usuarios, tendrás que distribuirlos junta al archivo de guión de Python que los crea.

Las Funcionalidades Python siguen las mismas reglas que todas las Funcionalidades de FreeCAD: se separan en las partes de App y GUI. La parte de App, el objeto documento, define la geometría de nuestro objeto, mientras que su parte GUI, el objeto proveedor de vistas, define el modo en que el objeto se dibujará en la pantalla. El objeto proveedor de vistas, como cualquier otra Funcionalidad de FreeCAD, sólo está disponible cuando se ejecuta FreeCAD en su propio GUI. Hay varias propiedades y métodos disponibles para construir tu objeto. Las propiedades tienen que ser de cualquiera de los tipos predefinidos de propiedades que ofrece FreeCAD, y aparecerá en la ventana de vista de propiedades, por lo que puede ser editado por el usuario. De esta manera, los objetos Funcionalidad Python son total y absolutamente paramétricos. Puedes definir las propiedades del objeto y de su ViewObject por separado.

Hint: In former versions we used Python's cPickle module. However, this module executes arbitrary code and thus causes a security problem. Thus, we moved to Python's json module.

Ejemplo básico

El ejemplo siguiente se puede encontrar en el archivo src/Mod/TemplatePyMod/FeaturePython.py , junto con varios otros ejemplos:

'''Examples for a feature class and its view provider.'''

import FreeCAD, FreeCADGui
from pivy import coin

class Box:
    def __init__(self, obj):
        '''Add some custom properties to our box feature'''
        obj.addProperty("App::PropertyLength","Length","Box","Length of the box").Length=1.0
        obj.addProperty("App::PropertyLength","Width","Box","Width of the box").Width=1.0
        obj.addProperty("App::PropertyLength","Height","Box", "Height of the box").Height=1.0
        obj.Proxy = self
   
    def onChanged(self, fp, prop):
        '''Do something when a property has changed'''
        FreeCAD.Console.PrintMessage("Change property: " + str(prop) + "\n")
 
    def execute(self, fp):
        '''Do something when doing a recomputation, this method is mandatory'''
        FreeCAD.Console.PrintMessage("Recompute Python Box feature\n")

class ViewProviderBox:
    def __init__(self, obj):
        '''Set this object to the proxy object of the actual view provider'''
        obj.addProperty("App::PropertyColor","Color","Box","Color of the box").Color=(1.0,0.0,0.0)
        obj.Proxy = self
 
    def attach(self, obj):
        '''Setup the scene sub-graph of the view provider, this method is mandatory'''
        self.shaded = coin.SoGroup()
        self.wireframe = coin.SoGroup()
        self.scale = coin.SoScale()
        self.color = coin.SoBaseColor()
       
        data=coin.SoCube()
        self.shaded.addChild(self.scale)
        self.shaded.addChild(self.color)
        self.shaded.addChild(data)
        obj.addDisplayMode(self.shaded,"Shaded");
        style=coin.SoDrawStyle()
        style.style = coin.SoDrawStyle.LINES
        self.wireframe.addChild(style)
        self.wireframe.addChild(self.scale)
        self.wireframe.addChild(self.color)
        self.wireframe.addChild(data)
        obj.addDisplayMode(self.wireframe,"Wireframe");
        self.onChanged(obj,"Color")
 
    def updateData(self, fp, prop):
        '''If a property of the handled feature has changed we have the chance to handle this here'''
        # fp is the handled feature, prop is the name of the property that has changed
        l = fp.getPropertyByName("Length")
        w = fp.getPropertyByName("Width")
        h = fp.getPropertyByName("Height")
        self.scale.scaleFactor.setValue(float(l),float(w),float(h))
        pass
 
    def getDisplayModes(self,obj):
        '''Return a list of display modes.'''
        modes=[]
        modes.append("Shaded")
        modes.append("Wireframe")
        return modes
 
    def getDefaultDisplayMode(self):
        '''Return the name of the default display mode. It must be defined in getDisplayModes.'''
        return "Shaded"
 
    def setDisplayMode(self,mode):
        '''Map the display mode defined in attach with those defined in getDisplayModes.\
                Since they have the same names nothing needs to be done. This method is optional'''
        return mode
 
    def onChanged(self, vp, prop):
        '''Here we can do something when a single property got changed'''
        FreeCAD.Console.PrintMessage("Change property: " + str(prop) + "\n")
        if prop == "Color":
            c = vp.getPropertyByName("Color")
            self.color.rgb.setValue(c[0],c[1],c[2])
 
    def getIcon(self):
        '''Return the icon in XPM format which will appear in the tree view. This method is\
                optional and if not defined a default icon is shown.'''
        return """
            /* XPM */
            static const char * ViewProviderBox_xpm[] = {
            "16 16 6 1",
            "   c None",
            ".  c #141010",
            "+  c #615BD2",
            "@  c #C39D55",
            "#  c #000000",
            "$  c #57C355",
            "        ........",
            "   ......++..+..",
            "   .@@@@.++..++.",
            "   .@@@@.++..++.",
            "   .@@  .++++++.",
            "  ..@@  .++..++.",
            "###@@@@ .++..++.",
            "##$.@@$#.++++++.",
            "#$#$.$$$........",
            "#$$#######      ",
            "#$$#$$$$$#      ",
            "#$$#$$$$$#      ",
            "#$$#$$$$$#      ",
            " #$#$$$$$#      ",
            "  ##$$$$$#      ",
            "   #######      "};
            """
 
    def __getstate__(self):
        '''When saving the document this object gets stored using Python's json module.\
                Since we have some un-serializable parts here -- the Coin stuff -- we must define this method\
                to return a tuple of all serializable objects or None.'''
        return None
 
    def __setstate__(self,state):
        '''When restoring the serialized object from document we have the chance to set some internals here.\
                Since no data were serialized nothing needs to be done here.'''
        return None


def makeBox():
    FreeCAD.newDocument()
    a=FreeCAD.ActiveDocument.addObject("App::FeaturePython","Box")
    Box(a)
    ViewProviderBox(a.ViewObject)

makeBox()

Things to note

If your object relies on being recomputed as soon as it is created, you must do this manually in the __init__ function as it is not called automatically. This example does not require it because the onChanged method of the Box class has the same effect as the execute function, but the examples below rely on being recomputed before anything is displayed in the 3D view. In the examples, this is done manually with ActiveDocument.recompute() but in more complex scenarios you need to decide where to recompute either the whole document or the FeaturePython object.

This example produces a number of exception stack traces in the report view window. This is because the onChanged method of the Box class is called each time a property is added in __init__. When the first one is added, the Width and Height properties don't exist yet and so the attempt to access them fails.

An explanation of __getstate__ and __setstate__ is in the forum thread obj.Proxy.Type is a dict, not a string.

Propiedades disponibles

Las propiedades son las auténticas piedras de construcción de los objetos FeaturePython. A través de ellas, el usuario será capaz de interactuar y modificar su objeto. Después de crear un nuevo objeto FeaturePython en tu documento ( a=FreeCAD.ActiveDocument.addObject("App::FeaturePython","Box") ), puedes obtener una lista de las propiedades disponibles escribiendo:

obj.supportedProperties()

Obtendrás una lista de propiedades disponibles:

App::PropertyBool
App::PropertyBoolList
App::PropertyFloat
App::PropertyFloatList
App::PropertyFloatConstraint
App::PropertyQuantity
App::PropertyQuantityConstraint
App::PropertyAngle
App::PropertyDistance
App::PropertyLength
App::PropertySpeed
App::PropertyAcceleration
App::PropertyForce
App::PropertyPressure
App::PropertyInteger
App::PropertyIntegerConstraint
App::PropertyPercent
App::PropertyEnumeration
App::PropertyIntegerList
App::PropertyIntegerSet
App::PropertyMap
App::PropertyString
App::PropertyUUID
App::PropertyFont
App::PropertyStringList
App::PropertyLink
App::PropertyLinkSub
App::PropertyLinkList
App::PropertyLinkSubList
App