Manual de Freecad

Este es el manual FreeCAD. Incluye las partes esenciales de la wiki de documentación FreeCAD. Está hecho principalmente para ser impresos en un solo documento grande, así que, si usted está leyendo esto en línea, usted lo prefiere, puede dirigirse directamente a la ayuda en línea la versión, que es más fácil de navegar.

Bienvenido a la ayuda FreeCAD en línea
Este documento ha sido creado de forma automática a partir del contenido de la wiki de documentación oficial FreeCAD, que puede leerse en línea que el en http://apps.sourceforge.net/mediawiki/free-cad/index.php?title=Main_Page . Desde

wiki es mantenido activamente y continuamente desarrollado por la comunidad FreeCAD de desarrolladores y usuarios, es posible que la versión en línea contiene la información más reciente o más de este documento. Pero no obstante, esperamos que usted encontrará aquí toda la información que usted necesita. En caso de que tenga preguntas que usted no puede encontrar respuestas en el presente documento, eche un vistazo en el foro FreeCAD, donde tal vez se puede encontrar respuesta a su pregunta, o alguien que pueda ayudarte.

Cómo utilizar
Este documento se divide en varias secciones: introducción, uso de secuencias de comandos y el desarrollo, la dirección de los tres últimos especialmente los tres grandes categorías de usuarios de FreeCAD: usuarios finales, que simplemente quieren usar el programa, los usuarios de energía, que se interesan por las capacidades de scripting de FreeCAD y me gustaría personalizar algunos de sus aspectos, y los desarrolladores, que consideran FreeCAD como base para desarrollar sus propias aplicaciones. Si eres nuevo en comletely FreeCAD, le sugerimos que para empezar simplemente por la introducción.

Contribuir
Como usted puede haber experimentado en ocasiones, los programadores son realmente ayudar a los escritores malos! Para ellos todo es del todo claro porque lo hizo de esa manera. Por lo tanto es vital que los usuarios experimentados nos ayudan a escribir y revisar la documentación. Sí, tenemos que decir! ¿Cómo, usted pregunta? Sólo tienes que ir a la Wiki enhttp://apps.sourceforge.net/mediawiki/free-cad/index.php en la sección de usuario. Usted necesitará una cuenta de sourceforgepara iniciar la sesión, entonces se puede empezar a editar!

Introducción

la interfaz FreeCAD

FreeCAD es un propósito general 3D CAD modelador. El desarrollo es completamente de código abierto (GPL y LGPL licencia). FreeCAD va destinado directamente a la ingeniería mecánica y diseño de productos , pero también encaja en una gama más amplia de aplicaciones en la ingeniería, tales como la arquitectura o la ingeniería de otras especialidades. FreeCAD cuenta con herramientas similares a Catia, SolidWorks y Solid Edge, y por lo tanto también cae en la categoría de MCAD, PLM, CAx y CAE. Será una película basada modelador paramétrico con una arquitectura de software modular que hace fácil para proporcionar funcionalidad adicional, sin modificar el núcleo del sistema. Como ocurre con muchos modernos 3D CAD y modeladores que tendrá un componente 2D para extraer los detalles del diseño del modelo 3D para crear dibujos en 2D de producción, pero el dibujo 2D directa (como AutoCAD LT) no es el foco, no son orgánicos o formas de animación ( como Maya, 3ds Max o Cinema 4D), aunque, gracias a su amplia adaptabilidad, FreeCAD podría ser útil en una amplia área mucho más que su enfoque actual. Otra de las principales preocupaciones de FreeCAD es hacer un uso intensivo de todos los de código abierto grandes bibliotecas que existen por ahí en el campo de la computación científica. Entre ellos se encuentran OpenCascade, un poderoso núcleo de CAD,Coin3D, una encarnación de OpenInventor, Qt, la famosa interfaz de usuario marco del mundo, y Python, uno de los mejores lenguajes de scripting disponibles. FreeCAD misma también se puede utilizar como una biblioteca por otros programas. FreeCAD está totalmente multiplataforma, y actualmente se ejecuta sin problemas en Windows y Linux / Unix y Mac OS X sistemas, con el mismo aspecto y funcionalidad en todas las plataformas. ¿Tienes curiosidad? Echa un vistazo a la lista de características o de la Introducción a los artículos, o dirigirse directamente al centro de usuario! Esta es una, por lo tanto no es completa, extensa lista de características FreeCAD implementa. Si desea buscar en el futuro ver lahoja de ruta para el Desarrollo de una visión general rápida de la Imagen es un buen lugar para ir.

Características generales
Base de la aplicación

FreeCAD es multi-plataforma. Se ejecuta y se comporta exactamente de la misma

manera en Windows, Linux y OSX plataformas Mac.  FreeCAD es una completa aplicación con interfaz gráfica. FreeCAD cuenta con una

completa interfaz gráfica de usuario basada en el famoso Qtmarco, con un visor 3D basado en Open Inventor, permitiendo rápido renderizado de escenas 3D y una representación gráfica de la escena muy accesible.  FreeCAD también se ejecuta como una aplicación de línea de comandos, con la

huella de memoria baja. En modo de línea de comandos, FreeCAD se ejecuta sin su interfaz, pero con todas las herramientas de la geometría. Puede ser, por ejemplo, utiliza como servidor de producir contenidos para otras aplicaciones.  FreeCAD se pueden importar como un módulo de Python, dentro de otras

aplicaciones que pueden ejecutar scripts de Python, o en una serpiente pitón de la consola. Al igual que en modo consola, la parte de interfaz de FreeCAD no está disponible, pero todas las herramientas de la geometría son accesibles.  Plugin / marco del módulo para la carga tardía de características y tipos de

datos. FreeCAD se divide en una aplicación de base y los módulos, que se cargan sólo cuando es necesario. Casi todas las herramientas y tipos de geometría se almacena en módulos. Los módulos se comportan como plugins, y puede incluir o eliminar una instalación existente de FreeCAD.  Construido en secuencias de comandos marco: FreeCAD incorpora un

en Python intérprete, 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 visor 3D. El intérprete puede ejecutar comandos individuales hasta las secuencias de comandos complejas, de hecho, los módulos de todo, incluso se puede programar completamente en Python.

Los paquetes para los sistemas de Ubuntu también se mantienen. . el marco de Qt está adaptado demasiado. Además de las funciones simples que FreeCAD se dota a los bancos de trabajo. tales como crear. agregar. de acoplamiento. varios pasos por lo que puede ser deshecho a la vez.  gestión de transacciones: La deshacer / rehacer pila documento transacciones tiendas y no las acciones individuales. La relación entre los objetos también se almacena. y vuelven a calcular en cualquier momento. tales como la geometría. las secuencias de comandos o en miniatura. Interfaz de usuario  Totalmente personalizable / scripts interfaz gráfica de usuario. extensión puede contener diversos tipos de información. un instalador MSI modular permite instalaciones flexibles en los sistemas Windows. Estructura de documento  Deshacer / Rehacer marco: Todo es deshacer / rehacer. modificar o eliminar widgets y barras de herramientas.  asociativas documento objetos paramétricos: Todos los objetos en un documento FreeCAD puede ser definido por los parámetros. El Qtbasado en la interfaz de FreeCAD es totalmente accesible a través del intérprete de Python. permitiendo que cualquier operación en la interfaz gráfica de usuario. Los parámetros se pueden modificar sobre la marcha.  (ZIP base) del documento compuesto guardar formato: FreeCAD documentos guardados con iconos fcstd. permitiendo que cada herramienta para definir exactamente lo que hay que deshacer o rehacer. con acceso a la pila de deshacer. por lo que la modificación de un objeto también modifica sus objetos dependientes.

y salvo que se reproduce más adelante. manteniendo la ordenada y responsable. lo que permite guionistas para probar la funcionalidad sobre la marcha. Esto permite mostrar sólo las herramientas utilizadas para llevar a cabo una determinada tarea. si es necesario. concepto de banco de trabajo: En la interfaz de FreeCAD. que se puede imprimir en la consola y se registran en las macros.  reflejo de la interacción del usuario en la consola: Todo lo que el usuario hace en la interfaz de FreeCAD ejecuta código python. cada uno tratando con tipos de datos y aplicaciones especiales: Mallas . las herramientas se agrupan por mesas de trabajo.  Thumbnailer (los sistemas Linux solamente en el momento): Los iconos de documento FreeCAD mostrar el contenido del archivo en la mayoría de las aplicaciones de administrador de archivos. Características específicas de la aplicación La funcionalidad de FreeCAD está separado en módulos. como los nautilus de gnome. y la clase explorador autocompletar: comandos de Python pueden ser introducidas directamente en FreeCAD y devolvió de inmediato los resultados.  macro de grabación y edición completa: La pitón órdenes emitidas cuando el usuario manipula la interfaz puede ser grabado.  Incorporado en la consola de Python con resaltado de sintaxis. editado. explorar el contenido de los módulos y fácil aprender sobre FreeCAD internos. y la rápida aplicación de espacio de trabajo para la carga.

la curación y la conversión de parte de malla generada geometría de sesiones en FreeCAD. y la exportación de la geometría FreeCAD en formato de malla. obj). el formato OBJ (*. BMS). wrl). BRL). de malla como módulo de Python (*. stl. etc cilindro). rotación. en cualquier plano del espacio 3D  Importación y exportación de los siguientes formatos: Autodesk Dibujo Exchange Format (*. y nativo del kernel de malla FreeCAD (*. limitada NASTRAN apoyo (*. Open Cad Formato (*. el formato OBJ (*. esfera. escalado. *. Open Inventor mallas (iv *. *. *. Es esta destinada principalmente para la importación. espejo. El acoplamiento del módulo se refiere a mallas 3D. orificio de llenado y la orientación uniforme. ast). VRML mallas (*. svg) CAD . nativa del núcleo de malla FreeCAD (*. dxf). arcos o círculos en cualquier plano del espacio 3D   Anotaciones como los textos o las dimensiones Gráfica de las operaciones de modificación como la traducción. se cruzan)  Importación de los siguientes formatos: ASCII o binario STL (litografía formato estéreo) (*. stl. Pero sí FreeCAD también cuenta mucho la geometría de los tipos más avanzados de las mallas. BMS)  Exportación de los siguientes formatos: ASCII o binario STL (Stereo formato litografía) (*. cables. rectángulos.  Amplia Python API de scripting. nas. obj). gcad) e SVG (*. cortar. limitadaNASTRAN apoyo (*. oca. desplazamiento o la forma de conversión. y dos colectores de ensayo que no. nas). 2D de Redacción  Gráfica de creación de la geometría plana simples como líneas.). *. desplazamiento(triviales o después de Jung / Shin / Choi) o las operaciones booleanas(añadir. py)  Prueba y reparación de herramientas para mallas: prueba de sólidos. ast). intersección de autocomprobación.  la creación de primitivas (caja.

el formato nativo de nuestro Abrir CASCADE núcleo CAD . El módulo de la parte trabaja con alto nivel Abrir CASCADE geometría. La funcionalidad CAD está en fuerte desarrollo (véase datos el PartDesign_project y Assembly_project en elDevelopment_roadmap). Raytracing  El módulo de trazado de rayos permite la exportación de la geometría FreeCAD a renderizadores externos para la generación de imágenes de alta calidad. el motor de render compatible sólo es POV-Ray. y la geometría de la adición a esa hoja de representación para exportar a un archivo de POV-Ray. la esfera.   Paramétrico formas primitivas como la caja. bordes. cables y aviones (a través de secuencias de comandos de Python). operaciones booleanas . Dibujo . *. secciones y filetes. igs. IGES modelos (*.     Modelado con rectas o revolución extrusiones. BRP). Importación y exportación de los siguientes formatos: PASO piezas y ensamblajes (*. Topológica componentes como vértices. como la unión. stp. el cono del cilindro o un toro. diferencia y la intersección. El módulo permite actualmente la creación de una hoja de representación. paso). La pieza del módulo se ocupa de todo alrededor de modelado CAD y las estructuras de CAD. *. IGES) y BREP (*. En la actualidad. Amplia Python API de scripting.

funciones adicionales están disponibles. Instalación sencilla instalador FreeCAD se entrega en. Instalación Instalar en Windows La forma más fácil de instalar FreeCAD en Windows es utilizar el instalador. Aunque hay algunos algoritmos de planificación trayectorias que no son utilizables para el usuario final en el momento. y la inserción de puntos de vista de la geometría proyectada en esa hoja. como msiexec / i FreeCAD-2.msi TARGETDIR = r: \ FreeCAD25 Limitada interfaz de usuario El importe de la interfaz de usuario que el instalador muestra se puede controlar con / q opciones. Puede descargar la última versión. la hoja se pueden guardar como un archivo SVG. Este módulo se encuentra en el principio y en el momento en su mayoría dedicados a la hoja que forma incremental. haga doble clic sobre él para iniciar el proceso de instalación.sólo un pequeño diálogo de progreso .exe utilidad de línea de comandos. MSI (Windows Installer) en formato. A continuación. como la molienda. Msi de la FreeCAD página de descarga oficial. Los parámetros adicionales se pueden pasar al final de esta línea de comandos. El módulo de dibujo permite exportar vistas proyectadas de la geometría 3D a un documento SVG 2D. Instalación de la línea de comandos Con el msiexec. CAM  El módulo CAM se dedica a trabajar a máquina mecánica.Interfaz básica . Después de descargar el archivo. Instalación no interactiva Con la línea de comandos msiexec / i FreeCAD <versión>. Esta página describe el uso y las características delinstalador de Microsoft para conocer las opciones de instalación más. como no-instalación interactiva y la instalación administrativa. en particular:   / Qn .5.No interfaz / Qb . Permite la creación de una hoja en 2D con una plantilla de svg existentes. msi instalación se puede iniciar mediante programación.

Instalación para todos los usuarios Agregar ALLUSERS = 1 causa de una instalación a todos los usuarios. Selección de características Un número de propiedades permiten la selección de características para ser instalado. un disco de instalación diferente se puede especificar con TARGETDIR = R: \ FreeCAD25 El TARGETDIR predeterminado es [WindowsVolume \ Programm Files \] FreeCAD <versión>. pero ocultar el botón Cancelar / Qr . además de las bibliotecas del núcleo Documentación .Me gusta / qb. Cosas por hacer Además. TODOS especifica todas las características.instalar la documentación El código fuente ..Me gusta / qn. Las características siguientes propiedades de control para instalar o desinstalar    ADDLOCAL .mostrar todos los cuadros de diálogo que no requieren / Qn + .lista de características para ser instalado en el equipo local REMOVER . El conjunto de características para el programa de instalación es FreeCAD     DefaultFeature .lista de características para volver a instalar / reparar local para todas las características FreeCAD)  .lista de características para ser retirados ADDDEFAULT .. reinstalado o eliminadas. De forma predeterminada. y la instalación interactiva ofrece un cuadro de diálogo que por defecto es "todos los usuarios" si el usuario es lo suficientemente privilegiada.  / Qb! . por lo que la instalación de cualquier característica instala automáticamente la función de default. Por ejemplo. Todas las funciones dependen de DefaultFeature. pero muestran "Completado" diálogo al final / Qb + .Al igual que / qb.instalar el software adecuado. pero muestran "Completado" diálogo al final la interacción del usuario (saltar todos los cuadros de diálogo modales)   Objetivo de la guía El TARGETDIR propiedad determina el directorio raíz de la instalación FreeCAD. la instalación no interactiva instalar el paquete sólo para el usuario actual.lista de funciones adicionales en su configuración por defecto (que es REINSTALL .Reducción de la interfaz .instalar las fuentes .

Con estas opciones. pero sin otra modificación que se haga en el sistema local. como alternativa. por lo que el directorio de destino se debe pasar la línea de comandos. msi un "administrativo" (red) de instalación se puede iniciar. a "anunciar" FreeCAD a una máquina (con / ju a un usuario). Desinstalación Con msiexec / x FreeCAD <versión>. msi sería posible. otro archivo (más pequeño) msi se genera en el directorio de destino. No hay ninguna específica procedimiento de desinstalación de una administrativa de instalación .lista de características para el que se realizará una instalación de publicidad Hay algunas características adicionales disponibles.simplemente borre el directorio de destino si no hay cliente que usa más. pero no instalar nada más. Usted puede encontrar el código de producto al observar las propiedades del acceso directo Desinstalar FreeCAD que se instala en el menú de inicio. msi FreeCAD se puede desinstalar. en principio. PUBLICIDAD . No es necesario contar con el archivo MSI disponibles para la desinstalación. que los clientes pueden entonces utilizar para realizar una instalación local (las versiones futuras pueden ofrecer también para mantener algunas de las características de la unidad de red en total). consulte la documentación de MSDN para obtener más detalles. añadiendo ADDLOCAL = Extensiones instala el propio intérprete y los registros de las extensiones. Esto haría que los iconos que aparecen en el menú de inicio. Los archivos se desempaquetado en el directorio de destino (que debe ser un directorio de red). El primer uso de una característica haría que cuentan para su instalación. y las extensiones para ser registrada. Además. no existe ninguna interfaz de usuario para las instalaciones administrativas. sin el software en realidad se está instalando. el paquete o código de producto también puede ser especificado. Actualmente. . Publicidad Con msiexec / jm FreeCAD <versión>. instalación administrativa Con msiexec / a FreeCAD <versión>.

Instalación automática de un grupo de máquinas Con la directiva de grupo de Windows.0. 4. la propagación del Grupo de política general.Por favor. 6.El instalador FreeCAD actualmente soporta sólo el anuncio de las entradas del menú de inicio.para implementar el paquete de forma fiable. Paquete equipo sale del ámbito de aplicación de la política. Deb correspondiente a su versión del sistema. el equipo FreeCAD sólo proporciona a los instaladores de sistemas de 32 bits de Debian y Ubuntu. 3. 5. Google SketchUp. Instalación en sistemas Debian / Ubuntu Una vez descargado el. pero no hay anuncio de accesos directos. suponiendo que el paquete de instalación se coloca en el "software" de la guía que se asigna a la unidad de letra "Y": msiexec / i Y: \ \ software \ \ FreeCAD <versión> msi. al igual que con otros PROGRAMAS ejecuta en vino es decir. 10. Para ello. 9. pero se ha informado de que la pantalla OpenGL no funciona. Instalación en Unix / Linux Por el momento. seleccione la que desea la FreeCAD ser desinstalado si el todos los equipos de destino. todos los equipos debe ser reiniciado. Inicie sesión en el controlador de dominio Copie el archivo MSI en una carpeta que se comparte con acceso permitido a Abra el complemento MMC de "usuarios de Active Directory y equipos" Navegue hasta el grupo de equipos que necesitan FreeCAD Abra Propiedades Abrir directivas de grupo Añadir una nueva política. Instalación en Linux usando Crossover Office Puede instalar la versión para Windows de FreeCAD en un sistema Linux utilizando CXOffice 5. Ejecutar msiexec de la línea de comandos CXOffice. seleccione Nuevo / Seleccione el archivo MSI a través de la ruta de red Opcionalmente. eche un vistazo a la descarga página para ver lo que está actualmente availible. 2. y editarlo En Configuración del equipo / Instalación de software. si usted tiene la gdebi paquete instalado (normalmente lo es). FreeCAD se está ejecutando. pero algunos miembros de la comunidad de usuarios FreeCAD también proporciona a los instaladores de encargo para otras versiones de Linux. 7.1. siga estos pasos: 1. sólo tiene que desplazarse a donde ha . es posible instalar automáticamente FreeCAD un grupo de una de las máquinas. 8. toma algún tiempo .

Instalación en otros sistemas Linux / Unix Unfortnately.deb por el nombre del archivo descargado. Esta página describe el uso y características de la instalación FreeCAD.descargado el archivo. a continuación. por el momento. Instalación sencilla El instalador FreeCAD se ofrece como un paquete de Installer (. También incluye las instrucciones de desinstalación. navegar hasta donde hemos descargado el archivo. . ningún paquete precompilado es availible para otros sistemas Linux / Unix. Después de descargar el archivo. y haga doble clic en él. ejecute la instalación FreeCAD paquete. Puede descargar la última instalación de la descarga la página. por lo que tendrá quecompilar FreeCAD mismo. Después de instalar FreeCAD. simplemente montar la imagen de disco. Instalación en Mac FreeCAD se puede instalar en Mac OS X en un solo paso utilizando el instalador. un icono de inicio se agregó en la "gráfica" de su Menú de Inicio.deb cambiando Name_of_your_FreeCAD_package. Mpkg) incluido en un archivo de imagen de disco. Alternativamente se puede instalar también de la terminal. y: sudo dpkg-i Name_of_your_FreeCAD_package. Las dependencias necesarias serán atendidos de forma automática por el gestor de paquetes del sistema de tipos.

Si no está seguro. deje todos los elementos seleccionados. Si usted sabe que usted ya tiene alguno de estos paquetes.El instalador le presentará una instalación Personalizar la pantalla que lista los paquetes que serán instalados. se puede anular la selección utilizando las casillas de verificación. .

framework Entonces. Para eliminar completamente FreeCAD y todos los componentes instalados.Desinstalación En este momento no es un desinstalador de FreeCAD. desde el terminal. FreeCAD estará disponible como un paquete de aplicaciones de autocontenida para toda esta molestia desaparece. . ejecute: sudo / Developer / Herramientas / sudo rm-qt. arrastre los siguientes archivos y carpetas a la Papelera:  En / Aplicaciones:   FreeCAD en / Library / Frameworks /   SoQt.framework Inventor. Finalmente.py desinstalar-R / usr / local / lib / sudo rm OCC-R / usr / local / include / OCC Eso es todo.

Pero. Pero. que ya será capaz de producir y modificar la geometría compleja con relativa facilidad. comparta con nosotros en el foro de discusión FreeCAD! Instalación En primer lugar (si no se hace ya) descargar e instalar FreeCAD.Descubrir FreeCAD Prefacio FreeCAD es un sistema CAD / CAE de aplicaciones de modelado paramétrico. así que no espere ser capaz de utilizarlo para producir un trabajo ya. Rpm) y Mac OSX. pero no la interfaz de usuario mucho se ha creado para él. Esto significa que si usted sabe un poco de python. Deb) openSUSE (. Msi). Ubuntu y Debian (. le invitamos a descargarlo y darle una oportunidad. por favor. sea paciente. Explorando FreeCAD . Véase la descarga página para obtener información acerca de las versiones y actualizaciones. Todavía está en fase inicial de desarrollo. Hay paquetes listos para instalar Windows (. si eres curioso acerca de lo que FreeCAD Aspecto del producto y las características que se están desarrollando. Si no. se espera que esto cambie pronto. mucha funcionalidad ya está presente. Y si después de la prueba tiene comentarios. probablemente encontrará que FreeCAD todavía tiene pocos para ofrecer a usted. ideas u opiniones. Por el momento.

enfocada en la ingeniería mecánica y otras áreas relacionadas. se le presentará un "general" banco de trabajo. Ver más imágenes aquí. Desde FreeCAD es bastante joven y aún no se utilizan para el trabajo muy especializado. Se concibe como una plataforma para el desarrollo de cualquier tipo de aplicación 3D. Bancos de trabajo permiten cambiar el contenido de interfaz para mostrar todos y sólo las herramientas necesarias para una tarea específica.Básicamente. este banco de trabajo es muy útil para descubrir FreeCAD con mayor facilidad. . que llamamos "banco de trabajo completo". La interfaz FreeCAD por lo tanto se puede describir como un contenedor muy simple. A tal efecto. Esta mesa de trabajo. con una barra de menús. y un par de paneles laterales para la visualización de los contenidos escena o propiedades de los objetos. Al iniciar FreeCAD por primera vez. simplemente recoge las herramientas más madura de otros bancos de trabajo.La interfaz FreeCAD al iniciarlo por primera vez. tales como otras especialidades de la ingeniería o la arquitectura. su interfaz se divide en una serie de bancos de trabajo. FreeCAD es una aplicación de modelado 3D todos los fines generales. o un grupo de tareas. sino también para hacer tareas específicas muy. un área de visualización 3D. todas las herramientas que son lo suficientemente buenas para la producción de la geometría está aquí. Todos los contenidos de estos paneles puede haber cambios en función de la mesa de trabajo.

el zoom se realiza con la rueda del ratón. paneo con el botón central del ratón. ángulo inicial y final del Rectángulo: dibuja un rectángulo de 2 puntos opuestos Texto: Dibuja una línea de texto de la anotación-multi Dimensión: Dibuja una anotación dimensión Modificación de objetos Estas son las herramientas para modificar los objetos existentes.   líneas   ángulo    De 2 puntos la línea: Dibuja un segmento de línea de 2 puntos Hilos (punto de varias líneas): Dibuja una línea hecha de segmentos de varias Círculo: dibuja un círculo desde el centro y el radio Arco: Dibuja un segmento de arco desde el centro. se le invitará a seleccionar una. etc) disponibles en el menú Ver y en la barra de herramientas Vista. que se pueden establecer en la configuración de diálogo de preferencias.   Mover: Mueve el objeto (s) de un lugar a otro Girar: Gira objeto (s) de un ángulo inicial a un ángulo final .Navegando en el espacio 3D FreeCAD tiene dos diferentes modos de navegación disponibles. pero si no hay ningún objeto seleccionado.   plano de trabajo: Establece el plano de trabajo para las operaciones de al lado Coloque en la hoja: Escribe los objetos seleccionados a una hoja de dibujo SVG Objetos de dibujo Estas son herramientas para la creación de objetos. 2. En el modo por defecto. radio. y por atajos numéricos (1. y larotación con el botón izquierdo del ratón y Botón central del ratón al mismo tiempo.. con CTRL presionado si desea seleccionar varios objetos.) 2D de Redacción Herramientas de dibujo Estas herramientas le permiten configurar su entorno de trabajo o producir operaciones genéricas. Selección de un objeto se hace simplemente haciendo clic sobre ella con el botón izquierdo del ratón. vista frontal. etc . También tiene varios presets vista (vista superior. Trabajan en los objetos seleccionados.

       Offset: los segmentos de un objeto se mueve sobre una distancia determinada Actualización: se une a los objetos en un alto nivel de objeto Baja de Calificación: Se descompone en objetos de nivel inferior objetos Recortar / Extender (Trimex): Recorta o se extiende un objeto Aplicar el estilo: Aplica el color actual y el ancho de línea a los objetos Escala: escala objeto seleccionado (s) en torno a un punto base Editar: edita un objeto seleccionado La creación de piezas en 3D Primitivos Estas son herramientas para la creación de objetos primitivos.        Booleanos: boolean Realiza operaciones en los objetos Fusible: Fusibles (sindicatos) dos objetos Común: extraer los comunes (intersección) parte de dos objetos Cortar: corta (resta) un objeto de otro Extrusión: Eleva caras planas de un objeto Solomillo: Filete (balas) bordes de un objeto Girar: Crea un objeto por otro objeto giratorio alrededor de un eje .      Caja: Dibuja un cuadro especificando sus dimensiones Cono: Dibuja un cono mediante la especificación de sus dimensiones Cilindro: Dibuja un cilindro mediante la especificación de sus dimensiones Esfera: Dibuja una esfera mediante la especificación de sus dimensiones Toro: Dibuja un toro (anillo). especificando sus dimensiones Modificación de objetos Estas son las herramientas para modificar los objetos existentes. Que le permitirá elegir el objeto a modificar.

 sección Sección: Crea una sección por la intersección de un objeto con un plano de Exportar a dibujos 2D Estas son las herramientas para crear. por último. Desde la pitón consola integrada (o de cualquier secuencia de comandos Python externo). etc) a la POV-Ray proyecto actual  actual Insertar información parte: Inserta el objeto seleccionado al POV-Ray proyecto Secuencias de comandos Y.secuencias de comandos de Python también pueden ser utilizados en las macros. una de las características más potentes de FreeCAD es la secuencia de comandos medio ambiente. modificar la representación de los objetos en la escena 3D o acceder y modificar la interfaz FreeCAD. . puede acceder a casi cualquier parte del FreeCAD. crear o modificar la geometría. que proporcionan un método sencillo para crear comandos personalizados. configurar y exportación de hojas de dibujo 2D  existentes  Nueva hoja de dibujo: Crea una nueva hoja de dibujo desde un archivo SVG A3 dibujo de paisaje Nueva: Crea una nueva hoja de dibujo de la plantilla por defecto A3 FreeCAD  Inserte un punto de vista: Inserta una vista del objeto seleccionado en la hoja de dibujo activo  hoja Guardar: Guarda la hoja actual como un archivo SVG Exportar a renderizadores externos Estas son herramientas para la exportación de su trabajo en 3D para renderizadores externos   Crear un proyecto de Povray: Crea un POV-Ray nuevo proyecto Insertar información ver: Inserta el ver los datos (posición de la cámara.

Seleccione Pulse el botón izquierdo del ratón sobre un objeto que desea seleccionar. Pan .<anterior: Instalación en Mac siguiente: modelo de ratón> Índice Traducciones disponibles: Trabajar con FreeCAD de navegación en 3D El modelo de ratón de FreeCAD es muy flexible e intuitiva y con algunas pistas se puede utilizar después de sólo un minuto de la práctica. Manipulación de objetos La manipulación de objetos es común a todos los bancos de trabajo. Zoom Utilice el + o . Los gestos del ratón siguientes se pueden utilizar para controlar la posición del objeto y el punto de vista. Selección de objetos Los objetos se pueden seleccionar con un clic con el botón izquierdo del ratón o haciendo clic en el objeto en la vista 3D o mediante la selección en la vista de árbol. puede cambiar de preselección en las preferencias. También hay una preselección mecanismo que pone de relieve los objetos y muestra información acerca de ellos antes de la selección con sólo pasar el mouse sobre él. Si no le gusta que la conducta o si tiene una máquina lenta.las llaves de la rueda del ratón para acercar y alejar.

Haga clic en el botón central del ratón y mover el objeto. el objeto sigue girando. En el plano de cambio Para mover el centro del plano de recorte. mantenga y haga clic en el botón izquierdo del ratón en cualquier parte visible de un objeto y arrastrarlo en la dirección deseada. Fuera del plano de desplazamiento Para cambiar el objeto a lo largo de su vector normal. Rotación Al hacer clic en la parte fina de los ejes del manipulador pone en modo de rotación. si esta opción está activada. Escala Para escalar el objeto. Si se suelta el botón antes de dejar su petición. Esto funciona como hacer girar una pelota que gira alrededor de su centro. Hay otros cuatro que no son tan obvios: el propio avión y la parte fina de los tres objetos eje. Dependiendo del objeto a los manipuladores trabajar independientemente o de forma sincrónica. Un ejemplo sencillo es el plano de corte que se puede activar con el recorte → Ver plano de menú. <Anterior: Primeros pasos siguiente: Documento> estructura Índice Traducciones disponibles: El documento FreeCAD . Gire Primero haga clic con el botón central del ratón. haga clic en el objeto de avión y tire de él hasta la posición deseada. Centro de Marco de la rotación Un doble clic con el botón central del ratón en cualquier parte de un objeto establece el nuevo centro de rotación y zoom sobre este punto. haga clic con el botón izquierdo del ratón sobre los manipuladores recuadro al final de los ejes y tire de ellos hacia atrás y adelante. Después de la activación del objeto plano de corte aparece y muestra siete manipuladores obvio como cajitas: Uno en cada extremo de sus tres ejes de coordenadas y otra en el centro del plano eje normal.Para el plano de corte no es sólo un manipulador a lo largo del vector normal. Manipulación de objetos FreeCAD ofrece manipuladores que se pueden utilizar para modificar un objeto o su aspecto visual. tire de la caja larga en el centro de un eje con el botón izquierdo del ratón.

Un documento FreeCAD contiene todos los objetos de la escena. También se puede hacer. los objetos de cambiar el nombre haciendo doble clic en sus nombres. el Workbench Partecrear objetos de la parte. por ejemplo. la parte de interfaz de usuario (GUI) se separa de la parte de la aplicación de base (la aplicación). el documento que están trabajando actualmente. Esto también es válido para los documentos. se pueden crear grupos. etc Si hay al menos un documento abierto en FreeCAD. y el documento de Vista. los objetos se mueven a los grupos. el banco de trabajo de malla crea objetos de malla. los objetos se pueden mover en grupos. puede cambiar entre los bancos de trabajo. o posiblemente otras operaciones. Ese es el documento que aparece en la vista 3D actual. en función de la mesa de trabajo actual. Los objetos dentro de un documento FreeCAD puede ser de diferentes tipos. Los documentos también están hechas de dos partes: el documento de solicitud. que contiene los objetos.Administración de grupos. objetos y nombres de objeto que se realiza principalmente desde el punto de vista de árbol. haciendo clic derecho en la vista en árbol o en un objeto. Aplicación y la interfaz de usuario Como casi todo lo demás en FreeCAD. y abrir varias vistas del mismo documento. Por lo tanto. como todo en FreeCAD. En la vista de árbol. y tener un nombre único. desde el intérprete de Python. El documento es lo que se guarda en el disco al guardar su trabajo. por supuesto. También puede abrir varios documentos al mismo tiempo en FreeCAD. Dentro del documento. Puede contener grupos y objetos elaborados con cualquier banco de trabajo. siempre hay uno y sólo un documento activo. y siguen trabajando en el mismo documento. Cada mesa de trabajo puede crear sus propios tipos de objetos. que contiene la representación en pantalla de nuestros objetos. el Proyecto de Workbench también crea objetos de la parte. . eliminar objetos o grupos.

acceder y modificar desde el intérprete de Python. incluso si no se dibuja en la pantalla. ambos almacenados en el documento Ver. Por ejemplo: FreeCAD. Tal vez le gustaría ver una vista superior y una vista frontal de su trabajo al mismo tiempo? A continuación. Otra cosa que está contenida en el documento Ver puntos de vista en 3D. por ejemplo dentro de otros programas.Piense en ello como dos espacios.ActiveDocument.ActiveDocument Devolverá el actual (activo) documento FreeCAD. para que pueda inspeccionar el documento desde varios puntos de vista al mismo tiempo.ActiveView Configuración de las preferencias del usuario El sistema de preferencias de FreeCAD se encuentra en el menú Editar -> Preferencias. FreeCAD también utiliza un concepto llamado de carga tarde.Blob ¿Podría acceder a la representación gráfica (ver) una parte de nuestro objeto Blob FreeCADGui. y todavía deben ser capaces de manipular nuestros objetos.Blob ¿Podría acceder a un objeto llamado "Blob" dentro de su documento FreeCADGui. Un documento puede tener varias vistas abiertas.ActiveDocument.ActiveDocument Devolverá el documento vista asociada al documento actual FreeCADGui. donde los objetos se definen. ¿Por qué es eso? Debido a FreeCAD también puede ser utilizado sin interfaz gráfica. tendrá dos vistas del mismo documento. Sus parámetros constructivos (es un cubo? Un cono? Qué tamaño?) Se almacenan en el documento de solicitud. Secuencias de comandos Los documentos pueden crearse fácilmente.ActiveDocument. cada módulo está encargado de la elaboración de un determinado banco de trabajo. mientras que su representación gráfica (es dibujado con líneas negro? Con rostros azules?) Se almacenan en el documento Ver. Crear nuevos puntos de vista u opiniones cerca se puede hacer desde el menú Ver o haciendo clic derecho en una ficha de vista. funcionalidad FreeCAD está dividido en diferentes módulos. lo que significa que los componentes se cargan sólo cuando es .

usted tendrá acceso a dos secciones de configuración. Usted puede haber notado que cuando se selecciona una mesa de trabajo en la barra de herramientas FreeCAD. Sin ningún módulo cargado. La configuración de las preferencias generales Al iniciar FreeCAD sin mesa de trabajo abierta. . responsables de la configuración de aplicación general y para la configuración de la pantalla. nuevas secciones aparecerán en la ventana de preferencias. se le tendrá entonces una ventana de preferencias mínimo. que la mesa de trabajo y todos sus componentes se cargan en ese momento. A medida que la carga de módulos adicionales. Esto incluye la configuración de las preferencias.necesario. lo que le permite configurar los detalles de cada mesa de trabajo.

La configuración de la pantalla FreeCAD está siempre en constante evolución, por lo que el contenido de las pantallas pueden diferir de las capturas de pantalla de arriba. Los ajustes son por lo general explica por sí mismo, lo que no debería enfrentarse a cualquier dificultad de configurar FreeCAD a sus necesidades.

Personalización de la interfaz
Desde la interfaz FreeCAD se basa en la moderna Qt toolkit, que tiene un estado-de-la organización de arte. Widgets, menús, barras de herramientas y otras herramientas se pueden modificar, mover, compartida entre los bancos de trabajo, métodos abreviados de teclado se puede establecer, modificar y macros se pueden grabar y reproducir. La ventana de personalización se puede acceder desde Herramientas -> Personalizar menú:

Los comandos de la ficha le permite ver todos los comandos disponibles FreeCAD, organizado por su categoría. En el teclado, puedes ver las combinaciones de teclas asociadas a cada comando FreeCAD, y si lo desea, modificar o asignar nuevo acceso directo a cualquier comando. Aquí es donde puede venir si se utiliza una mesa de trabajo particular, a menudo, y me gustaría acelerar su uso mediante el teclado. Las barras de herramientas y barras de Herramientas etiquetas permiten modificar las barras de herramientas existentes, o crear sus propias barras de herramientas personalizadas. Las macros ficha le permite administrar su guarda macros.

Propiedades de los objetos
Una propiedad es una pieza de información como un número o una cadena de texto que se adjunta a un documento FreeCAD o un objeto en un documento. Las propiedades se pueden ver y - si lo permite - modificado con el editor de propiedades. Propiedades juegan un papel muy importante en FreeCAD, ya que es desde el principio los hizo trabajar con objetos paramétricos, que son objetos definidos sólo por sus propiedades. Personalizada guión objetos en FreeCAD pueden tener propiedades de los siguientes tipos:

Boolean

flotador

FloatConstraint

ángulo

FloatList

Distancia

entero

IntegerConstraint

Porcentaje Enumeración IntegerList cadena StringList Vincular LinkList matriz de vectores VectorList colocación PlacementLink color colorlist Material Ruta del Archivo FileIncluded Círculo FilletContour PartShape

Trabajar con bancos de trabajo
FreeCAD, al igual que muchas aplicaciones de diseño moderno, como Revit, se basa en el concepto de banco de trabajo. Un banco de trabajo puede ser considerado como un conjunto de herramientas especialmente agrupados para una determinada tarea. En un taller de muebles tradicionales, usted tendría una mesa de trabajo para la persona que trabaja con madera, otra para el que trabaja con piezas de metal, y quizás un tercero para el tipo que se monta todas las piezas juntas. En FreeCAD, el mismo concepto se aplica. Las herramientas se agrupan en bancos de trabajo de acuerdo a las tareas que están relacionadas con. Actualmente tenemos disponibles las mesas de trabajo siguientes: Construido en bancos de trabajo El Workbench de malla para trabajar con mallas trianguladas. El Workbench parte para trabajar con piezas de CAD. El banco de trabajo de imagen para trabajar con imágenes de mapa de bits. El banco de trabajo trazado de rayos para trabajar con trazado de rayos (rendering). El Proyecto de Workbench para hacer de base CAD 2D de redacción. El banco de trabajo de dibujo para mostrar su trabajo en 3D en una hoja 2D. Varios bancos de trabajo de pruebas. Usted encontrará en la lista de bancos de trabajo de varios bancos de trabajo para las pruebas de las diferentes áreas y funcionalidades desde FreeCAD se encuentra todavía en una fase temprana de desarrollo. bancos de trabajo nuevos en el desarrollo, estad atentos! Cuando se cambia de banco de trabajo a otro, las herramientas disponibles en el cambio de interfaz. Barras de herramientas, barras de comandos y eventualmente otras partes del interruptor de interfaz a la mesa de trabajo nuevos, pero el contenido de la escena no

animación y creación de imágenes. seguir trabajando sobre ellos con el Workbench Parte. aplicaciones 3D por lo general pueden manejar grandes cantidades de ellos sin ningún problema. líneas y caras. Puesto que las mallas son simples objetos muy. son muy fáciles de crear. a continuación. las mallas presentan una gran limitación: Son objetos muy tonto. por lo que no se comportan como sólidos. modificar. sin embargo. los bordes y triangular) caras (. sólo compuesto de puntos. y no tienen información de masas. licuadora. empezar a dibujar formas en 2D con el Workbench de Proyecto. las mallas son a menudo el tipo de objeto 3D de elección de las aplicaciones que tratan con las películas. Las mallas son un tipo especial de objetos 3D. con sketchup. por ejemplo.cambia. y fácilmente se puede pasar de una aplicación a otra sin ningún tipo de pérdida. Un ejemplo de un objeto de malla Muchas de las aplicaciones 3D utilizar mallas como su principal tipo de objetos en 3D. Maya o 3D Studio Max. Ellos sólo se hacen de las superficies. Esto . En el campo de la ingeniería. dividir. contiene sólo vértices (puntos). estirar. El acoplamiento de banco de trabajo El Workbench de malla maneja mallas de triángulos. Podría. Por estas razones. ya que contienen datos muy sencilla. En una malla no hay forma automática saber si un punto está dentro o fuera del objeto. compuesto de triángulos conectados por los bordes y las esquinas (también llamadosvértices).Además.

que.significa que todas las operaciones sólida basada. En FreeCAD. analizarlos para detectar los errores u otros problemas que les impiden convertir a objetos más inteligente. El módulo de acoplamiento fue creada para servir como banco de pruebas. ya que es una aplicación de ingeniería. son siempre un poco difícil de realizar en las mallas. Con el módulo de acoplamiento El módulo de malla tiene actualmente una interfaz muy sencilla. y. pero ser capaz de leer. en su flujo de trabajo. se enfrenta. a cargo de la parte del módulo. obviamente. por último. y comprobar si hay una malla puede ser con seguridad convertirse en un sólido Flip mallas normales Cerrar los agujeros en las mallas Eliminar caras de las mallas . convertir a los objetos más inteligente. como sumas o restas. como la masa. manipular y convertir mallas también es muy importante para FreeCAD. que pueden transportar más información. el comportamiento de sólidos. Muy a menudo. recibirá los datos 3D en formato de malla. o incluso parámetros personalizados. Las operaciones más importantes que actualmente se puede hacer con las mallas son: mallas de importación en varios formatos de archivo Exportación de mallas en varios formatos de archivo Convertir Parte objetos en mallas Analizar la curvatura. Tendrá que manejar esos datos. y los errores de regresar a menudo. prefieren trabajar con tipos más inteligentes de los objetos 3D. todas sus funciones se agrupan en el acoplamiento de entrada del menú.

. . En primer lugar.) para el proyecto actual de POV-Ray Insertar parte info : inserta el objeto seleccionado para el proyecto actual de POV-Ray  Una vista de exportación Es la forma más sencilla exportar la vista 3D actual y todo su contenido a un Povray archivo . A continuación.Herramientas GUI Estas son herramientas para la exportación de su trabajo en 3D para renderizadores externos   Crear un proyecto de Povray : crea un nuevo proyecto de POV-Ray Insertar vista info : insertar la información de vista (posición de la cámara. elija "Exportar.. etc. ver" en el menú de logicial. debe cargar o crear sus datos CAD y posicionar la orientación de vista 3D como desee. .

pov. Después de que se puede abrir en Povray y de procesamiento: Como es habitual en una rendererer se pueden hacer fotografías grandes y agradables: .Usted obtener pedir una ubicación para guardar el archivo resultante de la *.

write(open(App.0.Bo x.getResourceDir() +'Mod/Raytracing/Templates/ProjectStd.spiritone.pov'.read()) OutFile.write(Raytracing.Secuencias de comandos Aquí es cómo utilizar estas características de python: import Raytracing.pov').RaytracingGui OutFile = open('C:/Documents and Settings/jriegel/Desktop/test.800000.0.Shape.org/ http://en.800000.App.org/wiki/POV-Ray .povray.close() del OutFile Links About POV-Ray:    http://www.wikipedia.activeDocument().800000)) OutFile.getPartAsPovray('Box'.0.'w') OutFile.povViewCamera()) OutFile.write(RaytracingGui.com/~english/cyclopedia/ http://www.

El workbench de proyecto El proyecto de módulo es un módulo de trabajo en progreso y bastante experimental realizado para agregar la funcionalidad básica de dibujo 2d a FreeCAD. También es una herramienta que le permite capturar una imagen desde una webcam. los módulos permite abrir los formatos de archivo .yafaray. De esa barra de comandos. . sin siquiera tocar el código fuente. Actualmente no es realmente útil para el trabajo de producción. IMHO. El workbench de proyecto está disponible en tu lista de workbenches. un clásico barra de herramientas que contiene los comandos de proyecto estándar que se enumeran a continuación y un especial de barra de comandos que no tiene ningún icono de herramienta en ella. Está escrito totalmente en python y también sirve para mostrar hasta qué punto se puede extender FreeCAD totalmente en python. toda la interfaz QT) se ve mucho mejor si se elige el estilo de "cleanlooks" en las preferencias generales de FreeCAD. aparecerán dos barras de herramientas.About other open-source renderers (for future implementation):   http://www. pero que es utilizado por las diferentes funciones para mostrar sus controles. . también puede cambiar las cosas generales como el color de la línea actual y el ancho. la barra de comandos (y.net/ El Banco de imágenes El módulo de imagen administra diferentes tipos de imágenes de mapa de bits y le permite abrirlos en FreeCAD. Como una nota.. . pero ya contiene un par de funciones básicas de trabajo.png y .bmp.xpm en una ventana independiente del visor.luxrender.org/ http://www.jpg. En la actualidad.. Siéntase libre de probar y nos dan una retroalimentación sobre el página de discusión . Cuando se activa.

En casi todos los comandos. a continuación. Ahora. o lee la sección quickstart para ponerse rápidamente en rieles. la mejor cosa a hacer es poner a usted mismo en la vista 2D ortográfica antes de empezar a dibujar. Kde).> vistas estándar . pulse el 2 clave (o en la vista de menú . mientras que las herramientas de modificación le pedirá que seleccione un objeto para trabajar en primer lugar. simplemente asegúrese de que la coordenada Z se desbloquea cuando dibujo y sitúese en la vista adecuada. La ESC clave siempre cancelará el comando activa. presionando el CTRL clave te permitirá ajustar a puntos existentes.Tutorial Para obtener una explicación detallada. Algunos comandos trabajan demasiado en los aviones no están en posición horizontal. Para ello. en caso de que no hay ningún objeto seleccionado. También puede configurar freecad (menú Editar . A continuación encontrará una descripción más completa de todas las herramientas disponibles. Mayús limitará su movimiento horizontalmente. abra o cree un nuevo documento y.> Preferencias) para siempre iniciar en modo ortográfica. Importar & exportación . pulse el O clave (o en la vista de menú . You might need to change that shortcut key in your desktop preferences.> vista ortográfica) para cambiar al modo ortográfica. Note On some desktop systems (ex. está listo para dibujar. A continuación. Todos los comandos de proyecto más o menos siguen las mismas reglas: herramientas de dibujo se le pedirá que elija puntos en la pantalla o introduzca coordenadas numéricas.> arriba) para ponerlo en vista superior. Gnome. lea la Tutorial de proyecto (en curso). verically o en relación con un segmento existente y en algunas herramientas ALT le dará opciones adicionales tales como la creación de un nuevo objeto en lugar de la transformación de uno ya existente. Inicio rápido No todos los comandos de dibujo funcionan bien en 3D en este momento. Por lo tanto. the ALT key is bound by default to moving windows on the desktop.

Tenga en cuenta que. Formatos de archivo admitidos actualmente son: Autodesk SVG .. se exportarán todos los objetos. ángulo del comienzo y ángulo final   . radio.  Plano de trabajo : define el plano de trabajo para las operaciones de la próximas Poner en hoja de : escribe los objetos seleccionados en un svg hoja de dibujo  Objetos de dibujo Estas son herramientas para la creación de objetos. sino más bien las líneas. círculos.   2-punto línea : dibuja un segmento de línea de puntos 2 Cable (línea de múltiples puntos) : dibuja una línea compuesta de múltiples segmentos de línea Círculo : dibuja un círculo desde el centro y el radio Arco : dibuja un segmento de arco desde el centro. mientras que la importación anexará el contenido del archivo al documento actual. los importadores centran sólo en objetos 2d y. caras 3D. puesto que el propósito del proyecto módulo es trabajar con objetos 2d.Estas son las funciones para abrir. Apertura abrirá un nuevo documento con el contenido del archivo.DXF : Las importaciones y exportaciones de los archivos DXF creados con otras aplicaciones CAD (como geometría) : Las importaciones y exportaciones de los archivos SVG creados con las aplicaciones de dibujo vectorial abierto de CAD .Oca : Las importaciones y exportaciones archivos OCA/GCAD. etc. un nuevo potencialmente Abrir el formato de archivo de CAD Formato Herramientas de redacción Estas herramientas permiten configurar su entorno de trabajo o producir genéricas de las operaciones. Exportar guardará los objetos seleccionados en un archivo. a pesar de que son compatibles con formatos DXF y OCA objetos definiciones en el espacio 3D (objetos no son necesariamente planos). importar o exportar a otros formatos de archivo. Si no se selecciona nada. ellos no importan objetos volumétricos como mallas. textos o formas planas.

Trabajan en los objetos seleccionados.   Rectángulo : dibuja un rectángulo de puntos opuestos 2 Texto : dibuja una anotación de texto multilínea Dimensión: dibuja una anotación de dimensión Modificación de objetos Estas son herramientas para modificar los objetos existentes.   Mover : mover objetos desde una ubicación a otra Rotate : permite girar objetos desde un ángulo de inicio a un ángulo de final Offset : mover segmentos de un objeto acerca de una cierta distancia Actualizar : se une a los objetos en un objeto de nivel superior Downgrade : Explodes objetos en objetos de nivel inferior Trim/Extend (Trimex) : permite recortar o extender un objeto Aplicar estilo : se aplica el color actual y ancho a objetos Escala : escala seleccionado objetos alrededor de un punto de base Editar: editar un objeto seleccionado        Comportamientos comunes El ajuste : Permite colocar puntos de nuevos en lugares especiales sobre los objetos existentes de : Permite colocar puntos de nuevos horizontal o verticalmente en relación con los puntos anteriores con coordenadas manuales : Permite introducir las coordenadas manuales en lugar de hacer clic en la pantalla todas herramientas de modificación pueden modificar los objetos seleccionados o crear una copia modificada de ellos. pero si no se ha seleccionado ningún objeto. Presionar ALT mientras utiliza la herramienta hará una copia de construcción : Permite poner geometría aparte del resto. para conmutador fácil encendido y apagado los objetos recién creados adoptar el proyecto actual color y ancho Restricción Trabajar Copiar: Modo Todos . será invitados para seleccionar uno.

realizar algunas acciones. Ahora puede acceder al diálogo de macro con el botón de edición: . y se guardarán sus acciones. a continuación. le pedirá que asigne un nombre a la macro y. salidas de un comando de python. se registra las acciones como hacerlas.> Mostrar los comandos de consola de python de secuencias de comandos). verá que en FreeCAD. Cómo funciona Si habilita la salida de la consola (menú Editar . editar y reproducir la macro actual.El proyecto módulo también tiene su Preferencias pantalla API Ver la API de proyecto página para obtener una descripción completa de las funciones de proyecto que se pueden utilizar en secuencias de comandos y macros Secuencias de comandos y macros Macros Las macros son una manera conveniente para crear acciones complejas en FreeCAD. Los comandos Thos son lo que puede ser grabado en una macro. Cuando haya terminado.> macros .> Preferencias . parada de grabar. luego guardar bajo un nombre y les reproducir siempre que lo desee. también puede editarlos y crear secuencias de comandos muy complejas.> General . Es muy simple de usar: pulse el botón de grabación. cada acción que haces. La herramienta principal para hacer macros es la barra de herramientas de macros: En ella tienes 4 botones: record. Simplemente. como presionar un botón. Dado que las macros son en realidad una lista de comandos de python. haga clic en el botón de grabación de parada.

si lo desea. asigne un nombre a. En el cuadro de diálogo de edición de macros. pulse el botón "detener la grabación". en el Parte Workbench . simplemente pulse el botón de ejecutar en la barra de herramientas mientras la macro se encuentra en el editor. se abrirá en una ventana del editor de donde puede realizar cambios en su código. hacer alteraciones a la misma. todo esto puede hacerse a través de las herramientas .> Personalizar menú: . Si edita una macro. no resulta práctico cargar una macro en el editor en el fin de utilizarlo. así que cualquier cambio que realice.Se puede administrar sus macros. Personalización de Por supuesto. a continuación. como asignar un método abreviado de teclado a ella o poner una entrada en el menú. Macro siempre está guardado en el disco. crear un cilindro con radio = 10 y altura = 10. digamos "cilindro 10 x 10". editar o crear nuevas desde cero. FreeCAD proporciona mucho mejores maneras de usar la macro. puede ver el código de python que se ha registrado y. estará siempre disponible próxima vez que inicie FreeCAD. Para ejecutar la macro. Una vez creada la macro. o cualquier nueva macro se crea. A continuación. eliminar. En el ejemplo se Presione el botón de grabación.

multiplataforma lenguaje de programación. guardar la macro del mismo modo como se guarda un documento de FreeCAD. Creación de macros sin grabación Usted puede también directamente copiar y pegar código python en una macro. la macro aparecerá bajo el tema "Instalado Macros" del menú macro.. Introducción a Python Este es un tutorial corto realizado para quién es totalmente nuevo para python. hace posible agregar fácilmente sus propias herramientas de la interfaz. al igual que cualquier estándar. .. sin acción de GUI de grabación. Simplemente crear una nueva macro. Próxima vez que inicie la FreeCAD. Python es un código abierto. Python tiene varias características que lo hacen muy diferente de otros lenguajes de programación común y muy accesible a los nuevos usuarios como usted: Ha sido diseñado especialmente para ser fácil de leer por los seres humanos. Repositorio de macros Visita el Recetas de las macros página para recoger algunas macros útiles para agregar a su instalación de FreeCAD. Siga leyendo para la secuencias de comandos página si desea saber más acerca de los scripts de python. Usted puede. editarlo y pegar el código. Esto. y por lo tanto es muy fácil de aprender y comprender. añadido a la potencia de python de secuencias de comandos dentro de FreeCAD.Herramienta de FreeCAD de de esta manera puede hacer que la macro se convierten en un verdadero instrumento. a continuación.

Se interpreta, es decir, a diferencia de compilado de lenguajes como C, su programa

no es necesario ser compilado antes de que se ejecute. El código que escriba puede ser inmediatamente ejecutado, línea por línea, si así lo desea. Esto hace extremadamente fácil para aprender y para encontrar errores en el código, porque usted ir despacio, paso a paso.
Puede incrustarse en otros programas que se utiliza como lenguaje de scripting.

FreeCAD tiene un intérprete de python incrustado, por lo que se puede escribir en python código en FreeCAD, en la que se manipulan piezas de FreeCAD, por ejemplo, para crear la geometría. Esto es extremadamente potente, porque en lugar de simplemente hacer clic en un botón con la etiqueta "crear la esfera", que un programador ha colocado allí para usted, usted tiene la libertad para crear fácilmente su propia herramienta para crear exactamente la geometría desee.
Es extensible, fácilmente puede conectar nuevos módulos en su instalación de

python y ampliar su funcionalidad. Por ejemplo, tiene módulos que permiten python leer y escribir imágenes jpg, para comunicarse con twitter, para planificar las tareas que debe realizar su sistema operativo, etc.

Por lo tanto, las manos! Tenga en cuenta que lo que vendrá siguiente es una introducción muy simple, de ninguna manera un tutorial completo. Pero mi esperanza es que después de obtendrá suficiente fundamentos para explorar más profunda en los mecanismos de FreeCAD.

El intérprete
Por lo general, al escribir programas informáticos, usted simplemente abra un editor de texto o su entorno de programación especial que se encuentra en caso de mayoría un editor de texto con varias herramientas alrededor de ella, escribe su programa, a continuación, compilarlo y ejecútelo. La mayoría del tiempo usted cometió errores al escribir, por lo que su programa no funcionará y obtendrá un mensaje de error que indica lo que salió mal. A continuación, vas a volver a su editor de texto, corregir los errores, ejecutar una vez más, y así sucesivamente hasta que el programa funciona bien. Que todo el proceso, en python, se puede hacer transparente dentro del intérprete de python. El intérprete es una ventana de python con un símbolo del sistema, donde simplemente se puede escribir código python. Si instala python en el equipo (descargarlo desde el sitio Web de python si estás en Windows o Mac, instálelo desde el repositorio de paquete si estás en linux), usted tendrá un intérprete de python en su menú de inicio. Pero FreeCAD también tiene un intérprete de python en su parte inferior:

El intérprete muestra la pitón versión, a continuación, un >>> símbolo, que es el símbolo, es decir, donde introducir código python. Escribir código en el intérprete es simple: una línea es una instrucción. Cuando se presiona Intro, su línea de código se ejecutará (después de ser invisible y instantáneamente compilado). Por ejemplo, intente escribir esto:
print "hello"

Imprimir es una palabra clave especial de python que significa, obviamente, para imprimir algo en la pantalla. Cuando pulsa Intro, se ejecuta la operación, y se imprime el mensaje "hello". Si comete un error, por ejemplo vamos escribir:
print hello

Python nos dirá que no sabe exactamente qué Hola es. Los "personajes especificar que el contenido es una cadena, que es simplemente, en jerga de programación, un fragmento de texto. sin el ", el comando de impresión creía Hola no era un trozo de texto pero una palabra clave de python especiales. Lo importante es que usted obtenga notificada inmediatamente que ha cometido un error. Pulsando la flecha hacia arriba (o, en el intérprete de FreeCAD, CTRL + Flecha arriba), usted puede ir realizar copia de seguridad en el último comando que usted escribió y corregirlo. el intérprete de python también tiene un integrado ayuda a sistema. Intente escribir:
help

o, por ejemplo, supongamos que no entendemos lo que salió mal con nuestro comando de impresión Hola anterior, queremos información específica sobre el comando "print":
Help("Print")

Usted obtendrá una descripción larga y completa de todo lo que puede hacer el comando de impresión. Ahora nos dominan totalmente nuestro intérprete, podemos empezar con cosas graves.

Variables
Por supuesto, impresión "hello" no es muy interesante. Impresión de cosas que no saber antes de, o dejar que python a encontrar para usted es más interesante. Es donde entra en juego el concepto de variable. Una variable es simplemente un valor que almacena bajo un nombre. Por ejemplo, escriba esto:

a = "hello" imprimir una

Supongo que usted entiende lo que ha ocurrido, "salvó" la cadena "hello" bajo el nombre de una. Ahora, una ya no es un nombre desconocido! Podemos usarlo en cualquier lugar, por ejemplo en el comando de impresión. Podemos utilizar cualquier nombre que queremos que sólo respetando las reglas simples, como no usar espacios ni signos de puntuación. Por ejemplo, muy bien podríamos escribir:
Hola = "mi propia versión de Hola" Hola impresión

¿Ver? Ahora Hola ya no es una palabra no definida. ¿Qué pasa si, por el terrible mala suerte, hemos escogido un nombre que ya existe en python? Digamos que queremos almacenar nuestra cadena bajo el nombre de "print":
imprimir = "hello"

Python es muy inteligente y nos dirá que esto no es posible. Tiene algunas palabras de clave "reservados" que no se puede modificar. Pero nuestras propias variables pueden modificarse en cualquier momento, eso es, exactamente, por qué se les llama variables, el contenido puede variar. Por ejemplo:
myVariable = "hello" imprimir myVariable myVariable = "good bye" imprimir myVariable

Pero si llamó por ejemplo myWelcomeMessage. "porque cuando te escribir programas de largos. que te recuerde fácilmente lo que se utiliza para cuando lo verás. Vimos en nuestro ejemplo de impresión Hola. Por lo que están almacenados como "int" y python puede hacer con ellos todo lo que puede hacer con números enteros. python sabe que 10 y 20 son números enteros. Python puede sumar dos fragmentos de texto. Una cosa es importante. no sólo las cadenas de texto. Números Por supuesto usted debe saber que la programación es útil para tratar a todo tipo de datos y especialmente los números.Hemos cambiado el valor de myVariable. Mira los resultados de esto: firstNumber = "10" secondNumber = "20" imprimir firstNumber + secondNumber ¿Ver? Nos obligó a python a considerar la posibilidad de que nuestros dos variables no son números sino meras fragmentos de texto. pero no trate de averiguar cualquier suma. tales como números enteros y float: firstNumber = 10 secondNumber = 20 imprimir firstNumber + secondNumber Type(firstNumber) Esto ya es mucho más interesante. se dice específicamente el comando de impresión que lo que vendría próximo es una cadena de texto. que el comando print reconocido nuestra cadena "hello". . o una cadena en la jerga de python. También tenemos otros tipos básicos de datos. ¿verdad? Ahora ya tenemos una potente calculadora! Mirar bien en cómo funcionaba. python debe saber qué tipo de datos que se trata. Eso es porque mediante el ". También podemos copiar variables: var1 = "hello" var2 = var1 imprimir var2 Tenga en cuenta que es interesante para darle buenos nombres a sus variables. después de un tiempo no recuerdas lo que su variable denominada a" es para. siempre podemos comprobar de qué tipo de datos es el contenido de una variable con el tipo de palabra clave de python especiales: myVar = "hello" Type(myVar) Nos dirá el contenido de myVar es 'str'.

En varios casos como este. separadas por comas y incluso el resultado de otros comandos de python.Pero estábamos hablando de números enteros. mientras que los números de foat pueden tener una parte decimal: var1 = 13 var2 = 15. pero no cambiamos varB por sí mismo. python automáticamente decide qué tipo para hacer algo. varA es una cadena y varB es un tipo int. Por ejemplo: varA = "hello 123" varB = 456 imprimir varA + varB Esto nos dará un error. funciona la operación! Tenga en cuenta que nos "stringified" varB en el momento de la impresión. Pero podemos obligar a python para convertir entre los tipos: varA = "hello" varB = 123 imprimir varA + str(varB) Ahora ambos son cadenas. sumas. Hemos impreso variables. type(var2) Int y floats pueden ser mezclados entre sí sin problema: total = var1 + var2 imprimir total impresión type(total) ¿Por supuesto. Tal vez usted también vio que haciendo estos dos comandos: Type(varA) impresión type(varA) . en esta sección. También hay números de float. Si hemos querido convertir varB permanentemente en una cadena. La diferencia es que los números enteros no tienen parte decimal. necesitamos hacer esto: varB = str(varB) También podemos usar int() y float() para convertir a int y float si queremos: varA = "123" impresión int(varA) impresión float(varA) Nota sobre los comandos de python Usted debe haber notado que. y python no sabe qué hacer. derechos? Python automáticamente decidió entonces que el resultado es un flotante. varias cosas. En otros casos no es así. el total tiene decimales.65 imprimir "var1 es de tipo". hemos utilizado el comando de impresión de varias maneras. como type(). type(var1) imprimir "var2 es de tipo".

su "posición" en la lista comienza con 0. El primer elemento de una lista es siempre en la posición 0. Pero de ahora en adelante. str(). 34. La misma manera que definimos una cadena de texto mediante el uso de "". Las listas son muy útiles porque se pueden agrupar las variables. como se puede leer aquí tales como ordenar contenido. vamos dejar de usarlo aquí.tienen exactamente el mismo resultado. "Bob"] myMixedList = ["Hola".3] Type(myList) myOtherList = ["Bart". "Frank". Cuando te escribimos más complejos de los programas que se ejecutan fuera del intérprete. Eso es porque estamos en el intérprete. . por lo que simplemente podemos escribir: myVar = "Hola amigos" myVar Usted debe también han visto que la mayoría de los comandos de python (o palabras clave) ya sabemos tienen paréntesis solía decirles sobre qué contenido debe trabajar el comando: type(). pero. también funciona normalmente como esta: print("hello"). por lo que necesitaremos utilizar el comando de impresión. "Bob" será en la posición 2.2. int(). no imprimen automáticamente todo en pantalla. y todo se imprime automáticamente en la pantalla. por lo que en nuestra myOtherList. va a ir más rápido. por ejemplo contarlos: Len(myOtherList) o recuperar un elemento de una lista: myName = myOtherList [0] myFriendsName = myOtherList [1] Ves que mientras que el comando de len() devuelve el número total de elementos de una lista. Listas Otro tipo de datos interesantes es listas. ya que se utiliza a menudo. puede hacer todo tipo de cosas en que los grupos. Única excepción es el comando de impresión. definimos listas mediante el uso de []: myList = [1. Podemos hacer mucho más cosas con listas. Una lista es simplemente una lista de otros datos. eliminar o agregar elementos.567] Verá que puede contener cualquier tipo de datos. los programadores de python hecho una versión simplificada. A continuación. que en realidad no es una excepción. 345.

Si comienza una línea con 2 espacios y el siguiente con 4. Inmediatamente después de introducir la línea de comandos que terminan con:. el símbolo cambiará a. se considerará parte del bloque para-en. o varios espacios en blanco.. o simplemente pulse Intro para volver desde el bloque para-en Sangría es cool porque si realiza grandes (por ejemplo utilizar fichas en lugar de espacios.. cuando se escribe un gran programa tendrá una visión clara de lo que se ejecuta dentro de lo que. Otros lenguajes de programación utilizan otros métodos..línea terminó ha ocurrido y lo que vendrá el próximo formarán parte de ella.Una cosa divertida e interesante para usted: una cadena de texto es. como poner everythin dentro de paréntesis. etc.. tales como dictionnaries . Vamos a ver que . en realidad. o incluso puede crear sus propios tipos de datos con clases . o una ficha o varias fichas. Cuando usted haya terminado. será un error. "Jack". Les comenzará con un espacio en blanco. "William". en operación? Para ello. Por ejemplo mirar esto: alldaltons = ["Joe". porque es más grande)." comando e hizo algo con cada uno de los elementos. Es decir. ¿Cómo sabe cuántas de las siguientes líneas python voluntad será a ejecutarse dentro del for. Fuera de cadenas. las siguientes líneas no comienzan de forma inmediata.. hay tipos de datos más integrados.. que significa python sabe que un: . Sangría Uno de los grande usos fresco de listas también es navegar a través de ellos y hacer algo con cada elemento. una lista de caracteres! Intente hacer esto: mi_var = "hello" Len(myVar) myVar [2] Por lo general todo lo que puede hacer con listas también puede hacerse con cadenas. python utiliza sangría. "Averell"] para dalton en alldaltons: imprimir dalton + "Dalton" Nos itera (programación jerga otra vez!) a través de nuestra lista con la "para.. Como escribe tus próximas líneas con la sangría de la misma. carrozas y listas.. simplemente escribir otra línea sin sangría. Tenga en cuenta la sintaxis especial: la de comando termina con: que indica que lo que viene después va a ser un bloque de uno de los comandos más. enteros. en.

pero intente reemplazar la segunda línea por: Si "Lucky" en alldaltons: A continuación. "Jack". "William".muchos otros comandos que para-en pueden haber sangría bloques de código demasiado. "Jack". se imprime nada. "Jack". "es el número de Dalton". Es decir. "William". "William".11) total = 0 imprimir "suma" número de serie: imprimir el número total = total + número imprimir "----" imprimir total O cosas más complejas como este: alldaltons = ["Joe". Para-en comandos pueden utilizarse para muchas cosas que hay que hacer más de una vez. "Averell"] Si "Lucky" en alldaltons: imprimir "We found que Dalton!!!!!!" otra cosa: imprimir "Esa Dalton no existe!" Funciones . También podemos especificar una cosa: declaración: alldaltons = ["Joe". "Averell"] para n en range(4): imprimir alldaltons [n]. "Averell"] total = len(alldaltons) para n en range(total): imprimir alldaltons [n] Otro uso interesante de bloques con sangría es con el si comando. así que funciona bien con otros comandos de python. Por ejemplo: alldaltons = ["Joe". "Jack". n Verá que el comando de range() también tiene esa extraña particularidad que comienza con 0 (si no se especifica el número inicial) y que su último número uno será menor que el número final que especifique. "Averell"] Si "Joe" en alldaltons: imprimir "We found que Dalton!!!!!!" Por supuesto esto será siempre la primera frase de la impresión. se puede combinar con el comando range(): serie = range(1. Si un bloque de código sólo se ejecuta si se cumple una determinada condición. Por ejemplo. por supuesto. por ejemplo: alldaltons = ["Joe". "William".

python le dirá que necesita un argumento. les sumas y devuelve ese valor. De hecho. un comando personalizado en python se llama a una función y se realiza como esta: Def printsqm(myValue): imprimir str(myValue) + "metros cuadrados" printsqm(45) Muy simple: el comando de def() define una nueva función. Por supuesto. Los argumentos son datos que se pasan a la función. la mayoría de los módulos adicionales que se pueden conectar en su instalación de python hacen justo que.34) Hicimos una función que recibe dos argumentos.34) Habrá un error. En lugar de ello podríamos hacer algo como esto: Def sum(val1. pero también sirve para que la función sepa cuántos argumentos a esperar. Asígnele un nombre.El comandos estándar de python no son muchos. y ya sabemos que varios de ellos. myList es un argumento que se pasa a la función len(). Pues bien. y es sumamente fácil. ya que estamos en el intérprete y todo se imprime. Por ejemplo. Es más que un nombre que usted da al argumento de manera que pueda hacer algo con ella. tal como se almacena en la variable myTotal. ¿Es decir. Mismo como hicimos aquí. podrá escribir len(myList) y obtendrá la longitud de myList. En la versión actual de python hay alrededor de 30 años. Nuestra función fue programada para recibir sólo un argumento. La función de len() está definida de tal manera que sabe qué hacer con lo que se pasa a la misma. Por ejemplo. porque podemos hacer algo con el resultado. si haces esto: printsqm(45.34) . desea len() de algo. Si escribes sólo len() por sí sola. y dentro de los paréntesis definir argumentos que vamos a usar en nuestra función.val2): total = val1 + val2 retorno total Sum(45. haciendo: Sum(45. pero recibió dos. Volviendo algo es muy útil. agregar comandos que puede utilizar. podemos. El nombre de "myValue" puede ser cualquier cosa. ¿Pero Imagínese si podríamos inventar nuestros propios comandos? Pues bien. a continuación. y que se utilizará sólo dentro de la función. mirar el comando len().34) myTotal = sum(45. derecho? Por ejemplo. 45 y 34.

. Pues bien.py. Eso es todo. simplemente pulse el botón derecho de su archivo. A continuación. veamos iniciar FreeCAD y en la ventana de intérprete. nada que aparecen en la pantalla. también es extremadamente fácil. Simplemente abra un editor de texto (como el Bloc de notas de windows) y escribir todos tus python líneas. como si nos habíamos escrito en el intérprete. línea por línea. guarde ese archivo en algún lugar. . Supongamos que escribimos un archivo como esta: Def sum(a. necesitaremos una última cosa: cómo trabajar con archivos y módulos. En FreeCAD. Hay una gran diferencia: el comando de importación se realiza no sólo para ejecutar programas escritos en los archivos. pero es sólo para mostrarle que un programa de python es nada más que un archivo de texto.b): devolver un + b imprimir "cargado de test. hay cientos de maneras. escribimos python instrucciones línea por línea en el intérprete. Módulos Ahora que tenemos una buena idea de cómo funciona el Pitón. hay editores mucho mejores que el Bloc de notas. tales como la carpeta bin del FreeCAD. ábralo con python y ejecutarlo. pero fuera del intérprete. ¿Hasta ahora.py.py en nuestro directorio FreeCAD/bin. la forma más sencilla es colocar su programa en un lugar que intérprete de python de FreeCAD sabe de forma predeterminada. el intérprete debe saber donde está su programa . Para hacer python ejecuta ese programa. Para ello. escribir: prueba de importación sin la extensión . Pero también puede ejecutarla desde el intérprete de python por sí mismo. etc. Tendría que hacer: impresión sum(45. Se creará la función suma.se imprimirá el resultado en la pantalla. del mismo modo como escribirlos en el intérprete. Ahora. ya que existe el comando de impresión no más dentro de la función. tiene un programa completo de python. Esto simplemente ejecutará el contenido del archivo.py correctamente" y guardamos como test. derecho? ¿Qué sucede si podríamos escribir varias líneas juntos y tenerlos ejecutado todos a la vez? Sin duda sería practico para hacer las cosas más complejas.34) de tener algo impreso. preferiblemente con una extensión de . Y podríamos ahorrar nuestro trabajo demasiado.py. y el mensaje se imprimirá. Obtenga más información acerca de las funciones aquí . o cualquiera de las carpetas mod. Por supuesto. En ventanas. con muescas.

puede utilizar sus funciones como éste: module. como la nuestra. ¿Cómo sabemos lo que tenemos los módulos. sino también para cargar las funciones en su interior. Importar un módulo y. Incluso nos podemos examinar su contenido con el comando dir() matemáticas de importación Dir(Math) Vamos a ver todas las funciones contenidas en el módulo de matemáticas. Ahora podemos escribir q para salir de la ayuda interactiva y importar cualquiera de ellos.45) Como se hizo anteriormente.Sum(14.54) Básicamente todos los módulos se comportan como ese. __file__. Por lo tanto. se denominan módulos. Normalmente cuando escribimos una función sum() en el intérprete.45) Es decir. También podemos tirar de la parte de la prueba y importar nuestra función sum() directamente en el espacio principal intérprete. ¿cuáles son las funciones dentro de y cómo utilizarlas (es decir. Casi todos los módulos de hacen: definir funciones. en todo el mundo verá something. con un entre puntos. básicamente. Esto es muy útil. para que estén disponibles en el intérprete. qué tipo de argumentos que necesitan)? Ya vimos python tiene una función de help(). porque podemos importar un montón de módulos y mantenerlo todo bien organizado. a continuación. ejecutarlo simplemente como éste: Sum(14. así como material extraño llamado __doc__. El __doc__ es . el módulo se importa como un "contenedor". Haciendo: Help() módulos Nos dará una lista de todos los módulos disponibles.como el nuestro. Hacemos: Test. y todas sus funciones están dentro. tipos de datos nuevos y clases que se pueden utilizar en el intérprete o en sus propios módulos de python.somethingElse. como este: de importación de prueba * Sum(12.function(argument). __name__. lo que significa somethingElse está dentro de algo. Archivos que contienen funciones. la sintaxis es un poco diferente. Cuando importa un módulo que contiene nuestra función sum(). porque nada le impide que importar módulos dentro de su módulo! Una última cosa sumamente útil.

vimos aquí sólo una parte muy pequeña del mundo python. usted mismo. o. los usuarios que saben un poco de programación de python. incluso la representación de este contenido en las vistas 3d son accesibles desde el intérprete de python incorporada o desde sus propios scripts. Por ejemplo. . el contenido de la escena. sólo hacer Dir() y leer a Conceptos básicos de secuencias de comandos de FreeCAD. de secuencias de comandos. Por lo tanto. Hay dos python muy importantes documentos de referencia en la red: la el referencia oficial de Python wikibook de buceo en Python Secuencias de comandos en FreeCAD de Python FreeCAD está construida desde cero para ser controlado totalmente por secuencias de comandos de python. De resultas de ello. sino también porque la filosofía detrás de ella es más para proporcionar una plataforma para el desarrollo de CAD que una aplicación diseñada por el usuario. Casi todas las partes de FreeCAD como la interfaz.sin. FreeCAD es probablemente una de las más aplicaciones de ingeniería profundamente personalizables disponible hoy en día.. Cada función de módulos (decolletée) tiene un __doc__ que explica cómo utilizarlo. FreeCAD tiene muy pocos comandos "nativos" para interactuar en los objetos 3D. ¿Quieres saber cómo usarlo? impresión math.extremadamente útil. Pero la facilidad de python interior FreeCAD probablemente ayudará mucho para ver rápidamente nuevas funcionalidades. vemos que hay una función de pecado en lado el módulo de matemáticas. creo que usted debe saber tener una buena idea de cómo funciona la Pitón. En su estado actual. por lo general. principalmente porque es todavía en fase temprana de desarrollo.__doc__ Comenzando con FreeCAD Bien. sin embargo. se trata de un texto de documentación.. y puede comenzar a explorar lo que FreeCAD tiene que ofrecer. siendo desarrollado por "usuarios de poder". Las funciones de python de FreeCAD son todos bien organizados en diferentes módulos. Por supuesto. Algunos de ellos ya se cargan (importado) al iniciar FreeCAD. esperamos. Hay muchos conceptos importantes que no mencionamos aquí.

FreeCAD proporciona un explorador de clase muy útil para la exploración de su nuevo mundo FreeCAD: cuando se escribe el nombre de una clase conocida seguida por un punto (lo que significa que desea agregar algo de esa clase). Python es un lenguaje muy fácil para aprender. recomendamos que usted busque para tutoriales en internet y echar un vistazo rápido a su estructura. sin la necesidad de compilar nada. puede acceder a todos los módulos de sus sistema instalado python. se muestra un texto de ayuda asociado (si existe . Cuando se selecciona algo. puede ejecutar código python y navegar a través de las clases disponibles y la función. se clase navegador abre una ventana. sobre todo porque se puede ejecutar dentro de un intérprete.Si no está familiarizado con python. donde desde comandos simples para completar los programas se pueden ejecutar sobre la marcha. donde puede navegar entre las subclases disponibles y los métodos. El intérprete Desde el intérprete. FreeCAD tiene un intérprete de python incorporada. así como los módulos integrados de FreeCAD y todos los módulos adicionales de FreeCAD instaló posteriormente. La captura de pantalla siguiente muestra la pitón intérprete: Desde el intérprete.

Por lo tanto, inicie aquí escribiendo aplics o Gui. a ver qué pasa. Otro modo más genérico de python de explorar el contenido de los módulos y las clases es utilizar el comando de impresión dir(). Por ejemplo, si escribe Imprimir dir() enumerará todos los módulos cargados actualmente en FreeCAD. dir(App) de impresión le mostrará todo dentro del módulo de la aplicación, 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 ya escrito anteriormente. Para navegar en la historia de comando, utilice CTRL + arriba o CTRL + abajo. Haciendo clic derecho en la ventana de intérprete, usted también tiene varias otras opciones, tales como copia toda la historia (útil para experimentar algo aquí y, a continuación, realizar una secuencia de comandos completa de la misma) o inserta el nombre de archivo con la ruta de acceso completa.

Ayuda de Python
En el menú de ayuda de FreeCAD, usted encontrará una entrada con la etiqueta "Python ayudar a", que se abrirá una ventana del explorador que contiene una documentación completa, generado en tiempo real de todos los módulos de python disponibles para el intérprete de FreeCAD, incluyendo python y módulos integrados de FreeCAD, módulos de sistema instalado y módulos adicionales de FreeCAD. La documentación disponible allí depende de cuánto esfuerzo cada desarrollador de módulo poner en documentar su código, pero generalmente módulo de python tienen la reputación de ser bastante bien documentado. La ventana de FreeCAD debe permanecer abierta para este sistema de documentación trabajar.

Módulos integrados
Dado que FreeCAD está diseñado para ejecutarse sin interfaz gráfica de usuario, casi toda su funcionalidad está separada en dos grupos: funcionalidad principal, llamado APP y funcionalidad de Gui, llamado Gui. Por lo tanto, nuestros dos principales módulos integrados de FreeCAD se llaman APP y Gui. Estos dos módulos también pueden accederse desde secuencias de comandos de fuera del intérprete, por los respectivos nombres de FreeCAD y FreeCADGui.
En el módulo de aplicación, usted encontrará todo lo relacionado a la aplicación en

sí, como métodos para la apertura o archivos de cierre y a los documentos, como la configuración del documento activo o la lista de su contenido.

En el módulo de Gui, encontrará herramientas para acceso y gestión de elementos

de la Gui, como los workbenches y sus barras de herramientas y, más interesante, la representación gráfica de todos los contenidos de FreeCAD.

Listado de todo el contenido de los módulos es tarea un poco contraproducente, ya que crecen muy rápido a lo largo de desarrollo de FreeCAD. Pero las dos exploración herramientas proporcionadas (el explorador de clases y la ayuda de python) deberían proporcionarle, en cualquier momento, una documentación completa y actualizada de estos módulos.

Los objetos de aplicación y Gui
Como dijimos, en FreeCAD, todo está separada entre el núcleo y la representación. Esto incluye también los objetos 3D. Puede obtener acceso a propiedades definitorias de objetos (llamados características en FreeCAD) a través del módulo de aplicación y cambiar la forma en que están representados en la pantalla a través del módulo de Gui. Por ejemplo, un cubo tiene propiedades que lo definen, como anchura, longitud, altura, se almacenan en un objeto de aplicación y representación, tales como el color de caras, modo de dibujo, que se almacenan en un objeto de Gui correspondiente. Esta forma de hacerlo permite una muy amplia gama de usos, como tener algoritmos sólo funcionan en la parte definitoria de funciones, sin necesidad de preocuparse por cualquier parte visual, o incluso redirigir el contenido del documento a aplicaciones no gráficos, tales como listas, hojas de cálculo o análisis de elementos. Para cada objeto de la aplicación en el documento, existe un objeto correspondiente de la Gui. El documento en sí, en realidad, también tiene aplicación y una Gui objetos. Esto, por supuesto, sólo es válido cuando se ejecuta FreeCAD con su interfaz completa. En la versión de línea de comandos, no GUI existe, por lo que sólo los objetos de aplicación son sencillo. Nota que la Gui es parte de los objetos genera de nuevo cada vez que un objeto de aplicación está marcado como "a ser recalculadas" (por ejemplo, cuando uno de sus parámetros cambiado), por lo que los cambios que podría haber hecho directamente al objeto Gui podría perderse. para acceder a la parte de aplicación de algo, escribe:
myObject = App.ActiveDocument.getObject("ObjectName")

donde "ObjectName es el nombre del objeto. También puede escribir:
myObject = App.ActiveDocument.ObjectName

para acceder a la parte de Gui del mismo objeto, escriba:

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

donde "ObjectName es el nombre del objeto. También puede escribir:
myViewObject = App.ActiveDocument.ObjectName.ViewObject

Los objetos Document
En FreeCAD todo el trabajo se encuentra dentro de documentos. Un documento contiene su geometría y puede guardarse en un archivo. Pueden abrir varios documentos al mismo tiempo. El documento, como la geometría contenido en su interior, tiene objetos de aplicación y Gui. Objeto de la aplicación contiene las definiciones de la geometría real, mientras que el objeto de Gui contiene las diferentes vistas del documento. Puede abrir varias ventanas, cada uno ver su trabajo con un factor de zoom diferentes o un punto de vista. Estas vistas son parte del objeto de Gui de su documento. Para acceder a la parte de la aplicación del documento abierto actualmente (activo), escriba:
myDocument = App.ActiveDocument

Para crear un nuevo documento, escriba:
myDocument = App.newDocument("Document Name")

Para acceder a la parte de Gui el documento abierto actualmente (activo), escriba:
myGuiDocument = Gui.ActiveDocument

Para acceder a la vista actual, escriba:
myView = Gui.ActiveDocument.ActiveView

Introducción
En primer lugar tiene que importar el módulo de Mesh:
import Mesh

Después de usted tiene acceso al módulo de malla y la clase de malla que facilitar las funciones de la versión C++ Mesh-núcleo de FreeCAD.

Creación y carga
Para crear un objeto de malla vacío sólo utilice el constructor estándar:
mesh = Mesh.Mesh()

También puede crear un objeto desde un archivo
mesh = Mesh.Mesh('D:/temp/Something.stl')

0000]. la intersección y la diferencia de dos objetos de malla.5000. #triangle 2 [-0.0000].0000]. 50) # list with several Los dos primeros parámetros definen los radios del toroide y el tercer parámetro es un factor de sub-sampling para cuántos triángulos se crean. Cuanto mayor sea este valor la más suave y cuanto menor sea el más gruesa el cuerpo es.5000. por ejemplo.5000. La clase de malla proporciona un conjunto de funciones booleanas que pueden utilizarse para fines de modelado.5000.0. conos y toroides. m2 m3 = Mesh.0.5000.0. thousands triangles m = Mesh.0000].intersect(m2) m5 = Mesh.-0.[0. Modelado Para crear geometrías regulares que puede utilizar Python secuencia de comandos BuildRegularGeoms.mesh(m1) m5. esferas. import BuildRegularGeoms Esta secuencia de comandos proporciona métodos para definir cuerpos de rotación simple como elipsoides. O crearlo fuera de un conjunto de triángulos descrito por sus puntos de esquina: planarMesh = [ # triangle 1 [-0.0.0000].mesh(m2) # are the input mesh objects # create a copy of m1 # union of m1 and m2. the result is stored in m3 # intersection of m1 and m2 # the difference of m1 and m2 . [0.0.0. ] planarMeshObject = Mesh.mesh(t) 2. puede hacer lo siguiente: t = BuildRegularGeoms.5000.0.-0.mesh(m1) m4. Proporciona la Unión.¿Qué formatos de archivo que se puede utilizar para crear una malla es notable aquí .mesh(m1) m3.difference(m2) m6 = Mesh. Y también tiene un método para crear un cubo simple.5000. cilindros.0.5000.0000].5000.Mesh(planarMesh) El núcleo de la malla se encarga acerca de cómo crear una estructura de datos correcto topológico por clasificación puntos coincidentes y bordes juntos.5000. Para crear un toroide.0.0. Más adelante se verá cómo puede probar y examinar los datos de la malla. m1.py.-0.unite(m2) m4 = Mesh.5000.0.[0.[0.Toroid(8.5000.

mesh( BuildRegularGeoms.faces) Cosas relacionadas con la Gui Probabilidades y extremos Una extensa. import Mesh.Mesh=diff d.difference(m1) is different to m5 # the difference of m2 and m1.write("D:/Develop/Projekte/FreeCAD/FreeCAD_0. 1. Asegúrese de examinar el secuencias de comandos sección y la Básico de secuencias de comandos de FreeCAD páginas si necesita obtener más información acerca de cómo funciona el pitón de secuencias de comandos en FreeCAD."Diff_Sphere_Cylinder"). o desde cualquier secuencia de comandos externo.recompute() Examinar y pruebas Escribir sus propios algoritmos Exportar Incluso puede escribir la malla a un módulo de python: m. Así que si eres lo suficientemente audaz.newDocument() d. debería relacionados difíciles de usar.0. 50) ) cylinder = Mesh. En esta unidad se llaman a métodos literalmente todas las pruebas y todas las propiedades o atributos son ajustados.0. 10. BuildRegularGeoms sphere = Mesh. eche un vistazo el módulo de prueba de la unidad .7/Mod/Mesh/SavedMesh.0. Primero para utilizar la funcionalidad de módulo de parte tiene que cargar el módulo de parte en el intérprete: import Part .mesh(SavedMesh.py ") import SavedMesh m2 = Mesh.addObject("Mesh::Feature". fuente de malla con secuencias de comandos son las secuencias de comandos de prueba de unidad del módulo de malla. 50) ) diff = sphere diff.0. usually the result Por último. un ejemplo completo que computa la intersección entre una esfera y un cilindro que intersecta con la esfera. Introducción Nos aquí le explicará cómo controlar la Módulo de parte directamente desde el intérprete de python FreeCAD.Sphere(5.mesh( BuildRegularGeoms. True.m6.Cylinder(2.difference(cylinder) d = FreeCAD.

.. Es tres dimensional. SHELL A conjunto de caras conectadas por sus bordes..Diagrama de clase Se trata de una visión UML acerca de las clases más importantes del módulo de parte de: Geometría Los objetos geomtric son el bloque de creación de todos los objetos topológicos: GEOM Clase base de los objetos geométricos LINE Una línea recta en 3D. y pronto algunas más. Un shell puede ser abierto o cerrado. Su geometría se encuentra restringida (recorte) por contornos.. FACE En 2D es parte de un plano. Se expande las nociones de WIRE y SHELL para sólidos. . definido por un punto central y el inicio y el punto final . en 3D es parte de una superficie. definida por el punto de partida y y punto de CIRCLE Círculo o segmento del círculo. Dos dimensiones es. SOLID Una parte del espacio limitado por proyectiles. COMPSOLID A compuesto sólido es un conjunto de sólidos conectados por sus caras.-) Topología Los siguientes tipos de datos topológicos están disponibles: Compuestos Un grupo de cualquier tipo de objeto topológico..

z1).0.[p.1).0..() disponibles: makeBox(l.. el d=Vector(0.0.0.angle])--crear un cilindro con un radio determinado y altura.1)..0) y d=Vector(0. Por p=Vector(0.width. w.0) de forma predeterminada.1).radius2.d.0..angle2.angle])--crear un cono con un dado de radios y altura. ángulo1 = 0. Por defecto p=Vector(0. Puede ser un contorno abierto o cerrado dependiendo de si los bordes están vinculados o no.w. Un borde está generalmente limitado por vértices.angle1.angle1. Tiene cero dimensión.[p.0.0) y d es Vector(0.d])--crear un plano con la longitud y anchura.0.0. De forma predeterminada p es Vector(0.0) de forma predeterminada. VÉRTICE Un elemento topológico correspondiente a un punto. Por defecto p=Vector(0.angle3])--crear un toro con un dado de radios.show(b) Un par de otros métodos de make. el d=Vector(0.[p.[p.0.height.WIRE A conjunto de bordes conectados por sus vértices.y1. ángulo1 = 0 y ángulo2 = 360 makeCompound(list)--crear un compuesto de una lista de las formas makeCone(radius1.0.height.d])--crear una casilla ubicada en p y apuntando en la dirección d con las dimensiones (l.angle2])--crear un círculo con un radio determinado.1) makeCircle(radius.1) y el ángulo = 360 makeLine((x1.angle2. Creación de tipos básicos Breve descripción Puede crear fácilmente objetos topológicos básicos con los métodos de "make. ángulo2 = 90 y ángulo3 = 360 makeTorus(radius1.0. h).angle3])--crear una esfera con un radio determinado.0). Por p=Vector(0. Tiene una dimensión.h.makeBox(100.d.0) de forma predeterminada.()" desde el módulo de elemento: b = Part. SHAPE Un término genérico que abarca todo lo anterior. ángulo2 = 360 y ángulo3 = 360 . Por defecto p=Vector(0.100) Part. Por p=Vector(0.d.[p. d=Vector(0.angle1.100.d.z2))--crear una línea de dos puntos makePlane(length.0). d=Vector(0.y2.1) makePolygon(list)--crear un polígono de una lista de puntos makeSphere(radius.0.(x2.[p. ángulo1 = 0.radius2.0. d=Vector(0. EDGE A elemento topológico correspondiente a una curva sobrio.1) y el ángulo = 360 makeCylinder(radius.d.[p.0.

Usted puede encontrar la longitud y el centro de un borde como este: >>> edge.0)) wire1 = Part. <Vertex object at 014888E0>] Nota: No se puede crear un borde.Length 10.0).0.10.10.makeLine((0.0.wire2]) wire3.0).Point Vector (1.0)) wire2 = Part.makeLine((0.0)) edge4 = Part.Explicaciones detalladas En primer lugar importar lo siguiente: >>> import Part >>> from FreeCAD import Base ¿Cómo crear un vértice? >>> vertex = Part. 0) ¿Cómo crear un cable? Un alambre puede crearse desde una lista de los bordes o incluso una lista de hilos: >>> >>> >>> >>> >>> >>> >>> >>> edge1 = Part. (0.0).makeLine((10. pasando dos vértices.10.Edges . 0. (0. (10.makeLine((0.0).Wire([edge3. 0) ¿Cómo crear un borde? Un borde es nada más que una línea con dos vértices: >>> edge = Part.10.0 >>> edge. (10. 0.Vertex((1.Wire([wire1.edge2]) edge3 = Part.CenterOfMass Vector (5.0.0.Wire([edge1. y = 0.0. (10.0).0)) edge2 = Part.makeLine((10.0)) >>> edge.0.edge4]) wire3 = Part. usted puede encontrar su ubicación como este: >>> vertex.0)) vértice es un punto creado en x = 1.0.Vertexes [<Vertex object at 01877430>. z = 0 dado un objeto de vértice.

1)) . wire3 es un alambre cerrado pero wire2 no es un alambre cerrado (véase más arriba) >>> face = Part.0 >>> wire3.dir_normal. ¿Cómo crear un círculo? círculo = Part.makeCircle(10) >>> circle.isClosed() False ¿Cómo crear un rostro? Sólo los rostros creados a partir de cables cerrados será válidos.0. 0) >>> face.Area 99. center=Vector(0.isValid() True >>> sface = Part.angle2])--crear un círculo con un radio determinado Por defecto.[<Edge object at 016695F8>.0. <Edge object at 0190A788>] >>> Part. 0. En este ejemplo. Position : (0.CenterOfMass Vector (5. Direction : (0.angle1.isClosed() True >>> wire2. <Edge object at 01828B20>. 5.[center.Show(wire3) mostrará cuatro líneas como un cuadrado: >>> wire3.1).0).0 >>> face.Length 40. 0). dir_normal=Vector(0. Se puede crear simplemente como un círculo como esto: >>> circle = Part.Curve Circle (Radius : 10.Face(wire3) >>> face. 5.isValid() False Sólo caras tendrá un área.999999999999972 >>> face. 0. <Edge object at 0197AED8>. 0) >>> wire3.Face(wire2) >>> face.Length 40.show(wire3) Part. ángulo1 = 0 y ángulo2 = 360.makeCircle(radius.CenterOfMass Vector (5. no cables ni bordes.

Si desea que una pequeña porción de un círculo como un arco.Vector(0.Vector(0.0).makeCircle(10. 0.Arc para crear un arco a lo largo de tres puntos.Vector(10. 360) Arc1 y arc2 conjuntamente harán un círculo.toShape() = Nota: Arco sólo acepta Base. 0. También puede crear parte del círculo dando el ángulo del comienzo y ángulo de final como: >>> from math import pi >>> arc1 = Part.makeCircle(10.Base. pero no de tuplas.1).Base. 0)) ccircle se creará a distancia 10 de origen en x y estará mirando hacia el eje x. Part.0)) >>> ccircle.makeCircle(10.Vector() de posición y normal. Direction : (1. pero tenemos la función Part.Vector(1. 180) >>> arc2 = Part.0. Deben ser los ángulos siempre en grados. si tienes radianes simplemente conversión mediante la fórmula: grados = radianes * 180/PI o utilizando el módulo de matemáticas de python (después de hacer matemáticas de importación. Base.0).Vector(0.0. Base. Base.0.Vector() de puntos pero no de tuplas.show(arc_edge).0. 180.Vector(0.0.5.0).Vector(5.Vector(0.0)) >>> arc <Arc object> >>> arc_edge = arc.toShape() tiene que ser llamado para obtener el objeto de borde. arc_edge es lo que queremos que nos podemos mostrar utilizando Part.Vector(0. 0. Básicamente puede suponerse como un arco uniéndose a punto de inicio y el punto final a lo largo del punto medio. Nota: makeCircle sólo acepta Base. Base.Curve Circle (Radius : 10.degrees(radians) ¿Cómo crear un arco a lo largo de puntos? Lamentablemente no existe ninguna función de makeArc. Position : (10.0.Si desea crearla en cierta posición y con cierta dirección >>> ccircle = Part. que generalmente es producida por makeLine o makeCircle >>> arc Part. 0).5.Arc(Base.0.0).1). es posible también: . por supuesto): grados = math. Base.0). Base.Arc crea un objeto de arco en que .

0.Vector(0.0.Circle(Base.0.BoundBox BoundBox (3.pi) ¿Cómo crear un polígono o una línea a lo largo de puntos? Una línea a lo largo de múltiples puntos no es nada.makePolygon([Base.0.Vector(0.1.0.1).0. 2) Base.makePlane(2.Base.Vector(0. 0.Base. dir_normal=Vector(0.0). Aquí el espesor de BoundBox en el eje y es cero.Base. lo que significa una cara en 2D makePlane(length.width.0)]) ¿Cómo crear un plano? Plano es una superficie plana.2) >>> plane <Face object at 028AF990> >>> plane = Part.0) creará la cara de plano eje x: >>> plane = Part.0).0.Ellipse(S1.Ellipse(Ellipse) Crear una copia de la elipse determinada Part.>>> from math import pi >>> circle = Part.Vector(3.0).Ellipse() Crea una elipse con radio mayor 2 y radio menor 1 con el centro en (0.10) >>> arc = Part.[start_pnt. pero la creación de un alambre con múltiples aristas. Base.Arc(c. empezando en (3.makePlane(2.2).0) Part.5. Nota: makePlane sólo acepta Base.Vector(5. 0.Vector() para start_pnt y dir_normal pero no de tuplas ¿Cómo crear una elipse? Para crear una elipse de allí son de varias maneras: Part. BoundBox es un paralelepípedo que encierra el plano con una diagonal.Vector(0.0.0.Vector(0.2. se creará el eje z opuestas de plano. función makePolygon toma una lista de puntos y crea un alambre a lo largo de estos puntos: >>> lshape_wire = Part.1).S2.dir_normal])--crear un plano por defecto start_pnt=Vector(0.0) y terminando en (5.Center) . 0. 0.0) y dir_normal=Vector(0.0)) >>> plane.1). dir_normal=Vector(1.0).0.0.0. 5.

Vector(10.Ellipse(Center.5.Vector() de puntos pero no de tuplas >>> eli = Part.dir.0.angle2.toShape()) para el constructor de elipse anterior hemos aprobado Centro.angle])--crear un toro con un dado de radios y ángulos. su radio mayor es la distancia entre el centro y S1 y su radio menor es la distancia entre S2 y el eje principal.Ellipse(Base.[pnt.0) ) >>> Part.1) >>> eli = Part.0.0.MinorRadius) Crea una elipse con radios mayores y menores. donde el plano de la elipse se define por el centro. Por defecto puntos = vector (0. Part.0).toShape()) En el código anterior hemos aprobado S1. MajorRadius y MinorRadius ¿Cómo crear un aro? makeTorus(radius1. dir = vector (0.0).0.Vector(0.5) >>> Part. MajorRadius y MinorRadius y localizado en el plano definido por el centro y la normal (0.10. puntos es el centro del Toro y dir es la dirección normal.0. Ellipse también crea un objeto elipse pero no edge.Base. S2 y centro.show(eli.0. ángulo1 = 0.Vector(0.Crea una elipse centrada en el centro de punto.Ellipse(Base.MajorRadius. para crear un arco que el último ángulo de parámetro es hacer una sección de un toro: >>> torus = Part. su eje principal se define por el centro y S1. radius2 es el radio de un círculo pequeño. 2) El código anterior creará un toro con 20(radius 10) de diámetro y espesor 4 (cirlce pequeño radio 2) . De forma similar a arco.makeTorus(10.1). ángulo1 y ángulo2 son los ángulos en radianes para el pequeño círculo.show(eli. S1 y S2. así que necesitamos convertirlo en arista a través de toShape() para mostrar Nota: Arco sólo acepta Base.radius2.0). ángulo1 = 360 y ángulo = 360 considere la posibilidad de un toro como pequeño círculo barrer a lo largo de un gran círculo: radius1 es el radio de cirlce grande.angle1.Base.Vector(0.0).

0).0. creará un toro de semi.1). es decir. Dando el ángulo 180 creará un toro de 0 a 180.Vector(0.>>> tor=Part.5. sólo el último parámetro es cambiado.Base.Base.18 0) El código anterior. ángulo1.height. ángulo1 y ángulo2 son la vertical mínima y máxima de la esfera.dir])--crear una casilla ubicada en puntos con las dimensiones (longitud.1).0).Vector(0.10.0).90.0.Base.1) y ángulo = 360 >>> cylinder = Part.1).0.180) ¿Cómo hacer una bomba? = makeCylinder(radius. dir=Vector(0. ángulo1 =-90.dir=Vector(0. ángulo2. [puntos.makeSphere(10) >>> hemisphere Part.makeTorus(10.0. dir.20) >>> partCylinder Part.makeTorus(10.0.Vector(0.0.0.[pnt. anchura y altura) Por defecto pnt=Vector(0.0.5.10) >>> len(box. medio ¿Cómo hacer un cuadro o un paralelepípedo? makeBox(length.angle])--crear un cilindro con un radio determinado y altura Por defecto pnt=Vector(0. ángulo3])--crear una esfera con un radio determinado. ángulo2 = 90 y ángulo3 = 360.height.360.0.Vector(20.0).Base.0).dir.1).Base.1) >>> box = Part.0.180) El código anterior creará una división del Toro >>> tor=Part.Vector(0.0.Base.makeCylinder(5. el ángulo y ángulos restantes son valores predeterminados.0. Por defecto pnt=Vector(0.0.Vector(0.-90.180) = .0) y dir=Vector(0.Vector(0.0.20.Base.0).1). es decir.width. ángulo3 es el diámetro de la esfera propia >>> sphere = Part.0.makeCylinder(5.Base.makeBox(10.0.Vertexes) 8 ¿Cómo hacer una esfera? makeSphere (radio.makeSphere(10.Vector(0.[pnt.

0)....Vector(0.Vector(0.20.makeCone(10.Vector(0.png de patio de recreo: común Playground:common.Vector(1.0.common(cylinder2) Cylinders.10..Base.) Difference of this and a given topo shape.0.Base.0)) = .0.Base.10.cut(sphere) >>> diff.0.png Playground:cut.0.Vector(0.Base. >>> cylinder1 Part.0.20) >>> semicone Part.Base.10.png ¿Cómo fusionar dos formas? FUSE(.[pnt.0.Vector(20.0)) >>> diff = cylinder.ShapeType 'Compound' = Patio de recreo: corte shapes.Base.makeSphere(5.180) = Operaciones booleanas ¿Cómo cortar una forma de otros? Cut(.) Union of this and a given topo shape.Vector(1.angle])--crear un cono con dado radios y altura Por pnt=Vector(0.makeCylinder(3.Vector(0.makeCylinder(3.0.Base.Vector(5.0.0.Vector(5.0). el dir=Vector(0.0.Base.Vector(1.0.Base.dir.makeCylinder(3.0).1).10.0.png ¿Cómo obtener común entre dos formas? Common(.5).makeCylinder(3.0..Base.0.Base.0)) >>> sphere = Part.0) de forma predeterminada.1) y el ángulo = 360 >>> cone = Part. >>> cylinder Part.height.) Intersection of this and a given topo shape.radius2.0).1)) >>> common = cylinder1.Solids [<Solid object at 018AB630>. >>> cylinder1 = Part.¿Cómo hacer un cono? makeCone(radius1. <Solid object at 0D8CDE48>] >>> diff.makeCone(10.0)) >>> cylinder2 = Part..

0.Edges e = w.fuse(cylinder2) >>> fuse.makeCylinder(3.makeBox(100.Base.. Este sólido.Vector(1.10.0.0.Base.Point Escribiendo la línea de arriba en el intérprete de python.Vector(0.show(w) w.Solids [<Solid object at 0DA5B8A0>] ¿Cómo a la sección de un sólido con dar forma? Section(.Edges[0] e.Vertexes Part.100) b. <Edge object at 0D9B8E80>.0. <Edge object at 0D8F4BB0>] Playground:Section.Base.10. obtendrá una buena comprensión de la estructura de los objetos de la parte.0.Vertexes v = e. devolverá una curva de intersección.Wires w.section(cylinder2) >>> section.0..0)) >>> cylinder2 = Part.) Section of this with a given topo shape.Vector(0. Aquí nuestro comando makeBox() crea una forma sólida. que son listas de . <Edge object at 0D86DE18>.PNG Explorando formas Fácilmente puede explorar la estructura de datos topológicos: import Part b = Part.10.makeCylinder(3.Edges [<Edge object at 0D87CFE8>.Wires[0] w w.Base.Wires [] >>> section.100. contiene caras. Caras siempre contienen cables. como todos los de parte de sólidos. <Edge object at 0D998458>.5).5).Vector(0.>>> cylinder2 = Part.Vector(5.Wires w = b.Vertexes[0] v. <Edge object at 019564F8>. un compuesto con bordes >>> cylinder1 = Part.1)) >>> fuse = cylinder1.0).makeCylinder(3. <Edge object at 012A3640>.1)) >>> section = cylinder1.Base.Vector(5.Base.

Length # get the length of the edge in mm (modeling unit) Ahora puede acceder a muchas de las propiedades del borde mediante el uso de la longitud como una posición.curvatureAt(50.100). En primer lugar creamos un cuadro y lo muestra en el Visor import Part Part. Esto significa que si el borde es 100 mm durante mucho tiempo la posición de inicio es 0 y la posición final 100.0) # Point at the beginning anEdge.tangentAt(0.makeBox(100.0) # first derivative of the curve in middle anEdge. obviamente. podemos mirar cada arista por separado y dentro de cada arista. Explorar los bordes En caso de una arista. Con esta secuencia de comandos puede recorrer en iteración de todos los objetos seleccionados y sus elementos de sub: .derivative1At(50. pero tienen un atributo de punto que devuelve un vector de FreeCAD agradable.100)) Gui.0) # the curvature anEdge.Edges[0] # make a box with 100mm edge length and get the first edge print anEdge.normalAt(50) # normal vector at that position defined) the the the that (if Mediante la selección Aquí vemos ahora cómo podemos utilizar la selección del usuario lo hizo en el visor.100.SendMsgToActiveView("ViewFit") Seleccione ahora algunas caras o bordes. Eso significa que usted podrá caminar con una curva de borde por su longitud: import Part anEdge = Part.valueAt(100.0) # Point at the end of the edge anEdge.valueAt(0.0) # third derivative of the curve in middle anEdge. Parte vértices son formas OCC.makeBox(100. podemos ver los vértices.show(Part. Bordes rectos tienen sólo dos vértices.0) # second derivative of the curve in middle anEdge.100.aristas que bordean la cara.centerOfCurvatureAt(50) # center of the curvature for position anEdge. anEdge. En el cable. que es una curva arbitraria.derivative3At(50. Cada cara tiene exactamente un alambre cerrado. En FreeCAD los bordes son parametrizados por sus longitudes.0) # tangent direction at the beginning anEdge. lo más probable es que desee hacer un carácter.derivative2At(50.

De lo contrario más tarde no podamos conectar las piezas geométricas con una topología! Por lo que creamos en primer lugar los puntos: from V1 = V2 = V3 = V4 = Arco FreeCAD import Base Base.0) .Vector(0.10.getSelectionEx(): print o.0) Base.-10. Y tenemos que cuidar que los vértices de las piezas geométricas se encuentran en el mismo posición.SubObjects: print "object: ".s for s in o.Vector(0.Selection.Length print "Length of the selected edges:" .getSelectionEx(): for s in o.Vector(30.s Seleccione algunas aristas y esta secuencia de comandos calcula la longitud: length = 0.0 for o in Gui.10. Creación de geometría En primer lugar tenemos que crear las distintas partes geométricas de este hilo.Vector(30.for o in Gui. dos círculos y dos líneas.0) Base.0) Base.SubObjects: length += s.SubElementNames: print "name: ".Selection.ObjectName for s in o.-10. Como un estudio de caso utilizamos una parte como se ve en la imagen que consta de cuatro vértices.length Ejemplos Creación de topología simple Ahora crearemos una topología construyendo fuera de la geometría más simple.

Line(V1.extrude(Base.VC1.0.Edges) P = W.Vector(0.V2) # and the second one L2 = Part. simultáneamente.Arc(V1.VC2.C2.0) C2 = Part.Vector(40.L1.Shape([C1.Line(V4.V4) # and the second one VC2 = Base. usted puede seguir en nuestro siguiente ejemplo y la página de la OCC. entienda bien cómo se implementan las estructuras de la OCC en FreeCAD.V3) Línea Creó la línea puede ser muy simple fuera de los puntos: L1 = Part.Vector(-10.V3) Poniendo todos juntos El último paso es colocar los elementos geométricos de base juntos y hornear una forma topológica: S1 = Part.Para crear un arco de círculo hacemos un ayudante punto y crear el arco de círculo a través de tres puntos: VC1 = Base.0) C1 = Part. De hecho.10)) La botella OCC Un ejemplo típico se encuentra en la Página de inicio de OpenCasCade rápido es cómo construir una botella.0. Este es un buen ejercicio para FreeCAD demasiado.Wire(S1.L2]) Hacer un prisma Ahora el cable en una dirección de la extrusión y hacer una forma 3D real: W = Part.Arc(V2. La secuencia de comandos completa a continuación también se incluye en la instalación de FreeCAD (dentro de la carpeta de mod/Part) y puede ser llamado desde el intérprete de python escribiendo: .0.

transformGeometry(aTrsf) myWireProfile=Part.0 for xp in myBody. myHeight=70.Vector(myWidth/2.aPnt5) aEdge1=aSegment1.Matrix() aTrsf.0.makeFillet(myThickness/12. myThickness=30. math from FreeCAD import Base def makeBottle(myWidth=50. myNeckHeight = myHeight / 10 myNeck Part.0.fuse(myNeck) faceToRemove = 0 zMax = -1.Faces: try: surf = xp.0): aPnt1=Base.Line(aPnt1.aPnt4) aSegment1=Part.show(bottle) La secuencia de comandos completa Aquí es la secuencia de comandos de MakeBottle completa: import Part.Plane: z = surf.Vector(0. FreeCAD.makeBottle() Part.extrude(aPrismVec) myBody=myBody.makeCylinder(myNeckRadius.myNeckHeight.Vector(0.Vector(myWidth/2.myHeight) neckNormal=Base.-myThickness/4.import Part import MakeBottle bottle = MakeBottle.0) aArcOfCircle = Part.0.0) aPnt3=Base.myBody.aPnt2) aSegment2=Part.0) aPnt5=Base.0..neckLocation.aEdge2.0.aEdge3]) aTrsf=Base..Wire([aWire.pi) # rotate around the z-axis aMirroredWire=aWire...toShape() aEdge2=aArcOfCircle.-myThickness/4.Arc(aPnt2.toShape() aEdge3=aSegment2.0) aPnt2=Base.0.Vector(-myWidth/2.neckNormal) myBody = myBody.1) myNeckRadius = myThickness / 4.0.Edges) neckLocation=Base.myHeight) myBody=myFaceProfile.toShape() aWire=Part.Face(myWireProfile) aPrismVec=Base.0.Vector(0.Surface if type(surf) == Part.Line(aPnt4.0) aPnt4=Base.Position.Vector(-myWidth/2.Wire([aEdge1..-myThickness/2..aPnt3..aMirroredWire]) myFaceProfile=Part.Vector(0.z if z > zMax: = .rotateZ(math.

a continuación.toShape() aEdge3=aSegment2.Wire([aWire.Base. un cable hecho de esos tres aristas. el módulo de parte.Vector(myWidth/2.0): aPnt1=Base.transformGeometry(aTrsf) myWireProfile=Part.Vector(-myWidth/2. aTrsf=Base. hecha de 2 puntos.aPnt5) Aquí definimos realmente la geometría: un arco.Arc(aPnt2.-myThickness/50 .Line(aPnt4. Esta función puede ser llamada sin argumentos.-myThickness/4..0.pi) # rotate around the z-axis aMirroredWire=aWire.aPnt2) aSegment2=Part. en los valores que caso predeterminado para anchura.. aEdge1=aSegment1. def makeBottle(myWidth=50. myHeight=70.0) Aquí definimos nuestra función de makeBottle. aArcOfCircle = Part.aPnt3.0. por supuesto. como lo hicimos anteriormente.Vector(-myWidth/2.0) aPnt5=Base.Line(aPnt1.0) aPnt4=Base..e3) return myBody Explicación detallada import Part. definimos un par de puntos que se utilizará para la construcción de nuestro perfil base.rotateZ(math.0) aPnt2=Base.makeThickness([faceToRemove].toShape() aWire=Part.Matrix() aTrsf. hecho de 3 puntos y dos de los segmentos de línea.-myThickness/4.. que contiene estructuras básicas de FreeCAD como vectores y matrices.0.0..aPnt4) aSegment1=Part.-myThickness/2.. sino también el módulo de FreeCAD.toShape() aEdge2=aArcOfCircle.0) aPnt3=Base.Vector(0. y se utilizará el espesor.aEdge3]) ¿Recuerde que la diferencia entre la geometría y las formas? Aquí construimos las formas fuera de nuestra geometría de construcción. 3 los bordes (bordes pueden ser rectos o curvos) y. math from FreeCAD import Base Necesitamos.aEdge2. myThickness=30. 1.Vector(myWidth/2.Wire([aEdge1.aMirroredWire]) . altura.. FreeCAD.zMax = z faceToRemove = xp except: continue myBody = myBody. A continuación.

a veces se llama a la Unión. Una vez que tenemos una cara. no nosotros? neckLocation=Base. ya que puede contener en una estructura de todas las transformaciones básicas que pueden sufrir los objetos 3D (mover. return myBody A continuación. Por lo que primero creamos una matriz. con: myObject FreeCAD. es muy poderosa.makeFillet(myThickness/12. puede ser atribuido a un objeto en un documento de FreeCAD. realmente hicimos un sólido. myFaceProfile=Part.show(bottle) . puede transformarse en una cara.neckNormal) = Entonces. Ahora tenemos dos cables. en otras aplicaciones.extrude(aPrismVec) myBody=myBody.Hasta ahora hemos construido un perfil de sólo la mitad. ¿A continuación.Edges) Ahora que tenemos un alambre cerrado. ya que son de cables realmente listas de aristas.Shape = bottle = o. y creamos una copia de nuestro hilo con la matriz de transformación aplicada. aplicamos un filete poco agradable a nuestro objeto porque nos interesa un buen diseño. myNeckHeight = myHeight / 10 myNeck Part.ActiveDocument. hacemos un nuevo sólido.0.myNeckHeight.0.myHeight) neckNormal=Base. el cuerpo de nuestra botella está fabricado. como cualquier otra forma parte. volvemos nuestra parte sólida como resultado de nuestra función.makeCylinder(myNeckRadius. y nos puede hacer un tercer cable fuera de ellos. sólo podemos espejo de lo que hicimos y pegue ambas partes juntos. Es más fácil que edificio todo el perfil del mismo modo. myBody = myBody.Vector(0.Vector(0. Una matriz es una manera muy común para aplicar transformaciones a objetos en el mundo 3D. después de que creamos la matriz. rotar y escalar).0.Vector(0. que. más simple: Part. con un cilindro.1) myNeckRadius = myThickness / 4.myBody. Ese elemento sólido. todavía tenemos que crear un cuello.myHeight) myBody=myFaceProfile. Encargará de pegar lo que necesita para ser pegada y quitar partes que deben eliminarse.neckLocation. nos reflejarlo. Por lo tanto. Al hacerlo."myObject") myObject.0. nos podemos extrusión.fuse(myNeck) La operación de fusibles.addObject("Part::Feature".Face(myWireProfile) aPrismVec=Base. Aquí.

pero debería estar ahí pronto. se utiliza para construir una malla: #let's assume our document contains one part object import Mesh faces = [] shape = FreeCAD. como mallas es una operación bastante simple. Por supuesto puede guardar el documento de FreeCAD.Cargar y guardar Hay varias maneras de guardar su trabajo en el módulo de parte.ActiveObject. El resultado de esa triangulación (mosaico).stp") Tenga en cuenta que importar o abrir archivos BREP. Por lo tanto. exportIges().tessellate(1) # the number represents the precision of the tessellation) for tri in triangles[1]: face = [] for i in range(3): vindex = tri[i] . pero también puede guardar objetos de parte directamente a los formatos CAD comunes. IGES o STEP.10.> Abrir o archivo . Para cargar un archivo BREP.stp") Esto ahorra nuestro cuadro en un archivo STEP. STEP y STL.10.Shape triangles = shape.0. Guardar una forma en un archivo es fácil. tales como BREP. IGES o STEP también puede hacerse directamente desde el archivo .> menú Importar.exportStep("test. < anterior: secuencias de comandos de malla siguiente: malla a la parte > Índice Conversión de objetos de la parte a mallas Convertir objetos de nivel superiores como Formas de parte en objetos más simples.0. En este momento exportar es todavía no es posible de esa manera. a continuación. donde obtener trianguladas todas las caras de un objeto Part. exportStl() y exportStep() para todos los objetos de forma. Hay disponibles de métodos exportBrep().Shape() s.ActiveDocument. IGS.10) s.makeBox(0. haciendo: import Part s = Part. simplemente lo contrario: import Part s = Part.read("test.

Mallas pueden hacerse de miles de triángulos (por ejemplo cuando generados por un escáner 3D).append(triangles[0][vindex]) faces.0/(u-1)*(i*b+(u-1-i)*a) t=1. ya que es muy ligero.addFacet(pts[u*j+i].pts[u*(j+1)+i]) mesh. FreeCAD actualmente ofrece dos métodos para convertir mallas en objetos de parte. Convertir mallas a esos objetos de nivel superiores (a cargo de la Módulo de parte en FreeCAD) no es una operación fácil. sin cualquier optimización: .append(face. Si la cara tiene un espacio rectangular de parámetro y no contiene ningún agujeros o otras curvas de recorte también puede crear una malla por cuenta propia: import Mesh def makeMeshFromFace(u. tales como la idea de sólido.c.show(m) A veces la triangulación de ciertas caras ofrecidas por OpenCascade es bastante fea.face): (a.b. pero para CAD preferimos generalmente objetos de nivel superiores que llevan mucha más información. Por lo que generalmente desea optimizar el objeto al convertir.pts[u*(j+1)+i+1]) return mesh Conversión de mallas a objetos de parte Conversión de mallas a parte de objetos es una operación sumamente importante en el trabajo de CAD. porque muy a menudo reciben datos 3D en formato de malla de otras personas o van desde otras aplicaciones. y habiendo sólidos del mismo número de caras sería extremadamente pesado manipular.valueAt(s. o caras de curvas en lugar de triángulos.v. El primer método es una conversión simple y directa.pts[u*j+i+1].pts[u*j+i+1].face. Mallas son muy prácticos representar la geometría de forma libre y grandes escenas visuales.0/(v-1)*(j*d+(v-1-j)*c) pts.addFacet(pts[u*(j+1)+i].d)=face.ParameterRange pts=[] for j in range(v): for i in range(u): s=1.t)) mesh=Mesh.Mesh(faces) Mesh.Mesh() for j in range(v-1): for i in range(u-1): mesh.append(face) m = Mesh.

05) # the second arg is the tolerance for sewing solid = Part.DiagonalLength ext = i wires.DiagonalLength > max_length: max_length = i. Esto permite construir mucho las formas más simples: # let's assume our document contains one Mesh object import Mesh.BoundBox.makeShapeFromMesh(mesh.Compound(faces) Part. para la gestión y construcción de .import Mesh.wireFromSegment(mesh.ActiveDocument.ActiveObject.show(solid) El segundo método ofrece la posibilidad de considerar facetas de malla coplanares cuando el ángulo entre ellas es en virtud de un determinado valor.makeSolid(shape) Part.append(Part.MeshPart faces = [] mesh = App.Part. siendo los más importantes openCascade . ext) faces.Shape() shape.Shell(faces)) #Part.Part mesh = Mesh.reverse() hole and must reverse their # make sure that the exterior wires comes as first in the lsit wires.createTorus() shape = Part.Topology.show(shell) #solid = Part.Face fails for i in wires: i.Mesh segments = mesh.00001) # use rather strict tolerance here for i in segments: if len(i) > 0: # a segment can have inner holes wires = MeshPart. otherwise Part. 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.Face(wires)) shell=Part.show(solid) FreeCAD es básicamente un collage de diferentes bibliotecas potentes.BoundBox.0.Solid(Part.insert(0.remove(ext) # all interior wires mark a orientation.getPlanes(0.

OpenInventor es realmente un lenguaje de descripción de la escena 3D. La geometría que aparece en las vistas 3D de FreeCAD son prestados por la biblioteca de Coin3D. Coin3d para mostrar la geometría. Uno de los grandes trabajos que FreeCAD se hace por usted es básicamente traducir información de geometría de openCascade en lengua openInventor. y Qt para poner todo esto en una interfaz gráfica de usuario agradable. no para utilizar el Visor de openCascade integrada y más bien cambiar al más alto rendimiento coin3D software. pero se decidió. Coin3D se encarga de hacerlo. a continuación. sólo tiene que le proporcione código válido de OpenInventor. por lo que el programador no es necesario hacer frente a llamadas de openGL complejas. El software de openCascade también proporciona la misma funcionalidad. como el siguiente: . OpenInventor describe una escena 3D en forma de un scenegraph . La escena que se describe en openInventor.geometría. se procesa en OpenGL en la pantalla. Coin3D es una implementación de la OpenInventor estándar. La gran ventaja es que openInventor es un estándar muy conocida y está bien documentado. en los inicios de FreeCAD.

luces. colores. y todo lo que organiza los datos en una estructura clara y cómoda. etc.0 ascii Separator { RotationXYZ { axis Z angle 0 } Transform { translation 0 0 0. Aquí hay un ejemplo de un archivo openInventor #Inventor V2. tales como la geometría. materiales. Todo se puede agrupar en subestructuras.de imagen de Mentor de inventor Un scenegraph openInventor describe todo lo que hace parte de una escena 3D.5 } Separator { . lo que permite organizar el contenido de su escena bastante la manera que desee.

Material { diffuseColor 0. Todos los objetos en un documento de FreeCAD. para definir comportamientos más complejos. quien fue aplicada directamente y uno de los que se aplicó a la separación de su padre. cada objeto (en el espacio de la APP) tiene un proveedor de vista (un objeto correspondiente en el espacio de Gui). normalmente.2 0. la estructura es muy simple. el Mentor de inventor . Podemos definir materiales muy complejos para nuestros objetos. una forma de parte o cualquier otra cosa.05 0. . responsable de la emisión de código openInventor. Ese scenegraph se actualiza continuamente cuando usted hacer modificaciones.05 0. se define un material y transformación otro. De hecho. En ese separador. ambos afectará el elemento siguiente. Si estás interesado en aprender más sobre openInventor.05 } Transform { rotation 1 0 0 1. texturas. También podemos definir incluso de movimiento. con colores. por ejemplo los dos primeros elementos de nuestro separador de raíz son una rotación y una traducción. Utilice separadores para organizar los datos en bloques. Por lo tanto. no necesitamos interactuar directamente con el scenegraph de openInventor. switches o anotaciones. Incluso es posible incrustar piezas de secuencias de comandos en archivos de openInventor. tales como grupos. nuestro cilindro se verán afectado por ambas transformaciones.2 } Cylinder { } } } Como puede ver. siendo una malla. modos de sombreado y transparencia. un poco como sería organizar sus archivos en carpetas. obtiene automáticamente convierte en código de openInventor y insertado en el principal scenegraph que puede ver en una vista 3D.5708 scaleFactor 0. que es un separador. Cada instrucción afecta a lo que viene a continuación. cámaras y luces. añadir o eliminar objetos al documento. la cabeza directamente a su referencia más famoso.5 0. También contamos con muchos otros tipos de elementos para organizar nuestra escena. En FreeCAD.

FreeCAD has an easy way to access the root node of a 3D view scenegraph: sg = FreeCADGui. el siguiente código python mostrará la representación openInventor de un objeto seleccionado: obj = FreeCAD. The coin module is always present. since we won't need to care about anchoring our 3D display in any interface. podemos cambiar temporalmente la aparición de un objeto. tales como nuestro scenegraph FreeCAD. and all objects on the screen are its children. Por lo tanto. Pero también contamos con un módulo de python que permite el acceso completo a cualquier cosa administrado por Coin3D. Por ejemplo. Por ejemplo.ViewObject print viewprovider. qt. Pivy es una biblioteca de enlace de python para Coin3d .ActiveDocument. The coin library is divided into several pieces.ActiveObject viewprovider = obj. o incluso crear otros nuevos.Pero hay muchas ventajas para poder acceder directamente a la scenegraph. Everything that appears in a FreeCAD 3D view is a coin scenegraph. We have one root node. Those modules are available to pivy too.ActiveView. it is already done by FreeCAD itself.getScenegraph() . Cuando se importan en un intérprete de python ejecutándose. FreeCAD sí cuenta con varias herramientas para ver o modificar el código de openInventor. ayudantes. siga leyendo para Pivy . depending if they are present on the system. permite a diálogo directamente con cualquier ejecución Coin3d scenegraphs . tales como las vistas 3D de FreeCAD. usada por la biblioteca de procesamiento de 3D de FreeCAD. All we need to do is this: from pivy import coin Accessing and modifying the scenegraph We saw in the Scenegraph page how a typical Coin scene is organized. organized the same way. like in our case. o podemos añadir objetos a la escena que no tienen existencia real en el documento FreeCAD. Pivy se incluye en la instalación estándar de FreeCAD.ActiveDocument. coin itself.toString() . and it is what we will use anyway. tales como la geometría de construcción. for manipulating scenegraphs and bindings for several GUI systems. such as windows or. sugerencias de gráficas o herramientas tales como manipuladores o en pantalla información.

probemos a esto: col. cambiar las propiedades. si queríamos mover nuestro cubo.addChild(myCustomNode) y aquí está nuestro cubo rojo (nice).1.0) ¿Ver? todo es aún accesible y modificable sobre la marcha.SoBaseColor() col. proxy of <Swig Object of type 'SoSelection *' at 0x360cb60> > We can inspect the immediate children of our scene: for node in sg.SoCube() myCustomNode = coin.setValue([0.addChild(col) myCustomNode.0) trans = coin. Esa pantalla obtiene recalculada por FreeCAD en el archivo abierto. ocultar cosas. si cambia el aspecto de un objeto existente de FreeCAD. Es una clave para trabajar con scenegraphs en las secuencias de comandos poder tener acceso a determinadas propiedades de los nodos que agregó cuando sea necesario. Agregaremos un cubo rojo agradable: col = coin.SoCube() . Probemos a añadir algo a nuestra scenegraph ahora. Sin necesidad de volver a calcular o repintado de nada.SoSelection. Puede añadir cosas a tu scenegraph. Por lo tanto.getChilden() print node Some of those nodes. nos habría añadido un nodo de SoTranslation a nuestro nodo personalizado.translation. moneda se encarga de todo. y cuando un objeto debe recálculo de al. cualquier cosa. can have children themselves.print sg This will return the root node: <pivy. Por ejemplo. y habría parecía como este: col = coin. mostrar objetos temporales.coin.0) cub = coin. Por supuesto. Ahora.0.SoSeparator() myCustomNode. The complete list of the available coin objects can be found in the official coin documentation. esos cambios se perderán si el objeto se obtiene recalculado o cuando se vuelve a abrir el archivo. esto solo afecta a la visualización en la vista 3D.addChild(cub) sg.rgb=(1.0.SoTranslation() trans.0]) cub = coin. such as SoSeparators or SoGroups.0.SoBaseColor() col.rgb=(1.rgb=(1.

getMouseClick) def getMouseClick(self.removeEventCallbackSWIG(SoMouseButtonEvent.getState() == SoMouseButtonEvent.0.SoSeparator() myCustomNode.addChild(trans) myCustomNode. como nuestra biblioteca de moneda. en un scenegraph de openInventor. Esto es muy útil.getClassTypeId().addChild(col) mtCustomNode. por lo que se puede decir algo como: color rojo.event_cb): event = event_cb. tales como la posición del ratón.callback = self. Moneda puede ver cosas muy diferentes. self.getClassTypeId(). clics de un botón del mouse.myCustomNode = coin.addChild(cub) sg. porque de esa manera moneda puede notificarle si algún acontecimiento específico se produce en la escena. Si nos hubiéramos insertado al crearlo. el orden es importante. podemos ahora hacer: trans.translation.getEvent() if event. para llamar a una función de determinados desde su objeto de python que se está ejecutando. color amarillo.ActiveView self. las teclas del teclado que se presiona y muchas otras cosas. eliminando algo se hace con: sg. es decir. esfera y obtendrá un cubo rojo y una esfera amarilla. para llamar a realizar la seguridad.view = FreeCADGui.view.removeChild(myCustomNode) Utilizando los mecanismos de devolución de llamada A mecanismo de devolución de llamada es un sistema que permita una biblioteca que se esté utilizando.DOWN: print "Alert!!! A mouse button has been improperly clicked!!!" self. sería venir después del cubo y no lo afectan.ActiveDocument.setValue([2.addChild(myCustomNode) Recuerde que.sel f. como aquí arriba.0]) Y nuestro cubo saltaría 2 unidades a la derecha. Por último.view. Un nodo afecta lo que viene a continuación.callback) ButtonTest() . Si añadimos la traducción ahora a nuestro nodo personalizado existente.addEventCallbackPivy(SoMouseButtonEvent. FreeCAD ofrece una manera fácil de utilizar dichas devoluciones de llamada: class ButtonTest: def __init__(self): self. cubo.

child Los widgets en una interfaz Qt generalmente están anidados en widgets del "contenedores". y hay muchos tutoriales en la red que le enseñe cómo se obras.getClassId()) PyQt es un módulo de python que permite que las aplicaciones crear. Si desea trabajar en la interfaz de FreeCAD. widget type = '. Dependiendo del tipo de widget. un control total sobre su interfaz. redirigir o agregar las conexiones entre todos esos elementos PyQt tiene una extensa Documentación de la API . widgets y barras de herramientas Agregar u ocultar elementos existentes de los paneles Cambio. child. pero dado que es una traducción exacta de la moneda. con seguridad puede utilizar la documentación de la moneda como referencia y utilizar el estilo de python en lugar de c ++ estilo (por ejemplo SoFile::getClassTypeId() en pivy sería SoFile. la primera cosa a hacer es crear una referencia a la ventana principal de FreeCAD: import sys from PyQt4 import QtGui app = QtGui.children: print 'widget name = '.getObjectName(). '.La devolución de llamada debe iniciarse desde un objeto. Se puede por ejemplo: Agregar sus propios paneles. acceder y modificar python Qt aplicaciones de . Véase también una lista completa de posibles eventos y sus parámetros. o para obtener acceso y modificar la interfaz de una aplicación que se ejecuta de qt. puede examinar por ejemplo a través de todos los widgets de la interfaz: for child in mw. porque ese objeto todavía debe ejecutarse cuando se producirá la devolución de llamada. hay un montón . Utilizando el módulo PyQt desde dentro de FreeCAD.activeWindow() A continuación. o el documentación de moneda oficial .qApp mw = app. como FreeCAD. Documentación Por desgracia pivy sí mismo todavía no tiene una documentación adecuada. Usted puede utilizarlo por ejemplo para crear sus propios programas de Qt en python. por lo que los hijos de la ventana principal de nuestro propios pueden contener a otros niños. usted tiene por lo tanto.

300.100))) # sets size of the widget label = QtGui.resize(QtCore.0. La gran ventaja es que puede ser un objeto de interfaz de usuario de tal creó gráficamente con el programa de Qt Designer.QLabel(myWidget) # creates a label self.expande dTo(myWidget.24)) # sets its size self. draftToolbar): # built-in QT function that manages translations of widgets myWidget.ui = myWidget_Ui() # load the Ui script myNewFreeCADWidget.setGeometry(QtCore.QDockWidget() mw.QSize(QtCore.QRect(0.QDockWidget() # create a new dckwidget myNewFreeCADWidget.200.24)) # sets its size label.minimumSizeHint())) # sets size of the widget self. basta aplicarlo al widget recién creado como este: myNewFreeCADWidget = QtGui.QRect(0. QtGui.translate("myWidget".QRect(50.Qt.UnicodeUTF8)) Para usarlo.50. None.translate("myWidget".setupUi(myNewFreeCADWidget) # setup the ui FCmw.QApplication.UnicodeUTF8)) self. Un objeto típico generado por el diseñador Qt es como esta: class myWidget_Ui(object): def setupUi(self.RightDockWidgetArea.de cosas que puede hacer.size()).setObjectName("myLabel") # sets its name.QRect(50. "My Widget".RightDockWidgetArea.setGeometry(QtCore.QSize(QtCore. myWidget): myWidget.setObjectName("label") # sets its name.ui.QApplication.addDockWidget(QtCore. QtGui.300.100). por ejemplo un dockWidget (que puede colocarse en uno de los laterales del FreeCAD) es fácil: myWidget = QtGui.resize(QtCore.label.myNewFreeCADWidget) add the widget to the main window # .setObjectName("my Nice New Widget") myWidget. Compruebe la documentación de la API para ver lo que es posible.addDockWidget(QtCore.label = QtGui.QApplication.QLabel(myWidget) # creates a label label. Pero es un método preferido crear un objeto de interfaz de usuario que hará todo de la configuración de tu widget a la vez. so it can be found by name . so it can be found by name def retranslateUi(self.0.QApplication.Qt. "Welcome to my new widget!". Agregar un nuevo widget.label. None.label.setObjectName("my Nice New Widget") myWidget.myWidget) Podría agregar entonces cosas directamente a tu widget: myWidget.setWindowTitle(QtGui.setText(QtGui.200.50.

Además de los tipos de objeto estándar tales como anotaciones, mallas y partes de objetos, FreeCAD también ofrece la posibilidad de sorprendente para construir objetos 100% script python, llamados características de Python. Esos objetos se comportan exactamente como cualquier otro objeto de FreeCAD, puede ser guardados en un documento y abrió en cualquier otra instalación de FreeCAD, ya que el código de python que define el objeto también se guarda en el documento. Características de Python siga la misma regla como todas las funciones de FreeCAD: están separados en partes de la aplicación y GUI. La parte de app, el objeto Document, define la geometría de nuestro objeto, mientras que su parte de GUI, el objeto de proveedor de la vista, define cómo se dibujarán el objeto en la pantalla. El objeto de proveedor de ver, como cualquier otra característica de la FreeCAD, sólo está disponible cuando se ejecuta FreeCAD en su propia interfaz gráfica. Hay varias propiedades y métodos disponibles para construir su objeto. Las propiedades deben ser de cualquiera de los tipos de propiedades predefinidos que ofrece el FreeCAD, y aparecerá en la ventana de vista de la propiedad, por lo que pueden ser editados por el usuario. De esta forma, los objetos FeaturePython son verdaderamente y totalmente paramétricos. se pueden definir propiedades para el objeto y su ViewObject por separado.

Ejemplo básico
En el siguiente ejemplo puede encontrarse en el src/Mod/TemplatePyMod/FeaturePython.py archivo, 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 box").Length=1.0 of the

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 box").Color=(1.0,0.0,0.0) obj.Proxy = self of the

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(l,w,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 XMP 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", " ........", " ......++..+..", " .@@@@.++..++.", " .@@@@.++..++.", " .@@ .++++++.", " ..@@ .++..++.", "###@@@@ .++..++.", "##$.@@$#.++++++.", "#$#$.$$$........", "#$$####### ", "#$$#$$$$$# ",

".the Coin stuff -.we must define this method to return a tuple of all pickable objects or None. Since we have some un-pickable here -."Box") Box(a) ViewProviderBox(a." return None def __setstate__(self. def __getstate__(self): "When saving the document this object gets stored using Python's cPickle module." return None def makeBox(): FreeCAD.ActiveDocument."#$$#$$$$$# "#$$#$$$$$# " #$#$$$$$# " ##$$$$$# " ####### """ ". A través de ellos. ". Since no data were pickled nothing needs to be done here.addObject("App::FeaturePython".supportedProperties() Obtendrá una lista de propiedades disponibles: App::PropertyBool App::PropertyFloat App::PropertyFloatList App::PropertyFloatConstraint App::PropertyAngle App::PropertyDistance App::PropertyInteger App::PropertyIntegerConstraint App::PropertyPercent App::PropertyEnumeration App::PropertyIntegerList App::PropertyString . Después de crear un nuevo objeto de FeaturePython en el documento (a=FreeCAD. "}.addObject("App::FeaturePython".state): "When restoring the pickled object from document we have the chance to set some internals here. puede obtener una lista de las propiedades disponibles mediante la emisión de: a. ".ActiveDocument.ViewObject) Propiedades disponibles Las propiedades son la verdadera creación de piedras de objetos FeaturePython."Box")). el usuario podrá interactuar y modificar su objeto.newDocument() a=FreeCAD.

Width/2.addProperty("App::PropertyLength".Width/2.fp.Vector(0.fp.addProperty("Part::PropertyPartShape". fp): # Define six vetices for the shape v1 = FreeCAD.Vector(fp.0) v2 = FreeCAD.Length/2.0.Height/2) v6 = FreeCAD. Part class Octahedron: def __init__(self.Height=1.Height/2) # Make the wires/faces .Length.Length=1.addProperty("App::PropertyLength".Vector(fp."Length".Width=1.0 obj.Proxy = self "Shape def execute(self.0) v5 = FreeCAD.0.0) v3 = FreeCAD.Vector(0.Vector(fp.Length/2."Octahedron".-fp."Width of the octahedron").0) v4 = FreeCAD.fp."Width".addProperty("App::PropertyLength".App::PropertyStringList App::PropertyLink App::PropertyLinkList App::PropertyMatrix App::PropertyVector App::PropertyVectorList App::PropertyPlacement App::PropertyPlacementLink App::PropertyColor App::PropertyColorList App::PropertyMaterial App::PropertyPath App::PropertyFile App::PropertyFileIncluded Part::PropertyPartShape Part::PropertyFilletContour Part::PropertyCircle Otro ejemplo más complejo Este ejemplo hace uso de la Módulo de parte para crear un octaedro.Vector(fp. FreeCADGui. En primer lugar es el propio objeto de documento: import FreeCAD.fp. a continuación. obj): "Add some custom properties to our box feature" obj.0 obj.fp.Length."Octahedron"."Length the octahedron")."Octahedron". "Height of the octahedron").0 of obj."Shape".Width."Height".Width."Octahedron". crea su representación de moneda con pivy. of the octahedron") obj.

addChild(self.wireframe = coin.Color=(1.f1 = self.v6) shell=Part.v2.shaded = coin.data) self."Color".make_face(v4.wireframe.shaded.f2.style = coin.makeSolid(shell) fp. obj): "Setup the scene sub-graph of the view provider.v4. contamos con el objeto de proveedor de vista.make_face(v2.v6) f7 = self. style=coin.face) obj.0) obj.SoGroup() self.v2.SoDrawStyle.f8]) solid=Part.v2.addChild(self.v5) f2 = self.scale) self. responsable para mostrar el objeto en la escena 3D: class ViewProviderOctahedron: def __init__(self.face=coin.scale) self.f5.f7.v5) f5 = self."Shaded").makeShell([f1.make_face(v1."Octahedron".shaded.scale = coin.make_face(v2.v6) f6 = self.SoDrawStyle() style.data=coin.v5) f3 = self.SoScale() self.f3.Shape = solid # helper mehod to create the faces def make_face(self.addChild(self.addChild(style) self.SoCoordinate3() self.SoGroup() self."Color the octahedron").0.wireframe. obj): "Set this object to the proxy object of the actual view provider" obj.make_face(v3.0.0.make_face(v1.addChild(self.addChild(self.v3.f6.color) self.wireframe.SoIndexedLineSet() self.v2.color = coin.shaded.v5) f4 = self.wireframe.f4.LINES self.v3.makePolygon([v1.addChild(self.shaded.v1.make_face(v4.addChild(self.0.Face(wire) return face A continuación.shaded. this method is mandatory" self.v1.v6) f8 = self.Proxy = self of def attach(self.color) self.addDisplayMode(self.face) .v3): wire = Part.data) self.make_face(v3.v4.SoBaseColor() self.addProperty("App::PropertyColor".addChild(self.v1.v1]) face = Part.wireframe.v3.

Z) cnt=cnt+1 self.face. prop is the name of the property that has changed if prop == "Shape": s = fp.i.-1) self.face.4) .face.coordIndex.face.face.face.3) self.coordIndex.face.coordIndex.face.face.coordIndex.coordIndex.set1Value(27.1) self.face.1) self.set1Value(28.1) self.set1Value(11.addDisplayMode(self.set1Value(10.coordIndex.4) self.wireframe.coordIndex.getPropertyByName("Shape") self.-1) self.set1Value(26.coordIndex. self.set1Value(9.1) self.set1Value(24.data.3) self.-1) self.2) self.coordIndex.coordIndex.point. fp.face.face.coordIndex.obj.set1Value(13.face.face.set1Value(25.face.set1Value(cnt.face.3) self.set1Value(29.coordIndex.point.4) self.0) self.face.face.coordIndex.set1Value(18.5) self.set1Value(1.set1Value(8.2) self.face.face.set1Value(22.set1Value(2.coordIndex.set1Value(6.coordIndex.coordIndex.onChanged(obj.face.face.2) self.coordIndex.Y."Color") def updateData(self.coordIndex.set1Value(4.coordIndex.face.set1Value(14.set1Value(20.4) self.coordIndex.face.set1Value(12.0) self.i.coordIndex.set1Value(3.3) self.5) self.5) self.set1Value(15.X.set1Value(19.set1Value(7.set1Value(16.setNum(6) cnt=0 for i in s.face.0) self.coordIndex.face.coordIndex.set1Value(21.face.2) self.0) self.coordIndex.coordIndex.set1Value(17.face.coordIndex.data.Vertexes: self.-1) self.coordIndex.-1) self.-1) self.face.coordIndex.i.set1Value(5.coordIndex.set1Value(23.set1Value(0."Wireframe").face. prop): "If a property of the handled feature has changed we have the chance to handle this here" # fp is the handled feature.coordIndex.-1) self.

.. "$ c #57C355".++++++.++.set1Value(30. " .c[2]) def getIcon(self): return """ /* XPM */ static const char * ViewProviderBox_xpm[] = { "16 16 6 1"." modes=[] modes.getPropertyByName("Color") self.. "# c #000000". prop): "Here we can do something when a single property got changed" FreeCAD. "@ c #C39D55". ".append("Shaded") modes. "#$$#$$$$$# ".color..obj): "Return a list of display modes.".".. "###@@@@ . "#$#$..++. " ..mode): return mode def onChanged(self..++++++. It must be defined in getDisplayModes. "#$$#$$$$$# "..@@ . " ##$$$$$# ". " #$#$$$$$# "...++. "#$$#$$$$$# ". "#$$####### ".. " . vp..set1Value(31..++.".rgb..self. " . c #141010".append("Wireframe") return modes def getDefaultDisplayMode(self): "Return the name of the default display mode.-1) def getDisplayModes(self..++. " .++..face.@@ ." return "Shaded" def setDisplayMode(self.face.@@$#..Console... " ####### "}. "##$.".. .coordIndex.@@@@. " .c[1].+."..".".$$$.coordIndex.++..".++.PrintMessage("Change property: " + str(prop) + "\n") if prop == "Color": c = vp. " c None"..++.setValue(c[0].".5) self.@@@@. "+ c #615BD2"...

o al menos una parte del mismo. obj): "App two point properties" . we need its associated App Object selectionNode..SoType.newDocument() a=FreeCAD. una vez que nuestro objeto y su viewobject se definen.Object.shaded...Name) selectionNode."Octahedron") Octahedron(a) ViewProviderOctahedron(a.documentName. Trabajar con formas simples Si su objeto paramétrico salidas simplemente una forma. sólo necesitamos a llamarlos: FreeCAD.addChild(selectionNode) self.addChild(self.setValue(FreeCAD.state): return None Por último. Todo lo que es un SoFCSelection se analiza constantemente por FreeCAD para detectar la selección y preselección. puede incluir sólo una parte del mismo en un SoFCSelection.fromName("SoFCSelection"). debe incluir su geometría de moneda dentro de un nodo de SoFCSelection.ActiveDocument.wireframe.ActiveDocument. agregar los nodos de la geometría a la misma.setValue("Face") selectNode.face en el ejemplo anterior: selectionNode = coin. Si el objeto tiene una representación compleja.""" def __getstate__(self): return None def __setstate__(self. haciendo clic en él en el área de visualización.addChild(selectionNode) Simplemente. Esto es lo que haría para incluir un self.ViewObject) Hacer los objetos seleccionables Si desea realizar su objeto seleccionable. con widgets. así que tiene sentido tratar de no sobrecargar el con análisis innecesarios.addObject("App::FeaturePython". anotaciones. luego que lo agregue a su nodo principal. en lugar de agregar los nodos de geometría directamente. se crea un nodo de SoFCSelection. no es necesario utilizar un objeto de proveedor de vista. self.objectName.face) .setValue(obj.Name) # here obj is the ViewObject.createInstance() selectionNode. etc.subElementName. La forma se mostrará mediante representación de forma estándar de FreeCAD: class Line: def __init__(self.

addObject("Part::FeaturePython".append(FREECADPATH) # path to your FreeCAD.open(filename) objects = doc."End point").ActiveDocument. fp): "Print a short message when doing a recomputation. directa.Objects for ob in objects: if ob. En el ejemplo siguiente. que puede hacer que esto es importar documentos de FreeCAD en su programa.p2=FreeCAD.addProperty("App::PropertyVector"."p2".dll file import Blender.GetCurrent() import Part doc = FreeCAD. Aquí es la secuencia de comandos completa.PupMenu('Error%t|FreeCAD library not found. this method is mandatory" fp. podrá importar la geometría de la pieza de un documento de FreeCAD en licuadora.Shape = Part.Draw.path.Vector(1.makeLine(fp."Line") Line(a) a.p2) a=FreeCAD. Incluso es posible importar la GUI de FreeCAD como módulo de python--con algunas restricciones. sin embargo.p1. fácil y útil.fp.0.Proxy = self def execute(self."Line". Utilizando FreeCAD sin interfaz gráfica de usuario Una aplicación primera.so or def import_fcstd(filename): try: import FreeCAD except ValueError: Blender.Faces: mesh = Blender.Mesh. Espero que usted se va impresionado por su simplicidad: FREECADPATH = '/opt/FreeCAD/lib' FreeCAD. Please check the FREECADPATH variable in the import script is correct') else: scene = Blender.obj."p1".Shape if shape.addProperty("App::PropertyVector".ViewObject."Line". sys sys.0) obj.Type[:4] == 'Part': shape = ob. junto con todos sus módulos y componentes.Scene.New() ."Start point") obj.Proxy=0 # just set it to something different from None (this assignment is needed to run an internal notification) FreeCAD tiene la habilidad increíble para ser importables como un módulo de python en otros programas o en una consola de python independiente.

que solo añadimos el contenido de ambas listas a las caras de una malla de blender y verts. Mantuvo la ruta de acceso en una constante (FREECADPATH). del mismo modo como nos haría dentro intérprete de python del propio FreeCAD.x. y hacer una lista de sus objetos. Otra manera podría estar haciendo un vínculo a la biblioteca de FreeCAD en uno de la pitón rutas de acceso de búsqueda. este script es muy simple (en realidad hice una más avanzada aquí).fcstd')) # This lets you import the script without running it if __name__=='__main__': main() La parte primera.faces. nosotros sólo repintar la pantalla. Por lo que simplemente tomamos la variable sys.path. ya que es exactamente de la misma manera como licuadora define mallas.z)) for f in rawdata[1]: mesh.append. así que habrá más fácil para que otro usuario de la secuencia de comandos configurarlo a su propio sistema.v.rawdata = shape.Redraw() def main(): Blender.FileSelector(import_fcstd.new(mesh.sys. todos los módulos de FreeCAD tales como elemento. Entonces. Esto es perfecto. como hemos escogido sólo a la atención sobre la geometría de la pieza.makename(ext='. Una vez que lo encuentra. verificamos si la propiedad Type de cada objeto contiene "Parte". Abrimos el documento de FreeCAD que se pasa a nosotros por la función main(). puede que desee extender. Blender.v. que es donde python busca módulos. entonces nos tesselate se. Los tesselation producen una lista de vértices y una lista de caras definido por índices de vértices.append((v.objects. podemos ahora trabajar con FreeCAD. Cuando todo está hecho.tessellate(1) for v in rawdata[0]: mesh.verts. nuestra tarea es ridículamente simple. que vamos a usar también estará disponibles automáticamente. 'IMPORT FCSTD'. importante es asegurarse de que python encontrará nuestra biblioteca de FreeCAD. Una vez que estamos seguros de que se cargue la biblioteca (el bloque try / excepto la secuencia). por ejemplo importación de malla objetos .Name) Blender.append(f) scene.Window. Por lo tanto. Esta modificación es sólo temporal y se perderá cuando te cerramos nuestro intérprete de python. y acompañamos a la ruta de acceso de lib FreeCAD.y.ob. y eso es todo! Por supuesto.

o importar otros formatos de archivo que se puede leer FreeCAD. Esta página contiene ejemplos. Para Windows funciona siempre y cuando la aplicación host se basa directamente en Win32 o cualquier otro Kit de herramientas que utiliza internamente la API de Win32..2 sobre Qt tiene la capacidad de intrigante para incrustar dependientes de la GUI de Qt plugins en las aplicaciones de host no Qt y compartir el bucle de eventos del host. esta solución no funciona junto con todos los otros kits de herramientas.. A fin de hacerlo funcionar bajo X 11 en el host de aplicación debe vincular la biblioteca "Wittgenstein". También puede exportar la geometría a un documento de FreeCAD. existen algunas limitaciones que debe tener en cuenta.. La belleza de todo esto en realidad reside en el hecho de que permita que FreeCAD hacer el suelo trabajar al presentar sus resultados en el programa de su elección. por lo que el usuario puede elegir lo que debe importar. para FreeCAD esto significa que pueden importarse desde dentro de otra aplicación con su interfaz de usuario completa donde la aplicación host tiene control total sobre FreeCAD.demasiado o importación de parte de la geometría que no tiene caras. Tenga en cuenta. Para las aplicaciones no Qt.showMainWindow() Si la aplicación host se basa en Qt esta solución debe funcionar en todas las plataformas que soporta Qt. Probablemente. . El código de python todo para lograr que tiene sólo dos líneas import FreeCADGui FreeCADGui. MFC o WinForms. No obstante. que puede hacerse de la misma manera. el host debe vincular la misma versión de Qt que FreeCAD porque de lo contrario podría ejecutar en errores de tiempo de ejecución inesperado.. Especialmente. sin embargo. También puede que desee crear un cuadro de diálogo. Leer y utilizarlo como un punto de partida para sus propias secuencias de comandos. para cualquier aplicación de consola de que esta solución por supuesto no funciona porque no hay ningún lazo de evento que se ejecuta. entonces. piezas.. Uso de FreeCAD con la interfaz gráfica de usuario Desde la versión 4. fragmentos de código de python FreeCAD recogido de experiencias de los usuarios y los debates en los foros. etc. como wxWidgets.

FreeCAD.addWorkbench(ScriptWorkbench()) Un archivo de módulo típico Este es un ejemplo de un archivo de módulo principal.."Import_Ext") A continuación.py típico Cada módulo debe contener. responsable de insertar el módulo en el Gui principal.py is the file that has the code for opening and reading .Un archivo de InitGui.png'.list) Gui. sino que simplemente puede directamente abrir el nuevo tipo de fichero. FreeCADGui class ScriptCmd: def Activated(self): # Here your write what your ScriptCmd does. import FreeCAD. Aquí puede tener todos los comandos personalizados.ext files FreeCAD.PrintMessage('Hello. además de su archivo de módulo principal. Este es un ejemplo de una simple.py: .py para agregar la nueva extensión de archivo a la lista: # Assumes Import_Ext. ScriptCmd()) 'MenuText': Importar un nuevo tipo de fichero Es fácil hacer un importador para un nuevo tipo de fichero en FreeCAD.Console. en el archivo Import_Ext.addCommand('Script_Cmd'. 'Short text'. un archivo de InitGui.py is your module list = ["Script_Cmd"] # That list must contain command names. World!') def GetResources(self): return {'Pixmap' : 'path_to_an_icon/myicon.py.addImportType("Your new File Type (*. que contiene todo lo que hace de su módulo. Por lo tanto lo que tienes que hacer es agregar la nueva extensión de archivo a la lista de FreeCAD de extensiones conocidas y escribir el código que leerá el archivo y crear los objetos FreeCAD que desea: Esta línea se debe agregar al archivo InitGui..py invocado por el ejemplo anterior. that can be defined in Scripts. 'ToolTip': 'More detailed text'} FreeCADGui. Es el archivo de Scripts. FreeCAD no considerar la posibilidad de que importar datos en un documento abierto.ext)". class ScriptWorkbench (Workbench): MenuText = "Scripts" def Initialize(self): import Scripts # assuming Scripts.appendToolbar("My Scripts".py self.

No es necesario ser cerrado.def open(filename): doc=App.Nodes=n doc.activeDocument() # add a line element to the document and set its points l=Part.0) n.addExportType("Your new File Type (*.removeObject(lin) # removes the lin object from the group grp Nota: Incluso puede agregar otros grupos a un grupo.0.append(v) v=App. set its coordinates and add it to the list v=App.addObject("Part::Polygon".PartGui doc=App.Vector(10. import Part. classify data.0) l. salvo que utilice: FreeCAD.0.addObject(lin) # adds the lin object to the group grp grp.0.activeDocument() n=list() # create a 3D vector. "Group") lin=doc.0..0..Line() l.Shape=l.0.addObject("Part::Feature"."Export_Ext") Agregar una línea Una línea simplemente tiene 2 puntos.0) n. Adición de una malla import Mesh doc=App.activeDocument() grp=doc.ext)".addObject("App::DocumentObjectGroup".EndPoint=(1.1. read.newDocument() # here you do all what is needed with filename."Line").recompute() Adición y eliminación de un objeto a un grupo doc=App.0) doc.toShape() doc.activeDocument() . import Part.StartPoint=(0.PartGui doc=App. repeat for all nodes # Create a polygon object and set its nodes p=doc.0..Vector(0.1.addObject("Part::Feature".recompute() Para exportar el documento a algún tipo de fichero nuevo funciona del mismo modo.append(v) #.0. "Line") grp.recompute() Adición de un polígono Un polígono es simplemente un conjunto de segmentos de línea conectados (una polilínea en AutoCAD)."Polygon") p. create corresponding FreeCAD objects doc..

0.Shape = c.0.addFacet(0.0.0.0.0.0.0.0.0. etc.0.0. 0.1.0. 1.0.0.0.. 0.1.1.0.0.0 f = doc.addFacet(0.0.0.0.getObject("Cube") # access the view representation Mesh feature 'Cube' v.0.0.0.0.0.0.0.0.0.0.0.0.addFacet(0.0.addObject("Part::Feature".0.0.0.0) m.0.1.0. 1.0.0.0.0.0.0.1. 0.0.Radius=10..1.0.0.1.0. ancho.addFacet(0.0) # scale to a edge langth of 100 m.addFacet(0. como color.0.0. 0.0.1.0) m.0.0. 1.1.0.0) m.0.0) # sets the shape color to white to the # access the active document containing all # view representations of the features in Observando los eventos de mouse (ratón) en el visor 3D a través de Python La estructura del inventor permite agregar uno o más nodos de devolución de llamada para el scenegraph del visor. 0. 1. 0.0) m.0.0.0.1.0.0.1.1.0. 1.0.1.addFacet(0.0.1.addFacet(1.0.0.1.0.0.toShape() # Assign the circle shape to the shape property doc.0.0) m.0.0.0.0.0.1.1.0.0.0.0.0.addFacet(0. 0.1.0.1.0.0.0.# create a new empty mesh m = Mesh. 1. 1.1.1.0.0.1.0.0.1.1.1.0.1.0) m.addFacet(0.recompute() Acceso y cambio de representación de un objeto Cada objeto en un documento de FreeCAD tiene un objeto de representación de vista asociados que almacena todos los parámetros que definen cómo aparece el objeto.Mesh() # build up box out of 12 facets m.1.0.0.0.addFacet(1.0.0.1. 1.0. 1.1.1.0) m.activeDocument() the # corresponding App document v=gad.0.0.0.0.0.0) m. 0.0.addFacet(0.0.Circle() c.0.0.0) m.0.0. 1.0) m.0.Mesh=m Adición de un arco o un círculo import Part doc = App.1.activeDocument() c = Part.addFacet(0. 1.addObject("Mesh::Feature".0.0.0.1.1.0."Cube") me. 1.0.0) # add the mesh to the active document me=doc.0.ShapeColor=(1.0.0.0. 1.0..0.0) m.scale(100.0.0.0.0.0. 1. 1.0.0.1.1.0.ShapeColor # prints the color to the console v.0.0.0.0.1. Un nodo de devolución de llamada se instala de forma predeterminada en FreeCAD por el visor que permite añadir .1.0. 1.1.0.0. "Circle") # create a document with a circle feature f. gad=Gui.0.0.

escoja en algún lugar en el área en el visor 3D y observar los mensajes en la ventana de salida. App. Tiempo--la hora actual como cadena Posición--una tupla de dos números enteros.funciones de C++ globales o estáticas. En Python adecuado vinculante algunos métodos son proporcionados para hacer uso de esta técnica desde dentro de código Python.activeDocument(). "+str(pos[0])+")\n") o = ViewObserver() c = v. SoMouseEvent. true si Alt se presionó lo contrario es false . SoLocation2Event. class ViewObserver: def logPosition(self. As the registered callback function fires twice for 'down' and #'up' events we need a boolean flag to handle this.addEventCallback("SoMouseButtonEvent".activeView() #This class logs any mouse button events.newDocument() v=Gui.Console.PrintMessage("Clicked on position: ("+str(pos[0])+"..removeEventCallback("SoMouseButtonEvent". info): down = (info["State"] == "DOWN") pos = info["Position"] if (down): FreeCAD. true si Mayús en caso contrario se presionó false CtrlDown--un valor booleano.logPosition) Ahora.c) Se admiten los siguientes tipos de eventos SoEvent--todo tipo de eventos SoButtonEvent--todos botón del ratón y eventos clave SoLocation2Event--movimiento 2D eventos (normalmente los movimientos de ratón) SoMotion3Event--eventos de movimiento 3D (normalmente spaceball) SoKeyboradEvent--clave hacia abajo y eventos SoMouseButtonEvent--botón del ratón hacia abajo y eventos SoSpaceballButtonEvent--spaceball botón hacia abajo y eventos La función de Python que se puede registrar con addEventCallback() espera un diccionario.o. la posición del mouse ShiftDown--un valor booleano. Para finalizar la llamada justa de observación v. es decir. Para todos los eventos tiene las llaves: Tipo--el nombre del tipo de evento.. Dependiendo del evento observado el diccionario puede contener diferentes claves. true si Ctrl se presionó lo contrario es false AltDown--un valor booleano.

En el ejemplo siguiente se agrega una línea roja de (0. ratón o spaceball eventos Estado--A string 'UP' si el botón se fue arriba.0): from pivy import coin sg = Gui.0. Sin embargo.Para todos los eventos de botón.0. podría ser BUTTON1.fromName("SoFCSelection") node = type.getSceneGraph() node root. 'Abajo' si era hacia abajo o 'Desconocido' para todos los demás casos Para los eventos de teclado: Clave--un carácter de la tecla presionada Para el evento de botón del mouse Botón--el botón presionado...0. Se puede crear una instancia del tipo 'SoFCSelection' con type = SoType.0) a (10.0. teclado.. BUTTON7 o cualquier Y por último eventos de movimiento: Traducción--una tupla de tres carrozas Rotación--un cuaternión de la rotación. es decir. Como utilizamos en FreeCAD algunos nodos escritos no puede crear directamente en Python.. Tenga cuidado de añadir siempre un SoSeparator para contener la geometría. podría ser BUTTON1. una tupla de cuatro carrozas Manipular el scenegraph en Python También es posible obtener y cambiar el scenegraph en Python.ActiveView.0]] .ActiveDocument..getSceneGraph() co = coin.0].addChild(SoCube()) view.SoCoordinate3() pts = [[0.createInstance() Agregando y quitando objetos hacia/desde el scenegraph Agregar nuevos nodos a la scenegraph puede hacer de esta manera. es decir. con el módulo de 'pivy'--un enlace de Python para monedas. from pivy. las coordenadas y información material de un mismo objeto...ActiveView root = view.fitAll() # load the pivy module # get the active viewer # the root is an SoSeparator La API de Python de pivy se crea mediante la herramienta SWIG. es posible crear un nodo por su nombre interno.coin import * view = Gui.ActiveDocument.. BUTTON5 o cualquier Para eventos de spaceball: Botón--el botón presionado.[10.

la herramienta que convierte archivos de qt-diseñador .point. El código de python producido por el compilador de python de Ui (es decir. a continuación.label = QtGui.QSize(QtCore.100). inserte un widget personalizado y "transformar" este widget en la suya con el código de Ui acaba de hacer: app = QtGui.setWindowTitle(QtGui.pts) ma = coin.0) li = coin.translate("myWidget".QApplication.QLabel(myWidget) # creates a label self. None.QApplication.0.resize(QtCore.removeChild(no) Adición de widgets personalizados a la interfaz Puede crear widgets personalizados con el diseñador de Qt.addChild(ma) no. QtGui.expande dTo(myWidget.addChild(no) Para quitarlo. todo lo que necesita hacer es crear una referencia a la ventana de FreeCAD Qt.setObjectName("my Nice New Widget") myWidget.UnicodeUTF8)) A continuación.co.rgb = (1. "Welcome to my new widget!".addChild(co) no.setText(QtGui.label.label.translate("myWidget".SoBaseColor() ma. None.setObjectName("label") # sets its name.0.24)) # sets its size self.QRect(0. draftToolbar): # built-in QT function that manages translations of widgets myWidget.setGeometry(QtCore.QApplication.QApplication.SoLineSet() li. transformarlas en una secuencia de comandos python y.len(pts). cargarlos en la interfaz de FreeCAD con PyQt4.300.label.QRect(50.SoSeparator() no.50.200. myWidget): myWidget.minimumSizeHint())) # sets size of the widget self. simplemente ejecute: SG.setValues(0.addChild(li) sg. "My Widget".ui en el código de python) generalmente tiene el siguiente aspecto (es simple. QtGui.qApp .setValue(2) no = coin. también puede código directamente en python): class myWidget_Ui(object): def setupUi(self.numVertices.UnicodeUTF8)) self.size()). so it can be found by name def retranslateUi(self.

ActiveDocument.view.getEvent() if event.myNewFreeCADWidget) # add the widget to the main window Esta página muestra cómo avanzada funcionalidad fácilmente puede ser construido en Python.show(shape) self.stack[0]. será esto guardar en un archivo y importarlo en FreeCAD.view.QDockWidget() # create a new dckwidget myNewFreeCADWidget.getPosition() point = self. lanzar su editor de texto favorito y escriba las líneas siguientes: import FreeCADGui. La secuencia de comandos principal En primer lugar escribimos una secuencia de comandos que contiene toda la funcionalidad de nuestra.activeWindow() # the active qt window. construirá una nueva herramienta que dibuja una línea.setupUi(myNewFreeCADWidget) # setup the ui FCmw.DOWN: pos = event.stack = [] self.view.removeEventCallbackPivy(SoMouseButtonEvent.FCmw = app.self. como un elemento de menú o un botón de la barra de herramientas. En este ejercicio.ui. Part from pivy.callback) . y ese comando puede ser invocado por cualquier elemento de la interfaz.coin import * class line: "this class will create a line after the user clicked 2 points on the screen" def __init__(self): self. Por lo tanto.getPoint(pos[0].addEventCallbackPivy(SoMouseButtonEvent.getClassTypeId().getState() == SoMouseButtonEvent.sel f.append(point) if len(self.callback = self.getClassTypeId().ui = myWidget_Ui() # load the Ui script myNewFreeCADWidget.getpoint) def getpoint(self.Line(self.Qt. self.pos[1]) self.stack[1]) shape = l.event_cb): event = event_cb.addDockWidget(QtCore. puede vincularse a un comando de FreeCAD. A continuación. a continuación.ActiveView self. = the freecad window since we are inside it myNewFreeCADWidget = QtGui.view = FreeCADGui.RightDockWidgetArea.toShape() Part.stack) == 2: l = Part.stack. por lo que todas las clases y funciones que escribimos será sencillo a FreeCAD. Esta herramienta.

la cadena de descripción se mostrará como una información sobre herramientas. Por lo tanto..stack = [] Aquí creamos una lista vacía que va a contener los puntos 3D enviados por la función getpoint. que se ejecuta cuando se llama a la clase para crear un objeto.Explicación detallada import Part. cada clase o función puede tener una cadena de descripción.ActiveDocument. "this class will create a line after the user clicked 2 points on the screen" En Python. necesita importarlo. def __init__(self): Clases de Python siempre pueden contener una función __init__.. Una función termina cuando se ha hecho su tarea. FreeCADGui from pivy.ActiveView En una clase. Esto resulta especialmente útil en FreeCAD.getpoint) . por lo tanto será fácilmente accesible a todas las funciones dentro y fuera de esa clase.coin import * En Python. También necesitamos el contenido completo de la biblioteca de la moneda.view para tener acceso y manipular la vista 3D activa. self. antes de un nombre de variable.sel f. class line: Aquí definimos nuestra clase principal. Aquí.callback = self. para la creación de la línea y desde el módulo de Gui (FreeCADGui). self. ¿Por qué usamos una clase y no una función? La razón es que necesitamos que nuestra herramienta para permanecer "alive" mientras que estamos esperando para que el usuario haga clic en la pantalla. por lo general desea anexar self. utilizaremos self. etc.getClassTypeId(). pondremos aquí todo lo que queremos que suceda cuando comienza a nuestra herramienta de la línea. pero un objeto (una clase define un objeto) permanece vivo hasta que sea destruida. cuando desea utilizar las funciones de otro módulo. para acceder a la vista 3D.view.addEventCallbackPivy(SoMouseButtonEvent. necesitaremos las funciones de la Módulo de parte .view = FreeCADGui. En nuestro caso. porque cuando llamaremos esa clase en el intérprete. por lo que podemos utilizar directamente toda moneda objetos como SoMouseButtonEvent. self.

pasando el cursor del ratón y golpear el plano focal. que contiene varias piezas de información (info de modo aquí ).stack[0]. estamos creando una devolución de llamada para SoMouseButtonEvent eventos y nos enlazarlo a la función getpoint. que llamamos event_cb. if event. Esta función recibirá un argumento.stack) == 2: ¿Tenemos suficientes puntos ya? Si sí y.Line(self.event_cb): Ahora definimos la función getpoint. se ejecutará la función de getpoint. Pero queremos elegir un punto 3D sólo cuando se presiona (de lo contrario tendríamos dos puntos 3D muy cercano a cada uno de los otros).pos[1]) Esta función nos da un vector de FreeCAD (x.self.getPosition() Aquí tenemos las coordenadas de la pantalla del cursor del ratón point = self.append(point) Agregamos a nuestro punto de nuevo a la pila if len(self. self.view. y. a continuación. que se ejecutará cuando se presiona un botón del mouse en una vista 3D. que permite a una función que se llamará cada vez que ocurre un determinado evento de la escena. pos = event. imaginar un rayo procedentes de la cámara. Tenga en cuenta que también es una alternativa a la addEventCallbackPivy() llamado addEventCallback() que prescinde de la utilización de pivy. cada vez un botón del mouse está presionado o liberado. Ahora. En nuestro caso. De este evento de devolución de llamada podemos acceder el objeto de evento. el FreeCAD utiliza el mecanismo de devolución de llamada de moneda.getPoint(pos[0].stack.stack[1]) . Es nuestro punto de 3D. Pero dado que pivy es una manera natural y muy eficiente para acceder a cualquier parte de la escena de la moneda. z) que contiene el punto 3D que se encuentra en el plano focal. Por lo tanto nos debemos comprobar aquí.getState() == SoMouseButtonEvent. el rayo es paralelo a la dirección de la vista.Esta es la parte importante: debido a que es en realidad un coin3D escena de . Si estás en la cámara vista. vamos dibujar la línea! l = Part. justo por debajo de nuestro cursor del ratón. Si estamos en vista ortogonal.DOWN: La función getpoint se llamará cuando se presiona un botón del mouse o se lanzó. es mucho mejor usarlo tanto como usted puede! def getpoint(self.

Pruebas & usando la secuencia de comandos Ahora. shape = l. Let's quite el mecanismo de devolución de llamada. vamos guardar nuestro script en algún lugar donde se encontrarán en el intérprete de python de FreeCAD. que consume preciosos ciclos de CPU. enlazada la forma manualmente.toShape() El documento de FreeCAD sólo puede aceptar formas desde el módulo de parte.removeEventCallbackPivy(SoMouseButtonEvent. Ahora nos podemos comprobar su contenido con: dir(exercise) El comando dir() es un comando de python incorporada que enumera el contenido de un módulo. Podemos ver que nuestra clase line() está allí. número: import exercise Si ningún mensaje de error aparece. la mejor solución es crear un nuevo directorio en uno de los FreeCAD mod directorios y para guardar la secuencia de comandos en ella. el directorio bin de FreeCAD y todos los directorios de los módulos de FreeCAD.getClassTypeId(). permanece en el módulo de parte. Ahora. por lo que no aparece nada en la pantalla.show(shape) El módulo de parte tiene una función muy útil show() que crea un nuevo objeto en el documento y se enlaza una forma. debemos convertir nuestra línea a una forma antes de agregarlo al documento. en el intérprete de python.py". hasta ahora. a la espera de nosotros. todo se encuentra listo. a continuación. significa que nuestro script de ejercicio se ha cargado. el intérprete se verá en los siguientes lugares: las rutas de acceso de instalación de python. Todo lo que crear y modificar dentro del módulo de parte. vamos comenzar FreeCAD. self. Por lo tanto. Por ejemplo. Las formas son el tipo más genérico del módulo parte. vamos hacer un directorio "MyScripts" y guardar nuestra secuencia de comandos como "exercise. Nos podríamos también han creado un nuevo objeto en el documento de la primera. Por lo tanto. No está obligada a cualquier objeto de nuestro documento activo.Aquí utilizamos la función Line() de la Módulo de parte en la que crea una línea de dos vectores de FreeCAD. Part. Ahora vamos a probarlo: .view. Al importar módulos. cree un nuevo documento y. self. hemos creado un elemento de línea. Por lo tanto.callback) Ya terminamos con nuestra línea.

todo lo que se necesita es colocar un archivo llamado InitGui. La manera más fácil es transformar nuestro nuevo directorio de MyScripts en una estación de trabajo completa de FreeCAD. A continuación. no? Registrar la secuencia de comandos de la interfaz de FreeCAD Ahora. sólo tiene que escribir exercise. debería ya entiendes el script anterior por usted mismo. Además de también necesitamos transformar un poco nuestro código de ejercicio.py va a contener las instrucciones para crear una nueva estación de trabajo y añadir nuestra nueva herramienta a ella. Es fácil.exercise. una vez que nuestro banco está listo. para que nuestra nueva herramienta en línea ser verdaderamente interesante.appendToolbar("My Scripts". creo que: crea una nueva clase que llamamos MyWorkbench.py y escribir el siguiente código en ella: class MyWorkbench (Workbench): MenuText = "MyScripts" def Initialize(self): import exercise commandslist = ["line"] self. En esa función. haga clic dos veces en la vista 3D. debería tener un botón en la interfaz. le damos un título (MenuText) y definimos una función Initialize() que se ejecutará cuando se carga el workbench en FreeCAD. nos agregarlo a la interfaz principal. Vamos comenzar haciendo un archivo InitGui. por lo que no necesitamos escribir todos cada vez de ese material. hacemos una llamada "Mis Scripts" de la barra de herramientas y asignamos a nuestra lista de comandos a ella. Por lo tanto será necesario . Pero esto todavía no funcionará.line() una vez más y una vez más y de nuevo. aquí es nuestra línea! Volver a hacerlo. por lo que nuestra lista de comandos contiene un único elemento. y bingo.commandslist) Gui. A continuación. ¿Se siente gran. por lo que la herramienta line() es reconocida como un comando de FreeCAD oficial.py dentro de su directorio de MyScripts. porque un comando de FreeCAD debe tener el formato de una cierta manera para trabajar.line() A continuación.addWorkbench(MyWorkbench()) Por ahora. El InitGui. cargar en el contenido de nuestro archivo de ejercicio y anexar los comandos de FreeCAD que se encuentra en el interior a una lista de comandos. En la actualidad. por supuesto. tenemos sólo una herramienta...

como 16 x 16. También hemos añadido una función de GetResources().stack[1]) shape = l.stack[0]. ahora sólo necesitamos reiniciar FreeCAD y vamos a tener una agradable workbench nuevo con nuestra nueva herramienta de la línea! .stack. puede ser de cualquier tamaño.getPoint(pos[0].DOWN: pos = event.png'.getpoint) def getpoint(self. A continuación.getClassTypeId().getEvent() if event.ActiveDocument.sel f.view = FreeCADGui.transformar un poco nuestra herramienta de line().addCommand('line'. 'MenuText': 'Line'.py tendrá ahora este aspecto: import FreeCADGui.stack) == 2: l = Part.view. Eso es todo.pos[1]) self. png o svg funcionará como un icono. que informa a FreeCAD donde puede encontrar un icono de la herramienta.append(point) if len(self. ejecutar automáticamente la función de Activated().removeEventCallbackPivy(SoMouseButtonEvent.Line(self.getClassTypeId(). 24 x 24 o 32 x 32.ActiveView self.show(shape) self. Nuestro nuevo script exercise.toShape() Part. 'ToolTip': 'Creates a line by clicking 2 points on the screen'} FreeCADGui.getPosition() point = self.getState() == SoMouseButtonEvent. añadimos la clase de line() como un comando de FreeCAD oficial con el método addCommand(). self.callback) def GetResources(self): return {'Pixmap' : 'path_to_an_icon/line_icon. porque cuando se ejecutan los comandos FreeCAD. y lo que será el nombre y la información sobre herramientas de nuestra herramienta.event_cb): event = event_cb. line()) Lo que hicimos aquí es transformar nuestra función de __init__() en una función de Activated().view.callback = self. pero es mejor utilizar un tamaño de que está cerca el aspecto final. Cualquier imagen jpg.addEventCallbackPivy(SoMouseButtonEvent.self.stack = [] self.view. Part from pivy.coin import * class line: "this class will create a line after the user clicked 2 points on the screen" def Activated(self): self.

Sowe podría añadir algunos comentarios. y cómo será el flujo de trabajo de su acción. Echar un vistazo en el módulo de FreeCAD. pulsar botones. a continuación.. podría emitir mensajes a la consola de FreeCAD. a continuación. La herramienta oficial de qt para diseñar interfaces. Hay un par de conceptos para conocer al diseñar la interfaz: Cuadros de diálogo modales. y que se pueden hacer cosas sencillas en una ventana de terminal. utilizarlo dentro de FreeCAD. Supongo en el ejemplo que usted sabe cómo editar y ejecutar python scripts ya. etc. como navegar. forzando al usuario a responder al cuadro de diálogo. no-modal : Un cuadro de diálogo modal que aparece delante de la pantalla. diseñar una buena interfaz de usuario (User Interface) es muy importantes. convertirlo en el código de python. por ejemplo Agregar la posibilidad de añadir más de 2 puntos Agregar eventos para otras cosas: ahora comprobamos sólo para eventos de botón del ratón.. qué sucede si también haríamos algo cuando se mueve el ratón. etc. por supuesto. Mirar la función de input() de python. como mostrar coordenadas actuales? Asigne un nombre al objeto creado . como por ejemplo: Agregar comentarios de los usuarios: hasta ahora hicimos una herramienta muy desnuda. aplicaciones. pyqt instalado. escogiendo entre iconos. Por lo que es muy importante pensar cuidadosamente a lo que desea hacer. ¿por qué no intentar mejorar esta pequeña herramienta? Hay muchas cosas que pueden hacer. diciéndole que lo que debe hacer a continuación.Console Agregar una posibilidad para escribir el 3D puntos de coordenadas manualmente. mientras que un cuadro de diálogo no . Por ejemplo. También debe tener. el usuario puede estar un poco perdido cuando lo utilice.¿Así que quieres más? Si te gustó este ejercicio. No dude en escribir sus preguntas o ideas sobre el hablar de la página ! En esta página nos mostrará cómo crear un cuadro de diálogo de Qt simple con Qt Designer . Sobre todo el usuario será a través de algún pedazo de interfaz: lectura de cuadros de diálogo. cómo desea que el usuario se comportan. detener la acción de la ventana principal. Diseñar el cuadro de diálogo En CAD.

utilizar la información sobre herramientas. es un kit de herramientas de Estado-of-the-art.modal no parar de trabajar en la ventana principal. Puede que encuentre no muy útil para producir aviones rectangulares agradables. El usuario sabe que si hace clic en un botón producirá una acción mientras que cambiar un valor dentro de un campo de texto va a cambiar un parámetro en algún lugar. es hora de abrir el diseñador qt. ya que ellos ya será muy claros por sí mismos. El toolkit de interfaz que estamos utilizando. sin embargo. utilizaremos este cuadro de diálogo en FreeCAD para producir un plano rectangular agradable. los usuarios generalmente saben bien lo que es un botón. y no tenemos que preocuparnos mucho acerca de hacer las cosas claras. etc. Comandos de separating de de parámetros: esto se suele hace con botones y campos de entrada de texto. Cuando lo abre. en otros casos no. A continuación. Vamos diseñar un diálogo muy simple. Hoy en día. Identificación de lo que se necesita y lo que es opcional: asegúrese de que el usuario sabe lo que él debe do. Etiquetar todo con descripción adecuada.. Qt. etc. como esto: . lo que es un campo de entrada. el primero es mejor. ahora que hemos definido bien lo que haremos. pero va a ser fácil cambiar más tarde para hacer las cosas más complejas. En algunos casos. Por lo tanto. Qt Designer se ve así: .

00 para cada uno. Nota que he escogido aquí controles muy simples.. que es el botón que el usuario tendrá que presionar después de que llenó los 2 campos. Aquí también podemos editar propiedades. En la barra izquierda tiene elementos que se pueden arrastrar en el widget. agregue 2 LineEdits.Es muy simple de usar. A continuación. pero Qt tiene muchas más opciones. como estilo de fuente. Eche un vistazo de lo que está disponible. Una última cosa. se ahorra tiempo valioso. Seleccione "Diálogo sin botones". ¿por qué no establecer un valor predeterminado? Por ejemplo 1. A continuación. arrastre en el widget 3 etiquetas. cuando el usuario verá el cuadro de diálogo. De esta forma. ya que no queremos que los botones de aceptar y cancelar de forma predeterminada. uno para el título.. sólo para informar al usuario. etc.. comenzar con la creación de un nuevo widget. Las etiquetas son simples los textos que aparecen en el widget. uno para la altura y otro para el ancho. Por ejemplo. por ejemplo se podría utilizar Spinboxes en lugar de LineEdits. Let's renombrar todos nuestros elementos con nombres . En el lado derecho tiene paneles de propiedades muestra todos los tipos de propiedades editables de elementos seleccionados. agregue un PushButton.. que son campos de texto que el usuario puede rellenar. sin embargo. Por lo tanto. etc. en el lado derecho aparecerán varias propiedades que se pueden cambiar si lo desea. Es sobre todo lo que necesitamos hacer en el diseñador de Qt. altura. seguramente tendrá otras ideas. ambos valores se rellenará ya y si él está satisfecho él puede directamente pulse el botón. Si selecciona una etiqueta. A continuación. uno para la escritura de "Altura" y otro para escribir "Ancho".

Dialog): Dialog.más fáciles. que nos convierta fácilmente a la secuencia de comandos python con pyuic. En windows. sobre linux probablemente necesitará instalar por separado desde el gestor de paquetes (en sistemas basados en debian. QtGui class Ui_Dialog(object): def setupUi(self.ui en una secuencia de comandos python. Para hacer la conversión.ui. el programa se llama pyuic4 en lugar de pyuic. vamos guardar nuestro widget en algún lugar. es parte del paquete de herramientas de pyqt4-dev). Si abrimos el archivo mywidget.py.title = QtGui.ui archivo y la cuestión: pyuic mywidget. 10.py En algunos sistemas. Se guardará como un archivo .title. 178) self. 271.setGeometry(QtCore. necesitará abrir una ventana de terminal (o una ventana de símbolo del sistema de ventanas).ui > mywidget. 16)) . desplácese hasta donde haya guardado su . sus contenidos son muy fáciles de entender: from PyQt4 import QtCore. el programa de pyuic está empaquetado con pyqt (a ser verificado).setObjectName("Dialog") Dialog. por lo que será más fácil identificarlos en nuestras secuencias de comandos: Convertir nuestro diálogo a python Ahora.QLabel(Dialog) self.QRect(10. Simplemente esto convertirá el archivo .resize(187.

"Plane-O-Matic".ui = mywidget.UnicodeUTF8)) . conéctese a las ranuras (hablaremos acerca de que más tarde).show() Y nuestro diálogo aparecerá! Tenga en cuenta que todavía está trabajando nuestro intérprete de python. None. Ya podemos ver nuestro widget en acción.. toda la interfaz obtiene traducida. y por último. en el intérprete de python FreeCAD. poniendo nuestro archivo de mywidget.setWindowTitle(QtGui.translate("Dialog".translate("Dialog". por supuesto) tema: d.Ui_Dialog() d. es parte del mecanismo general de Qt para traducir los elementos de la interfaz. self.setText(QtGui. None. Que la clase tiene dos métodos.title. uno por uno.self.retranslateUi(Dialog) QtCore. o en cualquiera de los subdirectorios MOD) y. sólo tenemos que añadir una última parte: para hacer algo! Si juegas un poco con el diseñador de Qt. los widgets como hemos definido en el diseñador de Qt y establece sus opciones como hemos decidido anteriormente..label_width = QtGui.QWidget() d. uno para la configuración del widget y uno para la traducción de su contenido. . podemos (aparte de hacer clic en su icono de cerrar. número de: from PyQt4 import QtGui import mywidget d = QtGui. Por lo tanto. rápidamente descubrirá una sección entera llamada "señales y ranuras".setupUi(d) d..UnicodeUTF8)) self. Dialog): Dialog. El método de instalación simplemente crea. "Dialog".. QtGui.py en un lugar donde FreeCAD se encuentran (en el directorio bin de FreeCAD.QLabel(Dialog) .setObjectName("title") self. que almacena los elementos de la interfaz de nuestro widget. para cerrarlo.ui.QApplication. QtGui.QApplication.QApplication.title. A continuación.hide() Hacer nuestro diálogo hacer algo Ahora que podemos mostrar y ocultar nuestro diálogo. Ahora podemos crear un nuevo widget y utilizar esta clase para crear su interfaz.connectSlotsByName(Dialog) def retranslateUi(self.QMetaObject. Como ves tiene una estructura muy simple: se crea una clase denominada Ui_Dialog.QApplication. contamos con un cuadro de diálogo no modal.

0) p2 = FreeCAD. un botón puede enviar una señal cuando se está presionado y cuando se publique. lo que las señales pueden enviar. etc. Por ejemplo. poniendo la siguiente línea en la parte superior de la secuencia de comandos.makePolygon(pointslist) myface = Part.Vector(w.QtCore..Vector(0. Esas señales pueden estar conectadas a las ranuras. que pueden ser una funcionalidad especial de otros widgets (por ejemplo un cuadro de diálogo tiene una ranura "Cerrar" a los que puede conectar la señal desde un botón de cierre).connectSlotsByName(Dialog): QtCore. funciona como este: los elementos de tus widgets (en la terminología de Qt.0.cre atePlane) Esto. dichos elementos son propios widgets) puede enviar señales.h. Part A continuación. es crear una nueva función que creará un plano basado en altura y anchura y conectar esa función a la señal presionada emitida por nuestro botón de "Crear!".p1] mywire = Part.QObject. La Documentación de referencia de PyQt enumera todos los widgets qt.SIGNAL("pressed()").p4. con una ranura llamada createPlane. lo que pueden hacer.hide() A continuación.QMetaObject. colocando la siguiente línea justo antes de QtCore.show(myface) self. como ves. Por lo tanto. tenemos que informar a Qt para conectar el botón con la función.Face(mywire) Part.0) pointslist = [p1. Lo que haremos aquí.connect(self. vamos a agregar una nueva función a nuestra clase Ui_Dialog: def createPlane(self): try: # first we check if valid numbers have been entered w = float(self. . donde importamos ya QtCore y QtGui: import FreeCAD.0.height. que acaba de definir.Vector(0.width.h..Vector(w. o pueden ser funciones personalizadas.Básicamente.0) p3 = FreeCAD. Esas señales difieren según el tipo de widget.create.0) p4 = FreeCAD.text()) h = float(self.text()) except ValueError: print "Error! Width and Height values must be valid numbers!" else: # create a face from 4 points p1 = FreeCAD.self.p3.p2. conecta la señal de pressed() de nuestro objeto de crear (el botón de "Crear!"). comencemos con la importación de nuestros módulos de FreeCAD.

setObjectName("title") self.setGeometry(QtCore.setGeometry(QtCore. Dialog): Dialog. 16)) self.setGeometry(QtCore.width.QLabel(Dialog) self. como por ejemplo insertar tu widget en la FreeCAD interfaz (véase la fragmentos de código página).label_height = QtGui.QLineEdit(Dialog) . vamos a agregar este código: class plane(): d = QtGui.height = QtGui. QtGui import FreeCAD.width.4 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore. Ahora puede probar todo tipo de cosas.QLabel(Dialog) self.Eso es todo! Ahora bien.QLabel(Dialog) self. Fuera de la clase Ui_Dialog. 178) self.resize(187.setObjectName("Dialog") Dialog.QLineEdit(Dialog) self.. como un toque final. 16)) self.4. desde FreeCAD.title = QtGui.coding: utf-8 -*# Form implementation generated from reading ui file 'mywidget. 271. mediante el uso de otros elementos en el widget de. 57.show() A continuación.setGeometry(QtCore.label_width = QtGui.ui = Ui_Dialog() d. 57. será más fácil llamar. 111.plane() Que es Folks todos.QWidget() d.label_width.QRect(10.label_height.QRect(10.setObjectName("width") self. La secuencia de comandos completa Esta es la secuencia de comandos completa. 26)) self.setObjectName("label_height") self..QRect(60.width = QtGui. sólo tenemos que hacer: import mywidget mywidget.title. 40. para referencia: # -*. 50. 10.setupUi(d) d.ui. 90. Part class Ui_Dialog(object): def setupUi(self.label_height.setObjectName("label_width") self.label_width. podemos añadir una pequeña función para crear el cuadro de diálogo.ui' # # Created: Mon Jun 1 19:09:10 2009 # by: PyQt4 UI code generator 4.title. o haciendo mucho más avanzadas herramientas personalizadas. 16)) self.QRect(10.

height. "Height".p1] mywire = Part.ui.width.self.0) p4 = FreeCAD.connectSlotsByName(Dialog) def retranslateUi(self.text()) h = float(self.cre atePlane) QtCore.p3.setObjectName("create") self.SIGNAL("pressed()").show() valid .setupUi(d) d. None.UnicodeUTF8)) self.QApplication. "Create!". "Dialog".setGeometry(QtCore.translate("Dialog".QRect(50. 80.QWidget() d.self. 140.Face(mywire) Part.QApplication. Dialog): Dialog.setObjectName("height") self.makePolygon(pointslist) myface = Part.show(myface) class plane(): d = QtGui. None.QApplication.Vector(0.setText(QtGui. None.create.setGeometry(QtCore.translate("Dialog".0.QApplication. QtGui.h.QObject.setText(QtGui.p4.0) p2 = FreeCAD. "Plane-O-Matic".QApplication. 83.p2. 111.QPushButton(Dialog) self. None.Vector(w.0.UnicodeUTF8)) self. 26)) self.create.QtCore.label_height.translate("Dialog".create. QtGui.QRect(60.QApplication.UnicodeUTF8)) def createPlane(self): try: # first we check if valid numbers have been entered w = float(self. "Width".ui = Ui_Dialog() d.connect(self.height.translate("Dialog".QApplication.setText(QtGui.retranslateUi(Dialog) QtCore.h.translate("Dialog".UnicodeUTF8)) self.0) p3 = FreeCAD.text()) except ValueError: print "Error! Width and Height values must be numbers!" else: # create a face from 4 points p1 = FreeCAD. QtGui.height.create = QtGui.QApplication.title.setWindowTitle(QtGui. None. QtGui.QMetaObject.QApplication.create. 26)) self.0) pointslist = [p1. QtGui.QApplication.Vector(0.UnicodeUTF8)) self.setText(QtGui.label_width.Vector(w.

Linux es buen ejemplo. Sin embargo. como se afirma en los archivos .Traducciones disponibles: Desarrollo FreeCAD de aplicaciones para Declaración del responsable del Sé que la discusión sobre la "derecho" licencia de código abierto ocuparon una parte significativa de ancho de banda de internet y por lo tanto es aquí la razón por qué. Todos trabajamos para las empresas y la necesidad de pago o al menos de alimentos. Por lo que para mí. evitar la vinculación contra aplicaciones no GPL? Y aunque me encanta la libertad de Linux. Me gustaría ver a alguien que escribe un procesador de importación y exportación de Catia para FreeCAD y distribuirlo gratuitamente o por algún dinero. también quiero ser capaz de utilizar el controlador de gráfico 3D NVIDIA muy bueno. No me gusta para obligarle a regalar más de lo que quiere. No sería bueno ni para él ni para FreeCAD. ¿Usted puede solicitar por ello comercial módulos en absoluto? Por lo tanto. Licencias usadas Aquí los tres licencias en virtud del cual se publica FreeCAD: Licencia pública general (GPL2 +) Para las secuencias de comandos de Python construir los archivos binarios. Comprendo y aceptar la razón que NVIDIA no va a regalar el código del controlador. Cada escritor de un módulo de aplicación podrá hacer su propia decisión.py en src/herramientas Menor General Public Licence (LGPL2 +) . opté por la LGPL y el GPL para el proyecto y yo sabemos los pro y contras sobre la LGPL y la voluntad de dan algunas de las razones de esa decisión. en mi opinión. FreeCAD es una mezcla de una biblioteca y una aplicación. una coexistencia de código abierto y el software de código cerrado no es malo. Impediría escribir módulos comerciales para FreeCAD porque impediría la vinculación con los libs base de FreeCAD. esta decisión es hecha sólo para el núcleo del sistema de FreeCAD. ¿Linux sería tan exitoso cuando la biblioteca de C de GNU sería GPL y por lo tanto. por lo que la GPL sería un poco fuerte para ello. FreeCAD debe tener este uno. cuando obedece las reglas de la LGPL.

org ). Desarrolladores de código fuente abiertos Puede utilizar FreeCAD como las bases para los módulos de extensión propia para propósitos especiales. Siempre son maestros de sus datos. no se ven obligados a actualizar FreeCAD.sourceforge. Pueden escribir extensiones de código fuente abierto o cerrado en FreeCAD.h y .. Pueden personalizar la aplicación que lo deseen..coin3d. Pueden elegir la GPL o la LGPL para permitir el uso de su trabajo en software propietario o no. para cualquier tipo de trabajo privado o profesional. Utilizando FreeCAD no ligarlos a cualquier tipo de contrato u obligación. Ver del FreeCAD archivo copyright Debian para obtener más detalles acerca de las licencias utilizadas en FreeCAD Impacto de las licencias Usuarios privados Los usuarios privados pueden utilizar FreeCAD de forma gratuita y puede hacer básicamente todo lo que quieren hacer con ella. Usuarios profesionales Puede utilizar FreeCAD libremente.NET/ como no marcado de forma diferente por el autor Intentamos utilizar solo LGPL tipo de licencias para las bibliotecas del sistema vinculado de núcleo (vea Bibliotecas de terceros ) con una excepción: la licencia de Coin3D ( www. cambiar su uso de FreeCAD.cpp en src/APP src/Gui src/base y la mayoría módulos en src/mod y para el ejecutable como se indica en los ficheros .. .Para los núcleo libs como se indica en los ficheros .cpp en src/principal Licencia de publicación abierta Para la documentación sobre http://Free-CAD.h y .

y cómo pueden reproducirse. es decir. leer el preguntas más frecuentes . FreeCAD. escriba bt . algo que debería estar trabajando y que no está funcionando. Pueden usar todos los módulos que utilizan la LGPL. Antes de presentar cualquier cosa. Incluir ese backtrace en su informe de fallo.Desarrolladores profesionales Los desarrolladores profesionales pueden utilizar FreeCAD como las bases para sus propios módulos de extensión para fines especiales y no están obligados a hacer sus módulos open source. Si no está seguro. dont dude en explicar su problema en el foro y pregunta qué do. Pero antes de informar sobre un bug. . eres Bienvenido a informar de ello. para obtener el backtrace completo. de lo contrario se ve obligado por esta biblioteca para que sea open source. a continuación. Si no podemos verificar el fallo. escriba Ejecutar . en lugar del antiguo incorporada bug tracker. por favor. Unirse a la siguiente información: el sistema operativo. Después de que el accidente ocurre. Recibirán el apoyo de los autores como es no una una forma calle. no podríamos ser capaces de fijar ella.php Si usted piensa que usted podría ha encontrado un bug. Describe como claramente como sea posible el problema. La dirección de nuestro bug tracker es: http://sourceforge. hace una búsqueda en el foro y asegúrese de que el mismo error no ha reportado antes. puede intentar ejecutar un backtrace de depuración: desde una terminal ejecutar gdb freecad (suponiendo que está instalado el paquete gdb). compruebe los siguientes elementos: Make asegúrese de que el fallo es realmente un error. se ejecutará. si es de 32 o 64 bits y la versión de FreeCAD está en ejecución. Si estás en un sistema linux y su fallo provoca un accidente en FreeCAD. Si desea vender su módulo necesita una licencia de Coin3D. realizando una búsqueda en el bug tracker. Se les permite distribuir FreeCAD junto con su software propietario. a continuación. Por favor presentar un informe por separado para cada error. dentro de gdb.NET/Apps/mantisbt/Free-CAD/main_page. Informar de fallos Recientemente la plataforma de sourceforge hizo el mantis bug tracker aplicación disponible para proyectos y FreeCAD es ahora utilizando activamente.

pero tenga en cuenta que no son garantiza que su deseo será cumplida. no es un error sino una solicitud de función. ¿Cuándo se debe utilizar? El Rastreador de FreeCAD Bug Bugs Si usted piensa que usted podría ha encontrado un bug. como característica solicitar en lugar de errores).Solicitar funciones Si desea algo que aparecen en FreeCAD que aún no se ha implementado. ¿Dónde se encuentran? FreeCAD el proyecto tiene su propio página de resumen de Tracker . Si no puede encontrar una . crear un parche utilizando la herramienta diff de Subversion y lo presentará en el mismo tracker (archivo como parche). La búsqueda por palabra clave le permite encontrar bug tracker entradas para un problema similar. esta un poco ahora es obsoleto. vaya a la Sección de bugs del tracker y elija "cualquiera" para Estado de ver todos los de solicitud de error jamás presentada.. una extensión o algo que puede ser de uso público en FreeCAD. Encontrarás la información general sobre las distintas secciones del Rastreador.. El "viejo" rastreador de sourceforge (obsoleto) Nota : Utilice el nuevo mantis bug tracker para enviar bugs. Envío de parches En caso de que usted ha programado una corrección de errores. También puede enviar en el mismo tracker (archivo.

usted podría encontrar el Solicitud de función helpfull de la sección. Parches de nuevos En caso de que usted ha programado una corrección de errores. Edificio con aenderezar En primer lugar. crear un parche utilizando Subversion y de archivo en el sección de parches . Solicitudes de asistencia Si no obtiene alrededor de compilación de FreeCAD y el Compilar en Windows o Compile On Unix sección no le otorga una sugerencia. usamos el compilador de 8 M de $ VisualStudio con el service pack más alto. Necesita descargar el SDK de la plataforma de Windows para obtener. Aunque es probablemente posible utilizar gcc Cygwin o MingW no ha probado ni portado hasta ahora. Nosotros también hemos portado a utilizar VC8 Express Edition. Si utiliza los compiladores de $ M que desea más probable es que descargar el LibPack de FreeCAD que le proporciona todos los libs necesarios para construir FreeCAD en Windows. . por ejemplo. Solicitudes de función Si se echa en falta una característica en FreeCAD que usted piense como bombardeos absolutamente necesario para convertirse en el mundos mejores software de CAD. En este artículo se explica paso a paso cómo compilar FreeCAD en Windows. En Windows. la Windows.h. tienes que Descargar aenderezar e instálelo en el equipo de generación.entrada mayor acerca de su problema. usted debe presentar una nueva entrada en la misma página. una extensión o algo que puede ser de uso público en FreeCAD. También necesita todos los Bibliotecas de terceros para compilar correctamente FreeCAD. Requisitos previos Lo que necesita es principalmente el compilador. o intentarlo de puerto a un nuevo entorno o están programando nuevos módulos o extensiones para FreeCAD y necesita alguna asistencia a continuación. la Las solicitudes de asistencia sección es el lugar que desee ir a.

Si quieres ex versiones de generación de FreeCAD (0. como Code:: Blocks. Pero tenemos planes para el futuro de un proceso de generación de Windows sin el software propietario del compilador.El conmutador de aenderezar Desde la versión 0. Qt Creator y Eclipse CDT el compilador principal que usamos es todavía Express de M $ VC9. Ya no entregamos . Configurar el proceso de generación El primer paso para construir FreeCAD con aenderezar es para configurar el entorno.8 y anterior) ver "Building versiones anteriores" más adelante en este artículo. Nos cambiaron porque se convirtió en más y más dolorosa mantener archivos de proyecto para 30 + construcción metas y compiladores de x.vcproj archivos.9 utilizamos el sistema de compilación de aenderezar para generar los archivos de compilación y ganar para varios compiladores. sin embargo. aenderezar nos da la posibilidad de apoyar IDEs alternativos. Básicamente hay dos formas para ir: Utilizando el LibPack Instalar todos necesita libs y dejar que aenderezar encontrarlos En el primer caso sólo necesita dar a aenderezar la ruta de acceso a la LibPack y el resto debe hacerse de forma automática y verá una .

aenderezar le mostrará lo que no se encuentra y deben especificarse. Tienes mucho switches para determinar el proceso de generación. Si cambia la FREECAD_LIBPACK_USE opciones de desactivar la configuración intenta encontrar cada biblioteca necesaria en su sistema.pantalla de tal Verá la ruta de LibPack que se inserta en el FREECAD_LIBPACK_DIR variable. Así que tienes a menudo definir algunos trazados a mano. Dependiendo de las libs que funciona más o menos. Eso significa que podemos encender y apagar algunas características o módulos. Es de una manera como la compilación del kernel de Linux. Sólo necesita presionar la generar obtener generados el botón y los archivos del proyecto. . Opciones para el proceso de creación de El sistema de compilación de aenderezar nos da mucha más flexibilidad durante el proceso de generación. A partir de que todos incluye y rutas de acceso se establecen.

generación de línea de comandos Aquí un ejemplo cómo construir FreeCAD desde la línea de comandos: rem @echo off rem Build script. APAGADO experimental! FREECAD_BUILD_GUI FREECAD_BUILD_CAM Crear los archivos de proyecto FREECAD_BUILD_INSTALLER para el instalador deAPAGADO Windows.Aquí es la descripción de estos modificadores.exe" update rem set the aprobiated Variables here or outside in the system set PATH=C:\WINDOWS\system32.C:\WINDOWS. Más probable es que cambiará mucho en el futuro porque queremos aumentar la flexibilidad de generación mucho más. El encendido de cosas FREECAD_MAINTAINERS_BUI necesitan sólo cuando hacesAPAGADO LD una compilación de versión. Crear los archivos de proyecto FREECAD_BUILD_DOXYGEN_ para la documentación deAPAGADO DOCU código fuente.9" "C:\Program Files (x86)\Subversion\bin\svn. uses vcbuild to completetly build FreeCAD rem update trunc d: cd "D:\_Projekte\FreeCAD\FreeCAD_0. Tabla de vínculos Nombre de la variable Descripción El uso de FreeCAD o apagarlos De forma predeterminad a la LibPack de En Win32 sobre encenderlos y otherwishe off FREECAD_LIBPACK_USE FREECAD_LIBPACK_DIR Directorio donde se encuentraDir de fuente de el LibPack FreeCAD Construir FreeCAD con todos los módulos relacionados conSOBRE la Gui Construir el módulo de CAM.C:\WINDOWS\System32\Wbem set INCLUDE= .

ya que Windows hace variables de entorno de reemplazar a no recursivamente.C:\Program SDKs\Windows\v6.9_build\FreeCAD_trunk.C:\Program Files\Microsoft SDKs\Windows\v6.%FrameworkSDKDir%\include set INCLUDE=%INCLUDE%. utilice el menú Tools→Options→Directory Incluye Añadir la siguiente ruta de búsqueda a la lista de búsqueda de rutas incluyen: %FREECADLIB%\include %FREECADLIB%\include\Python %FREECADLIB%\include\boost .%PROGRAMFILES%\Microsoft Visual Studio\VC98\Lib rem Start the Visuall Studio build process "C:\Program Files (x86)\Microsoft 9.bat" (x86)\Microsoft Visual Studio rem Set Standard include paths set INCLUDE=%INCLUDE%.set LIB= rem Register VS Build programms call "C:\Program Files 9.sln" /useenv Visual Studio "D:\_Projekte\FreeCAD Versiones más antiguas de fomento de la Utilizando LibPack Para hacerlo más fácil obtener FreeCAD compilado.0\VC\vcpackages\vcbuild. Se llama la LibPack . Para cambiarlos. proporcionamos una colección de todas las bibliotecas necesarias.0A\Include Files\Microsoft rem Set lib Pathes set LIB=%LIB%. Es necesario establecer las siguientes variables de entorno: FREECADLIB = "D:\Wherever\LIBPACK" QTDIR = "% FREECADLIB %" Añadir "% FREECADLIB%\bin" y "% FREECADLIB%\dll" para el sistema PATH variable. Tenga en cuenta que tienes que sustituir "% FREECADLIB %" con el nombre de ruta de acceso. Usted puede encontrar en el página de descarga de en sourceforge.0\VC\vcvarsall. Directorio de instalación de Visual Studio Algunos ruta de búsqueda de Visual Studio que deba establecerse.exe" FreeCAD_0.0A\Lib set LIB=%LIB%.

generalmente "C:\Programm Files\TortoiseSVN\bin". . Python es necesario Durante la compilación se ejecutan algunas secuencias de comandos de Python.exe.exe en el directorio bin. Utilice un cuadro de mando para comprobarlo.exe se utiliza para extraer el número de versión de Subversion. esto es necesario para una distribución construir cuando SubWVRev. Si no está instalada correctamente la biblioteca de Python obtendrá un mensaje de error como no se puede encontrar en python. Si utiliza la LibPack también puede utilizar el python. Así que el intérprete de Python tiene que funcionar en el sistema operativo.%FREECADLIB%\include\xercesc %FREECADLIB%\include\OpenCascade %FREECADLIB%\include\OpenCV %FREECADLIB%\include\Coin %FREECADLIB%\include\SoQt %FREECADLIB%\include\QT %FREECADLIB%\include\QT\Qt3Support %FREECADLIB%\include\QT\QtCore %FREECADLIB%\include\QT\QtGui %FREECADLIB%\include\QT\QtNetwork %FREECADLIB%\include\QT\QtOpenGL %FREECADLIB%\include\QT\QtSvg %FREECADLIB%\include\QT\QtUiTools %FREECADLIB%\include\QT\QtXml %FREECADLIB%\include\Gts %FREECADLIB%\include\zlib Libs Añadir la siguiente ruta de búsqueda a la lista de búsqueda de rutas de lib: %FREECADLIB%\lib Ejecutables Añadir la siguiente ruta de búsqueda a la lista de búsqueda de la ruta del ejecutable: %FREECADLIB%\bin Directorio de instalación binario de TortoiseSVN.

zip QtCore4.dll de LIBPACK/bin QtGui4.dll y python25_d.dll de LIBPACK/bin boost_signals-vc80-mt-1_34_1. puesto que necesita una versión diferente para VC6 y VC8.dll de LIBPACK/bin coin2.exe y python_d. En las propiedades del proyecto para AppMesh cambiar el nombre de la biblioteca de la wm. usted tiene que cambiar la información de enlace para la biblioteca de WildMagic.dll de LIBPACK/bin Xerces-c_2_8.dll de LIBPACK/bin zlib1.dll a la versión VC8.Especial para VC8 Al generar el proyecto con VC8.dll de LIBPACK/bin boost_program_options-vc80-mt-1_34_1.es sólo un clic de ratón en VC.-) Después de compilar Para obtener FreeCAD activo y funcionando desde el entorno de compilador necesita copiar algunos archivos de la LibPack a la bin carpeta donde está instalado el FreeCAD.5 tiene que copiar los archivos de más de dos: .dll de LIBPACK/bin soqt1.zip y cambiarle el nombre a Python25_d.dll de LIBPACK/bin QtOpenGL4. Tenga cuidado de cambiarlo en Debug y configuración de Release. Compilar Después de que cumplen todos los requisitos previos la compilación Ojalá .ZIP de LIBPACK/bin hacer una copia de Python25.exe después de una generación correcta: Python.dll de LIBPACK/bin Cuando se utiliza un LibPack con una versión de Python mayor de 2.dll de LIBPACK/bin QtNetwork4.dll de LIBPACK/bin QtSvg4.dll de LIBPACK/bin QtXml4.dll de LIBPACK/bin python25.exe de LIBPACK/bin python25. Ambas versiones se suministran en LIBPACK/dll.

zlib.PYD y zlib_d. Para crear un paquete de intstaller necesita WIX . ya que todas las dependencias son prestadas normalmente por el administrador de paquetes. En primer lugar debe construir el plugin de Qt que proporciona todos los widgets personalizados de FreeCAD que necesitamos para el diseñador Qt. FreeCAD es generalmente más fáciles de construir. En recientes distribuciones de linux. llamando a hacer creará la biblioteca //libFreeCAD_widgets. instale las dependencias que se enumeran a continuación. Una vez hecho esto.pyd de LIBPACK/bin/lib. Dar a conocer esta biblioteca a tu Qt Designer tiene que copiar el archivo a //$QTDIR/plugin/designer//. sólo tiene que necesita obtener el código fuente de FreeCAD y. y emitir: .so//.pyd de LIBPACK/bin/lib. Material adicional Si encuentro para construir la fuente código documentación que necesita DoxyGen . _sre. Por lo tanto. Básicamente.Linux en sus fuentes.pyd faltan los archivos./configure && make . Si no lo consigues ejecutarlo debido a un error de Python es muy probable que uno de los zlib*.pro lo crea. a continuación. Esto es necesario por python para abrir la biblioteca de python comprimidos./autogen.PYD y _sre_d. Durante la compilación se ejecutan algunas secuencias de comandos de Python. Hasta el momento no proporcionamos un archivo makefile--pero llamada qmake plugin. Para obtener más detalles también echar un vistazo a README. Esto es necesario por python para la construcción en ayudar a sistema. Las fuentes se encuentran bajo //src/Tools/plugins/widget//.sh && . el intérprete de Python tiene para que funcione correctamente.

Note. do: svn co freecad https://free-cad. && make para obtener FreeCAD construido. Para evitar cualquier problema de vinculador durante el proceso de compilación que sería una buena idea que las rutas de acceso de la biblioteca ya sea en su LD_LIBRARY_PATH variable o. La mayoría de las bibliotecas están disponibles a . A continuación. A continuación. dependiendo de lo que construir el sistema que prefiere utilizar ( autotools o aenderezar ). su directorio de usuario). también hay un shellscript que puede utilizar para seguir a lo largo.conf archivo. Alternatively you can download a source tarball but they could be already quite old so it's probably better to always get the latest sources via subversion.net/svnroot/free-cad/trunk This will perform an anonymous checkout of the current development version in a new directory called "freecad". and it might contain bugs or even fail to compile.svn. Antes de que usted demasiado empantanarse en detalles.sourceforge. though. nos ayudan a corregir ella.so.0. Instalar primero subversión .0. Esto ocurre normalmente ya en recientes distribuciones. en su ld. During the compilation some Python scripts get executed.o . Para obtener más detalles. tienen también un vistazo a README. You also need the GNU gcc compiler version equal or above 3. Obtención de la fuente Antes de que se puede compilar FreeCAD. Distribuciones Debian/Ubuntu y más recientes En los sistemas basados en Debian es bastante fácil obtener todas necesarias las dependencias instaladas. that the subversion version is the FreeCAD version currently being worked on.Linux en sus fuentes. por favor./cmake . So the Python interpreter has to work properly. Prerequisites To compile FreeCAD under Linux you have to install all libraries mentioned in Third Party Libraries first. Both gcc and g++ are included in the build-essential package listed below. g++ is also needed because FreeCAD is completely written in C+ +. Si encuentras algo malo o aquí abajo. encontrará explicaciones detalladas del todo el proceso y particularidades que puedan surgir. desde el directorio de su elección (por ejemplo. debe obtener el código fuente.

también puede instalar libsimage-dev (to make Coin to support additinal image file formats) checkinstall (to register your installed files into your system's package manager. pero normalmente usted podrá encontrar todos ellos demasiado: build-essential python libcoin60-dev libsoqt4-dev libxerces-c2-dev (or libxerces28-dev depending on your system) libboost-dev libboost-date-time-dev libboost-filesystem-dev libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev libboost-serialization-dev libboost-signals-dev libboost-regex-dev libqt4-dev qt4-dev-tools python2.5-dev (or higher version if available) libopencascade-dev Para instalar simplemente todas estas bibliotecas en un solo paso. los nombres del paquete pueden variar. Sobre otras distribuciones. más están disponibles desde los repositorios de Fedora 13 Descargar y generar xerces . A continuación figuran todos los packgages que necesita instalar. so yo can easily uninstall later) python-pivy (needed for the 2D Drafting module) python-qt4 (needed for the 2D Drafting module) Fedora Para construir & instalar FreeCADon Fedora 13.5-dev libopencascade-dev Opcionalmente. solo copiar y pegar el texto siguiente en una terminal (sólo para sistemas basados en debian/ubuntu) como root: aptitude install build-essential python libcoin60-dev libsoqt4-dev libxerces-c2-dev libboost-dev libboost-date-time-dev libboost-filesystem-dev libboostgraph-dev libboost-iostreams-dev libboost-program-options-dev libboost-serialization-dev libboostsignals-dev libboost-regex-dev libqt4-dev qt4-dev-tools python2. se necesitan unas cuantas sugerencias y trucos: Instalar un montón de paquetes necesarios.través del administrador de paquetes apt-get o sináptica.

org : .golpea un problema donde la generación es romper porque las ldflags para soqt se establece en "-LNONE" que hizo libtool barf.0-7.mit.0 . sin embargo puede que no encuentre las siguientes bibliotecas: OpenCASCADE No todas las distribuciones de Linux tienen un paquete de OpenCASCADE oficial en sus repositorios.orig.edu/~powell/opencascade/opencascade_6.0-7_i386.2.edu/~powell/opencascade/opencascade_6.2.2. Mi solución alguien fue modificar /usr/lib/Coin2/conf/soqt-default. Para construir su propio .2. Tienen que quitar las 2 referencias a inexistentes "SoQtSpaceball.4-dev libgl1-mesa-dev libglu1-mesa-dev java-gcj-compat-dev libxmu-dev #Build Opencascade packages.deb libopencascade6.deb privada paquetes siguen estos pasos: wget http://lyre.2.cfg para que el ldflags son ""en lugar de"LNONE". This takes hours and requires # at least 8 GB of free disk space cd opencascade-6. Necesario señalar a unas pocas cosas:.2-0_6. debuild # Install the resulting library debs sudo dpkg -i libopencascade6. /configure--con-xmu- include = / usr/incluyen/X 11/Xmu--biblioteca con xmu = / usr/lib Descargar y generar Pivy.dsc # Install OCC build-deps sudo apt-get install build-essential devscripts debhelper autoconf automake libtool bison libx11-dev tcl8.dsc wget http://lyre. Usted tiene que comprobar usted mismo para su distribución.07. Para mayores Debian o Ubuntu paquetes de versiones obtendrá no oficial de aquí .mit. Configurar Freecad.deb De forma alternativa. /configure--con-Qt- include = / usr/include--con-Qt-bin = / usr/lib/qt/bin--con-occ-lib = / usr/local/lib--conocc-include = / usr/local/inc--con-xercesc-lib = / usr/local/lib make .2.> éxito! make install Distribuciones más antiguas y no convencionales Distribuciones antiguas.gz dpkg-source -x opencascade_6. si hay alguno disponible.tar.gz wget http://lyre.Descargar y generar OpenCascade.h" de pivy/interfaces/soqt.4-dev tk8.0-7. puede descargar y compilar la versión más reciente de opencascade.2.2-dev_6.0. Por lo menos desde Debian Lenny y Ubuntu Intrepid sobre un .0-7_i386.deb oficial paquete se ofrece.edu/~powell/opencascade/opencascade_6.diff.mit. Después de esto .i comentarios fuera de esas dos líneas permiten la generación & instalar al trabajo. Necesario señalar a xmu:.

no el open-source java (gij) que se incluye con Ubuntu. por lo que fácilmente puede desinstalar más tarde. Si sucede.ffriend inyección . Posible error 2: posiblemente varios módulos (WOKSH. Si el instalador no funciona. Cuando haya terminado. también puede hacer sudo checkinstall que hagan lo mismo como hacer instalar pero cree una entrada en su sistema de gestión de paquetes.Instalar el paquete normalmente. TKViewerTest y TKDraw) se quejarán de que ellos no pudieron encontrar los encabezados de tcl/tk. porque allí se va encontrar automáticamente por cualquier programa. Instalarlo si es necesario: sudo apt-get remove gij sudo apt-get install sun-java6-jre Tenga cuidado. vaya al directorio "ros" dentro del dir opencascade y hacer . edite el script "configure".dir=path_to_tmp_directory> run Una vez que está instalado el paquete. busque el CXXFLAGS = "$ CXXFLAGS" Declaración y reemplazarlo por CXXFLAGS = "$ CXXFLAGS . tenga en cuenta que el instalador es un programa de java que requiere la edición de tiempo de ejecución de java oficial de Sun (nombre de paquete: Sol-java6-jre).4 Ahora puede compilar. En ese caso. TKWOKTcl. es probable que el compilador se detendrá justo después del comienzo de la operación de "hacer". Ahora limpiar los archivos de compilación temporal enorme haciendo make clean Posible error 1: si está utilizando la versión 6.4 --with-tk=/usr/lib/tk8. Volver a la carpeta de ros y hacer: make Tardará mucho tiempo. intente: java -cp path_to_file_setup./configure --with-tcl=/usr/lib/tcl8. si utiliza java gij con otras cosas como un complemento del navegador. ya que la opción no está disponible en el script de configuración. tendrá que editar manualmente el archivo makefile de cada uno de estos módulos: go en adm y ganar y en cada una de las carpetas . siga el paso de configuración una vez más.2 de OCC. Si lo prefiere. sólo tiene que instalar haciendo sudo make install Los archivos de biblioteca se copiarán en /usr/local/lib que está muy bien. A continuación. WOKLibs.jar <-Dtemp. no funcionará ya.fpermissive". tal vez varias horas.

4.org/debian/pool/main/s/soqt/soqt_1.4.4.diff. que es el caso de las distribuciones más recientes. Pero en el momento de escribir este artículo hubo sólo paquetes de SoQt4 para Debian propia disponible pero no para todas las versiones de Ubuntu.dsc wget http://ftp.4. Si no puede encontrar Pivy en el repositorio de paquetes de su distribución.deb libsoqt4-dev_1.deb Si estás en un sistema de 64 bits. probablemente necesitará cambiar i386.1-6_i386. Editar el fichero Makefile y localice las líneas CSF_TclLibs_INCLUDES = .16.debian.de.de.4 a él.org/debian/pool/main/s/soqt/soqt_1.16_i386.de. Para obtener los paquetes construidos realice los pasos siguientes: wget http://ftp.4.4.deb libsoqt-dev-common_1.g z wget http://ftp. Si no vas a usar ese módulo. pero es necesario para que el módulo de redacción 2D trabajar. no necesita pivy.1-6.4.org/debian/pool/main/s/soqt/soqt_1.4.1.4 y /tk8. por lo que leen: CSF_TclLibs_INCLUDES =-I/usr/include/tcl8.1 debuild sudo dpkg -i libsoqt4-20_1.dsc sudo apt-get install doxygen devscripts fakeroot debhelper libqt3-mtdev qt3-dev-tools libqt4-opengl-dev cd soqt-1. amd64. En el momento de redactar este informe.I/usr/include y CSF_TclTkLibs_INCLUDES = I/usr/include y agregue /tcl8.1-6.gz dpkg-source -x soqt_1.de módulos de mala.NET/Projects/Free-CAD/Files/FreeCAD%20Linux/ o compilar pivy: Instrucciones de compilación de Pivy Compilar FreeCAD . Pivy es muy nuevo y no podría haber hecho su camino a su repositorio de la distribución.orig. Pivy Pivy no es necesaria para construir FreeCAD o para ejecutarlo.4 SoQt La biblioteca de SoQt debe compilarse contra Qt4. puede capturar paquetes de debian/ubuntu en la página de descarga de FreeCAD: http://sourceforge.4 and CSF_TclTkLibs_INCLUDES =-I/usr/include/tk8.debian.1-6_i386.debian.tar.

compruebe esta página y el archivo README. En lugar de make install. Si desea que una visión general de todas las opciones que puede especificar. que también puede hacer checkinstall .SourceForge bug tracker: errores de compilación de búsqueda La forma de autotools Debe disponer de automake y libtool instalado en su sistema. así que no necesita privilegios de root.a menos que tenga uno de sus bibliotecas instalados en un directorio realmente raro. es tan simple como la compilación FreeCAD make Si por favor cualquier error se produce durante la construcción de fuentes. El directorio de instalación por defecto es ~/FreeCAD Se instalará en una carpeta de FreeCAD en la carpeta de inicio. hacer make install para instalarlo en su máquina. en Debian/Ubuntu: aptitude install automake libtool Si tienes las fuentes con la subversión. Sólo tiene que escribir . Después de haber construido FreeCAD correctamente. puede escribir .Linux. Después de que haya finalizado la configuración./configure --help. debe ser el primer paso . entonces usted podría saltar a la Bug Tracker en SourceForge./configure Para obtener todo configurado. Para el proceso de generación propia proporcionamos un script de configuración./autogen. elija los para el Estado y haga clic en el examinar botón para ver informes anteriores sobre problemas de compilación.sh crea el script de configuración y mucho más. Normalmente necesita ninguno de ellos . a continuación.

Para obtener FreeCAD que se está ejecutando . cambie a su carpeta de origen FreeCAD y la cuestión: cmake . Una vez hecho esto. Windows. necesitará el plugin de Qt Designer que proporciona todos los widgets personalizados de FreeCAD.De esta manera que se instalará FreeCAD por su sistema de gestión de paquetes.pro lo crea. Pero dado que todos de instalación de FreeCAD se encuentran en un único directorio. Dar a conocer esta biblioteca a Qt Designer tiene que copiar el archivo a $QTDIR/plugin/designer Solución de problemas Nota para los sistemas de 64 bits Al crear FreeCAD para 64 bits allí es un problema conocido con el paquete OpenCASCADE de 64 bits./bin/FreeCAD Partes opcionales Si desea desarrollar Qt cosas para FreeCAD. etc. llamar a make se creará la libFreeCAD_widgets.so de la biblioteca. FreeCAD está cambiando progresivamente al sistema de aenderezar. pero puede ejecutar FreeCAD mediante la emisión de . MacOSX. El aenderezar forma aenderezar es un sistema de compilación más reciente que tiene la gran ventaja de ser común para los sistemas de destino diferentes (Linux. Una instalación adecuada de todo el sistema de FreeCAD todavía no puede hacerse con aenderezar. Vete a freecad/src/Tools/plugins/widget Hasta el momento no proporcionamos un archivo makefile--pero llamada qmake plugin. por lo tanto puede desinstalarlo fácilmente más tarde. y ya puede generar FreeCAD de esa manera. simplemente quitando el directorio de FreeCAD es una forma válida para desinstalar demasiado.). Suponiendo que aenderezar está instalado en su sistema. a continuación make Para tener FreeCAD construido. Tener el origen configurado.

compliant) used for checking if packages are standard- Para crear un paquete abierto una consola. Están escritas para versión distinta. pero también es probables que se ejecutan en una versión posterior. google para ellos y le será encontrarlas fácilmente. simplemente vaya al directorio FreeCAD y llamada debuild Una vez que el paquete se construye.m4.correctamente.m4. con o sin cambios de menor importancia. Haciendo un paquete debian Si va a construir un paquete Debian fuera de las fuentes que necesita instalar estos paquetes en primer lugar: dh-make devscripts lintian (optional. / configure secuencias de comandos con el adicional definir conjunto de _OCC64: ./configure CXXFLAGS="-D_OCC64" Para sistemas basados en Debian esta solución no es necesaria cuando se utiliza el paquete precompilado porque allí está fabricado para establecer internamente este define que el paquete de OpenCASCADE. . coin. Macros de automake El script de configuración de FreeCAD hace uso de varias macros de automake que a veces no se instalan con sus paquetes: bnv_have_qt. Es un enfoque de una secuencia de comandos y funciona en una fresca distro instalada.deb (replace by the name of the package you just created) Secuencias de comandos de generación automática Aquí es todo lo que usted necesita para una generación completa de FreeCAD. Este secuencias de comandos deben ejecutarse en versiones de 32 y 64 bits.m4 y gts. Son sólo simples secuencias de comandos que necesita para colocar en la carpeta /usr/share/aclocal. usted puede utilizar lintian para comprobar si el paquete contiene errores lintian your-fresh-new-freecad-package. puede que tenga que ejecutar el. Si es necesario (error mientras configura). Ahora sólo necesita compilar FreeCAD de la misma manera como se describió anteriormente. Los comandos le pedirá la contraseña de root (para la instalación de paquetes) y en algún momento a reconocer una huella digital de un repositorio de servidor o https-subversión de repositorio externo.

svn.6-dev \ libsimage-dev libopencascade-dev \ libsoqt4-dev libode0-dev subversion cmake libeigen2-dev python-pivy \ libtool autotools-dev automake # checkout the latest source svn co https://free-cad.Jaunty Jackalope # get the needed tools and libs sudo apt-get install build-essential python libcoin40-dev libsoqt4-dev \ libxerces-c2-dev libboost-dev libboost-date-time-dev libboostfilesystem-dev \ libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev \ libboost-serialization-dev libboost-signals-dev libboost-regex-dev \ libqt4-dev qt4-dev-tools python2.net/svnroot/free-cad/trunk freecad # go to source dir cd freecad # build configuration cmake .Lucid Lynx sudo apt-get install build-essential python libcoin60-dev libsoqt4-dev \ libxerces-c2-dev libboost-dev libboost-date-time-dev libboostfilesystem-dev \ libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev \ libboost-serialization-dev libboost-signals-dev libboost-regex-dev \ libqt4-dev qt4-dev-tools python2. Ubuntu 9.net/svnroot/free-cad/trunk freecad # go to source dir .sourceforge.svn.Si tiene una secuencia de comandos para su distro preferida. por favor.10 .04 .Karmic Koala / Ubuntu 10. mándelo! Incorporará en este artículo.sourceforge.6-dev libopencascade-dev libsoqt4-dev \ libode-dev subversion cmake libeigen2-dev libsimage-dev python-qt4 \ libtool autotools-dev automake bison flex # checkout the latest source svn co https://free-cad. # build FreeCAD make # test FreeCAD cd bin .04 LTS ./FreeCAD -t 0 Ubuntu 9.

net/svnroot/free-cad/trunk freecad # go to source dir cd freecad # build configuration cmake . # install needed packages for development sudo zypper install gcc cmake subversion OpenCASCADE-devel \ libXerces-c-devel python-devel libqt4-devel python-qt4 \ Coin-devel SoQt-devel boost-devel libode-devel libQtWebKit-devel \ libeigen2-devel # get the source svn co https://free-cad. # build FreeCAD make # test FreeCAD cd bin ./FreeCAD -t 0 OpenSuse 11.1 # additional repository (for OpenCascade) sudo zypper -p http://packman.cd freecad # build configuration cmake .2 De OpenSuse Este script es no funciona en este momento porque: libXerces-c-devel costuras a ser desaparecido. # build FreeCAD nice make # test FreeCAD cd bin .unixheads.1/ # install needed packages for development sudo zypper install gcc cmake subversion OpenCASCADE-devel \ libXerces-c-devel python-devel libqt4-devel python-qt4 \ Coin-devel SoQt-devel boost-devel libode-devel libQtWebKit-devel \ libeigen2-devel # get the source ..com/suse/11.svn...sourceforge./FreeCAD -t 0 11.

me (lhagan) se detalla .sourceforge.net/svnroot/free-cad/trunk # go to source dir cd freecad # build configuration cmake . # build FreeCAD nice make # test FreeCAD cd bin .svn.svn.sourceforge. # build FreeCAD make # test FreeCAD cd bin .5-dev \ libsimage-dev libopencascade-dev \ libsoqt4-dev libode-dev subversion cmake libeigen2-dev python-pivy \ libtool autotools-dev automake # checkout the latest source svn co https://free-cad. El mayor reto es conseguir realmente todas las dependencias instaladas./FreeCAD -t 0 Squeeze Debian # get the needed tools and libs sudo apt-get install build-essential python libcoin60-dev libsoqt4-dev \ libxerces-c2-dev libboost-dev libboost-date-time-dev libboostfilesystem-dev \ libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev \ libboost-serialization-dev libboost-signals-dev libboost-regex-dev \ libqt4-dev qt4-dev-tools python2.net/svnroot/free-cad/trunk freecad # go to source dir cd freecad # build configuration cmake ./FreeCAD -t 0 FreeCAD de compilar en un Mac no es muy diferente de los pasos en Linux u otras variantes de UNIX. En las secciones siguientes.svn co freecad https://free-cad.

php Si o no acaba de instalar MacPorts. por favor. Aplicaciones similares desde el mundo de UNIX/Linux son PKGSRC y APT. sólo necesita acceso completo a los archivos. MacPorts es un sistema que permite descargar. probablemente querrá asegurarse de que está actualizado.MacPorts.sourceforge. soy el único para construir con éxito el FreeCAD en un Mac recientemente. instalar MacPorts.svn. pero requiere volver a compilar algunas bibliotecas binarios que todavía no he llegado a).los pasos exactos que tuve que ir a través de conseguir esta aplicación para compilar en Leopard y Snow Leopard utilizando un Mac Intel (PowerPC debe ser factible. por el ayudar a Foro si no es así. puede iniciar la instalación de algunos de los paquetes requeridos de FreeCAD: Oda xercesc impulso GTS OpenCV . Ubicación no es importante que si sería más bien colocarlo en otro lugar.net/svnroot/free-cad/trunk Esto pondrá el origen de la FreeCAD y los archivos relacionados en su carpeta de inicio (~/freecad/). Sólo retirar la revisión más reciente desde el repositorio de subversion de SourceForge mediante este comando en el terminal: svn co freecad http://free-cad. compilar e instalar muchas aplicaciones comunes de código abierto con un solo comando. Descargar las fuentes de FreeCAD En primer lugar que necesita obtener una copia del árbol de código fuente de FreeCAD. si ya no tienes. Ejecutar: sudo port selfupdate Ahora que MacPorts está instalado y actualizado.org/Install. o editar esta página si encuentra errores. simplemente Descargar la imagen de disco desde el sitio de MacPorts y siga las instrucciones: http://www. Para instalar. Instalación MacPorts y las dependencias de la biblioteca A continuación. Por lo que yo sé. puesto en el foro de discusión si estos pasos funcionan para usted.

Por alguna razón.com/u/103808/FreeCAD/OpenCASCADE_i 386_6. puede que desee intente instalar de uno en uno. OpenCASCADE http://dl.1.MACOSX.pythonocc.nokia.pkg. Si desea compilar su propio.dmg Instale SoQt. He no todavía correctamente construido OpenCASCADE yo mismo. descargue la última fuente de http://www. FreeCAD compila en OS X Leopard con moneda 3.getdropbox. FreeCAD compila en OS X Leopard con SoQt 1. Si MacPorts produce errores.dmg La por encima de la OCC 6. pero sería igual que eventualmente-- . Se instala en /Library/Frameworks.El siguiente comando será compilación e instalación todas las bibliotecas necesarias. Para su comodidad.la en orden para el FreeCAD proceso para vincular adecuadamente a ella de construcción y tendrás que descargar el origen de la OCC por separado. Se instala en /Library/Frameworks.0 distribución binaria es una versión modificada de la proporcionada por los mantenedores de PythonOCC http://www.coin3d. SoQt http://dl. opencv no construir actualmente. Se instala en /Library/Frameworks y/usr/bin.org/lib/soqt/releases y siga las instrucciones en README.getdropbox.3.pkg Y CoinTools. Descargue e instale los siguientes elementos: Qt http://qt. continuar sin opencv.com/downloads Obtenga la versión de "Marco sólo" a menos que se planea desarrollar usando Qt (es mucho más pequeño).3.0_20091128.org/lib/coin/releases/ de la moneda Instale Coin. sudo port install ode xercesc boost gts opencv El leopardo de nieve. FreeCAD compila en OS X Leopard con Qt 4.5. Usted puede.pkg Y SoQtTools. Http://www.pkg. Instalación de marcos y OpenCASCADE FreeCAD tiene otras dependencias (véase CompileOnUnix).coin3d. Puede utilizar la versión de PythonOCC.0.1.com/u/103808/FreeCAD/SoQt-1.1. sin embargo. pero el resto o bien se incluyen de forma predeterminada en OS X Leopard o puede instalarse usando paquetes del instalador. no se proporciona el marco de la SoQt como un binario oficial.4. yo estoy proporcionando la anterior versión compilada.org/. sin embargo.4. se necesitan cambios a los archivos de .

pero usted debe poder ponerlo en cualquier lugar que desee--sólo recuerda que el paquete no se puede mover.gz ACTUALIZADA de 2009-11-28 con el nuevo icono de la aplicación de FreeCAD Compilar Ahora configurar.getdropbox. ACTUALIZADA de 2009-11-28 con correcciones para Snow Leopard. http://DL. Si te OpenCASCADE para construir en OS X.esto sería clave para brindar una distribución de PowerPC (si es incluso posible).tar. sudo rm -r /usr/local/lib/OCC sudo rm -r /usr/local/include/OCC Descargar y 'instalar' a la plantilla de FreeCAD. . Running hacer usando la configuración por debajo de la voluntad de la instalación instalar en este paquete.app en algún lugar distinto de /aplicaciones (o no está usando el paquete). Si pone su paquete de FreeCAD. se recomienda que usted elimina los archivos antiguos e instala manualmente el nuevo paquete. Esto no es estrictamente necesario. pero hace que trabajar con FreeCAD más conveniente que la configuración predeterminada de la instalación.com/u/103808/FreeCAD/FreeCAD_bundle_template_2009 1128.app/Contents .app El archivo siguiente contiene la plantilla de una paquete de aplicación para FreeCAD. después de que FreeCAD está cumplido y instalado (sin algunas modificaciones adicionales).sh PREFIX=/Applications/FreeCAD. compilar e instalar utilizando los siguientes comandos desde dentro de la carpeta raíz del FreeCAD de FreeCAD. Mina se encuentra en la carpeta /aplicaciones. déjeme saber cómo. Se instala en /usr/local/lib/OCC y /usr/local/include/OCC./autogen. Si ha instalado OCC anteriores a esta fecha. cambie la línea 'PREFIX' en consecuencia.

dll). Si hay un cambio necesario o se necesita una clase contenedora.opencascade. x > = 2. la hacen paso puede tomar bastante tiempo. a continuación.x .2 de Qt Coin3D > = 4. el código de la envoltura o el código de la Biblioteca ha cambiado necesario mover para el paquete de base de FreeCAD.so o *.org OpenCasCa > = 5.app debe iniciar FreeCAD.qtsoftware.5. Visión general Estas son las bibliotecas que no cambian en el proyecto de FreeCAD.Python.coin3d. Las bibliotecas utilizadas son: Tener en cuenta usando LibPack en lugar de descarga e instalación de todas las cosas en su propia. haga doble clic en el paquete de .. los detalles del post sobre la ayudar a Foro . Se utilizan básicamente sin cambios como una biblioteca de vínculos dinámicos (*.1. Ejecutar Si todo ha ido correctamente. Si tienes cualquier problema. x Vínculo para obtenerlo http://www.org/ http://www. Enlaces Tabla de vínculos Nombre de lib Python Versión necesaria > = 2.org http://www.-headerpad_max_install_names make install Dependiendo de su máquina./configure --with-xercesc-lib=/opt/local/lib --with-xercescinclude=/opt/local/include --with-boost-lib=/opt/local/lib \ --with-boost-include=/opt/local/include --with-qt4-bin=/usr/bin --with-qt4-framework=/Library/Frameworks \ --with-occ-lib=/usr/local/lib/OCC --with-occinclude=/usr/local/include/OCC --with-coin=/Library/Frameworks \ --with-soqt=/Library/Frameworks --prefix=$PREFIX --bindir=$PREFIX/MacOS --libdir=$PREFIX/Frameworks/FreeCAD \ --includedir=$PREFIX/Resources/include --datarootdir=$PREFIX/Resources/share make LDFLAGS=-Wl.com http://www.

33.5 o superior Licencia: Licencia de Python 2.org Xerces-C+ > = 2. Por ejemplo: Implementar scripts de prueba para realizar pruebas en: pérdidas de memoria garantizar presenta funcionalidad después de los cambios Contabilizar cheques de generación pruebas de cobertura de la prueba Grabación de macros y macro Implementar lógica de la aplicación para los paquetes estándar Aplicación de workbenches todo Dinámico de carga de los paquetes Aplicación de normas para el diseño (ingeniería de conocimiento) Haciendo algunas cosas de Internet fancy como grupos de trabajo y PDM. Y así sucesivamente.Apache.zlib.org/index.boost.x > = 2.7 > = 1.NET/ http://www.2 http://www.7 < 3..activestate.5 http://GTS.tuxfamily.x.10 > = 1.0.5 Puede utilizar la fuente o binario de http://www.org http://www..ODA SoQt > = 0.ode.sourceforge.com/ aunque es un poco difícil obtener los libs de depuración de ActiveState.org/ o utilizar alternetivly ActiveState Python desde http://www. Especialmente la carga de paquete dinámico de Python se utiliza para cargar en la funcionalidad adicional de tiempo de ejecución y workbenches necesarios .NET/ http://www.php? title=Main_Page Detalles Python Versión: 2.coin3d.org/Xerces-c/ + GTS Zlib Impulso Eigen2 > = 0.org/ http://eigen.x > = 1.0 http://XML.Python. Descripción Python es el lenguaje principal de secuencias de comandos y se utiliza en toda la aplicación.

) Import estándar.python. Python está bien documentada y fáciles de integrar y extender. Para un vistazo a Python vea: www.para las tareas reales.org por qué Python puede pedir.2 o superior Licencia: OCTPL OCC es un núcleo de CAD completo. . externo de vinculación de documentos. el código no es un desastre como en Perl y VB. fusible. VRML Visor 3D y 2D con el apoyo de la selección Una estructura de datos de proyecto de documento y con soporte para guardar y restore. Java no es un lenguaje de secuencia de comandos en el primer lugar y disco duro (o imposible) para incrustar. extruir y así sucesivamente. IGES.. Es una biblioteca realmente enorme y hace que sea una aplicación de CAD libre posible en primer lugar.. el nuevo cálculo de la historia de diseño (modelado paramétrico) y una instalación para cargar dinámicamente de nuevos tipos de datos como un paquete de extensión Para aprender más acerca de OpenCasCade eche un vistazo a la página de OpenCasCade o http://www. Es también bien probado y tiene un fuerte respaldo a celebrar en la comunidad de código abierto.org . Perl y Tcl./ exportación de procesadores como STEP. proporcionando algunos paquetes que serían difícil o imposible de aplicar en un proyecto de código abierto: Un núcleo de geometría compatible con completado de STEP Un modelo de datos topológicos y las funciones todos necesarias para trabajar en (cortar. está desarrollado por Datavision de Matra en Francia para el Strim (Styler) y aplicaciones de Quantum de Euclides y más tarde hizo Open Source. Originalmente. Hay algunas razones: hasta ahora he utilizado diferentes lenguajes de scripting en mi vida profesional: Perl Tcl/Tk VB Java Python es más OO a continuación. Créditos Va a Guido van Rossum y un montón de gente hizo Python sea un éxito! OpenCasCade Versión: 5.opencascade.

Moneda utiliza estructuras de datos de scenegraph para representar gráficos en tiempo real adecuado para la mayoría todo tipo de aplicaciones de visualización científica y de ingeniería. inmensamente aumenta la productividad y comodidad de programador y contiene muchas características de optimización del complejo para el procesamiento rápido que son transparentes para el programador de la aplicación. el punto más importante para usar Qt es el diseñador de Qt y la posibilidad de cargar los cuadros de diálogo todo como un recurso (XML) e incorporar widgets especializados.0 GPL o comercial Moneda es una biblioteca de gráficos 3D de alto nivel con una interfaz de programación de aplicaciones de C++.qtsoftware. desde hace mucho tiempo se ha convertido en la biblioteca de gráficos estándar de facto para la visualización en 3D y software de simulación visual en la comunidad científica y de ingeniería. Moneda es portátil en una amplia gama de plataformas: cualquier UNIX / Linux / * BSD plataforma. x o superior Licencia: V2. Inventor abierto. Coin3D Versión: 2. para quienes no están familiarizados con ella. sistema operativo y Mac OS X. Para mí. Moneda se basa en la API abierta de inventor de SGI.0 o mayor Licencia: V2.Qt Versión: 4.1) No creo que necesario que diga mucho acerca de Qt.5 en también LPGL v2.1. Se ha demostrado que vale durante un período de más de 10 años. Más información y una muy buena documentación en línea que encontrará en http://www. Es uno de los kits de herramientas de GUI más utilizadas en proyectos de código abierto. En una aplicación de CAX la interacción con el usuario y cuadros de diálogo son por lejos la mayor parte del código y un diseñador de buen diálogo es muy importante para ampliar fácilmente FreeCAD con nueva funcionalidad. proporciona interactividad 3D.com . Moneda se basa en la biblioteca estándar de la industria de procesamiento del modo inmediato de OpenGL y agrega abstracciones para nivel superiores primitivas.0 de la GPL o comercial (desde la versión 4. todos de Microsoft de Windows. su .0/v3.

Vamos a utilizar OpenInventor como visor 3D en FreeCAD debido a que el Visor de OpenCasCade (AIS y Graphics3D) tiene las limitaciones de serios y los cuellos de botella de rendimiento. .madurez que contribuyen a su éxito como un gran bloque de creación en miles de aplicaciones de ingeniería a gran escala alrededor del mundo. Y tienes que compilarlo con su versión de Qt. Por desgracia. herramientas de simulación y herramientas de autoría. no es más largo LGPL por lo que tenemos que quitarlo de la base de código de FreeCAD y vincularlo como una biblioteca. Utilizan GPL para una licencia comercial para código cerrado y de código abierto. especialmente cuando va en representación de ingeniería a gran escala. deberá adquirir una licencia de monedas! ODE (Open motor dinámico) Versión: 0. 3D. objetos en entornos de realidad virtual y criaturas virtuales. Aparece completamente. estable. Tiene el mismo modelo de licencia como moneda. Créditos Russell Smith es el principal autor de ODE.0 o superior Licencia: V2.10. Se ha avanzado tipos conjuntos y integrado de detección de colisiones con la fricción.0 GPL o comercial SoQt es el inventor vinculante para el Kit de herramientas de Gui de Qt.0 o superior Licencia: LGPL v2. maduro y plataforma independiente con una API de C y C++ fácil de usar.2.0 Coin utiliza un modelo de licencia diferente... SoQt Versión: 1. Esto significa que si desea vender su trabajo basado en FreeCAD (módulos de extensión).1 o posterior o BSD ODE es de código abierto.. Desde la versión 2. biblioteca de alto rendimiento para simular dinámica de cuerpo rígido. No es más largo LGPL. Actualmente se utiliza en muchos juegos de ordenador. ODE es útil para la simulación de vehículos. Otras cosas como texturas o procesamiento volumétrica no son realmente compatibles y así sucesivamente.

Se proporciona una biblioteca compartida para analizar.0 o superior Licencia: Versión de licencia de software de Apache 2. El analizador se utiliza para guardar y restaurar parámetros en FreeCAD. no RTTI y uso mínimo de #ifdefs. GTS Versión: 0. no cubiertos por ninguna patente--biblioteca de compresión sin pérdida de datos para su uso en prácticamente cualquier equipo hardware y sistema operativo. legalmente no comprometido--es decir.x Licencia: zlib License zlib está diseñado para ser una libre. El formato de datos de zlib es en sí mismo portátil a través de plataformas. Zlib Versión: 1.7.h. El código fuente está disponible de forma gratuita bajo la licencia LGPL de software libre. manipular y validar documentos XML. Realmente no es necesario compilar FreeCAD.0 LGPL o posterior GTS las siglas de la biblioteca de superficies trianguladas de GNU. Para la portabilidad.0 y muchos de los estándares asociados (véase características más abajo).Xerces-C++ Versión: 2. A diferencia del método de compresión LZW utilizado en Unix Compress (1) y en el formato de imagen GIF. generando. muestras y documentación de la API se proporcionan con el analizador. el método de compresión que se utiliza actualmente en zlib esencialmente nunca expande .7 Licencia: V2. Xerces-C++ es fiel a la recomendación XML 1. para fines generales.x.0 Xerces-C++ es un analizador XML validar escrito en un subconjunto portátil de C++. Puede cambiar en el uso con un interruptor proprocessor en FCConfig. modularidad y escalabilidad. El analizador proporciona alto rendimiento. Código fuente. Xerces-C++ facilita la tarea de dar a su aplicación la capacidad para leer y escribir datos XML. ha tenido cuidado para hacer un uso mínimo de plantillas. Es un Open Source Free Software Library pretende proporcionar un conjunto de funciones útiles para hacer frente a las superficies 3D con la de triángulos interconectadas.

si es necesario. LibPack LibPack es un conveniente paquete con todas las bibliotecas anteriores empaquetados juntos. Está actualmente disponible para la plataforma de Windows en el Descargar página! Si está trabajando bajo Linux no necesita un LibPack. diseñado para permitir a Boost ser usado con ambos proyectos de código abierto y cerrado. como la MPL. Muchos de los fundadores del Boost están en el Comité de estándar de C++ y varias bibliotecas de Boost han sido aceptadas para su incorporación a la técnica 1 informe de C ++ 0 x. la huella de la memoria de zlib también es independiente de los datos de entrada y puede ser reducida.x Licencia: Licencia de software de impulso . Boost hace un amplio uso de plantillas.x de monedas Eigen plantilla lib para robot añadido SMESH experimental . Impulso ha sido una fuente de trabajo extenso e investigación en programación genérica y metaprogramación en C++.33. Las bibliotecas tienen licencia bajo la licencia de software de Boost. en lugar de debe hacer uso de los repositorios de paquetes de tu distribución de Linux.boost.5. Van desde bibliotecas de propósito generales como SmartPtr. FreeCADLibs7. Las bibliotecas están encaminadas a una amplia gama de usuarios de C++ y dominios de aplicación.1.x Changelog Utilizando QT 4. x y 3.los datos. Ver: http://www.versión 1.org/ para detalles. algunos sin costo en compresión. A fin de garantizar la eficacia y la flexibilidad. bibliotecas. Impulso Versión: 1. principalmente dirigidas a otros desarrolladores de biblioteca y avanzadas de C++ los usuarios.0 Las bibliotecas de C++ de Boost son una colección de las bibliotecas de peerreviewed y de código abierto que amplían la funcionalidad de C++. (LZW puede duplicar o triplicar el tamaño del archivo en casos extremos). para OS abstracciones como sistema de archivos.

Adhers para el estándar SVG y se utiliza para dibujar iconos e imágenes. XPM interes es C-código que puede ser compilado en un programa. Está contenido en el LibPack de FreeCAD. Doxygen Una herramienta muy buena y estable para generar documentación de origen de los archivos .org para detalles. Obtenerlo en www.com .inkscape. pero también puede descargarse en www. Para aplicaciones Win32 nativas que necesita descargar el PlatformSDK de M $. Aquí hay una lista de herramientas que utilizamos para desarrollar FreeCAD: Herramientas de independend de plataforma Kit de herramientas de Qt Las Qt es un Estado de la técnica. Pero se puede intentar este enlace CamStudio Es una herramienta de código abierto para grabar podcasts (Webcasts). Además puede manejar archivos . Ver CamStudio.org Herramientas de Windows Express Visual Studio 8 A pesar de que VC8 para el desarrollo de C++ no es realmente un paso adelante desde el 6 de VisualStudio (OMI un gran paso atrás).org . Por lo que la edición Express es difícil de encontrar. .trolltech. la herramienta de diseño de interfaz de usuario de plataforma independend. Obtener el GIMP aquí: www. The Gimp No mucho que decir sobre el programa de manipulación de imagen de GNU.h y . Su una muy buena herramienta para crear tutoriales por grabarlas. InkScape Programa de dibujo de vector de gran .gimp.Página de herramienta Para el desarrollo de cada software graves necesita herramientas. Su medida no tan aburrido como escribir documentación.xpm que es una forma muy conveniente para manejar iconos en programas de QT.cpp. su un sistema libre desarrollo en Windows.

sourceforge.Tortuga SVN Esta es una herramienta muy grande. Allowed options: ..net) un verdadero placer. es una buena idea para comprobar las opciones actuales escribiendo: FreeCAD --help De la respuesta puede leer los posibles parámetros: Usage: FreeCAD [options] File1 File2 .. Esto le permite cambiar soem de las opciones de inicio predeterminada. El cuadro de diálogo de confirmación en sí mismo es una obra de arte. Iniciar FreeCAD desde la línea de comandos FreeCAD puede iniciarse normalmente. por lo tanto. Opciones de línea de comandos Las opciones de línea de comandos son objeto de frecuentes cambios. StarUML Un completo programa de Open Source de UML. Facilita la Junte los cambios a las unidades lógicas y darles un mensaje de confirmación clara. Hace uso de Subversion (nuestro sistema de control de versión en sf.. Descargar aquí: staruml.net Herramientas en Linux TODO Esta página muestra las diferentes maneras para iniciar FreeCAD y las características más importantes de configuración. resolver fácilmente Confilcts.. Se le da una visión general sobre los archivos cambiados y permite colocarlos en la confirmación o no.. Usted puede a través de la integración del explorador. hacer ramas y así sucesivamente. incluyendo el código fuente de C++ engeniering inversa. Tiene un montón de características de las grandes.org ..Tigris. compruebe en Diffs. administrar revisiones... pero también se puede iniciar directamente desde la línea de comandos. haga doble clic en su icono en el escritorio o seleccionándolo en el menú de inicio... Encontrar ToroiseSVN en TortoiseSVN.

. -bg o . La fuente debe especificarse mediante una descripción de fuente lógica de X. por ejemplo. establece el nombre de la aplicación. Un archivo de respuesta es simplemente un archivo de configuración que utiliza la misma sintaxis que la línea de comandos. se ha cargado y analiza además de la línea de comandos: FreeCAD @ResponseFile. Este archivo debe estar en la ruta de acceso de bin y debe tener el nombre FreeCAD.botón. el color de botón predeterminado. los parámetros de X-Window analizados por el sistema de Windows: -Mostrar la pantalla. define la visualización de X (el valor predeterminado es $ DISPLAY). Si la línea de comando especifica un nombre de archivo de respuesta para utilizar.txt o: FreeCAD --response-file=ResponseFile. el color de primer plano predeterminado. fuente de -fn o .fondo de color. define la fuente de la aplicación. too Archivos de respuesta y config FreeCAD algunas de estas opciones puede leer un archivo de configuración.Generic options: -v [ --version ] -h [ --help ] -c [ --console ] print version string print help message start in console mode Configuration: -l [ --write-log ] arg -t [ --run-test ] arg -M [ --module-path ] arg -P [ --python-path ] arg --response-file arg write a log file test level additional module paths additional python paths can be specified with '@name'. -geometría geometría. Tenga en cuenta que las opciones especificadas en la línea de comandos reemplazan el archivo config! Algunos sistemas operativos tienen un límite muy bajo de la longitud de la línea de comandos. -establece el color de fg o . Estas opciones son. establece la geometría de cliente de la primera ventana que se muestra.txt Opciones ocultas Hay un par de opciones no visible para el usuario.cfg.name nombre. .de la fuente.primer plano. La forma común para solucionar estas limitaciones es usar archivos de respuesta. -establece el color btn o . establece el color de fondo por defecto y una paleta de aplicación (se calculan los tonos claros y oscuros).

si la aplicación es mediante la especificación de color de QApplication::ManyColor. Tenga en cuenta que los módulos que dependen de la FreeCADGui también pueden no estar disponibles. pero también puede obligar a que se inicie en modo consola escribiendo: FreeCAD -c desde la línea de comandos. que tiene la misma funcionalidad como el intérprete de python que se ejecuta dentro de la interfaz gráfica de usuario de FreeCAD y el acceso normal a todos los módulos y plugins de FreeCAD. 6 de color verde y 6 de azul). 6 niveles de rojo. Desde ese indicador de python. El siguiente código escrito desde cualquier shell de python será importar FreeCAD y le permiten ejecutarlo en la misma forma como en el modo de consola: import sys sys.append("path/to/FreeCAD/lib") # change this by your own FreeCAD lib path import FreeCAD . las fuerzas de la aplicación para que utilice un visual TrueColor sobre una pantalla de 8 bits. Para ello. Si el recuento es 216 entonces un 6 x 6 x 6 color cubo se utiliza (es decir.path. salvo el módulo de FreeCADGui. para otros valores. limita el número de colores asignados en el cubo de color en una pantalla de 8 bits. a continuación. se le presentará un prompt del intérprete de python. hace que la aplicación instalar un mapa de colores privada en una pantalla de 8 bits. un cubo aproximadamente proporcional a un 2 x 3 x 1 cubo se utiliza. -cmap. Ejecutando FreeCAD sin interfaz de usuario FreeCAD normalmente se inicia en modo de interfaz gráfica. -visual TrueColor. La mejor manera de obtener es anexar temporalmente ruta de lib del FreeCAD a la variable sys. establece el título de la aplicación. no se mostrará ninguna interfaz de usuario y. Conde de -ncols. En modo de la consola.path. Ejecutando FreeCAD como un módulo de python FreeCAD también puede utilizarse para que se ejecute como un módulo de python dentro de otras aplicaciones que usan python o desde un shell de python externos.-título título. la aplicación de python de host debe saber donde residen sus libs FreeCAD.

FreeCAD relacionad Data\FreeCAD os de usuario de la aplicación.c . También es muy importante para post postmortem analiza. Más tarde. Acumula un conjunto de configuración que mantiene la esencia de la información de tiempo de ejecución.cfg os defg usuario de la aplicación. Por lo tanto. Archivo donde FreeCAD almacena C:\Documents and / UserParamet los datosSettings\nombre Home/username/. esta información se utiliza para determinar el lugar dónde guardar los datos de usuario o los archivos de registro.Una vez cargada la FreeCAD. corresponde a usted para hacerla a interactuar con la aplicación host de ninguna manera que se pueda imaginar! El conjunto de configuración En cada FreeCAD de inicio examina sus alrededores y los parámetros de línea de comandos. Información relacionada con el usuario Entradas de configuración de usuario Nombre de Sinopsis Ejemplo M $ var config Ejemplo Posix (Linux) Ruta de acceso donde FreeCAD almacena C:\Documents and UserAppData los datosSettings\nombre /Home/username/. .FreeCAD/User er relacionad Data\FreeCAD\user. está guardado en el archivo de registro.

FreeCAD/Syst los datosData\FreeCAD\syste em. Ruta de C:\Documents and UserHomePa inicio del Settings\username\ / home/nombre de usuario th usuario My documentos actual Argumentos de línea de comandos Entradas de configuración de usuario Nombre de var Sinopsis config En el ejemplo se LoggingFile 1 si el registro está encendido 1 LoggingFileName C:\Documents and Nombre del archivo donde seSettings\nombre coloca el registro Data\FreeCAD\FreeCAD.cfg relacionad m. "Cmd" ejecuta el intérprete de línea de comandos. "Gui" entra en el bucle de eventos de Gui.SystemPara meter Archivo donde FreeCAD C:\Documents and / almacena Settings\nombre Home/username/. "Módulo" carga un módulo de . salir. "Script" significa que se llama a la secuencia de comandos determinado y.cfg os de aplicación. "Interno" se ejecuta una secuencia de comandos interno. a continuación.lo g RunMode Esto indica cómo funcionará el"Cmd" bucle principal.

FileName Significado RunMode depende de la ScriptFileName Significado RunMode depende de la Detallado Nivel de prolijo de FreeCAD "" o "estricto" OpenFileCount Contiene el número de archivos abiertos a través de "12" argumentos de línea de comandos Contiene las rutas de acceso de AdditionalModuleP módulo adicionales dadas en la"extraModules /" aths línea de cmd Sistema relacionados con Entradas de configuración de usuario Nombre de Sinopsis var config Ejemplo M $ Ejemplo (Linux) Posix Ruta donde está / c:/archivos/FreeCAD_ AppHomePath instalado User/local/FreeCAD_0 0. Esto es al inicio puede .7 de programa FreeCAD .python determinado.7 PythonSearchP Contiene una ath lista de rutas de acceso que python busca los módulos.

La mayoría de ella proviene desde el repositorio de Subversion. cuando hay un problema con una instalación de FreeCAD. es porque algunos variable de entorno está ausente o establecer erróneamente. A veces.cambiar durante la ejecución Algunas bibliotecas necesitan llamar a sistema de variables de entorno. Python relacionados con las variables de entorno: PYTHONPATH PYTHONHOME TCL_LIBRARY TCLLIBPATH OpenCascade relacionados con las variables de entorno: CSF_MDTVFontDirectory CSF_MDTVTexturesDirectory CSF_UnitsDefinition CSF_UnitsLexicon CSF_StandardDefaults CSF_PluginDefaults CSF_LANGUAGE CSF_SHMessage CSF_XCAFDefaults CSF_GraphicShr CSF_IGESDefaults CSF_STEPDefaults Sistema relacionadas con las variables de entorno: PATH Generar información relacionada La siguiente tabla muestra las tetera informaciones acerca de la versión de compilación. Esto es necesario para reconstruir exactamente una versión! Entradas de configuración de usuario . algunas variables importantes obtener duplicados en la configuración y guardados en el archivo de registro. Por lo tanto.

Nombre var config de Sinopsis En el ejemplo se Mayor número de BuildVersionMaj versión de la 0 or compilación. Generados por SVN BuildRevisionRa Intervalo de cambios de 123-356 nge diferentes BuildRepository Dirección URL repositorio URL del https://FreeCAD.h.NET/svnroot/Fr ee-CAD/trunk/src BuildRevisionDa Fecha de la revisión de 2007/02/03 22:21:18 te arriba BuildScrClean Indica si la fuente fue retirada de ager haOrigen modificado cambiado BuildScrMixed Origen no mezclada Relacionados con la marca .in BuildRevision Número de revisión de repositorio SVN de la 356 src en la construcción.sourceforge.h.in Menor número de BuildVersionMin versión de la 7 or compilación. Definidas en src/Build/Version. Definidas en src/Build/Version.SVN.

cpp diferentes.Configuración de estas entradas están relacionadas con el mecanismo de creación de marca de FreeCAD. Entradas de configuración de usuario Nombre de var Sinopsis config En se el ejemplo /EXENAME Nombre del archivo ejecutable de generación. Consulte Marca para más detalles.7 la hora de inicio AppIcon Icono que se utiliza para el ejecutable. se "FCIcon" muestra en aplicaciones MainWindow. Puede buzo de FreeCAD si seFreeCAD. ExeVersion En todos los conciertos de versión hasta a V0.exe utiliza un main. ConsoleBanner Banner que se solicita en modo consola SplashPicture Nombre del icono utilizado pantalla de bienvenida para la"FreeCADSplashe r" SplashAlignment Alineación del texto en el cuadro de Izquierda" diálogo de bienvenida SplashTextColor Color de splasher el texto "#000000" StartWorkbench Nombre de la Workbech que empezar"Diseño programó después de inicio parte" de la HiddenDockWind Lista de dockwindows (separados por un"Editor ow punto y coma) que estará deshabilitado propiedad" de .

Construir herramientas de soporte técnico El FreeCAD crear la herramienta o fcbt es un script de python ubicado en trunc/src/Tools/fcbt.CreateModule (CM) Insert a new FreeCAD Module in the module directory For help on the modules type: fcbt <command name> ? En la entrada promt escriba el comando abreviado que desea llamar. of the current source tree . la distribución y la extensión FreeCAD. fcbt puede ser invocado por el comando python fbct. donde puede seleccionar la tarea que desea utilizar para: FreeCAD Build Tool Usage: fcbt <command name> [command parameter] possible commands are: .DistAll (DA) Run all three above modules . DistSetup El comando "DI" crea una distribución de configuración del árbol de código fuente actual. Por ejemplo. of the current source tree .DistSetup (DUI) Build a User Setup Distr. of the current source tree .py Muestra un menú. Uso Con Python correctamente instalado. DistBin El comando "DB" crea una distribución binaria del árbol de código fuente actual.NextBuildNumber (NBN) Increase the Build Number of this Version . DistSrc El comando "DS" crea una distribución de código fuente del árbol de código fuente actual.py Se puede utilizar para simplificar algunas tareas frecuentes en la construcción.DistBin (DB) Build a binary Distr.DistSetup (DI) Build a Setup Distr. escriba "CM" para creación de un módulo . of the current source tree .DistSrc (DS) Build a source Distr.BuildDoc (BD) Create the documentation (source docs) . .

of the current source tree . En la FreeCAD árbol de desarrollo existe la Herramienta de generación de FreeCAD ( fcbt ) que hace las cosas más importantes para usted. of the current source tree . CreateModule El comando "CM" crea un nuevo módulo de aplicación . of the current source tree .NextBuildNumber (NBN) Increase the Build Number of this Version . Es un Python secuencia de comandos se encuentra bajo trunk/src/Tools/fcbt. Creación de un nuevo módulo de aplicación en FreeCAD es bastante simple.DistSetup (DUI) Build a User Setup Distr.py Se mostrará el siguiente menú: FreeCAD Build Tool Usage: fcbt <command name> [command parameter] possible commands are: . NextBuildNumber El comando "NBN" incrementa el número de compilación para crear una nueva versión de lanzamiento de FreeCAD. "DB" y "DI" en la secuencia. BuildDoc El comando "BD" crea la documentación del software mediante la ejecución de Doxygen que debe estar instalado. of the current source tree .DistSetup (DI) Build a Setup Distr.BuildDoc (BD) Create the documentation (source docs) .DistSrc (DS) Build a source Distr. DistAll El comando "DA" ejecuta "DS".DistBin (DB) Build a binary Distr.DistSetup El comando "DUI" crea una distribución de configuración de usuario del árbol de código fuente actual.DistAll (DA) Run all three above modules .py Cuando se instalan correctamente su intérprete de python puede ejecutar la secuencia de comandos desde la línea de comandos python fcbt.

. Si no quizá es una instalación rota. línea de comandos El de depuración de FreeCAD es apoyado por unos pocos mecanismos internos. Permite llamarlo TestMod por ejemplo: Please enter a name for your application: TestMod Después de presionar entrar en fcbt comienza a copiar todos los archivos necesarios para el módulo en una nueva carpeta en trunk/src/Mod/TestMod/ A continuación. todos los archivos se modifican con su nuevo nombre del módulo.CreateModule directory (CM) Insert a new FreeCAD Module in the module For help on the modules type: fcbt <command name> ? En el símbolo del sistema escriba CM para iniciar la creación de un módulo: Insert command: CM Ahora se pide para especificar un nombre para su nuevo módulo. Ahora lo único que necesita hacer es agregar los dos nuevos proyectos de "appTestMod" y "appTestModGui" a su espacio de trabajo (en Windows) o a sus objetivos de archivo make (unix). -l Con la "l" opción FreeCAD escribe información adicional en un archivo de registro. La versión de línea de comandos de FreeCAD proporciona opciones para la depuración de soporte: -v Con la "v" opción FreeCAD da un resultado más detallado. . Thats se! Probar primero Antes de ir a través del dolor fuera de depuración del uso del marco de prueba para comprobar si las pruebas estándar funcionen correctamente.

Para hacer su propia marca simplemente copie el projets principal o MainGui y dar el ejecutable de un nombre propio. Gui::BitmapFactory(). App::Application::Config()["AppIcon"] = "FCIcon". App::Application::init(argc. App::Application::Config()["SplashTextColor" ] = "#000000".7". ( const char** ) . App::Application::Config()["ExeVersion"] = "0. Puede ser sólo su propio ejecutable o salpicadura pantalla hasta un completo programa refundido. FooApp. // black // Inits the Application App::Application::Config()["RunMode"] = "Gui". La marca significa para iniciar su propia aplicación en base de FreeCAD. Sobre la base de la arquitectura flexible de FreeCAD es fácil de utilizar como base para su propio programa de propósito especial. App::Application::Config()["SplashPicture"] = "FooAppSplasher". Gui::Application::initApplication(). App::Application::destruct(). Gui::Application::runApplication().Introducción FreeCAD viene con un amplio marco de prueba. Este artículo se describe el Marca de FreeCAD.argv). Las bases de la pruebas en un conjunto de secuencias de comandos de Python que se encuentran en el módulo de prueba. Aquí es la sección de código que controla la marca: int main( int argc.cpp . App::Application::Config()["StartWorkbench"] = "Part design". General La mayor parte de la marca se realiza en el MainCmd. Los ajustes más importantes para un nuevo aspecto pueden hacerse en un lugar en la función main().exe". por ejemplo. splash_screen). // set the banner (for loging and console) App::Application::Config()["ConsoleBanner"] = sBanner. char ** argv ) { // Name and Version of the Application App::Application::Config()["ExeName"] = "FooApp.exe.cpp o MainGui.addXPM("FooAppSplasher". Estos proyectos de generan los archivos ejecutables de FreeCAD. App::Application::Config()["SplashAlignment" ] = "Bottom|Left". App::Application::Config()["HiddenDockWindow"] = "Property editor".

El uso típico es tan simple como el siguiente ejemplo: ImageConv -i InputImage. splash_screen). donde se registran las imágenes. Esto reduce la carga retrasada y mantiene la instalación compacta. } La primera entrada de configuración define el nombre del programa. Esto es.addXPM("FooAppSplasher". . pero es más cómodo crear las imágenes con su programa de gráficos favorito y convertirlo posteriormente en formato XPM.return 0. Imágenes Todos los recursos de imagen se compilan en FreeCAD.cpp archivo.xpm . Las imágenes se incluyen en formato XPM que es básicamente un formato de texto que utiliza la sintaxis de C. pero el nombre que se muestra en la barra de tareas de windows o en la lista de programas de sistemas Unix. Para la conversión. Puede dibujar básicamente este imágenes con un editor de texto. Programa de imagen de la GNU Gimp puede guardar archivo XPM. Líneas de la siguiente definen las entradas de configuración de su aplicación de FooApp. se incluyen la imagen en la BitmapFactory de FreeCAD. puede utilizar el ImageConv herramienta de que se incluye con freecad. Una descripción de la configuración y sus entradas que encontrará en Start up y configuración . no el nombre del archivo ejecutable. Lo puede encontrar en /trunk/src/Tools/ImageTools/ImageConv Se puede no sólo convertir imágenes pero también automáticamente se actualizarán la BmpFactoryIcons. ( const char** ) en el main(). La línea: Gui::BitmapFactory(). a continuación.xpm Esto convierte el archivo InputImage.png -o OutputImage. que se puede cambiar por cambiar el nombre o por la configuración del compilador.png en formato XPM y escribe el resultado en el archivo OutputImage.

Como la pantalla de bienvenida que se ha definido en developers.h en la sección comenzando con: static const char* const background[]={ Debe elegir una imagen de bajo contraste para el fondo. Hay muchos otros iconos en este archivo que podría cambiar a su gusto. tienes que registrarlo en /trunk/src/Gui/Icons/BmpFactoryIcons.cpp por lo que se puede acceder desde FreeCAD.Iconos El icono de la aplicación principal FCIcon que aparece en la ventana de títulos y otros lugares se define en /trunk/src/Gui/Icons/images. cuando no hay ninguna ventana de documento está abierta. En FreeCAD se puede establecer el idioma de la interfaz de usuario bajo Edit→Preferences→Application . con el uso de la Crowdin sistema de colaboración de traducción en línea. FreeCAD utiliza los ajustes actuales de la configuración regional del sistema por defecto. Cómo traducir Ir a la Página del proyecto de traducción de FreeCAD en Crowdin . Utiliza FreeCAD Qt para habilitar el soporte de múltiples idiomas. Si usted necesita agregar nuevos iconos. . Localización es. es ayudar a traducir el programa en su idioma. vuelva a compilar freecad y se lleva a cabo el siguiente paso para crear su propia marca. Para hacerlo es ahora más fácil que nunca. De lo contrario podría irritar al usuario. Ayudar a traducir FreeCAD Una de las cosas muy importantes que puede hacer para FreeCAD si no eres un programador. En sistemas Unix/Linux. Imagen de fondo Que aparece la imagen de fondo. el proceso de proporcionar un software con una interfaz de usuario de lengua múltiples.cpp y comienza con la línea static const char *FCIcon[]={ Reemplazarlo con su icono de favorito. en general.

ts de archivo con el código de idioma no existe ("fr" para francés. Se mantiene aquí para que los programadores pueden familiarizarse con su funcionamiento. a continuación. revisión/mejor la traducción (haga clic en el archivo. descargue el archivo de . Inicio traducir haciendo clic en el botón traducir junto a uno de los archivos.Inicio de sesión mediante la creación de un nuevo perfil. si desea modificar. Abra todas las carpetas de idioma de FreeCAD que se muestra a continuación Comprobar que un . guarde el archivo enviar los archivos para nosotros por lo que nos podemos incluirlas en el código fuente de freecad por lo que éstas beneficien otros usuarios demasiado. Se puede votar por las traducciones existentes. que funciona demasiado) Cambiar el nombre de ese archivo con el código de idioma Abrirlo con el programa de Qt-lingüista Empezar a traducir (lingüista de Qt es muy fácil de usar) Una vez que se realiza completamente.) Si es que existe.php? id=137 Traducir con Qt-lingüista (antigua usanza) La siguiente información no tiene que utilizarse ya y es probable que se convertirá en obsoleta.. Note: If you are actively taking part in translating FreeCAD and want to be informed before next release is ready to be launched. Por ejemplo. so there is time to review your translation.. Descargar) Si no existe. "de" para alemán.ts contiene las cadenas de texto para la GUI principal FreeCAD.ts disponible. puede descargar ese archivo.ts sin código de idioma (o cualquier otros . please subscribe to this issue: http://sourceforge. o crear los suyos propios. como su dirección de GMail.net/apps/mantisbt/free-cad/view. Archivos de traducción disponibles GUI principal de FreeCAD Workbench completa Dibujo Workbench . o mediante una cuenta de terceros. FreeCAD. etc. Haga clic en el idioma que desee trabajar en.

Puede descargarlos desde la Trolltechsitio Web . pero también están incluidos en el LibPack : qmake Genera archivos de proyecto lupdate Extractos o actualiza los textos originales en el proyecto mediante el análisis de código fuente Qt-lingüista El Qt-lingüista es muy fácil de usar y lo ayuda a traducir con características interesantes como un libro de la frase común de las sentencias.Proyecto Workbench Invertir la ingeniería Workbench FEM Workbench Robot Workbench Imagen Workbench El programa de esbozo Workbench Workbench de malla Prueba Workbench Los puntos de Workbench Logicial Workbench Parte Workbench PartDesign Workbench Ensamblado Workbench MeshPart Workbench Preparar sus propias aplicaciones de módulos para la traducción Requisitos previos Para localizar a su módulo de aplicación de su necesidad de ayudantes que vienen con Qt . Configuración de proyecto Para iniciar la localización de su proyecto de ir a la GUIparte del módulo de usted y tipo sobre la línea de comandos: qmake -project .

Ahora que necesita para ejecutar lupdate para extraer todos los literales de cadena en su GUI.cpp TRANSLATIONS += MyMod_de. En el ejemplo anterior MyMod_de. # Input HEADERS += ViewProvider. Ejecutando lupdate después de que los cambios en el código fuente es siempre segura ya que nunca elimina cadenas de los archivos de las traducciones.\.ts" "$(InputDir)\$(InputName). El mejor lugar para incluir esta es en app <Modul> Gui.h" "$(InputName)" Nota: Escriba esto en una línea de comandos. Nov 14:44:21 2006 ###################################################################### TEMPLATE = app DEPENDPATH += . un archivo de encabezado MyMod_de.. <Modul>_de_h_len).\.ts -archivo del ejemplo anterior.cpp. el salto de línea es sólo para propósitos de diseño.h se crea.cpp \ ViewProvider.cpp \ Workbench. Sólo agrega nuevas cadenas.cpp .\Icons INCLUDEPATH += .ts -archivos al proyecto VisualStudio..\Tools\qembed.Esto analiza el directorio de proyecto para los archivos que contienen cadenas de texto y crea un archivo de proyecto como en el siguiente ejemplo: ###################################################################### # Automatically generated by qmake (1.py "$(InputDir)\$(InputName).06c) Do 2.. Mediante la compilación de la . <Modul>_de_h_data. Creación de archivos de python para la traducción . En nuestro ejemplo sería AppMyModGui.h Workbench.h SOURCES += AppMyModGui. Ahora necesita agregar el . La sección traducciones contiene una lista de archivos con la traducción para cada idioma.ts Puede agregar manualmente archivos aquí. Especifique la costumbre siguiente construir un método para ellos: python . Hay que agregar la línea new Gui::LanguageProducer("Deutsch".ts es la traducción alemana.cpp \ Command. para publicar su traducción en la aplicación.

también puede crear el archivo XML Draft.Para facilitar la localización de los archivos de py puede utilizar la herramienta "pylupdate4". Usted debe. Material más actualizado e interesante se reunieron en el manual .installTranslator(translator) Opcionalmente.ts.ts Cuidado con el que la herramienta de pylupdate4 no es muy buena en reconociendo las funciones de translate(). Así que el primer paso es comprobar si ya se ha iniciado la traducción manual para su idioma (busque en la barra lateral izquierda.py para funciones translate() o tr() y crear un archivo de YourModule_fr. que necesitan para ser formateado muy específicamente (véase los archivos del módulo de proyecto para obtener ejemplos).ts la herramienta de pylupdate será analizar los archivos . que acepta uno o más archivos de py.QTranslator() translator. puede configurar un traductor como este (después de cargar su QApplication pero antes de crear cualquier widget de qt): translator = QtCore. a continuación.py -ts YourModule_fr.qrc -o qrc_Draft.load("YourModule_"+languages[ln]) QtGui.py crea un gran Python que contiene todos los recursos. Dentro de su archivo. a continuación obtener permiso de edición wiki . Ese archivo puede el ser traducidos con QLinguist y un archivo de YourModule_fr.ts. la cabeza para el foro y decir que desea iniciar una nueva traducción.qm producidos a partir de QLinguist o con el comando lrelease YourModule_fr. vamos a crear la configuración básica para el idioma que desee trabajar en.QApplication. BTW este enfoque también trabaja para poner los archivos de icono en el archivo de un recurso Traducir la wiki Este wiki es hosting mucho del contenido.qm</file> </qresource> </RCC> y la ejecución de pyrcc4 Draft. Si no.ts francés simplemente entrar en la línea de comandos: pylupdate4 *. Con la opción -ts usted puede preparar o actualizar uno o más archivos de . bajo "manual"). . Por ejemplo a preparar un archivo .qrc con este contenido: <RCC> <qresource prefix="/translations" > <file>Draft_fr.

Son básicamente los vínculos de acceso directo a la página real. Y si no está seguro. La razón es simple: para que si traductores está a punto de desaparecer. que no hablan todos los idiomas. Vistazo de cómo otros traductores lo hizo para hacer lo mismo. debe agregar a la página original inglés un vínculo para su traducción. Aquí hay un ejemplo con la página de francés para acerca de FreeCAD.. anexando una barra diagonal y su código de idioma.. Página de Convención de nomenclatura Ten en cuenta que. requerimos que las páginas todos mantengan de nombre su original del homólogo inglés. No olvide incluir todas las etiquetas y las plantillas de la página original de inglés. A continuación.) Plantilla: Docnav : es la barra de navegación en la parte inferior de las páginas. acerca de FreeCAD/pl para pulir. Tres plantillas se utilizan comúnmente en las páginas del manual. plantilla: fr. un vínculo a la página original de inglés. existe una plantilla de Docnav francés llamada Docnav/fr). La versión localizada a cambio debe colocarse en la página traducida. una vez que usted traduce una página. la cabeza a los foros y pedir a personas que compruebe lo que hiciste y te indicará si es justo o no. Por ejemplo. Algunas de esas plantillas tendrá un equivalente en el idioma (por ejemplo. para indicar al lector que existe una traducción. Plantilla: en : hay uno de ellos para cada idioma. Estas 3 plantillas han versiones localizadas (plantilla: Docnav / fr.. para que los lectores sepan que existe una versión traducida. que muestra anterior y siguientes páginas Plantilla: idiomas : esta plantilla se colocarán en las páginas originales.Si su idioma ya está en la lista. consulte las páginas que faltan todavía una traducción (que se mostrarán en rojo). Esto facilitará el mantenimiento y evitar páginas perdidas. puede utilizar redirigir las páginas . Deben colocarse dentro de la plantilla de la lengua. utilizando la plantilla {{idiomas}}. Mirar otras páginas ya traducidas para ver cómo lo hicieron.. etc. la página traducida para acerca de FreeCAD debe ser acerca de Freecad/es para español. etc. los administradores del wiki. sabrá cuáles son estas páginas. debido a limitaciones en la aplicación de SourceForge del motor MediaWiki. Si desea que la plantilla de Docnav para mostrar las páginas vinculadas en su idioma. La técnica es simple: entrar en una página de Roja y copiar y pegar el contenido de la página correspondiente de inglés y empezar a traducir. .

no dude en pedir ayuda en el foro .co. Ejemplos de utilización de los módulos de pueden encontrarse también en la fragmentos de código página. pero varios de ellos.riverbankcomputing. PyQt está liberado bajo un sistema de licencias múltiples. Pivy es ahora plenamente integrados en cualquier paquete de instalación de FreeCAD. el código de Docnav tendrá este aspecto: {{docnav/fr|Bienvenue sur l'aide en ligne|Fonctionnalités}} La página "Bienvenue sur Aide en ligne" redirige a la página inicial de la ayuda en línea/fr y en la página "Fonctionnalités" se redirige a la función de lista/fr. instalación de PyQt4 en el sistema permiten python programas dentro de FreeCAD para acceder a toda la interfaz. y PyQt4 también está integrada en el paquete de instalación de Windows. Desde la interfaz de FreeCAD está construida con Qt. de lo contrario. simplemente se puede instalar y utilizar libremente la versión de la GPL. Todos los módulos de pyhton pueden utilizarse desde dentro de FreeCAD. tienen una importancia especial porque permiten python acceso de programas completo a la funcionalidad central de FreeCAD.La página sobre FreeCAD/fr es la página con contenido La página À propos de FreeCAD contiene este código: #REDIRECT [[About FreeCAD/fr]] Página en the acerca de FreeCAD/fr. . obviamente necesita un entorno de python instalado y funcionando. enumerados a continuación. crear nuevos widgets o recopilar información de partes de la interfaz.uk/pyqt PyQt (versión 4) es una biblioteca de enlaces de python que permiten acceder. Instalación Antes de instalar PyQt4. es una versión comercial y una versión gratuita de la GPL. Si desea utilizarlo para hacer programas comerciales (código cerrado). PyQt4 página Web: http://www. el mismo sistema que utilizado por Qt . Si no está seguro de cómo proceder. crear o modificar los programas Qt interfaces. Para reanudar. modificar sus partes. deberá adquirir la licencia comercial. Esos módulos se detecta automáticamente y se utilizarán por FreeCAD. El intérprete de python dentro de FreeCAD se puede extender fácilmente mediante la adición de nuevos módulos para la instalación de su sistema de python. Nota : de los siguientes módulos.

Moneda de sí mismo es un kit de herramientas para la construcción . como un widget personalizado.my_custom_wid get) Documentación Más tutoriales de pyQt4 (incluyendo cómo construir interfaces con Qt Designer para utilizar con python): http://www. con comandos como: FreeCADWindow.rkblog.riverbankcomputing.org/ Pivy es un moneda enlaces de biblioteca para python. Las dependencias necesarias (Qt y SIP) va ser atendidas forma automática.co.html -la referencia de la API de PyQt4 oficial http://www.zetcode. Puede agregar nuevos elementos.Qt.edu. escriba: from PyQt4 import QtCore.coin3d.addDockWidget(QtCore. de es se de Uso Una vez que está instalado. Windows El programa puede descargarse de aquí . Necesitará instalar las bibliotecas QT y SIP antes de instalar pyqt4 (a ser documentados).pl/w/p/Introduction-pyqt4/ -una introducción sencilla http://www.qApp FreeCADWindow = app.tutorial muy completo de fondo Pivy página Web: http://pivy.QtGui app = QtGui.Linux La forma más sencilla de instalar PyQt4 es a través de gestor de paquetes su distribución. puede comprobar que todo funciona escribiendo en la consola de python de FreeCAD: import PyQt4 Para acceder a la interfaz de FreeCAD.RghtDockWidgetArea. En los sistemas de Debian/Ubuntu.uk/static/Docs/PyQt4/HTML/Classes. el nombre del paquete generalmente python-Qt mientras que en sistemas basados en RPM denomina pyqt4 .RK.activeWindow() Ahora puede empezar a explorar la interfaz con el comando dir().com/tutorials/pyqt4/ . oficialmente apoyado por moneda.

diff a continuación debuild para que pivy correctamente integrado en un paquete instalable oficial.gz y el. a continuación. Es el Kit de herramientas que FreeCAD se utiliza para dibujar su escena 3d en la pantalla. sólo tiene que instalar el paquete con gdebi. Es importante saber que FreeCAD sólo utiliza moneda para la representación de objetos en la pantalla. manipuladores. A continuación. puede o bien disponibles de descarga uno de los paquetes que hicimos (para debian y ubuntu karmic) en el Descargar las páginas. ni para crear objetos de FreeCAD válidos.gz de archivo. geometría de construcción.debian. Es el mismo código fuente desde el sitio oficial de pivy. .. así como monedas. diff.5.de aplicaciones 3D en OpenGL. o compilarlo usted mismo. Instalación Ubuntu & de Debian Iniciar con Debian Squeeze y Ubuntu Lucid. Instalación de Pivy en el sistema permitirá python programas para acceder a la scenegraph FreeCAD.diff: patch -p1 < . descomprima ambos y.org/squeeze/python-pivy (Descargar la. tales como eje. Moneda se basa en el lenguaje de descripción de escena abierto de inventor..0~svn765-2. es liberado bajo una licencia GPL. Pivy.diff al origen: vaya a la carpeta de origen pivy sin comprimir y aplique el parche . dibujar objetos nuevos en la escena y utilizar la amplia gama de herramientas de monedas disponibles para las operaciones de dibujo. Esto significa pivy no será capaz de modificar los objetos existentes. etc. En el ínterin.. a continuación. Pivy es utilizado por el módulo de redacción 2D de FreeCAD (y también por el módulo completo). que está separada de la definición de objetos. También compila fino sobre ubuntu karmic: http://packages. aplicar la . Pero puede ser utilizado para dibujar todo tipo de cosas temporales en pantalla. por lo que es necesario si desea utilizar cualquier herramienta de esos módulos. pivy estará disponible directamente desde los repositorios oficiales./pivy_0. ahorrándonos muy complicado. pero la gente de debian hizo varias adiciones de fijación de errores.. La mejor manera para compilar pivy fácilmente es agarrar el paquete de fuente de debian para pivy y hacer un paquete con debuild. orig. cuadrículas.

Después de vaya a las fuentes de pivy y la llamada python setup.py install) Eso es todo. desembalarlo y desde una línea de comandos do (como root): . Hay seis líneas para corregir.25 de SWIG.25.org/repos/Pivy/trunk Pivy a continuación. Se puede ejecutar en un error del compilador donde un 'const char *' no puede convertirse en un 'char *'.Otras distribuciones de linux Primero hay que obtener las fuentes más recientes desde el repositorio del proyecto: svn co https://svn. Se recomienda utilizar la versión 1. Para corregir que sólo necesita escribir un 'const' antes en las líneas adecuadas. porque en este momento pivy sólo funcionará correctamente con 1.25. instalar mediante la emisión de (como root): python setup. Descargar un 1. no es la versión más reciente.swig.3.org .3.%PATH% Para obtener trabajo de pivy debe obtener las fuentes más recientes desde el repositorio del proyecto: svn co https://svn. Descargar los archivos binarios para 1.3.25 de http://www.25 de SWIG.3.py build que crea los archivos de origen.25 tarball fuente de http://www.coin3d.5.org ./configure make make install (or checkinstall if you use it) Tarda unos pocos segundos para construir. Si el intérprete de Python todavía no está en la ruta del sistema set PATH=path_to_python_2. Se recomienda utilizar la versión 1.org/repos/Pivy/trunk Pivy a continuación. A continuación.coin3d. necesita una herramienta llamada SWIG para generar el código de C++ para los enlaces de Python. desembalarlo y desde la línea de comandos agregarlo a la ruta del sistema . porque en este momento pivy sólo funcionará correctamente con 1.py install (or checkinstall python setup.swig. Windows Suponiendo que estás utilizando Visual Studio 2005 o posterior debe abrir un símbolo del sistema con ' Visual Studio 2005 símbolo ' en el menú Herramientas.3. A continuación. no es la versión más reciente. necesita una herramienta llamada SWIG para generar el código de C++ para los enlaces de Python. Después de eso. pivy está instalado.3.

%PATH% y COINDIR a la ruta apropiada set COINDIR=path_to_coin En Windows..py directamente.path_to_qt4\include\Qt Si está utilizando el Express Edition de Visual Studio puede obtener un pitón excepción de keyerror. usted tiene que modificar algunas cosas en msvccompiler.0") Vuelva a intentarlo una vez más. En la línea 200 simplemente elimine la parte ' sowin': ('gui..set_macro("FrameworkSDKDir"..1f" % version con vsbase = r"Software\Microsoft\VCExpress\%0. Ir a la línea 122 y reemplace la línea vsbase = r"Software\Microsoft\VisualStudio\%0. No encuentro una forma obvia para construir con SoQt. 'pivy.path_to_coin_include_dir y si los encabezados de SoQt no están en el mismo lugar que los encabezados de monedas también set INCLUDE=%INCLUDE%. el archivo de configuración de pivy espera SoWin en lugar de SoQt como predeterminado.25. set INCLUDE=%INCLUDE%.py situado en su instalación de python.1") con self.py build que crea los archivos de origen. por lo que he modificado el archivo setup.) (no retire el paréntesis de cierre). net. Si vuelve a obtener un error como .1f" % version A continuación. Se puede ejecutar en varios archivos de encabezado no se encontró un error de compilación._sowin'. "sdkinstallrootv2. También debe reemplazar línea 128 self. net. En este caso.path_to_soqt_include_dir y por último los encabezados de Qt set INCLUDE=%INCLUDE%.3. vuelva a intentarlo una vez más.set_macro("FrameworkSDKDir". "sdkinstallrootv1. 'sowin-config'. En este caso ajustar la variable INCLUDE.gui'. Si obtiene un segundo error como error: Python was built with Visual Studio 2003. Después de vaya a las fuentes de pivy y la llamada python setup.set PATH=path_to_swig_1.

addChild(coin.El Inventor Mentor . por ejemplo.newDocument() # Open a document and a view view = Gui. teniendo en cuenta la diferencia de sintaxis entre C y python: http://doc.ActiveDocument. . Después de que copiar el directorio de pivy generado a un lugar donde se encontrará en el intérprete de python en FreeCAD. los nodos y los métodos en python.imag. Hay seis líneas para corregir. but it isn't installed.Coin3D referencia de la API http://wwwEvasion.error: Python was built with Visual Studio version 8.ActiveView FCSceneGraph = view. Para corregir que sólo necesita escribir un 'const' antes en las líneas adecuadas. a establecer a 1 set DISTUTILS_USE_SDK=1 set MSSDK=1 Ahora. todo lo mantiene el mismo nombre y las propiedades. and extensions need to be built with the same version of the compiler.SoCube()) # add a box to scene Ahora puede explorar la FCSceneGraph con el comando dir().Faure/doc/inventorMentor/sgi_html/index. a continuación.la "Biblia" de lenguaje de descripción de escena de inventor. Uso Tener Pivy acceder a la FreeCAD scenegraph haga lo siguiente: from pivy import coin App.fr/~Francois. debe comprobar DISTUTILS_USE_SDK y MSSDK con echo %DISTUTILS_USE_SDK% echo %MSSDK% las variables de entorno Si no aún definida. se puede ejecutar en un error del compilador donde un 'const char *' no puede convertirse en un 'char *'. ya que hace gran uso de pivy.0. a sólo.org/Coin/Classes.getSceneGraph() # returns a pivy Python object that holds a SoSeparator. the main "container" of the Coin scenegraph FCSceneGraph. entonces. ya que pivy simplemente traducir las funciones de la moneda.py en la carpeta FreeCAD Mod/proyecto. También puede buscar en el archivo Draft.coin3d. Documentación Lamentablemente la documentación acerca de pivy está todavía casi inexistant en la red.html .html . Pero puede encontrar documentación de Coin útiles.

Créditos Aquí una visión general que las personas o las empresas contribuyen a FreeCAD. Los créditos para las bibliotecas utilizadas ver Bibliotecas de terceros . Desarrolladores Personas que han contribuido a una notable cantidad de código: Havre de van de Yorik Graeme van der Vlugt Berthold Grupp Georg Wiora Empresas Empresas que donó el código o Developer: Imetric 3D . Desarrollador Desarrollador principal Sólo los desarrolladores de plomo son capaces de cometer el código en el repositorio SVN. Actualmente son: Jürgen Riegel Werner Mayer Más tarde allí pueden ser responsabilidades sobre la base del módulo.

Sign up to vote on this title
UsefulNot useful