Está en la página 1de 177

Manual de Freecad

Este es el manual FreeCAD. Incluye las partes esenciales de la wiki de documentacin FreeCAD. Est hecho principalmente para ser impresos en un solo documento grande, as que, si usted est leyendo esto en lnea, usted lo prefiere, puede dirigirse directamente a la ayuda en lnea la versin, que es ms fcil de navegar.

Bienvenido a la ayuda FreeCAD en lnea


Este documento ha sido creado de forma automtica a partir del contenido de la wiki de documentacin oficial FreeCAD, que puede leerse en lnea 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 versin en lnea contiene la informacin ms reciente o ms de este documento. Pero no obstante, esperamos que usted encontrar aqu toda la informacin 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.

Cmo utilizar
Este documento se divide en varias secciones: introduccin, uso de secuencias de comandos y el desarrollo, la direccin de los tres ltimos especialmente los tres grandes categoras de usuarios de FreeCAD: usuarios finales, que simplemente quieren usar el programa, los usuarios de energa, que se interesan por las capacidades de scripting de FreeCAD y me gustara 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 introduccin.

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 documentacin. S, tenemos que decir! Cmo, usted pregunta? Slo tienes que ir a la Wiki enhttp://apps.sourceforge.net/mediawiki/free-cad/index.php en la seccin de usuario. Usted necesitar una cuenta de sourceforgepara iniciar la sesin, entonces se puede empezar a editar!

Introduccin

la interfaz FreeCAD

FreeCAD es un propsito general 3D CAD modelador. El desarrollo es completamente de cdigo abierto (GPL y LGPL licencia). FreeCAD va destinado directamente a la ingeniera mecnica y diseo de productos , pero tambin encaja en una gama ms amplia de aplicaciones en la ingeniera, tales como la arquitectura o la ingeniera de otras especialidades. FreeCAD cuenta con herramientas similares a Catia, SolidWorks y Solid Edge, y por lo tanto tambin cae en la categora de MCAD, PLM, CAx y CAE. Ser una pelcula basada modelador paramtrico con una arquitectura de software modular que hace fcil para proporcionar funcionalidad adicional, sin modificar el ncleo del sistema. Como ocurre con muchos modernos 3D CAD y modeladores que tendr un componente 2D para extraer los detalles del diseo del modelo 3D para crear dibujos en 2D de produccin, pero el dibujo 2D directa (como AutoCAD LT) no es el foco, no son orgnicos o formas de animacin ( como Maya, 3ds Max o Cinema 4D), aunque, gracias a su amplia adaptabilidad, FreeCAD podra ser til en una amplia rea mucho ms que su enfoque actual. Otra de las principales preocupaciones de FreeCAD es hacer un uso intensivo de todos los de cdigo abierto grandes bibliotecas que existen por ah en el campo de la computacin cientfica. Entre ellos se encuentran OpenCascade, un poderoso ncleo de CAD,Coin3D, una encarnacin de OpenInventor, Qt, la famosa interfaz de usuario marco del mundo, y Python, uno de los mejores lenguajes de scripting disponibles. FreeCAD misma tambin 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 caractersticas o de la Introduccin a los artculos, o dirigirse directamente al centro de usuario! Esta es una, por lo tanto no es completa, extensa lista de caractersticas FreeCAD implementa. Si desea buscar en el futuro ver lahoja de ruta para el Desarrollo de una visin general rpida de la Imagen es un buen lugar para ir.

Caractersticas generales
Base de la aplicacin

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 aplicacin con interfaz grfica. FreeCAD cuenta con una

completa interfaz grfica de usuario basada en el famoso Qtmarco, con un visor 3D basado en Open Inventor, permitiendo rpido renderizado de escenas 3D y una representacin grfica de la escena muy accesible. FreeCAD tambin se ejecuta como una aplicacin de lnea de comandos, con la

huella de memoria baja. En modo de lnea de comandos, FreeCAD se ejecuta sin su interfaz, pero con todas las herramientas de la geometra. Puede ser, por ejemplo, utiliza como servidor de producir contenidos para otras aplicaciones. FreeCAD se pueden importar como un mdulo de Python, dentro de otras

aplicaciones que pueden ejecutar scripts de Python, o en una serpiente pitn de la consola. Al igual que en modo consola, la parte de interfaz de FreeCAD no est disponible, pero todas las herramientas de la geometra son accesibles. Plugin / marco del mdulo para la carga tarda de caractersticas y tipos de

datos. FreeCAD se divide en una aplicacin de base y los mdulos, que se cargan slo cuando es necesario. Casi todas las herramientas y tipos de geometra se almacena en mdulos. Los mdulos se comportan como plugins, y puede incluir o eliminar una instalacin existente de FreeCAD. Construido en secuencias de comandos marco: FreeCAD incorpora un

en Python intrprete, y una API que cubre casi cualquier parte de la aplicacin, la interfaz, la geometra y la representacin de esta geometra en el visor 3D. El intrprete puede ejecutar comandos individuales hasta las secuencias de comandos complejas, de hecho, los mdulos de todo, incluso se puede programar completamente en Python.

un instalador MSI modular permite instalaciones flexibles en los sistemas

Windows. Los paquetes para los sistemas de Ubuntu tambin se mantienen.

Estructura de documento

Deshacer / Rehacer marco: Todo es deshacer / rehacer, con acceso a la pila de

deshacer, varios pasos por lo que puede ser deshecho a la vez. gestin de transacciones: La deshacer / rehacer pila documento transacciones

tiendas y no las acciones individuales, permitiendo que cada herramienta para definir exactamente lo que hay que deshacer o rehacer. asociativas documento objetos paramtricos: Todos los objetos en un documento

FreeCAD puede ser definido por los parmetros. Los parmetros se pueden modificar sobre la marcha, y vuelven a calcular en cualquier momento. La relacin entre los objetos tambin se almacena, por lo que la modificacin de un objeto tambin modifica sus objetos dependientes. (ZIP base) del documento compuesto guardar formato: FreeCAD documentos

guardados con iconos fcstd. extensin puede contener diversos tipos de informacin, tales como la geometra, las secuencias de comandos o en miniatura.

Interfaz de usuario
Totalmente personalizable / scripts interfaz grfica de usuario. El Qtbasado en la

interfaz de FreeCAD es totalmente accesible a travs del intrprete de Python. Adems de las funciones simples que FreeCAD se dota a los bancos de trabajo, el marco de Qt est adaptado demasiado, permitiendo que cualquier operacin en la interfaz grfica de usuario, tales como crear, agregar, de acoplamiento, modificar o eliminar widgets y barras de herramientas.

concepto de banco de trabajo: En la interfaz de FreeCAD, las herramientas se

agrupan por mesas de trabajo. Esto permite mostrar slo las herramientas utilizadas para llevar a cabo una determinada tarea, manteniendo la ordenada y responsable, y la rpida aplicacin de espacio de trabajo para la carga. Incorporado en la consola de Python con resaltado de sintaxis, y la clase explorador

autocompletar: comandos de Python pueden ser introducidas directamente en FreeCAD y devolvi de inmediato los resultados, lo que permite guionistas para probar la funcionalidad sobre la marcha, explorar el contenido de los mdulos y fcil aprender sobre FreeCAD internos. reflejo de la interaccin del usuario en la consola: Todo lo que el usuario hace en la

interfaz de FreeCAD ejecuta cdigo python, que se puede imprimir en la consola y se registran en las macros. macro de grabacin y edicin completa: La pitn rdenes emitidas cuando el

usuario manipula la interfaz puede ser grabado, editado, si es necesario, y salvo que se reproduce ms adelante. Thumbnailer (los sistemas Linux solamente en el momento): Los iconos de documento

FreeCAD mostrar el contenido del archivo en la mayora de las aplicaciones de administrador de archivos, como los nautilus de gnome.

Caractersticas especficas de la aplicacin


La funcionalidad de FreeCAD est separado en mdulos, cada uno tratando con tipos de datos y aplicaciones especiales:

Mallas

El acoplamiento del mdulo se refiere a mallas 3D. Es esta destinada principalmente

para la importacin, la curacin y la conversin de parte de malla generada geometra de sesiones en FreeCAD, y la exportacin de la geometra FreeCAD en formato de malla. Pero s FreeCAD tambin cuenta mucho la geometra de los tipos ms avanzados de las mallas. la creacin de primitivas (caja, esfera, etc cilindro), desplazamiento(triviales o

despus de Jung / Shin / Choi) o las operaciones booleanas(aadir, cortar, se cruzan) Importacin de los siguientes formatos: ASCII o binario STL (litografa formato

estreo) (*. stl, *. ast), el formato OBJ (*. obj), limitadaNASTRAN apoyo (*. nas), Open Inventor mallas (iv *.), y nativo del kernel de malla FreeCAD (*. BMS) Exportacin de los siguientes formatos: ASCII o binario STL (Stereo formato

litografa) (*. stl, *. ast), el formato OBJ (*. obj), limitada NASTRAN apoyo (*. nas, *. BRL), VRML mallas (*. wrl), nativa del ncleo de malla FreeCAD (*. BMS), de malla como mdulo de Python (*. py) Prueba y reparacin de herramientas para mallas: prueba de slidos, y dos colectores

de ensayo que no, interseccin de autocomprobacin, orificio de llenado y la orientacin uniforme. Amplia Python API de scripting.

2D de Redaccin
Grfica de creacin de la geometra plana simples como lneas, cables, rectngulos,

arcos o crculos en cualquier plano del espacio 3D Anotaciones como los textos o las dimensiones Grfica de las operaciones de modificacin como la traduccin, rotacin, escalado,

espejo, desplazamiento o la forma de conversin, en cualquier plano del espacio 3D Importacin y exportacin de los siguientes formatos: Autodesk Dibujo Exchange

Format (*. dxf), Open Cad Formato (*. oca, *. gcad) e SVG (*. svg)

CAD

La pieza del mdulo se ocupa de todo alrededor de modelado CAD y las estructuras de CAD. La funcionalidad CAD est en fuerte desarrollo (vase

datos

el PartDesign_project y Assembly_project en elDevelopment_roadmap). El mdulo de la parte trabaja con alto nivel Abrir CASCADE geometra. Paramtrico formas primitivas como la caja, la esfera, el cono del cilindro o un toro. Topolgica componentes como vrtices, bordes, cables y aviones (a travs de

secuencias de comandos de Python). Modelado con rectas o revolucin extrusiones, secciones y filetes. operaciones booleanas , como la unin, diferencia y la interseccin. Amplia Python API de scripting. Importacin y exportacin de los siguientes formatos: PASO piezas y ensamblajes (*.

stp, *. paso), IGES modelos (*. igs, *. IGES) y BREP (*. BRP), el formato nativo de nuestro Abrir CASCADE ncleo CAD .

Raytracing
El mdulo de trazado de rayos permite la exportacin de la geometra FreeCAD

a renderizadores externos para la generacin de imgenes de alta calidad. En la actualidad, el motor de render compatible slo es POV-Ray. El mdulo permite actualmente la creacin de una hoja de representacin, y la geometra de la adicin a esa hoja de representacin para exportar a un archivo de POV-Ray.

Dibujo

El mdulo de dibujo permite exportar vistas proyectadas de la geometra 3D a

un documento SVG 2D. Permite la creacin de una hoja en 2D con una plantilla de svg existentes, y la insercin de puntos de vista de la geometra proyectada en esa hoja. A continuacin, la hoja se pueden guardar como un archivo SVG.

CAM
El mdulo CAM se dedica a trabajar a mquina mecnica, como la molienda. Este

mdulo se encuentra en el principio y en el momento en su mayora dedicados a la hoja que forma incremental. Aunque hay algunos algoritmos de planificacin trayectorias que no son utilizables para el usuario final en el momento.

Instalacin
Instalar en Windows
La forma ms fcil de instalar FreeCAD en Windows es utilizar el instalador. Esta pgina describe el uso y las caractersticas delinstalador de Microsoft para conocer las opciones de instalacin ms.

Instalacin sencilla
instalador FreeCAD se entrega en. MSI (Windows Installer) en formato. Puede descargar la ltima versin. Msi de la FreeCAD pgina de descarga oficial. Despus de descargar el archivo, haga doble clic sobre l para iniciar el proceso de instalacin.

Instalacin de la lnea de comandos


Con el msiexec.exe utilidad de lnea de comandos, funciones adicionales estn disponibles, como no-instalacin interactiva y la instalacin administrativa.
Instalacin no interactiva

Con la lnea de comandos


msiexec / i FreeCAD <versin>. msi

instalacin se puede iniciar mediante programacin. Los parmetros adicionales se pueden pasar al final de esta lnea de comandos, como
msiexec / i FreeCAD-2.5.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, en particular: / Qn - No interfaz / Qb - Interfaz bsica - slo un pequeo dilogo de progreso

/ Qb! - Al igual que / qb, pero ocultar el botn Cancelar / Qr - Reduccin de la interfaz - mostrar todos los cuadros de dilogo que no requieren / Qn + - Me gusta / qn, pero muestran "Completado" dilogo al final / Qb + - Me gusta / qb, pero muestran "Completado" dilogo al final

la interaccin del usuario (saltar todos los cuadros de dilogo modales)

Objetivo de la gua

El TARGETDIR propiedad determina el directorio raz de la instalacin FreeCAD. Por ejemplo, un disco de instalacin diferente se puede especificar con
TARGETDIR = R: \ FreeCAD25

El TARGETDIR predeterminado es [WindowsVolume \ Programm Files \] FreeCAD <versin>.


Instalacin para todos los usuarios

Agregar
ALLUSERS = 1

causa de una instalacin a todos los usuarios. De forma predeterminada, la instalacin no interactiva instalar el paquete slo para el usuario actual, y la instalacin interactiva ofrece un cuadro de dilogo que por defecto es "todos los usuarios" si el usuario es lo suficientemente privilegiada.
Seleccin de caractersticas

Un nmero de propiedades permiten la seleccin de caractersticas para ser instalado, reinstalado o eliminadas. El conjunto de caractersticas para el programa de instalacin es FreeCAD DefaultFeature - instalar el software adecuado, adems de las bibliotecas del ncleo Documentacin - instalar la documentacin El cdigo fuente - instalar las fuentes ... Cosas por hacer

Adems, TODOS especifica todas las caractersticas. Todas las funciones dependen de DefaultFeature, por lo que la instalacin de cualquier caracterstica instala automticamente la funcin de default. Las caractersticas siguientes propiedades de control para instalar o desinstalar ADDLOCAL - lista de caractersticas para ser instalado en el equipo local REMOVER - lista de caractersticas para ser retirados ADDDEFAULT - lista de funciones adicionales en su configuracin por defecto (que es REINSTALL - lista de caractersticas para volver a instalar / reparar

local para todas las caractersticas FreeCAD)

PUBLICIDAD - lista de caractersticas para el que se realizar una instalacin de

publicidad Hay algunas caractersticas adicionales disponibles, consulte la documentacin de MSDN para obtener ms detalles. Con estas opciones, aadiendo
ADDLOCAL = Extensiones

instala el propio intrprete y los registros de las extensiones, pero no instalar nada ms.

Desinstalacin
Con
msiexec / x FreeCAD <versin>. msi

FreeCAD se puede desinstalar. No es necesario contar con el archivo MSI disponibles para la desinstalacin, como alternativa, el paquete o cdigo de producto tambin puede ser especificado. Usted puede encontrar el cdigo de producto al observar las propiedades del acceso directo Desinstalar FreeCAD que se instala en el men de inicio.

instalacin administrativa
Con
msiexec / a FreeCAD <versin>. msi

un "administrativo" (red) de instalacin se puede iniciar. Los archivos se desempaquetado en el directorio de destino (que debe ser un directorio de red), pero sin otra modificacin que se haga en el sistema local. Adems, otro archivo (ms pequeo) msi se genera en el directorio de destino, que los clientes pueden entonces utilizar para realizar una instalacin local (las versiones futuras pueden ofrecer tambin para mantener algunas de las caractersticas de la unidad de red en total). Actualmente, no existe ninguna interfaz de usuario para las instalaciones administrativas, por lo que el directorio de destino se debe pasar la lnea de comandos. No hay ninguna especfica procedimiento de desinstalacin de una administrativa de instalacin - simplemente borre el directorio de destino si no hay cliente que usa ms.

Publicidad
Con
msiexec / jm FreeCAD <versin>. msi

sera posible, en principio, a "anunciar" FreeCAD a una mquina (con / ju a un usuario). Esto hara que los iconos que aparecen en el men de inicio, y las extensiones para ser registrada, sin el software en realidad se est instalando. El primer uso de una caracterstica hara que cuentan para su instalacin.

El instalador FreeCAD actualmente soporta slo el anuncio de las entradas del men de inicio, pero no hay anuncio de accesos directos.

Instalacin automtica de un grupo de mquinas


Con la directiva de grupo de Windows, es posible instalar automticamente FreeCAD un grupo de una de las mquinas. Para ello, siga estos pasos: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Inicie sesin 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 Aadir una nueva poltica, y editarlo En Configuracin del equipo / Instalacin de software, seleccione Nuevo / Seleccione el archivo MSI a travs de la ruta de red Opcionalmente, seleccione la que desea la FreeCAD ser desinstalado si el

todos los equipos de destino.

Paquete

equipo sale del mbito de aplicacin de la poltica. la propagacin del Grupo de poltica general, toma algn tiempo - para implementar el paquete de forma fiable, todos los equipos debe ser reiniciado.

Instalacin en Linux usando Crossover Office


Puede instalar la versin para Windows de FreeCAD en un sistema Linux utilizando CXOffice 5.0.1. Ejecutar msiexec de la lnea de comandos CXOffice, suponiendo que el paquete de instalacin se coloca en el "software" de la gua que se asigna a la unidad de letra "Y":
msiexec / i Y: \ \ software \ \ FreeCAD <versin> msi.

FreeCAD se est ejecutando, pero se ha informado de que la pantalla OpenGL no funciona, al igual que con otros PROGRAMAS ejecuta en vino es decir, Google SketchUp.

Instalacin en Unix / Linux


Por el momento, el equipo FreeCAD slo proporciona a los instaladores de sistemas de 32 bits de Debian y Ubuntu, pero algunos miembros de la comunidad de usuarios FreeCAD tambin proporciona a los instaladores de encargo para otras versiones de Linux.Por favor, eche un vistazo a la descarga pgina para ver lo que est actualmente availible.

Instalacin en sistemas Debian / Ubuntu


Una vez descargado el. Deb correspondiente a su versin del sistema, si usted tiene la gdebi paquete instalado (normalmente lo es), slo tiene que desplazarse a donde ha

descargado el archivo, y haga doble clic en l. Las dependencias necesarias sern atendidos de forma automtica por el gestor de paquetes del sistema de tipos. Alternativamente se puede instalar tambin de la terminal, navegar hasta donde hemos descargado el archivo, y:
sudo dpkg-i Name_of_your_FreeCAD_package.deb

cambiando Name_of_your_FreeCAD_package.deb por el nombre del archivo descargado. Despus de instalar FreeCAD, un icono de inicio se agreg en la "grfica" de su Men de Inicio.

Instalacin en otros sistemas Linux / Unix


Unfortnately, por el momento, ningn paquete precompilado es availible para otros sistemas Linux / Unix, por lo que tendr quecompilar FreeCAD mismo.

Instalacin en Mac
FreeCAD se puede instalar en Mac OS X en un solo paso utilizando el instalador. Esta pgina describe el uso y caractersticas de la instalacin FreeCAD. Tambin incluye las instrucciones de desinstalacin.

Instalacin sencilla
El instalador FreeCAD se ofrece como un paquete de Installer (. Mpkg) incluido en un archivo de imagen de disco. Puede descargar la ltima instalacin de la descarga la pgina. Despus de descargar el archivo, simplemente montar la imagen de disco, a continuacin, ejecute la instalacin FreeCAD paquete.

El instalador le presentar una instalacin Personalizar la pantalla que lista los paquetes que sern instalados. Si usted sabe que usted ya tiene alguno de estos paquetes, se puede anular la seleccin utilizando las casillas de verificacin. Si no est seguro, deje todos los elementos seleccionados.

Desinstalacin
En este momento no es un desinstalador de FreeCAD. Para eliminar completamente FreeCAD y todos los componentes instalados, arrastre los siguientes archivos y carpetas a la Papelera: En / Aplicaciones: FreeCAD

en / Library / Frameworks / SoQt.framework Inventor.framework

Entonces, desde el terminal, ejecute:


sudo / Developer / Herramientas / sudo rm-qt.py desinstalar-R / usr / local / lib / sudo rm OCC-R / usr / local / include / OCC

Eso es todo. Finalmente, FreeCAD estar disponible como un paquete de aplicaciones de autocontenida para toda esta molestia desaparece.

Descubrir FreeCAD
Prefacio
FreeCAD es un sistema CAD / CAE de aplicaciones de modelado paramtrico. Todava est en fase inicial de desarrollo, as que no espere ser capaz de utilizarlo para producir un trabajo ya. Pero, si eres curioso acerca de lo que FreeCAD Aspecto del producto y las caractersticas que se estn desarrollando, le invitamos a descargarlo y darle una oportunidad. Por el momento, mucha funcionalidad ya est presente, pero no la interfaz de usuario mucho se ha creado para l. Esto significa que si usted sabe un poco de python, que ya ser capaz de producir y modificar la geometra compleja con relativa facilidad. Si no, probablemente encontrar que FreeCAD todava tiene pocos para ofrecer a usted. Pero, sea paciente, se espera que esto cambie pronto. Y si despus de la prueba tiene comentarios, ideas u opiniones, por favor, comparta con nosotros en el foro de discusin FreeCAD!

Instalacin
En primer lugar (si no se hace ya) descargar e instalar FreeCAD. Vase la descarga pgina para obtener informacin acerca de las versiones y actualizaciones. Hay paquetes listos para instalar Windows (. Msi), Ubuntu y Debian (. Deb) openSUSE (. Rpm) y Mac OSX.

Explorando FreeCAD

La interfaz FreeCAD al iniciarlo por primera vez. Ver ms imgenes aqu.

FreeCAD es una aplicacin de modelado 3D todos los fines generales, enfocada en la ingeniera mecnica y otras reas relacionadas, tales como otras especialidades de la ingeniera o la arquitectura. Se concibe como una plataforma para el desarrollo de cualquier tipo de aplicacin 3D, sino tambin para hacer tareas especficas muy. A tal efecto, su interfaz se divide en una serie de bancos de trabajo. Bancos de trabajo permiten cambiar el contenido de interfaz para mostrar todos y slo las herramientas necesarias para una tarea especfica, o un grupo de tareas. La interfaz FreeCAD por lo tanto se puede describir como un contenedor muy simple, con una barra de mens, un rea de visualizacin 3D, y un par de paneles laterales para la visualizacin de los contenidos escena o propiedades de los objetos. Todos los contenidos de estos paneles puede haber cambios en funcin de la mesa de trabajo. Al iniciar FreeCAD por primera vez, se le presentar un "general" banco de trabajo, que llamamos "banco de trabajo completo". Esta mesa de trabajo, simplemente recoge las herramientas ms madura de otros bancos de trabajo. Desde FreeCAD es bastante joven y an no se utilizan para el trabajo muy especializado, este banco de trabajo es muy til para descubrir FreeCAD con mayor facilidad.Bsicamente, todas las herramientas que son lo suficientemente buenas para la produccin de la geometra est aqu.

Navegando en el espacio 3D
FreeCAD tiene dos diferentes modos de navegacin disponibles, que se pueden establecer en la configuracin de dilogo de preferencias. En el modo por defecto, el zoom se realiza con la rueda del ratn, paneo con el botn central del ratn, y larotacin con el botn izquierdo del ratn y Botn central del ratn al mismo tiempo. Seleccin de un objeto se hace simplemente haciendo clic sobre ella con el botn izquierdo del ratn, con CTRL presionado si desea seleccionar varios objetos. Tambin tiene varios presets vista (vista superior, vista frontal, etc) disponibles en el men Ver y en la barra de herramientas Vista, y por atajos numricos (1, 2, etc ..)

2D de Redaccin
Herramientas de dibujo
Estas herramientas le permiten configurar su entorno de trabajo o producir operaciones genricas.

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 creacin de objetos.

lneas ngulo

De 2 puntos la lnea: Dibuja un segmento de lnea de 2 puntos Hilos (punto de varias lneas): Dibuja una lnea hecha de segmentos de varias

Crculo: dibuja un crculo desde el centro y el radio Arco: Dibuja un segmento de arco desde el centro, radio, ngulo inicial y final del

Rectngulo: dibuja un rectngulo de 2 puntos opuestos Texto: Dibuja una lnea de texto de la anotacin-multi Dimensin: Dibuja una anotacin dimensin

Modificacin de objetos
Estas son las herramientas para modificar los objetos existentes. Trabajan en los objetos seleccionados, pero si no hay ningn objeto seleccionado, se le invitar a seleccionar una.

Mover: Mueve el objeto (s) de un lugar a otro Girar: Gira objeto (s) de un ngulo inicial a un ngulo final

Offset: los segmentos de un objeto se mueve sobre una distancia determinada Actualizacin: se une a los objetos en un alto nivel de objeto Baja de Calificacin: 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 lnea a los objetos Escala: escala objeto seleccionado (s) en torno a un punto base Editar: edita un objeto seleccionado

La creacin de piezas en 3D
Primitivos
Estas son herramientas para la creacin de objetos primitivos.

Caja: Dibuja un cuadro especificando sus dimensiones Cono: Dibuja un cono mediante la especificacin de sus dimensiones Cilindro: Dibuja un cilindro mediante la especificacin de sus dimensiones Esfera: Dibuja una esfera mediante la especificacin de sus dimensiones Toro: Dibuja un toro (anillo), especificando sus dimensiones

Modificacin de objetos
Estas son las herramientas para modificar los objetos existentes. Que le permitir elegir el objeto a modificar.

Booleanos: boolean Realiza operaciones en los objetos Fusible: Fusibles (sindicatos) dos objetos Comn: extraer los comunes (interseccin) parte de dos objetos Cortar: corta (resta) un objeto de otro Extrusin: 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

seccin

Seccin: Crea una seccin por la interseccin de un objeto con un plano de

Exportar a dibujos 2D
Estas son las herramientas para crear, configurar y exportacin de hojas de dibujo 2D

Nueva hoja de dibujo: Crea una nueva hoja de dibujo desde un archivo SVG

existentes 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 exportacin de su trabajo en 3D para renderizadores externos

Crear un proyecto de Povray: Crea un POV-Ray nuevo proyecto Insertar informacin ver: Inserta el ver los datos (posicin de la cmara, etc) a la

POV-Ray proyecto actual actual Insertar informacin parte: Inserta el objeto seleccionado al POV-Ray proyecto

Secuencias de comandos
Y, por ltimo, una de las caractersticas ms potentes de FreeCAD es la secuencia de comandos medio ambiente. Desde la pitn consola integrada (o de cualquier secuencia de comandos Python externo), puede acceder a casi cualquier parte del FreeCAD, crear o modificar la geometra, modificar la representacin de los objetos en la escena 3D o acceder y modificar la interfaz FreeCAD.secuencias de comandos de Python tambin pueden ser utilizados en las macros, que proporcionan un mtodo sencillo para crear comandos personalizados.

<anterior: Instalacin en Mac siguiente: modelo de ratn> ndice


Traducciones disponibles:

Trabajar con FreeCAD


de navegacin en 3D
El modelo de ratn de FreeCAD es muy flexible e intuitiva y con algunas pistas se puede utilizar despus de slo un minuto de la prctica.

Seleccin de objetos
Los objetos se pueden seleccionar con un clic con el botn izquierdo del ratn o haciendo clic en el objeto en la vista 3D o mediante la seleccin en la vista de rbol. Tambin hay una preseleccin mecanismo que pone de relieve los objetos y muestra informacin acerca de ellos antes de la seleccin con slo pasar el mouse sobre l. Si no le gusta que la conducta o si tiene una mquina lenta, puede cambiar de preseleccin en las preferencias.

Manipulacin de objetos
La manipulacin de objetos es comn a todos los bancos de trabajo. Los gestos del ratn siguientes se pueden utilizar para controlar la posicin del objeto y el punto de vista. Seleccione Pulse el botn izquierdo del ratn sobre un objeto que desea seleccionar. Zoom Utilice el + o - las llaves de la rueda del ratn para acercar y alejar. Pan

Haga clic en el botn central del ratn y mover el objeto. Gire Primero haga clic con el botn central del ratn, mantenga y haga clic en el botn izquierdo del ratn en cualquier parte visible de un objeto y arrastrarlo en la direccin deseada. Esto funciona como hacer girar una pelota que gira alrededor de su centro. Si se suelta el botn antes de dejar su peticin, el objeto sigue girando, si esta opcin est activada. Centro de Marco de la rotacin Un doble clic con el botn central del ratn en cualquier parte de un objeto establece el nuevo centro de rotacin y zoom sobre este punto.

Manipulacin de objetos
FreeCAD ofrece manipuladores que se pueden utilizar para modificar un objeto o su aspecto visual. Un ejemplo sencillo es el plano de corte que se puede activar con el recorte Ver plano de men. Despus de la activacin 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. Hay otros cuatro que no son tan obvios: el propio avin y la parte fina de los tres objetos eje. Escala Para escalar el objeto, haga clic con el botn izquierdo del ratn sobre los manipuladores recuadro al final de los ejes y tire de ellos hacia atrs y adelante. Dependiendo del objeto a los manipuladores trabajar independientemente o de forma sincrnica. Fuera del plano de desplazamiento Para cambiar el objeto a lo largo de su vector normal, tire de la caja larga en el centro de un eje con el botn izquierdo del ratn.Para el plano de corte no es slo un manipulador a lo largo del vector normal. En el plano de cambio Para mover el centro del plano de recorte, haga clic en el objeto de avin y tire de l hasta la posicin deseada. Rotacin Al hacer clic en la parte fina de los ejes del manipulador pone en modo de rotacin. <Anterior: Primeros pasos siguiente: Documento> estructura ndice
Traducciones disponibles:

El documento FreeCAD

Un documento FreeCAD contiene todos los objetos de la escena. Puede contener grupos y objetos elaborados con cualquier banco de trabajo. Por lo tanto, puede cambiar entre los bancos de trabajo, y siguen trabajando en el mismo documento. El documento es lo que se guarda en el disco al guardar su trabajo. Tambin puede abrir varios documentos al mismo tiempo en FreeCAD, y abrir varias vistas del mismo documento. Dentro del documento, los objetos se pueden mover en grupos, y tener un nombre nico.Administracin de grupos, objetos y nombres de objeto que se realiza principalmente desde el punto de vista de rbol. Tambin se puede hacer, por supuesto, como todo en FreeCAD, desde el intrprete de Python. En la vista de rbol, se pueden crear grupos, los objetos se mueven a los grupos, eliminar objetos o grupos, haciendo clic derecho en la vista en rbol o en un objeto, los objetos de cambiar el nombre haciendo doble clic en sus nombres, o posiblemente otras operaciones, en funcin de la mesa de trabajo actual. Los objetos dentro de un documento FreeCAD puede ser de diferentes tipos. Cada mesa de trabajo puede crear sus propios tipos de objetos, por ejemplo, el banco de trabajo de malla crea objetos de malla, el Workbench Partecrear objetos de la parte, el Proyecto de Workbench tambin crea objetos de la parte, etc Si hay al menos un documento abierto en FreeCAD, siempre hay uno y slo un documento activo. Ese es el documento que aparece en la vista 3D actual, el documento que estn trabajando actualmente.

Aplicacin y la interfaz de usuario


Como casi todo lo dems en FreeCAD, la parte de interfaz de usuario (GUI) se separa de la parte de la aplicacin de base (la aplicacin). Esto tambin es vlido para los documentos. Los documentos tambin estn hechas de dos partes: el documento de solicitud, que contiene los objetos, y el documento de Vista, que contiene la representacin en pantalla de nuestros objetos.

Piense en ello como dos espacios, donde los objetos se definen. Sus parmetros constructivos (es un cubo? Un cono? Qu tamao?) Se almacenan en el documento de solicitud, mientras que su representacin grfica (es dibujado con lneas negro? Con rostros azules?) Se almacenan en el documento Ver. Por qu es eso? Debido a FreeCAD tambin puede ser utilizado sin interfaz grfica, por ejemplo dentro de otros programas, y todava deben ser capaces de manipular nuestros objetos, incluso si no se dibuja en la pantalla. Otra cosa que est contenida en el documento Ver puntos de vista en 3D. Un documento puede tener varias vistas abiertas, para que pueda inspeccionar el documento desde varios puntos de vista al mismo tiempo. Tal vez le gustara ver una vista superior y una vista frontal de su trabajo al mismo tiempo? A continuacin, tendr dos vistas del mismo documento, ambos almacenados 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.

Secuencias de comandos
Los documentos pueden crearse fcilmente, acceder y modificar desde el intrprete de Python. Por ejemplo:
FreeCAD.ActiveDocument

Devolver el actual (activo) documento


FreeCAD.ActiveDocument.Blob

Podra acceder a un objeto llamado "Blob" dentro de su documento


FreeCADGui.ActiveDocument

Devolver el documento vista asociada al documento actual


FreeCADGui.ActiveDocument.Blob

Podra acceder a la representacin grfica (ver) una parte de nuestro objeto Blob
FreeCADGui.ActiveDocument.ActiveView

Configuracin de las preferencias del usuario


El sistema de preferencias de FreeCAD se encuentra en el men Editar -> Preferencias. funcionalidad FreeCAD est dividido en diferentes mdulos, cada mdulo est encargado de la elaboracin de un determinado banco de trabajo. FreeCAD tambin utiliza un concepto llamado de carga tarde, lo que significa que los componentes se cargan slo cuando es

necesario. Usted puede haber notado que cuando se selecciona una mesa de trabajo en la barra de herramientas FreeCAD, que la mesa de trabajo y todos sus componentes se cargan en ese momento. Esto incluye la configuracin de las preferencias.

La configuracin de las preferencias generales Al iniciar FreeCAD sin mesa de trabajo abierta, se le tendr entonces una ventana de preferencias mnimo. A medida que la carga de mdulos adicionales, nuevas secciones aparecern en la ventana de preferencias, lo que le permite configurar los detalles de cada mesa de trabajo. Sin ningn mdulo cargado, usted tendr acceso a dos secciones de configuracin, responsables de la configuracin de aplicacin general y para la configuracin de la pantalla.

La configuracin de la pantalla FreeCAD est siempre en constante evolucin, 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 debera enfrentarse a cualquier dificultad de configurar FreeCAD a sus necesidades.

Personalizacin de la interfaz
Desde la interfaz FreeCAD se basa en la moderna Qt toolkit, que tiene un estado-de-la organizacin de arte. Widgets, mens, barras de herramientas y otras herramientas se pueden modificar, mover, compartida entre los bancos de trabajo, mtodos abreviados de teclado se puede establecer, modificar y macros se pueden grabar y reproducir. La ventana de personalizacin se puede acceder desde Herramientas -> Personalizar men:

Los comandos de la ficha le permite ver todos los comandos disponibles FreeCAD, organizado por su categora. 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 gustara 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 informacin como un nmero 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 paramtricos, que son objetos definidos slo por sus propiedades. Personalizada guin objetos en FreeCAD pueden tener propiedades de los siguientes tipos:

Boolean

flotador

FloatConstraint

ngulo

FloatList

Distancia

entero

IntegerConstraint matriz de

Porcentaje

Enumeracin

IntegerList

cadena

StringList

Vincular

LinkList

vectores VectorList colocacin PlacementLink color colorlist Material Ruta del Archivo FileIncluded Crculo FilletContour PartShape

Trabajar con bancos de trabajo


FreeCAD, al igual que muchas aplicaciones de diseo 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 tendra una mesa de trabajo para la persona que trabaja con madera, otra para el que trabaja con piezas de metal, y quizs 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 estn 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 imgenes 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 redaccin. 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 todava 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

cambia. Podra, por ejemplo, empezar a dibujar formas en 2D con el Workbench de Proyecto, a continuacin, seguir trabajando sobre ellos con el Workbench Parte.

El acoplamiento de banco de trabajo


El Workbench de malla maneja mallas de tringulos. Las mallas son un tipo especial de objetos 3D, compuesto de tringulos conectados por los bordes y las esquinas (tambin llamadosvrtices).

Un ejemplo de un objeto de malla Muchas de las aplicaciones 3D utilizar mallas como su principal tipo de objetos en 3D, con sketchup, licuadora, Maya o 3D Studio Max. Puesto que las mallas son simples objetos muy, contiene slo vrtices (puntos), los bordes y triangular) caras (, son muy fciles de crear, modificar, dividir, estirar, y fcilmente se puede pasar de una aplicacin a otra sin ningn tipo de prdida.Adems, ya que contienen datos muy sencilla, aplicaciones 3D por lo general pueden manejar grandes cantidades de ellos sin ningn problema. Por estas razones, las mallas son a menudo el tipo de objeto 3D de eleccin de las aplicaciones que tratan con las pelculas, animacin y creacin de imgenes. En el campo de la ingeniera, sin embargo, las mallas presentan una gran limitacin: Son objetos muy tonto, slo compuesto de puntos, lneas y caras. Ellos slo se hacen de las superficies, y no tienen informacin de masas, por lo que no se comportan como slidos. En una malla no hay forma automtica saber si un punto est dentro o fuera del objeto. Esto

significa que todas las operaciones slida basada, como sumas o restas, son siempre un poco difcil de realizar en las mallas, y los errores de regresar a menudo. En FreeCAD, ya que es una aplicacin de ingeniera, que, obviamente, prefieren trabajar con tipos ms inteligentes de los objetos 3D, que pueden transportar ms informacin, como la masa, el comportamiento de slidos, o incluso parmetros personalizados. El mdulo de acoplamiento fue creada para servir como banco de pruebas, pero ser capaz de leer, manipular y convertir mallas tambin es muy importante para FreeCAD. Muy a menudo, en su flujo de trabajo, recibir los datos 3D en formato de malla. Tendr que manejar esos datos, analizarlos para detectar los errores u otros problemas que les impiden convertir a objetos ms inteligente, y, por ltimo, convertir a los objetos ms inteligente, a cargo de la parte del mdulo.

Con el mdulo de acoplamiento


El mdulo de malla tiene actualmente una interfaz muy sencilla, todas sus funciones se agrupan en el acoplamiento de entrada del men. Las operaciones ms importantes que actualmente se puede hacer con las mallas son: mallas de importacin en varios formatos de archivo Exportacin de mallas en varios formatos de archivo Convertir Parte objetos en mallas Analizar la curvatura, se enfrenta, y comprobar si hay una malla puede ser con seguridad convertirse en un slido Flip mallas normales Cerrar los agujeros en las mallas Eliminar caras de las mallas

Herramientas GUI
Estas son herramientas para la exportacin 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 informacin de vista (posicin de la cmara, etc.) para el proyecto actual de POV-Ray Insertar parte info : inserta el objeto seleccionado para el proyecto actual de POV-Ray

Una vista de exportacin


Es la forma ms sencilla exportar la vista 3D actual y todo su contenido a un Povray archivo . En primer lugar, debe cargar o crear sus datos CAD y posicionar la orientacin de vista 3D como desee. , A continuacin, elija "Exportar... ver" en el men de logicial.

Usted obtener pedir una ubicacin para guardar el archivo resultante de la *.pov. Despus de que se puede abrir en Povray y de procesamiento:

Como es habitual en una rendererer se pueden hacer fotografas grandes y agradables:

Secuencias de comandos
Aqu es cmo utilizar estas caractersticas de python:
import Raytracing,RaytracingGui OutFile = open('C:/Documents and Settings/jriegel/Desktop/test.pov','w') OutFile.write(open(App.getResourceDir() +'Mod/Raytracing/Templates/ProjectStd.pov').read()) OutFile.write(RaytracingGui.povViewCamera()) OutFile.write(Raytracing.getPartAsPovray('Box',App.activeDocument( ).Box.Shape,0.800000,0.800000,0.800000)) OutFile.close() del OutFile

Links
About POV-Ray:

http://www.spiritone.com/~english/cyclopedia/ http://www.povray.org/ http://en.wikipedia.org/wiki/POV-Ray

About other open-source renderers (for future implementation):


http://www.yafaray.org/ http://www.luxrender.net/

El Banco de imgenes
El mdulo de imagen administra diferentes tipos de imgenes de mapa de bits y le permite abrirlos en FreeCAD. En la actualidad, los mdulos permite abrir los formatos de archivo .bmp, .jpg, .png y .xpm en una ventana independiente del visor. Tambin es una herramienta que le permite capturar una imagen desde una webcam.

El workbench de proyecto
El proyecto de mdulo es un mdulo de trabajo en progreso y bastante experimental realizado para agregar la funcionalidad bsica de dibujo 2d a FreeCAD. Est escrito totalmente en python y tambin sirve para mostrar hasta qu punto se puede extender FreeCAD totalmente en python, sin siquiera tocar el cdigo fuente. Actualmente no es realmente til para el trabajo de produccin, pero ya contiene un par de funciones bsicas de trabajo. Sintase libre de probar y nos dan una retroalimentacin sobre el pgina de discusin .

El workbench de proyecto est disponible en tu lista de workbenches. Cuando se activa, aparecern dos barras de herramientas; un clsico barra de herramientas que contiene los comandos de proyecto estndar que se enumeran a continuacin y un especial de barra de comandos que no tiene ningn icono de herramienta en ella, pero que es utilizado por las diferentes funciones para mostrar sus controles. De esa barra de comandos, tambin puede cambiar las cosas generales como el color de la lnea actual y el ancho. Como una nota, la barra de comandos (y, IMHO, toda la interfaz QT) se ve mucho mejor si se elige el estilo de "cleanlooks" en las preferencias generales de FreeCAD...

Tutorial
Para obtener una explicacin detallada, lea la Tutorial de proyecto (en curso), o lee la seccin quickstart para ponerse rpidamente en rieles.

Inicio rpido
No todos los comandos de dibujo funcionan bien en 3D en este momento. Por lo tanto, la mejor cosa a hacer es poner a usted mismo en la vista 2D ortogrfica antes de empezar a dibujar. Para ello, abra o cree un nuevo documento y, a continuacin, pulse el O clave (o en la vista de men - > vista ortogrfica) para cambiar al modo ortogrfica. A continuacin, pulse el 2 clave (o en la vista de men - > vistas estndar - > arriba) para ponerlo en vista superior. Ahora, est listo para dibujar. Tambin puede configurar freecad (men Editar - > Preferencias) para siempre iniciar en modo ortogrfica. Todos los comandos de proyecto ms o menos siguen las mismas reglas: herramientas de dibujo se le pedir que elija puntos en la pantalla o introduzca coordenadas numricas, mientras que las herramientas de modificacin le pedir que seleccione un objeto para trabajar en primer lugar, en caso de que no hay ningn objeto seleccionado. En casi todos los comandos, presionando el CTRL clave te permitir ajustar a puntos existentes, Mays limitar su movimiento horizontalmente, verically o en relacin con un segmento existente y en algunas herramientas ALT le dar opciones adicionales tales como la creacin de un nuevo objeto en lugar de la transformacin de uno ya existente. La ESC clave siempre cancelar el comando activa.

Note On some desktop systems (ex. Gnome, Kde), the ALT key is bound by default to moving windows on the desktop. You might need to change that shortcut key in your desktop preferences.

Algunos comandos trabajan demasiado en los aviones no estn en posicin horizontal, simplemente asegrese de que la coordenada Z se desbloquea cuando dibujo y sitese en la vista adecuada. A continuacin encontrar una descripcin ms completa de todas las herramientas disponibles.

Importar & exportacin

Estas son las funciones para abrir, importar o exportar a otros formatos de archivo. Apertura abrir un nuevo documento con el contenido del archivo, mientras que la importacin anexar el contenido del archivo al documento actual. Exportar guardar los objetos seleccionados en un archivo. Si no se selecciona nada, se exportarn todos los objetos. Tenga en cuenta que, puesto que el propsito del proyecto mdulo es trabajar con objetos 2d, los importadores centran slo en objetos 2d y, a pesar de que son compatibles con formatos DXF y OCA objetos definiciones en el espacio 3D (objetos no son necesariamente planos), ellos no importan objetos volumtricos como mallas, caras 3D, etc., sino ms bien las lneas, crculos, textos o formas planas. Formatos de archivo admitidos actualmente son:
Autodesk SVG

.DXF : Las importaciones y exportaciones de los archivos DXF creados con otras aplicaciones CAD (como geometra) : 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, un nuevo potencialmente Abrir el formato de archivo de CAD

Formato

Herramientas de redaccin
Estas herramientas permiten configurar su entorno de trabajo o producir genricas de las operaciones.

Plano de trabajo : define el plano de trabajo para las operaciones de la prximas Poner en hoja de : escribe los objetos seleccionados en un svg hoja de dibujo

Objetos de dibujo
Estas son herramientas para la creacin de objetos.

2-punto lnea : dibuja un segmento de lnea de puntos 2 Cable (lnea de mltiples puntos) : dibuja una lnea compuesta de mltiples segmentos de lnea Crculo : dibuja un crculo desde el centro y el radio Arco : dibuja un segmento de arco desde el centro, radio, ngulo del comienzo y ngulo final

Rectngulo : dibuja un rectngulo de puntos opuestos 2 Texto : dibuja una anotacin de texto multilnea Dimensin: dibuja una anotacin de dimensin

Modificacin de objetos
Estas son herramientas para modificar los objetos existentes. Trabajan en los objetos seleccionados, pero si no se ha seleccionado ningn objeto, ser invitados para seleccionar uno.

Mover : mover objetos desde una ubicacin 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 relacin con los puntos anteriores con coordenadas manuales : Permite introducir las coordenadas manuales en lugar de hacer clic en la pantalla todas herramientas de modificacin pueden modificar los objetos seleccionados o crear una copia modificada de ellos. Presionar ALT mientras utiliza la herramienta har una copia de construccin : Permite poner geometra aparte del resto, para conmutador fcil encendido y apagado los objetos recin creados adoptar el proyecto actual color y ancho

Restriccin Trabajar Copiar:

Modo

Todos

El

proyecto mdulo tambin tiene su Preferencias pantalla

API
Ver la API de proyecto pgina para obtener una descripcin 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. Simplemente, se registra las acciones como hacerlas, luego guardar bajo un nombre y les reproducir siempre que lo desee. Dado que las macros son en realidad una lista de comandos de python, tambin puede editarlos y crear secuencias de comandos muy complejas.

Cmo funciona
Si habilita la salida de la consola (men Editar - > Preferencias - > General - > macros - > Mostrar los comandos de consola de python de secuencias de comandos), ver que en FreeCAD, cada accin que haces, como presionar un botn, salidas de un comando de python. Los comandos Thos son lo que puede ser grabado en una macro. La herramienta principal para hacer macros es la barra de herramientas de macros: En ella tienes 4 botones: record, parada de grabar, editar y reproducir la macro actual. Es muy simple de usar: pulse el botn de grabacin, le pedir que asigne un nombre a la macro y, a continuacin, realizar algunas acciones. Cuando haya terminado, haga clic en el botn de grabacin de parada, y se guardarn sus acciones. Ahora puede acceder al dilogo de macro con el botn de edicin:

Se puede administrar sus macros, eliminar, editar o crear nuevas desde cero. Si edita una macro, se abrir en una ventana del editor de donde puede realizar cambios en su cdigo.

En el ejemplo se
Presione el botn de grabacin, asigne un nombre a, digamos "cilindro 10 x 10", a continuacin, en el Parte Workbench , crear un cilindro con radio = 10 y altura = 10. A continuacin, pulse el botn "detener la grabacin". En el cuadro de dilogo de edicin de macros, puede ver el cdigo de python que se ha registrado y, si lo desea, hacer alteraciones a la misma. Para ejecutar la macro, simplemente pulse el botn de ejecutar en la barra de herramientas mientras la macro se encuentra en el editor. Macro siempre est guardado en el disco, as que cualquier cambio que realice, o cualquier nueva macro se crea, estar siempre disponible prxima vez que inicie FreeCAD.

Personalizacin de
Por supuesto, no resulta prctico cargar una macro en el editor en el fin de utilizarlo. FreeCAD proporciona mucho mejores maneras de usar la macro, como asignar un mtodo abreviado de teclado a ella o poner una entrada en el men. Una vez creada la macro, todo esto puede hacerse a travs de las herramientas - > Personalizar men:

Herramienta de FreeCAD de de esta manera puede hacer que la macro se convierten en un verdadero instrumento, al igual que cualquier estndar. Esto, aadido a la potencia de python de secuencias de comandos dentro de FreeCAD, hace posible agregar fcilmente sus propias herramientas de la interfaz. Siga leyendo para la secuencias de comandos pgina si desea saber ms acerca de los scripts de python...

Creacin de macros sin grabacin


Usted puede tambin directamente copiar y pegar cdigo python en una macro, sin accin de GUI de grabacin. Simplemente crear una nueva macro, editarlo y pegar el cdigo. Usted puede, a continuacin, guardar la macro del mismo modo como se guarda un documento de FreeCAD. Prxima vez que inicie la FreeCAD, la macro aparecer bajo el tema "Instalado Macros" del men macro.

Repositorio de macros
Visita el Recetas de las macros pgina para recoger algunas macros tiles para agregar a su instalacin de FreeCAD.

Introduccin a Python
Este es un tutorial corto realizado para quin es totalmente nuevo para python. Python es un cdigo abierto, multiplataforma lenguaje de programacin. Python tiene varias caractersticas que lo hacen muy diferente de otros lenguajes de programacin comn y muy accesible a los nuevos usuarios como usted:
Ha sido diseado especialmente para ser fcil de leer por los seres humanos, y por

lo tanto es muy fcil de aprender y comprender.

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 cdigo que escriba puede ser inmediatamente ejecutado, lnea por lnea, si as lo desea. Esto hace extremadamente fcil para aprender y para encontrar errores en el cdigo, porque usted ir despacio, paso a paso.
Puede incrustarse en otros programas que se utiliza como lenguaje de scripting.

FreeCAD tiene un intrprete de python incrustado, por lo que se puede escribir en python cdigo en FreeCAD, en la que se manipulan piezas de FreeCAD, por ejemplo, para crear la geometra. Esto es extremadamente potente, porque en lugar de simplemente hacer clic en un botn con la etiqueta "crear la esfera", que un programador ha colocado all para usted, usted tiene la libertad para crear fcilmente su propia herramienta para crear exactamente la geometra desee.
Es extensible, fcilmente puede conectar nuevos mdulos en su instalacin de

python y ampliar su funcionalidad. Por ejemplo, tiene mdulos que permiten python leer y escribir imgenes 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 introduccin muy simple, de ninguna manera un tutorial completo. Pero mi esperanza es que despus de obtendr suficiente fundamentos para explorar ms profunda en los mecanismos de FreeCAD.

El intrprete
Por lo general, al escribir programas informticos, usted simplemente abra un editor de texto o su entorno de programacin especial que se encuentra en caso de mayora un editor de texto con varias herramientas alrededor de ella, escribe su programa, a continuacin, compilarlo y ejectelo. La mayora 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 continuacin, vas a volver a su editor de texto, corregir los errores, ejecutar una vez ms, y as sucesivamente hasta que el programa funciona bien. Que todo el proceso, en python, se puede hacer transparente dentro del intrprete de python. El intrprete es una ventana de python con un smbolo del sistema, donde simplemente se puede escribir cdigo python. Si instala python en el equipo (descargarlo desde el sitio Web de python si ests en Windows o Mac, instlelo desde el repositorio de paquete si ests en linux), usted tendr un intrprete de python en su men de inicio. Pero FreeCAD tambin tiene un intrprete de python en su parte inferior:

El intrprete muestra la pitn versin, a continuacin, un >>> smbolo, que es el smbolo, es decir, donde introducir cdigo python. Escribir cdigo en el intrprete es simple: una lnea es una instruccin. Cuando se presiona Intro, su lnea de cdigo se ejecutar (despus de ser invisible y instantneamente 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 operacin, 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 programacin, un fragmento de texto. sin el ", el comando de impresin crea 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 intrprete de FreeCAD, CTRL + Flecha arriba), usted puede ir realizar copia de seguridad en el ltimo comando que usted escribi y corregirlo. el intrprete de python tambin tiene un integrado ayuda a sistema. Intente escribir:
help

o, por ejemplo, supongamos que no entendemos lo que sali mal con nuestro comando de impresin Hola anterior, queremos informacin especfica sobre el comando "print":
Help("Print")

Usted obtendr una descripcin larga y completa de todo lo que puede hacer el comando de impresin. Ahora nos dominan totalmente nuestro intrprete, podemos empezar con cosas graves.

Variables
Por supuesto, impresin "hello" no es muy interesante. Impresin de cosas que no saber antes de, o dejar que python a encontrar para usted es ms 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 impresin. Podemos utilizar cualquier nombre que queremos que slo respetando las reglas simples, como no usar espacios ni signos de puntuacin. Por ejemplo, muy bien podramos escribir:
Hola = "mi propia versin de Hola" Hola impresin

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

Hemos cambiado el valor de myVariable. Tambin podemos copiar variables:


var1 = "hello" var2 = var1 imprimir var2

Tenga en cuenta que es interesante para darle buenos nombres a sus variables, "porque cuando te escribir programas de largos, despus de un tiempo no recuerdas lo que su variable denominada a" es para. Pero si llam por ejemplo myWelcomeMessage, que te recuerde fcilmente lo que se utiliza para cuando lo vers.

Nmeros
Por supuesto usted debe saber que la programacin es til para tratar a todo tipo de datos y especialmente los nmeros, no slo las cadenas de texto. Una cosa es importante, python debe saber qu tipo de datos que se trata. Vimos en nuestro ejemplo de impresin Hola, que el comando print reconocido nuestra cadena "hello". Eso es porque mediante el ", se dice especficamente el comando de impresin que lo que vendra prximo es una cadena de texto. 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', o una cadena en la jerga de python. Tambin tenemos otros tipos bsicos de datos, tales como nmeros enteros y float:
firstNumber = 10 secondNumber = 20 imprimir firstNumber + secondNumber Type(firstNumber)

Esto ya es mucho ms interesante, verdad? Ahora ya tenemos una potente calculadora! Mirar bien en cmo funcionaba, python sabe que 10 y 20 son nmeros enteros. Por lo que estn almacenados como "int" y python puede hacer con ellos todo lo que puede hacer con nmeros enteros. 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 nmeros sino meras fragmentos de texto. Python puede sumar dos fragmentos de texto, pero no trate de averiguar cualquier suma.

Pero estbamos hablando de nmeros enteros. Tambin hay nmeros de float. La diferencia es que los nmeros enteros no tienen parte decimal, mientras que los nmeros de foat pueden tener una parte decimal:
var1 = 13 var2 = 15,65 imprimir "var1 es de tipo", type(var1) imprimir "var2 es de tipo", type(var2)

Int y floats pueden ser mezclados entre s sin problema:


total = var1 + var2 imprimir total impresin type(total)

Por supuesto, el total tiene decimales, derechos? Python automticamente decidi entonces que el resultado es un flotante. En varios casos como este, python automticamente decide qu tipo para hacer algo. En otros casos no es as. Por ejemplo:
varA = "hello 123" varB = 456 imprimir varA + varB

Esto nos dar un error, varA es una cadena y varB es un tipo int, y python no sabe qu hacer. Pero podemos obligar a python para convertir entre los tipos:
varA = "hello" varB = 123 imprimir varA + str(varB)

Ahora ambos son cadenas, funciona la operacin! Tenga en cuenta que nos "stringified" varB en el momento de la impresin, pero no cambiamos varB por s mismo. Si hemos querido convertir varB permanentemente en una cadena, necesitamos hacer esto:
varB = str(varB)

Tambin podemos usar int() y float() para convertir a int y float si queremos:
varA = "123" impresin int(varA) impresin float(varA)

Nota sobre los comandos de python Usted debe haber notado que, en esta seccin, hemos utilizado el comando de impresin de varias maneras. Hemos impreso variables, sumas, varias cosas, separadas por comas y incluso el resultado de otros comandos de python, como type(). Tal vez usted tambin vio que haciendo estos dos comandos:
Type(varA) impresin type(varA)

tienen exactamente el mismo resultado. Eso es porque estamos en el intrprete, y todo se imprime automticamente en la pantalla. Cuando te escribimos ms complejos de los programas que se ejecutan fuera del intrprete, no imprimen automticamente todo en pantalla, por lo que necesitaremos utilizar el comando de impresin. Pero de ahora en adelante, vamos dejar de usarlo aqu, va a ir ms rpido. por lo que simplemente podemos escribir:
myVar = "Hola amigos" myVar

Usted debe tambin han visto que la mayora de los comandos de python (o palabras clave) ya sabemos tienen parntesis sola decirles sobre qu contenido debe trabajar el comando: type(), int(), str(). nica excepcin es el comando de impresin, que en realidad no es una excepcin, tambin funciona normalmente como esta: print("hello"), pero, ya que se utiliza a menudo, los programadores de python hecho una versin simplificada.

Listas
Otro tipo de datos interesantes es listas. Una lista es simplemente una lista de otros datos. La misma manera que definimos una cadena de texto mediante el uso de "", definimos listas mediante el uso de []:
myList = [1,2,3] Type(myList) myOtherList = ["Bart", "Frank", "Bob"] myMixedList = ["Hola", 345, 34.567]

Ver que puede contener cualquier tipo de datos. Las listas son muy tiles porque se pueden agrupar las variables. A continuacin, puede hacer todo tipo de cosas en que los grupos, 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 nmero total de elementos de una lista, su "posicin" en la lista comienza con 0. El primer elemento de una lista es siempre en la posicin 0, por lo que en nuestra myOtherList, "Bob" ser en la posicin 2. Podemos hacer mucho ms cosas con listas, como se puede leer aqu tales como ordenar contenido, eliminar o agregar elementos.

Una cosa divertida e interesante para usted: una cadena de texto es, en realidad, una lista de caracteres! Intente hacer esto:
mi_var = "hello" Len(myVar) myVar [2]

Por lo general todo lo que puede hacer con listas tambin puede hacerse con cadenas. Fuera de cadenas, enteros, carrozas y listas, hay tipos de datos ms integrados, tales como dictionnaries , o incluso puede crear sus propios tipos de datos con clases .

Sangra
Uno de los grande usos fresco de listas tambin es navegar a travs de ellos y hacer algo con cada elemento. Por ejemplo mirar esto:
alldaltons = ["Joe", "William", "Jack", "Averell"] para dalton en alldaltons: imprimir dalton + "Dalton"

Nos itera (programacin jerga otra vez!) a travs de nuestra lista con la "para... en..." comando e hizo algo con cada uno de los elementos. Tenga en cuenta la sintaxis especial: la de comando termina con: que indica que lo que viene despus va a ser un bloque de uno de los comandos ms. Inmediatamente despus de introducir la lnea de comandos que terminan con:, el smbolo cambiar a... que significa python sabe que un: - lnea termin ha ocurrido y lo que vendr el prximo formarn parte de ella. Cmo sabe cuntas de las siguientes lneas python voluntad ser a ejecutarse dentro del for.. en operacin? Para ello, python utiliza sangra. Es decir, las siguientes lneas no comienzan de forma inmediata. Les comenzar con un espacio en blanco, o varios espacios en blanco, o una ficha o varias fichas. Otros lenguajes de programacin utilizan otros mtodos, como poner everythin dentro de parntesis, etc.. Como escribe tus prximas lneas con la sangra de la misma, se considerar parte del bloque para-en. Si comienza una lnea con 2 espacios y el siguiente con 4, ser un error. Cuando usted haya terminado, simplemente escribir otra lnea sin sangra, o simplemente pulse Intro para volver desde el bloque para-en Sangra es cool porque si realiza grandes (por ejemplo utilizar fichas en lugar de espacios, porque es ms grande), cuando se escribe un gran programa tendr una visin clara de lo que se ejecuta dentro de lo que. Vamos a ver que

muchos otros comandos que para-en pueden haber sangra bloques de cdigo demasiado. Para-en comandos pueden utilizarse para muchas cosas que hay que hacer ms de una vez. Por ejemplo, se puede combinar con el comando range():
serie = range(1,11) total = 0 imprimir "suma" nmero de serie: imprimir el nmero total = total + nmero imprimir "----" imprimir total

O cosas ms complejas como este:


alldaltons = ["Joe", "William", "Jack", "Averell"] para n en range(4): imprimir alldaltons [n], "es el nmero de Dalton", n

Ver que el comando de range() tambin tiene esa extraa particularidad que comienza con 0 (si no se especifica el nmero inicial) y que su ltimo nmero uno ser menor que el nmero final que especifique. Es decir, por supuesto, as que funciona bien con otros comandos de python. Por ejemplo:
alldaltons = ["Joe", "William", "Jack", "Averell"] total = len(alldaltons) para n en range(total): imprimir alldaltons [n]

Otro uso interesante de bloques con sangra es con el si comando. Si un bloque de cdigo slo se ejecuta si se cumple una determinada condicin, por ejemplo:
alldaltons = ["Joe", "William", "Jack", "Averell"] Si "Joe" en alldaltons: imprimir "We found que Dalton!!!!!!"

Por supuesto esto ser siempre la primera frase de la impresin, pero intente reemplazar la segunda lnea por:
Si "Lucky" en alldaltons:

A continuacin, se imprime nada. Tambin podemos especificar una cosa: declaracin:


alldaltons = ["Joe", "William", "Jack", "Averell"] Si "Lucky" en alldaltons: imprimir "We found que Dalton!!!!!!" otra cosa: imprimir "Esa Dalton no existe!"

Funciones

El comandos estndar de python no son muchos. En la versin actual de python hay alrededor de 30 aos, y ya sabemos que varios de ellos. Pero Imagnese si podramos inventar nuestros propios comandos? Pues bien, podemos, y es sumamente fcil. De hecho, la mayora de los mdulos adicionales que se pueden conectar en su instalacin de python hacen justo que, agregar comandos que puede utilizar. un comando personalizado en python se llama a una funcin y se realiza como esta:
Def printsqm(myValue): imprimir str(myValue) + "metros cuadrados" printsqm(45)

Muy simple: el comando de def() define una nueva funcin. Asgnele un nombre, y dentro de los parntesis definir argumentos que vamos a usar en nuestra funcin. Los argumentos son datos que se pasan a la funcin. Por ejemplo, mirar el comando len(). Si escribes slo len() por s sola, python le dir que necesita un argumento. Es decir, desea len() de algo, derecho? Por ejemplo, a continuacin, podr escribir len(myList) y obtendr la longitud de myList. Pues bien, myList es un argumento que se pasa a la funcin len(). La funcin de len() est definida de tal manera que sabe qu hacer con lo que se pasa a la misma. Mismo como hicimos aqu. El nombre de "myValue" puede ser cualquier cosa, y que se utilizar slo dentro de la funcin. Es ms que un nombre que usted da al argumento de manera que pueda hacer algo con ella, pero tambin sirve para que la funcin sepa cuntos argumentos a esperar. Por ejemplo, si haces esto:
printsqm(45,34)

Habr un error. Nuestra funcin fue programada para recibir slo un argumento, pero recibi dos, 45 y 34. En lugar de ello podramos hacer algo como esto:
Def sum(val1,val2): total = val1 + val2 retorno total Sum(45,34) myTotal = sum(45,34)

Hicimos una funcin que recibe dos argumentos, les sumas y devuelve ese valor. Volviendo algo es muy til, porque podemos hacer algo con el resultado, tal como se almacena en la variable myTotal. Por supuesto, ya que estamos en el intrprete y todo se imprime, haciendo:
Sum(45,34)

se imprimir el resultado en la pantalla, pero fuera del intrprete, ya que existe el comando de impresin no ms dentro de la funcin, nada que aparecen en la pantalla. Tendra que hacer:
impresin sum(45,34)

de tener algo impreso. Obtenga ms informacin acerca de las funciones aqu .

Mdulos
Ahora que tenemos una buena idea de cmo funciona el Pitn, necesitaremos una ltima cosa: cmo trabajar con archivos y mdulos. Hasta ahora, escribimos python instrucciones lnea por lnea en el intrprete, derecho? Qu sucede si podramos escribir varias lneas juntos y tenerlos ejecutado todos a la vez? Sin duda sera practico para hacer las cosas ms complejas. Y podramos ahorrar nuestro trabajo demasiado. Pues bien, tambin es extremadamente fcil. Simplemente abra un editor de texto (como el Bloc de notas de windows) y escribir todos tus python lneas, del mismo modo como escribirlos en el intrprete, con muescas, etc.. A continuacin, guarde ese archivo en algn lugar, preferiblemente con una extensin de .py. Eso es todo, tiene un programa completo de python. Por supuesto, hay editores mucho mejores que el Bloc de notas, pero es slo para mostrarle que un programa de python es nada ms que un archivo de texto. Para hacer python ejecuta ese programa, hay cientos de maneras. En ventanas, simplemente pulse el botn derecho de su archivo, bralo con python y ejecutarlo. Pero tambin puede ejecutarla desde el intrprete de python por s mismo. Para ello, el intrprete debe saber donde est su programa .py. En FreeCAD, la forma ms sencilla es colocar su programa en un lugar que intrprete de python de FreeCAD sabe de forma predeterminada, tales como la carpeta bin del FreeCAD, o cualquiera de las carpetas mod. Supongamos que escribimos un archivo como esta:
Def sum(a,b): devolver un + b imprimir "cargado de test.py correctamente"

y guardamos como test.py en nuestro directorio FreeCAD/bin. Ahora, veamos iniciar FreeCAD y en la ventana de intrprete, escribir:
prueba de importacin

sin la extensin .py. Esto simplemente ejecutar el contenido del archivo, lnea por lnea, como si nos habamos escrito en el intrprete. Se crear la funcin suma, y el mensaje se imprimir. Hay una gran diferencia: el comando de importacin se realiza no slo para ejecutar programas escritos en los archivos,

como el nuestro, sino tambin para cargar las funciones en su interior, para que estn disponibles en el intrprete. Archivos que contienen funciones, como la nuestra, se denominan mdulos. Normalmente cuando escribimos una funcin sum() en el intrprete, ejecutarlo simplemente como ste:
Sum(14,45)

Como se hizo anteriormente. Cuando importa un mdulo que contiene nuestra funcin sum(), la sintaxis es un poco diferente. Hacemos:
Test.Sum(14,45)

Es decir, el mdulo se importa como un "contenedor", y todas sus funciones estn dentro. Esto es muy til, porque podemos importar un montn de mdulos y mantenerlo todo bien organizado. Por lo tanto, bsicamente, en todo el mundo ver something.somethingElse, con un entre puntos, lo que significa somethingElse est dentro de algo. Tambin podemos tirar de la parte de la prueba y importar nuestra funcin sum() directamente en el espacio principal intrprete, como este:
de importacin de prueba * Sum(12,54)

Bsicamente todos los mdulos se comportan como ese. Importar un mdulo y, a continuacin, puede utilizar sus funciones como ste: module.function(argument). Casi todos los mdulos de hacen: definir funciones, tipos de datos nuevos y clases que se pueden utilizar en el intrprete o en sus propios mdulos de python, porque nada le impide que importar mdulos dentro de su mdulo! Una ltima cosa sumamente til. Cmo sabemos lo que tenemos los mdulos, cules son las funciones dentro de y cmo utilizarlas (es decir, qu tipo de argumentos que necesitan)? Ya vimos python tiene una funcin de help(). Haciendo:
Help() mdulos

Nos dar una lista de todos los mdulos disponibles. Ahora podemos escribir q para salir de la ayuda interactiva y importar cualquiera de ellos. Incluso nos podemos examinar su contenido con el comando dir()
matemticas de importacin Dir(Math)

Vamos a ver todas las funciones contenidas en el mdulo de matemticas, as como material extrao llamado __doc__, __file__, __name__. El __doc__ es

extremadamente til, se trata de un texto de documentacin. Cada funcin de mdulos (decollete) tiene un __doc__ que explica cmo utilizarlo. Por ejemplo, vemos que hay una funcin de pecado en lado el mdulo de matemticas. Quieres saber cmo usarlo?
impresin math.sin.__doc__

Comenzando con FreeCAD


Bien, creo que usted debe saber tener una buena idea de cmo funciona la Pitn, y puede comenzar a explorar lo que FreeCAD tiene que ofrecer. Las funciones de python de FreeCAD son todos bien organizados en diferentes mdulos. Algunos de ellos ya se cargan (importado) al iniciar FreeCAD. Por lo tanto, slo hacer
Dir()

y leer a Conceptos bsicos de secuencias de comandos de FreeCAD... Por supuesto, vimos aqu slo una parte muy pequea del mundo python. Hay muchos conceptos importantes que no mencionamos aqu. 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. Casi todas las partes de FreeCAD como la interfaz, el contenido de la escena, incluso la representacin de este contenido en las vistas 3d son accesibles desde el intrprete de python incorporada o desde sus propios scripts. De resultas de ello, FreeCAD es probablemente una de las ms aplicaciones de ingeniera profundamente personalizables disponible hoy en da. En su estado actual, sin embargo, FreeCAD tiene muy pocos comandos "nativos" para interactuar en los objetos 3D, principalmente porque es todava en fase temprana de desarrollo, sino tambin porque la filosofa detrs de ella es ms para proporcionar una plataforma para el desarrollo de CAD que una aplicacin diseada por el usuario. Pero la facilidad de python interior FreeCAD probablemente ayudar mucho para ver rpidamente nuevas funcionalidades, siendo desarrollado por "usuarios de poder", o, por lo general, los usuarios que saben un poco de programacin de python, de secuencias de comandos, esperamos, usted mismo.

Si no est familiarizado con python, recomendamos que usted busque para tutoriales en internet y echar un vistazo rpido a su estructura. Python es un lenguaje muy fcil para aprender, sobre todo porque se puede ejecutar dentro de un intrprete, donde desde comandos simples para completar los programas se pueden ejecutar sobre la marcha, sin la necesidad de compilar nada. FreeCAD tiene un intrprete de python incorporada.

El intrprete
Desde el intrprete, puede acceder a todos los mdulos de sus sistema instalado python, as como los mdulos integrados de FreeCAD y todos los mdulos adicionales de FreeCAD instal posteriormente. La captura de pantalla siguiente muestra la pitn intrprete:

Desde el intrprete, puede ejecutar cdigo python y navegar a travs de las clases disponibles y la funcin. FreeCAD proporciona un explorador de clase muy til para la exploracin 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), se clase navegador abre una ventana, donde puede navegar entre las subclases disponibles y los mtodos. Cuando se selecciona algo, se muestra un texto de ayuda asociado (si existe

Por lo tanto, inicie aqu escribiendo aplics o Gui. a ver qu pasa. Otro modo ms genrico de python de explorar el contenido de los mdulos y las clases es utilizar el comando de impresin dir(). Por ejemplo, si escribe Imprimir dir() enumerar todos los mdulos cargados actualmente en FreeCAD. dir(App) de impresin le mostrar todo dentro del mdulo de la aplicacin, etc.. Otra caracterstica til del intrprete es la posibilidad de volver atrs en el historial de comandos y recuperar una lnea de cdigo ya escrito anteriormente. Para navegar en la historia de comando, utilice CTRL + arriba o CTRL + abajo. Haciendo clic derecho en la ventana de intrprete, usted tambin tiene varias otras opciones, tales como copia toda la historia (til para experimentar algo aqu y, a continuacin, 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 documentacin completa, generado en tiempo real de todos los mdulos de python disponibles para el intrprete de FreeCAD, incluyendo python y mdulos integrados de FreeCAD, mdulos de sistema instalado y mdulos adicionales de FreeCAD. La documentacin disponible all depende de cunto esfuerzo cada desarrollador de mdulo poner en documentar su cdigo, pero generalmente mdulo de python tienen la reputacin de ser bastante bien documentado. La ventana de FreeCAD debe permanecer abierta para este sistema de documentacin trabajar.

Mdulos integrados
Dado que FreeCAD est diseado para ejecutarse sin interfaz grfica 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 mdulos integrados de FreeCAD se llaman APP y Gui. Estos dos mdulos tambin pueden accederse desde secuencias de comandos de fuera del intrprete, por los respectivos nombres de FreeCAD y FreeCADGui.
En el mdulo de aplicacin, usted encontrar todo lo relacionado a la aplicacin en

s, como mtodos para la apertura o archivos de cierre y a los documentos, como la configuracin del documento activo o la lista de su contenido.

En el mdulo de Gui, encontrar herramientas para acceso y gestin de elementos

de la Gui, como los workbenches y sus barras de herramientas y, ms interesante, la representacin grfica de todos los contenidos de FreeCAD.

Listado de todo el contenido de los mdulos es tarea un poco contraproducente, ya que crecen muy rpido a lo largo de desarrollo de FreeCAD. Pero las dos exploracin herramientas proporcionadas (el explorador de clases y la ayuda de python) deberan proporcionarle, en cualquier momento, una documentacin completa y actualizada de estos mdulos.

Los objetos de aplicacin y Gui


Como dijimos, en FreeCAD, todo est separada entre el ncleo y la representacin. Esto incluye tambin los objetos 3D. Puede obtener acceso a propiedades definitorias de objetos (llamados caractersticas en FreeCAD) a travs del mdulo de aplicacin y cambiar la forma en que estn representados en la pantalla a travs del mdulo de Gui. Por ejemplo, un cubo tiene propiedades que lo definen, como anchura, longitud, altura, se almacenan en un objeto de aplicacin y representacin, 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 slo 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 grficos, tales como listas, hojas de clculo o anlisis de elementos. Para cada objeto de la aplicacin en el documento, existe un objeto correspondiente de la Gui. El documento en s, en realidad, tambin tiene aplicacin y una Gui objetos. Esto, por supuesto, slo es vlido cuando se ejecuta FreeCAD con su interfaz completa. En la versin de lnea de comandos, no GUI existe, por lo que slo los objetos de aplicacin son sencillo. Nota que la Gui es parte de los objetos genera de nuevo cada vez que un objeto de aplicacin est marcado como "a ser recalculadas" (por ejemplo, cuando uno de sus parmetros cambiado), por lo que los cambios que podra haber hecho directamente al objeto Gui podra perderse. para acceder a la parte de aplicacin de algo, escribe:
myObject = App.ActiveDocument.getObject("ObjectName")

donde "ObjectName es el nombre del objeto. Tambin 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. Tambin puede escribir:


myViewObject = App.ActiveDocument.ObjectName.ViewObject

Los objetos Document


En FreeCAD todo el trabajo se encuentra dentro de documentos. Un documento contiene su geometra y puede guardarse en un archivo. Pueden abrir varios documentos al mismo tiempo. El documento, como la geometra contenido en su interior, tiene objetos de aplicacin y Gui. Objeto de la aplicacin contiene las definiciones de la geometra 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 aplicacin 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

Introduccin
En primer lugar tiene que importar el mdulo de Mesh:
import Mesh

Despus de usted tiene acceso al mdulo de malla y la clase de malla que facilitar las funciones de la versin C++ Mesh-ncleo de FreeCAD.

Creacin y carga
Para crear un objeto de malla vaco slo utilice el constructor estndar:
mesh = Mesh.Mesh()

Tambin puede crear un objeto desde un archivo


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

Qu formatos de archivo que se puede utilizar para crear una malla es notable aqu . O crearlo fuera de un conjunto de tringulos descrito por sus puntos de esquina:
planarMesh = [ # triangle 1 [-0.5000,-0.5000,0.0000],[0.5000,0.5000,0.0000],[0.5000,0.5000,0.0000], #triangle 2 [-0.5000,-0.5000,0.0000],[0.5000,-0.5000,0.0000], [0.5000,0.5000,0.0000], ] planarMeshObject = Mesh.Mesh(planarMesh)

El ncleo de la malla se encarga acerca de cmo crear una estructura de datos correcto topolgico por clasificacin puntos coincidentes y bordes juntos. Ms adelante se ver cmo puede probar y examinar los datos de la malla.

Modelado
Para crear geometras regulares que puede utilizar Python secuencia de comandos BuildRegularGeoms.py.
import BuildRegularGeoms

Esta secuencia de comandos proporciona mtodos para definir cuerpos de rotacin simple como elipsoides, esferas, cilindros, conos y toroides. Y tambin tiene un mtodo para crear un cubo simple. Para crear un toroide, por ejemplo, puede hacer lo siguiente:
t = BuildRegularGeoms.Toroid(8.0, thousands triangles m = Mesh.mesh(t) 2.0, 50) # list with several

Los dos primeros parmetros definen los radios del toroide y el tercer parmetro es un factor de sub-sampling para cuntos tringulos se crean. Cuanto mayor sea este valor la ms suave y cuanto menor sea el ms gruesa el cuerpo es. La clase de malla proporciona un conjunto de funciones booleanas que pueden utilizarse para fines de modelado. Proporciona la Unin, la interseccin y la diferencia de dos objetos de malla.
m1, m2 m3 = Mesh.mesh(m1) m3.unite(m2) m4 = Mesh.mesh(m1) m4.intersect(m2) m5 = Mesh.mesh(m1) m5.difference(m2) m6 = Mesh.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

m6.difference(m1) is different to m5

# the difference of m2 and m1, usually the result

Por ltimo, un ejemplo completo que computa la interseccin entre una esfera y un cilindro que intersecta con la esfera.
import Mesh, BuildRegularGeoms sphere = Mesh.mesh( BuildRegularGeoms.Sphere(5.0, 50) ) cylinder = Mesh.mesh( BuildRegularGeoms.Cylinder(2.0, 10.0, True, 1.0, 50) ) diff = sphere diff.difference(cylinder) d = FreeCAD.newDocument() d.addObject("Mesh::Feature","Diff_Sphere_Cylinder").Mesh=diff d.recompute()

Examinar y pruebas Escribir sus propios algoritmos Exportar


Incluso puede escribir la malla a un mdulo de python:
m.write("D:/Develop/Projekte/FreeCAD/FreeCAD_0.7/Mod/Mesh/SavedMesh.py ") import SavedMesh m2 = Mesh.mesh(SavedMesh.faces)

Cosas relacionadas con la Gui Probabilidades y extremos


Una extensa, debera relacionados difciles de usar, fuente de malla con secuencias de comandos son las secuencias de comandos de prueba de unidad del mdulo de malla. En esta unidad se llaman a mtodos literalmente todas las pruebas y todas las propiedades o atributos son ajustados. As que si eres lo suficientemente audaz, eche un vistazo el mdulo de prueba de la unidad .

Introduccin
Nos aqu le explicar cmo controlar la Mdulo de parte directamente desde el intrprete de python FreeCAD, o desde cualquier secuencia de comandos externo. Asegrese de examinar el secuencias de comandos seccin y la Bsico de secuencias de comandos de FreeCAD pginas si necesita obtener ms informacin acerca de cmo funciona el pitn de secuencias de comandos en FreeCAD. Primero para utilizar la funcionalidad de mdulo de parte tiene que cargar el mdulo de parte en el intrprete: import Part

Diagrama de clase
Se trata de una visin UML acerca de las clases ms importantes del mdulo de parte de:

Geometra
Los objetos geomtric son el bloque de creacin de todos los objetos topolgicos:
GEOM Clase base de los objetos geomtricos LINE Una lnea recta en 3D, definida por el punto de partida y y punto de CIRCLE Crculo o segmento del crculo, definido por un punto central y el inicio y el

punto final
...... y pronto algunas ms;-)

Topologa
Los siguientes tipos de datos topolgicos estn disponibles:
Compuestos Un grupo de cualquier tipo de objeto topolgico. COMPSOLID A compuesto slido es un conjunto de slidos conectados por sus

caras. Se expande las nociones de WIRE y SHELL para slidos.


SOLID Una parte del espacio limitado por proyectiles. Es tres dimensional. SHELL A conjunto de caras conectadas por sus bordes. Un shell puede ser abierto

o cerrado.
FACE En 2D es parte de un plano; en 3D es parte de una superficie. Su geometra

se encuentra restringida (recorte) por contornos. Dos dimensiones es.

WIRE A conjunto de bordes conectados por sus vrtices. Puede ser un contorno

abierto o cerrado dependiendo de si los bordes estn vinculados o no.


EDGE A elemento topolgico correspondiente a una curva sobrio. Un borde est

generalmente limitado por vrtices. Tiene una dimensin.


VRTICE Un elemento topolgico correspondiente a un punto. Tiene cero

dimensin.
SHAPE Un trmino genrico que abarca todo lo anterior.

Creacin de tipos bsicos


Breve descripcin
Puede crear fcilmente objetos topolgicos bsicos con los mtodos de "make...()" desde el mdulo de elemento:
b = Part.makeBox(100,100,100) Part.show(b)

Un par de otros mtodos de make...() disponibles:


makeBox(l,w,h,[p,d])--crear una casilla ubicada en p y apuntando en la direccin d

con las dimensiones (l, w, h). De forma predeterminada p es Vector(0,0,0) y d es Vector(0,0,1)


makeCircle(radius,[p,d,angle1,angle2])--crear un crculo con un radio determinado.

Por p=Vector(0,0,0) de forma predeterminada, d=Vector(0,0,1), ngulo1 = 0 y ngulo2 = 360


makeCompound(list)--crear un compuesto de una lista de las formas makeCone(radius1,radius2,height,[p,d,angle])--crear un cono con un dado de radios

y altura. Por p=Vector(0,0,0) de forma predeterminada, el d=Vector(0,0,1) y el ngulo = 360


makeCylinder(radius,height,[p,d,angle])--crear un cilindro con un radio determinado y

altura. Por p=Vector(0,0,0) de forma predeterminada, el d=Vector(0,0,1) y el ngulo = 360


makeLine((x1,y1,z1),(x2,y2,z2))--crear una lnea de dos puntos makePlane(length,width,[p,d])--crear un plano con la longitud y anchura. Por defecto

p=Vector(0,0,0) y d=Vector(0,0,1)
makePolygon(list)--crear un polgono de una lista de puntos makeSphere(radius,[p,d,angle1,angle2,angle3])--crear una esfera con un radio

determinado. Por defecto p=Vector(0,0,0), d=Vector(0,0,1), ngulo1 = 0, ngulo2 = 90 y ngulo3 = 360


makeTorus(radius1,radius2,[p,d,angle1,angle2,angle3])--crear un toro con un dado

de radios. Por defecto p=Vector(0,0,0), d=Vector(0,0,1), ngulo1 = 0, ngulo2 = 360 y ngulo3 = 360

Explicaciones detalladas
En primer lugar importar lo siguiente:
>>> import Part >>> from FreeCAD import Base

Cmo crear un vrtice? >>> vertex = Part.Vertex((1,0,0))

vrtice es un punto creado en x = 1, y = 0, z = 0 dado un objeto de vrtice, usted puede encontrar su ubicacin como este:
>>> vertex.Point Vector (1, 0, 0) Cmo crear un borde?

Un borde es nada ms que una lnea con dos vrtices:


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

Nota: No se puede crear un borde, pasando dos vrtices. Usted puede encontrar la longitud y el centro de un borde como este:
>>> edge.Length 10.0 >>> edge.CenterOfMass Vector (5, 0, 0) Cmo crear un cable?

Un alambre puede crearse desde una lista de los bordes o incluso una lista de hilos:
>>> >>> >>> >>> >>> >>> >>> >>> edge1 = Part.makeLine((0,0,0), (10,0,0)) edge2 = Part.makeLine((10,0,0), (10,10,0)) wire1 = Part.Wire([edge1,edge2]) edge3 = Part.makeLine((10,10,0), (0,10,0)) edge4 = Part.makeLine((0,10,0), (0,0,0)) wire2 = Part.Wire([edge3,edge4]) wire3 = Part.Wire([wire1,wire2]) wire3.Edges

[<Edge object at 016695F8>, <Edge object at 0197AED8>, <Edge object at 01828B20>, <Edge object at 0190A788>] >>> Part.show(wire3)

Part.Show(wire3) mostrar cuatro lneas como un cuadrado:


>>> wire3.Length 40.0 >>> wire3.CenterOfMass Vector (5, 5, 0) >>> wire3.isClosed() True >>> wire2.isClosed() False Cmo crear un rostro?

Slo los rostros creados a partir de cables cerrados ser vlidos. En este ejemplo, wire3 es un alambre cerrado pero wire2 no es un alambre cerrado (vase ms arriba)
>>> face = Part.Face(wire3) >>> face.Area 99.999999999999972 >>> face.CenterOfMass Vector (5, 5, 0) >>> face.Length 40.0 >>> face.isValid() True >>> sface = Part.Face(wire2) >>> face.isValid() False

Slo caras tendr un rea, no cables ni bordes.


Cmo crear un crculo?

crculo = Part.makeCircle(radius,[center,dir_normal,angle1,angle2])--crear un crculo con un radio determinado Por defecto, center=Vector(0,0,0), dir_normal=Vector(0,0,1), ngulo1 = 0 y ngulo2 = 360. Se puede crear simplemente como un crculo como esto:
>>> circle = Part.makeCircle(10) >>> circle.Curve Circle (Radius : 10, Position : (0, 0, 0), Direction : (0, 0, 1))

Si desea crearla en cierta posicin y con cierta direccin


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

ccircle se crear a distancia 10 de origen en x y estar mirando hacia el eje x. Nota: makeCircle slo acepta Base.Vector() de posicin y normal, pero no de tuplas. Tambin puede crear parte del crculo dando el ngulo del comienzo y ngulo de final como:
>>> from math import pi >>> arc1 = Part.makeCircle(10, Base.Vector(0,0,0), Base.Vector(0,0,1), 0, 180) >>> arc2 = Part.makeCircle(10, Base.Vector(0,0,0), Base.Vector(0,0,1), 180, 360)

Arc1 y arc2 conjuntamente harn un crculo. Deben ser los ngulos siempre en grados, si tienes radianes simplemente conversin mediante la frmula: grados = radianes * 180/PI o utilizando el mdulo de matemticas de python (despus de hacer matemticas de importacin, por supuesto): grados = math.degrees(radians)
Cmo crear un arco a lo largo de puntos?

Lamentablemente no existe ninguna funcin de makeArc, pero tenemos la funcin Part.Arc para crear un arco a lo largo de tres puntos. Bsicamente puede suponerse como un arco unindose a punto de inicio y el punto final a lo largo del punto medio. Part.Arc crea un objeto de arco en que .toShape() tiene que ser llamado para obtener el objeto de borde, que generalmente es producida por makeLine o makeCircle
>>> arc Part.Arc(Base.Vector(0,0,0),Base.Vector(0,5,0),Base.Vector(5,5,0)) >>> arc <Arc object> >>> arc_edge = arc.toShape() =

Nota: Arco slo acepta Base.Vector() de puntos pero no de tuplas. arc_edge es lo que queremos que nos podemos mostrar utilizando Part.show(arc_edge). Si desea que una pequea porcin de un crculo como un arco, es posible tambin:

>>> from math import pi >>> circle = Part.Circle(Base.Vector(0,0,0),Base.Vector(0,0,1),10) >>> arc = Part.Arc(c,0,pi) Cmo crear un polgono o una lnea a lo largo de puntos?

Una lnea a lo largo de mltiples puntos no es nada, pero la creacin de un alambre con mltiples aristas. funcin makePolygon toma una lista de puntos y crea un alambre a lo largo de estos puntos:
>>> lshape_wire = Part.makePolygon([Base.Vector(0,5,0),Base.Vector(0,0,0),Base.Vector(5, 0,0)]) Cmo crear un plano?

Plano es una superficie plana, lo que significa una cara en 2D makePlane(length,width,[start_pnt,dir_normal])--crear un plano por defecto start_pnt=Vector(0,0,0) y dir_normal=Vector(0,0,1). dir_normal=Vector(0,0,1), se crear el eje z opuestas de plano. dir_normal=Vector(1,0,0) crear la cara de plano eje x:
>>> plane = Part.makePlane(2,2) >>> plane <Face object at 028AF990> >>> plane = Part.makePlane(2,2, Base.Vector(0,1,0)) >>> plane.BoundBox BoundBox (3, 0, 0, 5, 0, 2)

Base.Vector(3,0,0),

BoundBox es un paraleleppedo que encierra el plano con una diagonal, empezando en (3,0,0) y terminando en (5,0,2). Aqu el espesor de BoundBox en el eje y es cero. Nota: makePlane slo acepta Base.Vector() para start_pnt y dir_normal pero no de tuplas
Cmo crear una elipse?

Para crear una elipse de all son de varias maneras:


Part.Ellipse()

Crea una elipse con radio mayor 2 y radio menor 1 con el centro en (0,0,0)
Part.Ellipse(Ellipse)

Crear una copia de la elipse determinada


Part.Ellipse(S1,S2,Center)

Crea una elipse centrada en el centro de punto, donde el plano de la elipse se define por el centro, S1 y S2, su eje principal se define por el centro y S1, su radio mayor es la distancia entre el centro y S1 y su radio menor es la distancia entre S2 y el eje principal.
Part.Ellipse(Center,MajorRadius,MinorRadius)

Crea una elipse con radios mayores y menores, MajorRadius y MinorRadius y localizado en el plano definido por el centro y la normal (0,0,1)
>>> eli = Part.Ellipse(Base.Vector(10,0,0),Base.Vector(0,5,0),Base.Vector(0,0,0) ) >>> Part.show(eli.toShape())

En el cdigo anterior hemos aprobado S1, S2 y centro. De forma similar a arco, Ellipse tambin crea un objeto elipse pero no edge, as que necesitamos convertirlo en arista a travs de toShape() para mostrar Nota: Arco slo acepta Base.Vector() de puntos pero no de tuplas
>>> eli = Part.Ellipse(Base.Vector(0,0,0),10,5) >>> Part.show(eli.toShape())

para el constructor de elipse anterior hemos aprobado Centro, MajorRadius y MinorRadius


Cmo crear un aro?

makeTorus(radius1,radius2,[pnt,dir,angle1,angle2,angle])--crear un toro con un dado de radios y ngulos. Por defecto puntos = vector (0,0,0), dir = vector (0,0,1), ngulo1 = 0, ngulo1 = 360 y ngulo = 360 considere la posibilidad de un toro como pequeo crculo barrer a lo largo de un gran crculo: radius1 es el radio de cirlce grande, radius2 es el radio de un crculo pequeo, puntos es el centro del Toro y dir es la direccin normal. ngulo1 y ngulo2 son los ngulos en radianes para el pequeo crculo, para crear un arco que el ltimo ngulo de parmetro es hacer una seccin de un toro:
>>> torus = Part.makeTorus(10, 2)

El cdigo anterior crear un toro con 20(radius 10) de dimetro y espesor 4 (cirlce pequeo radio 2)

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

El cdigo anterior crear una divisin del Toro


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

El cdigo anterior, crear un toro de semi, slo el ltimo parmetro es cambiado, es decir, el ngulo y ngulos restantes son valores predeterminados. Dando el ngulo 180 crear un toro de 0 a 180, es decir, medio
Cmo hacer un cuadro o un paraleleppedo?

makeBox(length,width,height,[pnt,dir])--crear una casilla ubicada en puntos con las dimensiones (longitud, anchura y altura) Por defecto pnt=Vector(0,0,0) y dir=Vector(0,0,1)
>>> box = Part.makeBox(10,10,10) >>> len(box.Vertexes) 8 Cmo hacer una esfera?

makeSphere (radio, [puntos, dir, ngulo1, ngulo2, ngulo3])--crear una esfera con un radio determinado. Por defecto pnt=Vector(0,0,0), dir=Vector(0,0,1), ngulo1 =-90, ngulo2 = 90 y ngulo3 = 360. ngulo1 y ngulo2 son la vertical mnima y mxima de la esfera, ngulo3 es el dimetro de la esfera propia
>>> sphere = Part.makeSphere(10) >>> hemisphere Part.makeSphere(10,Base.Vector(0,0,0),Base.Vector(0,0,1),-90,90,180) Cmo hacer una bomba?

makeCylinder(radius,height,[pnt,dir,angle])--crear un cilindro con un radio determinado y altura Por defecto pnt=Vector(0,0,0),dir=Vector(0,0,1) y ngulo = 360
>>> cylinder = Part.makeCylinder(5,20) >>> partCylinder Part.makeCylinder(5,20,Base.Vector(20,0,0),Base.Vector(0,0,1),180)

Cmo hacer un cono?

makeCone(radius1,radius2,height,[pnt,dir,angle])--crear un cono con dado radios y altura Por pnt=Vector(0,0,0) de forma predeterminada, el dir=Vector(0,0,1) y el ngulo = 360
>>> cone = Part.makeCone(10,0,20) >>> semicone Part.makeCone(10,0,20,Base.Vector(20,0,0),Base.Vector(0,0,1),180)

Operaciones booleanas
Cmo cortar una forma de otros?

Cut(...)
Difference of this and a given topo shape. >>> cylinder Part.makeCylinder(3,10,Base.Vector(0,0,0),Base.Vector(1,0,0)) >>> sphere = Part.makeSphere(5,Base.Vector(5,0,0)) >>> diff = cylinder.cut(sphere) >>> diff.Solids [<Solid object at 018AB630>, <Solid object at 0D8CDE48>] >>> diff.ShapeType 'Compound' =

Patio de recreo: corte shapes.png Playground:cut.png


Cmo obtener comn entre dos formas?

Common(...)
Intersection of this and a given topo shape. >>> cylinder1 = Part.makeCylinder(3,10,Base.Vector(0,0,0),Base.Vector(1,0,0)) >>> cylinder2 = Part.makeCylinder(3,10,Base.Vector(5,0,5),Base.Vector(0,0,1)) >>> common = cylinder1.common(cylinder2)

Cylinders.png de patio de recreo: comn Playground:common.png


Cmo fusionar dos formas?

FUSE(...)
Union of this and a given topo shape. >>> cylinder1 Part.makeCylinder(3,10,Base.Vector(0,0,0),Base.Vector(1,0,0)) =

>>> cylinder2 = Part.makeCylinder(3,10,Base.Vector(5,0,5),Base.Vector(0,0,1)) >>> fuse = cylinder1.fuse(cylinder2) >>> fuse.Solids [<Solid object at 0DA5B8A0>] Cmo a la seccin de un slido con dar forma?

Section(...)
Section of this with a given topo shape.

devolver una curva de interseccin, un compuesto con bordes


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

Playground:Section.PNG

Explorando formas
Fcilmente puede explorar la estructura de datos topolgicos:
import Part b = Part.makeBox(100,100,100) b.Wires w = b.Wires[0] w w.Wires w.Vertexes Part.show(w) w.Edges e = w.Edges[0] e.Vertexes v = e.Vertexes[0] v.Point

Escribiendo la lnea de arriba en el intrprete de python, obtendr una buena comprensin de la estructura de los objetos de la parte. Aqu nuestro comando makeBox() crea una forma slida. Este slido, como todos los de parte de slidos, contiene caras. Caras siempre contienen cables, que son listas de

aristas que bordean la cara. Cada cara tiene exactamente un alambre cerrado. En el cable, podemos mirar cada arista por separado y dentro de cada arista, podemos ver los vrtices. Bordes rectos tienen slo dos vrtices, obviamente. Parte vrtices son formas OCC, pero tienen un atributo de punto que devuelve un vector de FreeCAD agradable.

Explorar los bordes


En caso de una arista, que es una curva arbitraria, lo ms probable es que desee hacer un carcter. En FreeCAD los bordes son parametrizados por sus longitudes. Eso significa que usted podr caminar con una curva de borde por su longitud:
import Part anEdge = Part.makeBox(100,100,100).Edges[0] # make a box with 100mm edge length and get the first edge print anEdge.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 posicin. Esto significa que si el borde es 100 mm durante mucho tiempo la posicin de inicio es 0 y la posicin final 100.
anEdge.tangentAt(0.0) # tangent direction at the beginning anEdge.valueAt(0.0) # Point at the beginning anEdge.valueAt(100.0) # Point at the end of the edge anEdge.derivative1At(50.0) # first derivative of the curve in middle anEdge.derivative2At(50.0) # second derivative of the curve in middle anEdge.derivative3At(50.0) # third derivative of the curve in middle anEdge.centerOfCurvatureAt(50) # center of the curvature for position anEdge.curvatureAt(50.0) # the curvature anEdge.normalAt(50) # normal vector at that position defined)

the the the that

(if

Mediante la seleccin
Aqu vemos ahora cmo podemos utilizar la seleccin del usuario lo hizo en el visor. En primer lugar creamos un cuadro y lo muestra en el Visor
import Part Part.show(Part.makeBox(100,100,100)) Gui.SendMsgToActiveView("ViewFit")

Seleccione ahora algunas caras o bordes. Con esta secuencia de comandos puede recorrer en iteracin de todos los objetos seleccionados y sus elementos de sub:

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

Seleccione algunas aristas y esta secuencia de comandos calcula la longitud:


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

Ejemplos
Creacin de topologa simple

Ahora crearemos una topologa construyendo fuera de la geometra ms simple. Como un estudio de caso utilizamos una parte como se ve en la imagen que consta de cuatro vrtices, dos crculos y dos lneas.
Creacin de geometra

En primer lugar tenemos que crear las distintas partes geomtricas de este hilo. Y tenemos que cuidar que los vrtices de las piezas geomtricas se encuentran en el mismo posicin. De lo contrario ms tarde no podamos conectar las piezas geomtricas con una topologa! Por lo que creamos en primer lugar los puntos:
from V1 = V2 = V3 = V4 = Arco FreeCAD import Base Base.Vector(0,10,0) Base.Vector(30,10,0) Base.Vector(30,-10,0) Base.Vector(0,-10,0)

Para crear un arco de crculo hacemos un ayudante punto y crear el arco de crculo a travs de tres puntos:
VC1 = Base.Vector(-10,0,0) C1 = Part.Arc(V1,VC1,V4) # and the second one VC2 = Base.Vector(40,0,0) C2 = Part.Arc(V2,VC2,V3) Lnea

Cre la lnea puede ser muy simple fuera de los puntos:


L1 = Part.Line(V1,V2) # and the second one L2 = Part.Line(V4,V3) Poniendo todos juntos

El ltimo paso es colocar los elementos geomtricos de base juntos y hornear una forma topolgica:
S1 = Part.Shape([C1,C2,L1,L2]) Hacer un prisma

Ahora el cable en una direccin de la extrusin y hacer una forma 3D real:


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

La botella OCC
Un ejemplo tpico se encuentra en la Pgina de inicio de OpenCasCade rpido es cmo construir una botella. Este es un buen ejercicio para FreeCAD demasiado. De hecho, usted puede seguir en nuestro siguiente ejemplo y la pgina de la OCC, simultneamente, entienda bien cmo se implementan las estructuras de la OCC en FreeCAD. La secuencia de comandos completa a continuacin tambin se incluye en la instalacin de FreeCAD (dentro de la carpeta de mod/Part) y puede ser llamado desde el intrprete de python escribiendo:

import Part import MakeBottle bottle = MakeBottle.makeBottle() Part.show(bottle) La secuencia de comandos completa

Aqu es la secuencia de comandos de MakeBottle completa:


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

zMax = z faceToRemove = xp except: continue myBody = myBody.makeThickness([faceToRemove],-myThickness/50 , 1.e3) return myBody Explicacin detallada import Part, FreeCAD, math from FreeCAD import Base

Necesitamos, por supuesto, el mdulo de parte, sino tambin el mdulo de FreeCAD.Base, que contiene estructuras bsicas de FreeCAD como vectores y matrices.
def makeBottle(myWidth=50.0, myHeight=70.0, myThickness=30.0): aPnt1=Base.Vector(-myWidth/2.,0,0) aPnt2=Base.Vector(-myWidth/2.,-myThickness/4.,0) aPnt3=Base.Vector(0,-myThickness/2.,0) aPnt4=Base.Vector(myWidth/2.,-myThickness/4.,0) aPnt5=Base.Vector(myWidth/2.,0,0)

Aqu definimos nuestra funcin de makeBottle. Esta funcin puede ser llamada sin argumentos, como lo hicimos anteriormente, en los valores que caso predeterminado para anchura, altura, y se utilizar el espesor. A continuacin, definimos un par de puntos que se utilizar para la construccin de nuestro perfil base.
aArcOfCircle = Part.Arc(aPnt2,aPnt3,aPnt4) aSegment1=Part.Line(aPnt1,aPnt2) aSegment2=Part.Line(aPnt4,aPnt5)

Aqu definimos realmente la geometra: un arco, hecho de 3 puntos y dos de los segmentos de lnea, hecha de 2 puntos.
aEdge1=aSegment1.toShape() aEdge2=aArcOfCircle.toShape() aEdge3=aSegment2.toShape() aWire=Part.Wire([aEdge1,aEdge2,aEdge3])

Recuerde que la diferencia entre la geometra y las formas? Aqu construimos las formas fuera de nuestra geometra de construccin. 3 los bordes (bordes pueden ser rectos o curvos) y, a continuacin, un cable hecho de esos tres aristas.
aTrsf=Base.Matrix() aTrsf.rotateZ(math.pi) # rotate around the z-axis aMirroredWire=aWire.transformGeometry(aTrsf) myWireProfile=Part.Wire([aWire,aMirroredWire])

Hasta ahora hemos construido un perfil de slo la mitad. Es ms fcil que edificio todo el perfil del mismo modo, slo podemos espejo de lo que hicimos y pegue ambas partes juntos. Por lo que primero creamos una matriz. Una matriz es una manera muy comn para aplicar transformaciones a objetos en el mundo 3D, ya que puede contener en una estructura de todas las transformaciones bsicas que pueden sufrir los objetos 3D (mover, rotar y escalar). Aqu, despus de que creamos la matriz, nos reflejarlo, y creamos una copia de nuestro hilo con la matriz de transformacin aplicada. Ahora tenemos dos cables, y nos puede hacer un tercer cable fuera de ellos, ya que son de cables realmente listas de aristas.
myFaceProfile=Part.Face(myWireProfile) aPrismVec=Base.Vector(0,0,myHeight) myBody=myFaceProfile.extrude(aPrismVec) myBody=myBody.makeFillet(myThickness/12.0,myBody.Edges)

Ahora que tenemos un alambre cerrado, puede transformarse en una cara. Una vez que tenemos una cara, nos podemos extrusin. Al hacerlo, realmente hicimos un slido. A continuacin, aplicamos un filete poco agradable a nuestro objeto porque nos interesa un buen diseo, no nosotros?
neckLocation=Base.Vector(0,0,myHeight) neckNormal=Base.Vector(0,0,1) myNeckRadius = myThickness / 4. myNeckHeight = myHeight / 10 myNeck Part.makeCylinder(myNeckRadius,myNeckHeight,neckLocation,neckNormal)

Entonces, el cuerpo de nuestra botella est fabricado, todava tenemos que crear un cuello. Por lo tanto, hacemos un nuevo slido, con un cilindro.
myBody = myBody.fuse(myNeck)

La operacin de fusibles, que, en otras aplicaciones, a veces se llama a la Unin, es muy poderosa. Encargar de pegar lo que necesita para ser pegada y quitar partes que deben eliminarse.
return myBody

A continuacin, volvemos nuestra parte slida como resultado de nuestra funcin. Ese elemento slido, como cualquier otra forma parte, puede ser atribuido a un objeto en un documento de FreeCAD, con:
myObject FreeCAD.ActiveDocument.addObject("Part::Feature","myObject") myObject.Shape = bottle =

o, ms simple:
Part.show(bottle)

Cargar y guardar
Hay varias maneras de guardar su trabajo en el mdulo de parte. Por supuesto puede guardar el documento de FreeCAD, pero tambin puede guardar objetos de parte directamente a los formatos CAD comunes, tales como BREP, IGS, STEP y STL. Guardar una forma en un archivo es fcil. Hay disponibles de mtodos exportBrep(), exportIges(), exportStl() y exportStep() para todos los objetos de forma. Por lo tanto, haciendo:
import Part s = Part.makeBox(0,0,0,10,10,10) s.exportStep("test.stp")

Esto ahorra nuestro cuadro en un archivo STEP. Para cargar un archivo BREP, IGES o STEP, simplemente lo contrario:
import Part s = Part.Shape() s.read("test.stp")

Tenga en cuenta que importar o abrir archivos BREP, IGES o STEP tambin puede hacerse directamente desde el archivo - > Abrir o archivo - > men Importar. En este momento exportar es todava no es posible de esa manera, pero debera estar ah pronto.
< anterior: secuencias de comandos de malla siguiente: malla a la parte > ndice

Conversin de objetos de la parte a mallas


Convertir objetos de nivel superiores como Formas de parte en objetos ms simples, como mallas es una operacin bastante simple, donde obtener trianguladas todas las caras de un objeto Part. El resultado de esa triangulacin (mosaico), a continuacin, se utiliza para construir una malla:
#let's assume our document contains one part object import Mesh faces = [] shape = FreeCAD.ActiveDocument.ActiveObject.Shape triangles = shape.tessellate(1) # the number represents the precision of the tessellation) for tri in triangles[1]: face = [] for i in range(3): vindex = tri[i]

face.append(triangles[0][vindex]) faces.append(face) m = Mesh.Mesh(faces) Mesh.show(m)

A veces la triangulacin de ciertas caras ofrecidas por OpenCascade es bastante fea. Si la cara tiene un espacio rectangular de parmetro y no contiene ningn agujeros o otras curvas de recorte tambin puede crear una malla por cuenta propia:
import Mesh def makeMeshFromFace(u,v,face): (a,b,c,d)=face.ParameterRange pts=[] for j in range(v): for i in range(u): s=1.0/(u-1)*(i*b+(u-1-i)*a) t=1.0/(v-1)*(j*d+(v-1-j)*c) pts.append(face.valueAt(s,t)) mesh=Mesh.Mesh() for j in range(v-1): for i in range(u-1): mesh.addFacet(pts[u*j+i],pts[u*j+i+1],pts[u*(j+1)+i]) mesh.addFacet(pts[u*(j+1)+i],pts[u*j+i+1],pts[u*(j+1)+i+1]) return mesh

Conversin de mallas a objetos de parte


Conversin de mallas a parte de objetos es una operacin 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. Mallas son muy prcticos representar la geometra de forma libre y grandes escenas visuales, ya que es muy ligero, pero para CAD preferimos generalmente objetos de nivel superiores que llevan mucha ms informacin, tales como la idea de slido, o caras de curvas en lugar de tringulos. Convertir mallas a esos objetos de nivel superiores (a cargo de la Mdulo de parte en FreeCAD) no es una operacin fcil. Mallas pueden hacerse de miles de tringulos (por ejemplo cuando generados por un escner 3D), y habiendo slidos del mismo nmero de caras sera extremadamente pesado manipular. Por lo que generalmente desea optimizar el objeto al convertir. FreeCAD actualmente ofrece dos mtodos para convertir mallas en objetos de parte. El primer mtodo es una conversin simple y directa, sin cualquier optimizacin:

import Mesh,Part mesh = Mesh.createTorus() shape = Part.Shape() shape.makeShapeFromMesh(mesh.Topology,0.05) # the second arg is the tolerance for sewing solid = Part.makeSolid(shape) Part.show(solid)

El segundo mtodo ofrece la posibilidad de considerar facetas de malla coplanares cuando el ngulo entre ellas es en virtud de un determinado valor. Esto permite construir mucho las formas ms simples:
# let's assume our document contains one Mesh object import Mesh,Part,MeshPart faces = [] mesh = App.ActiveDocument.ActiveObject.Mesh segments = mesh.getPlanes(0.00001) # use rather strict tolerance here for i in segments: if len(i) > 0: # a segment can have inner holes wires = MeshPart.wireFromSegment(mesh, i) # we assume that the exterior boundary is that one with the biggest bounding box if len(wires) > 0: ext=None max_length=0 for i in wires: if i.BoundBox.DiagonalLength > max_length: max_length = i.BoundBox.DiagonalLength ext = i wires.remove(ext) # all interior wires mark a orientation, otherwise Part.Face fails for i in wires: i.reverse()

hole

and

must

reverse

their

# make sure that the exterior wires comes as first in the lsit wires.insert(0, ext) faces.append(Part.Face(wires)) shell=Part.Compound(faces) Part.show(shell) #solid = Part.Solid(Part.Shell(faces)) #Part.show(solid)

FreeCAD es bsicamente un collage de diferentes bibliotecas potentes, siendo los ms importantes openCascade , para la gestin y construccin de

geometra, Coin3d para mostrar la geometra, y Qt para poner todo esto en una interfaz grfica de usuario agradable. La geometra que aparece en las vistas 3D de FreeCAD son prestados por la biblioteca de Coin3D. Coin3D es una implementacin de la OpenInventor estndar. El software de openCascade tambin proporciona la misma funcionalidad, pero se decidi, en los inicios de FreeCAD, no para utilizar el Visor de openCascade integrada y ms bien cambiar al ms alto rendimiento coin3D software. OpenInventor es realmente un lenguaje de descripcin de la escena 3D. La escena que se describe en openInventor, a continuacin, se procesa en OpenGL en la pantalla. Coin3D se encarga de hacerlo, por lo que el programador no es necesario hacer frente a llamadas de openGL complejas, slo tiene que le proporcione cdigo vlido de OpenInventor. La gran ventaja es que openInventor es un estndar muy conocida y est bien documentado. Uno de los grandes trabajos que FreeCAD se hace por usted es bsicamente traducir informacin de geometra de openCascade en lengua openInventor. OpenInventor describe una escena 3D en forma de un scenegraph , como el siguiente:

de imagen de Mentor de inventor Un scenegraph openInventor describe todo lo que hace parte de una escena 3D, tales como la geometra, colores, materiales, luces, etc. y todo lo que organiza los datos en una estructura clara y cmoda. Todo se puede agrupar en subestructuras, lo que permite organizar el contenido de su escena bastante la manera que desee. Aqu hay un ejemplo de un archivo openInventor

#Inventor V2.0 ascii Separator { RotationXYZ { axis Z angle 0 } Transform { translation 0 0 0.5 } Separator {

Material { diffuseColor 0.05 0.05 0.05 } Transform { rotation 1 0 0 1.5708 scaleFactor 0.2 0.5 0.2 } Cylinder { } } }

Como puede ver, la estructura es muy simple. Utilice separadores para organizar los datos en bloques, un poco como sera organizar sus archivos en carpetas. Cada instruccin afecta a lo que viene a continuacin, por ejemplo los dos primeros elementos de nuestro separador de raz son una rotacin y una traduccin, ambos afectar el elemento siguiente, que es un separador. En ese separador, se define un material y transformacin otro. Por lo tanto, nuestro cilindro se vern afectado por ambas transformaciones, quien fue aplicada directamente y uno de los que se aplic a la separacin de su padre. Tambin contamos con muchos otros tipos de elementos para organizar nuestra escena, tales como grupos, switches o anotaciones. Podemos definir materiales muy complejos para nuestros objetos, con colores, texturas, modos de sombreado y transparencia. Tambin podemos definir incluso de movimiento, cmaras y luces. Incluso es posible incrustar piezas de secuencias de comandos en archivos de openInventor, para definir comportamientos ms complejos. Si ests interesado en aprender ms sobre openInventor, la cabeza directamente a su referencia ms famoso, el Mentor de inventor . En FreeCAD, normalmente, no necesitamos interactuar directamente con el scenegraph de openInventor. Todos los objetos en un documento de FreeCAD, siendo una malla, una forma de parte o cualquier otra cosa, obtiene automticamente convierte en cdigo de openInventor y insertado en el principal scenegraph que puede ver en una vista 3D. Ese scenegraph se actualiza continuamente cuando usted hacer modificaciones, aadir o eliminar objetos al documento. De hecho, cada objeto (en el espacio de la APP) tiene un proveedor de vista (un objeto correspondiente en el espacio de Gui), responsable de la emisin de cdigo openInventor.

Pero hay muchas ventajas para poder acceder directamente a la scenegraph. Por ejemplo, podemos cambiar temporalmente la aparicin de un objeto, o podemos aadir objetos a la escena que no tienen existencia real en el documento FreeCAD, tales como la geometra de construccin, ayudantes, sugerencias de grficas o herramientas tales como manipuladores o en pantalla informacin. FreeCAD s cuenta con varias herramientas para ver o modificar el cdigo de openInventor. Por ejemplo, el siguiente cdigo python mostrar la representacin openInventor de un objeto seleccionado:
obj = FreeCAD.ActiveDocument.ActiveObject viewprovider = obj.ViewObject print viewprovider.toString()

, Pero tambin contamos con un mdulo de python que permite el acceso completo a cualquier cosa administrado por Coin3D, tales como nuestro scenegraph FreeCAD. Por lo tanto, siga leyendo para Pivy .

Pivy es una biblioteca de enlace de python para Coin3d , usada por la biblioteca de procesamiento de 3D de FreeCAD. Cuando se importan en un intrprete de python ejecutndose, permite a dilogo directamente con cualquier ejecucin Coin3d scenegraphs , tales como las vistas 3D de FreeCAD, o incluso crear otros nuevos. Pivy se incluye en la instalacin estndar de FreeCAD. The coin library is divided into several pieces, coin itself, for manipulating scenegraphs and bindings for several GUI systems, such as windows or, like in our case, qt. Those modules are available to pivy too, depending if they are present on the system. The coin module is always present, and it is what we will use anyway, since we won't need to care about anchoring our 3D display in any interface, it is already done by FreeCAD itself. 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. Everything that appears in a FreeCAD 3D view is a coin scenegraph, organized the same way. We have one root node, and all objects on the screen are its children. FreeCAD has an easy way to access the root node of a 3D view scenegraph:
sg = FreeCADGui.ActiveDocument.ActiveView.getScenegraph()

print sg

This will return the root node:


<pivy.coin.SoSelection; proxy of <Swig Object of type 'SoSelection *' at 0x360cb60> >

We can inspect the immediate children of our scene:


for node in sg.getChilden() print node

Some of those nodes, such as SoSeparators or SoGroups, can have children themselves. The complete list of the available coin objects can be found in the official coin documentation. Probemos a aadir algo a nuestra scenegraph ahora. Agregaremos un cubo rojo agradable:
col = coin.SoBaseColor() col.rgb=(1,0,0) cub = coin.SoCube() myCustomNode = coin.SoSeparator() myCustomNode.addChild(col) myCustomNode.addChild(cub) sg.addChild(myCustomNode)

y aqu est nuestro cubo rojo (nice). Ahora, probemos a esto:


col.rgb=(1,1,0)

Ver? todo es an accesible y modificable sobre la marcha. Sin necesidad de volver a calcular o repintado de nada, moneda se encarga de todo. Puede aadir cosas a tu scenegraph, cambiar las propiedades, ocultar cosas, mostrar objetos temporales, cualquier cosa. Por supuesto, esto solo afecta a la visualizacin en la vista 3D. Esa pantalla obtiene recalculada por FreeCAD en el archivo abierto, y cuando un objeto debe reclculo de al. Por lo tanto, si cambia el aspecto de un objeto existente de FreeCAD, esos cambios se perdern si el objeto se obtiene recalculado o cuando se vuelve a abrir el archivo. 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. Por ejemplo, si queramos mover nuestro cubo, nos habra aadido un nodo de SoTranslation a nuestro nodo personalizado, y habra pareca como este:
col = coin.SoBaseColor() col.rgb=(1,0,0) trans = coin.SoTranslation() trans.translation.setValue([0,0,0]) cub = coin.SoCube()

myCustomNode = coin.SoSeparator() myCustomNode.addChild(col) mtCustomNode.addChild(trans) myCustomNode.addChild(cub) sg.addChild(myCustomNode)

Recuerde que, en un scenegraph de openInventor, el orden es importante. Un nodo afecta lo que viene a continuacin, por lo que se puede decir algo como: color rojo, cubo, color amarillo, esfera y obtendr un cubo rojo y una esfera amarilla. Si aadimos la traduccin ahora a nuestro nodo personalizado existente, sera venir despus del cubo y no lo afectan. Si nos hubiramos insertado al crearlo, como aqu arriba, podemos ahora hacer:
trans.translation.setValue([2,0,0])

Y nuestro cubo saltara 2 unidades a la derecha. Por ltimo, eliminando algo se hace con:
sg.removeChild(myCustomNode)

Utilizando los mecanismos de devolucin de llamada


A mecanismo de devolucin de llamada es un sistema que permita una biblioteca que se est utilizando, como nuestra biblioteca de moneda, para llamar a realizar la seguridad, es decir, para llamar a una funcin de determinados desde su objeto de python que se est ejecutando. Esto es muy til, porque de esa manera moneda puede notificarle si algn acontecimiento especfico se produce en la escena. Moneda puede ver cosas muy diferentes, tales como la posicin del ratn, clics de un botn del mouse, las teclas del teclado que se presiona y muchas otras cosas. FreeCAD ofrece una manera fcil de utilizar dichas devoluciones de llamada:
class ButtonTest: def __init__(self): self.view = FreeCADGui.ActiveDocument.ActiveView self.callback = self.view.addEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),sel f.getMouseClick) def getMouseClick(self,event_cb): event = event_cb.getEvent() if event.getState() == SoMouseButtonEvent.DOWN: print "Alert!!! A mouse button has been improperly clicked!!!" self.view.removeEventCallbackSWIG(SoMouseButtonEvent.getClassTypeId(), self.callback) ButtonTest()

La devolucin de llamada debe iniciarse desde un objeto, porque ese objeto todava debe ejecutarse cuando se producir la devolucin de llamada. Vase tambin una lista completa de posibles eventos y sus parmetros, o el documentacin de moneda oficial .

Documentacin
Por desgracia pivy s mismo todava no tiene una documentacin adecuada, pero dado que es una traduccin exacta de la moneda, con seguridad puede utilizar la documentacin de la moneda como referencia y utilizar el estilo de python en lugar de c ++ estilo (por ejemplo SoFile::getClassTypeId() en pivy sera SoFile.getClassId()) PyQt es un mdulo de python que permite que las aplicaciones crear, acceder y modificar python Qt aplicaciones de . Usted puede utilizarlo por ejemplo para crear sus propios programas de Qt en python, o para obtener acceso y modificar la interfaz de una aplicacin que se ejecuta de qt, como FreeCAD. Utilizando el mdulo PyQt desde dentro de FreeCAD, usted tiene por lo tanto, un control total sobre su interfaz. Se puede por ejemplo:
Agregar sus propios paneles, widgets y barras de herramientas Agregar u ocultar elementos existentes de los paneles Cambio, redirigir o agregar las conexiones entre todos esos elementos

PyQt tiene una extensa Documentacin de la API , y hay muchos tutoriales en la red que le ensee cmo se obras. Si desea trabajar en la interfaz de FreeCAD, la primera cosa a hacer es crear una referencia a la ventana principal de FreeCAD:
import sys from PyQt4 import QtGui app = QtGui.qApp mw = app.activeWindow()

A continuacin, puede examinar por ejemplo a travs de todos los widgets de la interfaz:
for child in mw.children: print 'widget name = ', child.getObjectName(), ', widget type = ', child

Los widgets en una interfaz Qt generalmente estn anidados en widgets del "contenedores", por lo que los hijos de la ventana principal de nuestro propios pueden contener a otros nios. Dependiendo del tipo de widget, hay un montn

de cosas que puede hacer. Compruebe la documentacin de la API para ver lo que es posible. Agregar un nuevo widget, por ejemplo un dockWidget (que puede colocarse en uno de los laterales del FreeCAD) es fcil:
myWidget = QtGui.QDockWidget() mw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myWidget)

Podra agregar entonces cosas directamente a tu widget:


myWidget.setObjectName("my Nice New Widget") myWidget.resize(QtCore.QSize(QtCore.QRect(0,0,300,100))) # sets size of the widget label = QtGui.QLabel(myWidget) # creates a label label.setGeometry(QtCore.QRect(50,50,200,24)) # sets its size label.setObjectName("myLabel") # sets its name, so it can be found by name

, Pero es un mtodo preferido crear un objeto de interfaz de usuario que har todo de la configuracin de tu widget a la vez. La gran ventaja es que puede ser un objeto de interfaz de usuario de tal cre grficamente con el programa de Qt Designer. Un objeto tpico generado por el diseador Qt es como esta:
class myWidget_Ui(object): def setupUi(self, myWidget): myWidget.setObjectName("my Nice New Widget") myWidget.resize(QtCore.QSize(QtCore.QRect(0,0,300,100).size()).expande dTo(myWidget.minimumSizeHint())) # sets size of the widget self.label = QtGui.QLabel(myWidget) # creates a label self.label.setGeometry(QtCore.QRect(50,50,200,24)) # sets its size self.label.setObjectName("label") # sets its name, so it can be found by name def retranslateUi(self, draftToolbar): # built-in QT function that manages translations of widgets myWidget.setWindowTitle(QtGui.QApplication.translate("myWidget", "My Widget", None, QtGui.QApplication.UnicodeUTF8)) self.label.setText(QtGui.QApplication.translate("myWidget", "Welcome to my new widget!", None, QtGui.QApplication.UnicodeUTF8))

Para usarlo, basta aplicarlo al widget recin creado como este:


myNewFreeCADWidget = QtGui.QDockWidget() # create a new dckwidget myNewFreeCADWidget.ui = myWidget_Ui() # load the Ui script myNewFreeCADWidget.ui.setupUi(myNewFreeCADWidget) # setup the ui FCmw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myNewFreeCADWidget) add the widget to the main window

Adems de los tipos de objeto estndar tales como anotaciones, mallas y partes de objetos, FreeCAD tambin ofrece la posibilidad de sorprendente para construir objetos 100% script python, llamados caractersticas de Python. Esos objetos se comportan exactamente como cualquier otro objeto de FreeCAD, puede ser guardados en un documento y abri en cualquier otra instalacin de FreeCAD, ya que el cdigo de python que define el objeto tambin se guarda en el documento. Caractersticas de Python siga la misma regla como todas las funciones de FreeCAD: estn separados en partes de la aplicacin y GUI. La parte de app, el objeto Document, define la geometra de nuestro objeto, mientras que su parte de GUI, el objeto de proveedor de la vista, define cmo se dibujarn el objeto en la pantalla. El objeto de proveedor de ver, como cualquier otra caracterstica de la FreeCAD, slo est disponible cuando se ejecuta FreeCAD en su propia interfaz grfica. Hay varias propiedades y mtodos 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 paramtricos. se pueden definir propiedades para el objeto y su ViewObject por separado.

Ejemplo bsico
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", " ........", " ......++..+..", " .@@@@.++..++.", " .@@@@.++..++.", " .@@ .++++++.", " ..@@ .++..++.", "###@@@@ .++..++.", "##$.@@$#.++++++.", "#$#$.$$$........", "#$$####### ", "#$$#$$$$$# ",

"#$$#$$$$$# "#$$#$$$$$# " #$#$$$$$# " ##$$$$$# " ####### """

", ", ", ", "};

def __getstate__(self): "When saving the document this object gets stored using Python's cPickle module. Since we have some un-pickable here -- the Coin stuff -- we must define this method to return a tuple of all pickable objects or None." return None def __setstate__(self,state): "When restoring the pickled object from document we have the chance to set some internals here. Since no data were pickled nothing needs to be done here." return None

def makeBox(): FreeCAD.newDocument() a=FreeCAD.ActiveDocument.addObject("App::FeaturePython","Box") Box(a) ViewProviderBox(a.ViewObject)

Propiedades disponibles
Las propiedades son la verdadera creacin de piedras de objetos FeaturePython. A travs de ellos, el usuario podr interactuar y modificar su objeto. Despus de crear un nuevo objeto de FeaturePython en el documento (a=FreeCAD.ActiveDocument.addObject("App::FeaturePython","Box")), puede obtener una lista de las propiedades disponibles mediante la emisin de:
a.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

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 ms complejo


Este ejemplo hace uso de la Mdulo de parte para crear un octaedro, a continuacin, crea su representacin de moneda con pivy. En primer lugar es el propio objeto de documento:
import FreeCAD, FreeCADGui, Part class Octahedron: def __init__(self, obj): "Add some custom properties to our box feature" obj.addProperty("App::PropertyLength","Length","Octahedron","Length the octahedron").Length=1.0 of

obj.addProperty("App::PropertyLength","Width","Octahedron","Width of the octahedron").Width=1.0 obj.addProperty("App::PropertyLength","Height","Octahedron", "Height of the octahedron").Height=1.0 obj.addProperty("Part::PropertyPartShape","Shape","Octahedron", of the octahedron") obj.Proxy = self "Shape

def execute(self, fp): # Define six vetices for the shape v1 = FreeCAD.Vector(0,0,0) v2 = FreeCAD.Vector(fp.Length,0,0) v3 = FreeCAD.Vector(0,fp.Width,0) v4 = FreeCAD.Vector(fp.Length,fp.Width,0) v5 = FreeCAD.Vector(fp.Length/2,fp.Width/2,fp.Height/2) v6 = FreeCAD.Vector(fp.Length/2,fp.Width/2,-fp.Height/2) # Make the wires/faces

f1 = self.make_face(v1,v2,v5) f2 = self.make_face(v2,v4,v5) f3 = self.make_face(v4,v3,v5) f4 = self.make_face(v3,v1,v5) f5 = self.make_face(v2,v1,v6) f6 = self.make_face(v4,v2,v6) f7 = self.make_face(v3,v4,v6) f8 = self.make_face(v1,v3,v6) shell=Part.makeShell([f1,f2,f3,f4,f5,f6,f7,f8]) solid=Part.makeSolid(shell) fp.Shape = solid # helper mehod to create the faces def make_face(self,v1,v2,v3): wire = Part.makePolygon([v1,v2,v3,v1]) face = Part.Face(wire) return face

A continuacin, contamos con el objeto de proveedor de vista, responsable para mostrar el objeto en la escena 3D:
class ViewProviderOctahedron: def __init__(self, obj): "Set this object to the proxy object of the actual view provider" obj.addProperty("App::PropertyColor","Color","Octahedron","Color the octahedron").Color=(1.0,0.0,0.0) obj.Proxy = self of

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() self.data=coin.SoCoordinate3() self.face=coin.SoIndexedLineSet() self.shaded.addChild(self.scale) self.shaded.addChild(self.color) self.shaded.addChild(self.data) self.shaded.addChild(self.face) 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(self.data) self.wireframe.addChild(self.face)

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 if prop == "Shape": s = fp.getPropertyByName("Shape") self.data.point.setNum(6) cnt=0 for i in s.Vertexes: self.data.point.set1Value(cnt,i.X,i.Y,i.Z) cnt=cnt+1 self.face.coordIndex.set1Value(0,0) self.face.coordIndex.set1Value(1,1) self.face.coordIndex.set1Value(2,2) self.face.coordIndex.set1Value(3,-1) self.face.coordIndex.set1Value(4,1) self.face.coordIndex.set1Value(5,3) self.face.coordIndex.set1Value(6,2) self.face.coordIndex.set1Value(7,-1) self.face.coordIndex.set1Value(8,3) self.face.coordIndex.set1Value(9,4) self.face.coordIndex.set1Value(10,2) self.face.coordIndex.set1Value(11,-1) self.face.coordIndex.set1Value(12,4) self.face.coordIndex.set1Value(13,0) self.face.coordIndex.set1Value(14,2) self.face.coordIndex.set1Value(15,-1) self.face.coordIndex.set1Value(16,1) self.face.coordIndex.set1Value(17,0) self.face.coordIndex.set1Value(18,5) self.face.coordIndex.set1Value(19,-1) self.face.coordIndex.set1Value(20,3) self.face.coordIndex.set1Value(21,1) self.face.coordIndex.set1Value(22,5) self.face.coordIndex.set1Value(23,-1) self.face.coordIndex.set1Value(24,4) self.face.coordIndex.set1Value(25,3) self.face.coordIndex.set1Value(26,5) self.face.coordIndex.set1Value(27,-1) self.face.coordIndex.set1Value(28,0) self.face.coordIndex.set1Value(29,4)

self.face.coordIndex.set1Value(30,5) self.face.coordIndex.set1Value(31,-1) 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): 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 """ /* XPM */ static const char * ViewProviderBox_xpm[] = { "16 16 6 1", " c None", ". c #141010", "+ c #615BD2", "@ c #C39D55", "# c #000000", "$ c #57C355", " ........", " ......++..+..", " .@@@@.++..++.", " .@@@@.++..++.", " .@@ .++++++.", " ..@@ .++..++.", "###@@@@ .++..++.", "##$.@@$#.++++++.", "#$#$.$$$........", "#$$####### ", "#$$#$$$$$# ", "#$$#$$$$$# ", "#$$#$$$$$# ", " #$#$$$$$# ", " ##$$$$$# ", " ####### "};

""" def __getstate__(self): return None def __setstate__(self,state): return None

Por ltimo, una vez que nuestro objeto y su viewobject se definen, slo necesitamos a llamarlos:
FreeCAD.newDocument() a=FreeCAD.ActiveDocument.addObject("App::FeaturePython","Octahedron") Octahedron(a) ViewProviderOctahedron(a.ViewObject)

Hacer los objetos seleccionables


Si desea realizar su objeto seleccionable, o al menos una parte del mismo, haciendo clic en l en el rea de visualizacin, debe incluir su geometra de moneda dentro de un nodo de SoFCSelection. Si el objeto tiene una representacin compleja, con widgets, anotaciones, etc., puede incluir slo una parte del mismo en un SoFCSelection. Todo lo que es un SoFCSelection se analiza constantemente por FreeCAD para detectar la seleccin y preseleccin, as que tiene sentido tratar de no sobrecargar el con anlisis innecesarios. Esto es lo que hara para incluir un self.face en el ejemplo anterior:
selectionNode = coin.SoType.fromName("SoFCSelection").createInstance() selectionNode.documentName.setValue(FreeCAD.ActiveDocument.Name) selectionNode.objectName.setValue(obj.Object.Name) # here obj is the ViewObject, we need its associated App Object selectionNode.subElementName.setValue("Face") selectNode.addChild(self.face) ... self.shaded.addChild(selectionNode) self.wireframe.addChild(selectionNode)

Simplemente, se crea un nodo de SoFCSelection, agregar los nodos de la geometra a la misma, luego que lo agregue a su nodo principal, en lugar de agregar los nodos de geometra directamente.

Trabajar con formas simples


Si su objeto paramtrico salidas simplemente una forma, no es necesario utilizar un objeto de proveedor de vista. La forma se mostrar mediante representacin de forma estndar de FreeCAD:
class Line: def __init__(self, obj): "App two point properties"

obj.addProperty("App::PropertyVector","p1","Line","Start point") obj.addProperty("App::PropertyVector","p2","Line","End point").p2=FreeCAD.Vector(1,0,0) obj.Proxy = self def execute(self, fp): "Print a short message when doing a recomputation, this method is mandatory" fp.Shape = Part.makeLine(fp.p1,fp.p2) a=FreeCAD.ActiveDocument.addObject("Part::FeaturePython","Line") Line(a) a.ViewObject.Proxy=0 # just set it to something different from None (this assignment is needed to run an internal notification)

FreeCAD tiene la habilidad increble para ser importables como un mdulo de python en otros programas o en una consola de python independiente, junto con todos sus mdulos y componentes. Incluso es posible importar la GUI de FreeCAD como mdulo de python--con algunas restricciones, sin embargo.

Utilizando FreeCAD sin interfaz grfica de usuario


Una aplicacin primera, directa, fcil y til, que puede hacer que esto es importar documentos de FreeCAD en su programa. En el ejemplo siguiente, podr importar la geometra de la pieza de un documento de FreeCAD en licuadora. Aqu es la secuencia de comandos completa. Espero que usted se va impresionado por su simplicidad:
FREECADPATH = '/opt/FreeCAD/lib' FreeCAD.dll file import Blender, sys sys.path.append(FREECADPATH) # path to your FreeCAD.so or

def import_fcstd(filename): try: import FreeCAD except ValueError: Blender.Draw.PupMenu('Error%t|FreeCAD library not found. Please check the FREECADPATH variable in the import script is correct') else: scene = Blender.Scene.GetCurrent() import Part doc = FreeCAD.open(filename) objects = doc.Objects for ob in objects: if ob.Type[:4] == 'Part': shape = ob.Shape if shape.Faces: mesh = Blender.Mesh.New()

rawdata = shape.tessellate(1) for v in rawdata[0]: mesh.verts.append((v.x,v.y,v.z)) for f in rawdata[1]: mesh.faces.append.append(f) scene.objects.new(mesh,ob.Name) Blender.Redraw() def main(): Blender.Window.FileSelector(import_fcstd, 'IMPORT FCSTD', Blender.sys.makename(ext='.fcstd')) # This lets you import the script without running it if __name__=='__main__': main()

La parte primera, importante es asegurarse de que python encontrar nuestra biblioteca de FreeCAD. Una vez que lo encuentra, todos los mdulos de FreeCAD tales como elemento, que vamos a usar tambin estar disponibles automticamente. Por lo que simplemente tomamos la variable sys.path, que es donde python busca mdulos, y acompaamos a la ruta de acceso de lib FreeCAD. Esta modificacin es slo temporal y se perder cuando te cerramos nuestro intrprete de python. Otra manera podra estar haciendo un vnculo a la biblioteca de FreeCAD en uno de la pitn rutas de acceso de bsqueda. Mantuvo la ruta de acceso en una constante (FREECADPATH), as que habr ms fcil para que otro usuario de la secuencia de comandos configurarlo a su propio sistema. Una vez que estamos seguros de que se cargue la biblioteca (el bloque try / excepto la secuencia), podemos ahora trabajar con FreeCAD, del mismo modo como nos hara dentro intrprete de python del propio FreeCAD. Abrimos el documento de FreeCAD que se pasa a nosotros por la funcin main(), y hacer una lista de sus objetos. Entonces, como hemos escogido slo a la atencin sobre la geometra de la pieza, verificamos si la propiedad Type de cada objeto contiene "Parte", entonces nos tesselate se. Los tesselation producen una lista de vrtices y una lista de caras definido por ndices de vrtices. Esto es perfecto, ya que es exactamente de la misma manera como licuadora define mallas. Por lo tanto, nuestra tarea es ridculamente simple, que solo aadimos el contenido de ambas listas a las caras de una malla de blender y verts. Cuando todo est hecho, nosotros slo repintar la pantalla, y eso es todo! Por supuesto, este script es muy simple (en realidad hice una ms avanzada aqu), puede que desee extender, por ejemplo importacin de malla objetos

demasiado o importacin de parte de la geometra que no tiene caras, o importar otros formatos de archivo que se puede leer FreeCAD. Tambin puede exportar la geometra a un documento de FreeCAD, que puede hacerse de la misma manera. Tambin puede que desee crear un cuadro de dilogo, por lo que el usuario puede elegir lo que debe importar, etc.... 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 eleccin.

Uso de FreeCAD con la interfaz grfica de usuario


Desde la versin 4.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. Especialmente, para FreeCAD esto significa que pueden importarse desde dentro de otra aplicacin con su interfaz de usuario completa donde la aplicacin host tiene control total sobre FreeCAD, entonces. El cdigo de python todo para lograr que tiene slo dos lneas
import FreeCADGui FreeCADGui.showMainWindow()

Si la aplicacin host se basa en Qt esta solucin debe funcionar en todas las plataformas que soporta Qt. No obstante, el host debe vincular la misma versin de Qt que FreeCAD porque de lo contrario podra ejecutar en errores de tiempo de ejecucin inesperado. Para las aplicaciones no Qt, sin embargo, existen algunas limitaciones que debe tener en cuenta. Probablemente, esta solucin no funciona junto con todos los otros kits de herramientas. Para Windows funciona siempre y cuando la aplicacin host se basa directamente en Win32 o cualquier otro Kit de herramientas que utiliza internamente la API de Win32, como wxWidgets, MFC o WinForms. A fin de hacerlo funcionar bajo X 11 en el host de aplicacin debe vincular la biblioteca "Wittgenstein". Tenga en cuenta, para cualquier aplicacin de consola de que esta solucin por supuesto no funciona porque no hay ningn lazo de evento que se ejecuta.

Esta pgina contiene ejemplos, piezas, fragmentos de cdigo de python FreeCAD recogido de experiencias de los usuarios y los debates en los foros. Leer y utilizarlo como un punto de partida para sus propias secuencias de comandos...

Un archivo de InitGui.py tpico


Cada mdulo debe contener, adems de su archivo de mdulo principal, un archivo de InitGui.py, responsable de insertar el mdulo en el Gui principal. Este es un ejemplo de una simple.
class ScriptWorkbench (Workbench): MenuText = "Scripts" def Initialize(self): import Scripts # assuming Scripts.py is your module list = ["Script_Cmd"] # That list must contain command names, that can be defined in Scripts.py self.appendToolbar("My Scripts",list) Gui.addWorkbench(ScriptWorkbench())

Un archivo de mdulo tpico


Este es un ejemplo de un archivo de mdulo principal, que contiene todo lo que hace de su mdulo. Es el archivo de Scripts.py invocado por el ejemplo anterior. Aqu puede tener todos los comandos personalizados.
import FreeCAD, FreeCADGui class ScriptCmd: def Activated(self): # Here your write what your ScriptCmd does... FreeCAD.Console.PrintMessage('Hello, World!') def GetResources(self): return {'Pixmap' : 'path_to_an_icon/myicon.png', 'Short text', 'ToolTip': 'More detailed text'} FreeCADGui.addCommand('Script_Cmd', ScriptCmd())

'MenuText':

Importar un nuevo tipo de fichero


Es fcil hacer un importador para un nuevo tipo de fichero en FreeCAD. FreeCAD no considerar la posibilidad de que importar datos en un documento abierto, sino que simplemente puede directamente abrir el nuevo tipo de fichero. Por lo tanto lo que tienes que hacer es agregar la nueva extensin de archivo a la lista de FreeCAD de extensiones conocidas y escribir el cdigo que leer el archivo y crear los objetos FreeCAD que desea: Esta lnea se debe agregar al archivo InitGui.py para agregar la nueva extensin de archivo a la lista:
# Assumes Import_Ext.py is the file that has the code for opening and reading .ext files FreeCAD.addImportType("Your new File Type (*.ext)","Import_Ext")

A continuacin, en el archivo Import_Ext.py:

def open(filename): doc=App.newDocument() # here you do all what is needed with filename, read, classify data, create corresponding FreeCAD objects doc.recompute()

Para exportar el documento a algn tipo de fichero nuevo funciona del mismo modo, salvo que utilice:
FreeCAD.addExportType("Your new File Type (*.ext)","Export_Ext")

Agregar una lnea


Una lnea simplemente tiene 2 puntos.
import Part,PartGui doc=App.activeDocument() # add a line element to the document and set its points l=Part.Line() l.StartPoint=(0.0,0.0,0.0) l.EndPoint=(1.0,1.0,1.0) doc.addObject("Part::Feature","Line").Shape=l.toShape() doc.recompute()

Adicin de un polgono
Un polgono es simplemente un conjunto de segmentos de lnea conectados (una polilnea en AutoCAD). No es necesario ser cerrado.
import Part,PartGui doc=App.activeDocument() n=list() # create a 3D vector, set its coordinates and add it to the list v=App.Vector(0,0,0) n.append(v) v=App.Vector(10,0,0) n.append(v) #... repeat for all nodes # Create a polygon object and set its nodes p=doc.addObject("Part::Polygon","Polygon") p.Nodes=n

doc.recompute()

Adicin y eliminacin de un objeto a un grupo


doc=App.activeDocument() grp=doc.addObject("App::DocumentObjectGroup", "Group") lin=doc.addObject("Part::Feature", "Line") grp.addObject(lin) # adds the lin object to the group grp grp.removeObject(lin) # removes the lin object from the group grp

Nota: Incluso puede agregar otros grupos a un grupo...

Adicin de una malla


import Mesh doc=App.activeDocument()

# create a new empty mesh m = Mesh.Mesh() # build up box out of 12 facets m.addFacet(0.0,0.0,0.0, 0.0,0.0,1.0, 0.0,1.0,1.0) m.addFacet(0.0,0.0,0.0, 0.0,1.0,1.0, 0.0,1.0,0.0) m.addFacet(0.0,0.0,0.0, 1.0,0.0,0.0, 1.0,0.0,1.0) m.addFacet(0.0,0.0,0.0, 1.0,0.0,1.0, 0.0,0.0,1.0) m.addFacet(0.0,0.0,0.0, 0.0,1.0,0.0, 1.0,1.0,0.0) m.addFacet(0.0,0.0,0.0, 1.0,1.0,0.0, 1.0,0.0,0.0) m.addFacet(0.0,1.0,0.0, 0.0,1.0,1.0, 1.0,1.0,1.0) m.addFacet(0.0,1.0,0.0, 1.0,1.0,1.0, 1.0,1.0,0.0) m.addFacet(0.0,1.0,1.0, 0.0,0.0,1.0, 1.0,0.0,1.0) m.addFacet(0.0,1.0,1.0, 1.0,0.0,1.0, 1.0,1.0,1.0) m.addFacet(1.0,1.0,0.0, 1.0,1.0,1.0, 1.0,0.0,1.0) m.addFacet(1.0,1.0,0.0, 1.0,0.0,1.0, 1.0,0.0,0.0) # scale to a edge langth of 100 m.scale(100.0) # add the mesh to the active document me=doc.addObject("Mesh::Feature","Cube") me.Mesh=m

Adicin de un arco o un crculo


import Part doc = App.activeDocument() c = Part.Circle() c.Radius=10.0 f = doc.addObject("Part::Feature", "Circle") # create a document with a circle feature f.Shape = c.toShape() # Assign the circle shape to the shape property doc.recompute()

Acceso y cambio de representacin de un objeto


Cada objeto en un documento de FreeCAD tiene un objeto de representacin de vista asociados que almacena todos los parmetros que definen cmo aparece el objeto, como color, ancho, etc....
gad=Gui.activeDocument() the # corresponding App document v=gad.getObject("Cube") # access the view representation Mesh feature 'Cube' v.ShapeColor # prints the color to the console v.ShapeColor=(1.0,1.0,1.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 (ratn) en el visor 3D a travs de Python


La estructura del inventor permite agregar uno o ms nodos de devolucin de llamada para el scenegraph del visor. Un nodo de devolucin de llamada se instala de forma predeterminada en FreeCAD por el visor que permite aadir

funciones de C++ globales o estticas. En Python adecuado vinculante algunos mtodos son proporcionados para hacer uso de esta tcnica desde dentro de cdigo Python.
App.newDocument() v=Gui.activeDocument().activeView() #This class logs any mouse button events. As the registered callback function fires twice for 'down' and #'up' events we need a boolean flag to handle this. class ViewObserver: def logPosition(self, info): down = (info["State"] == "DOWN") pos = info["Position"] if (down): FreeCAD.Console.PrintMessage("Clicked on position: ("+str(pos[0])+", "+str(pos[0])+")\n") o = ViewObserver() c = v.addEventCallback("SoMouseButtonEvent",o.logPosition)

Ahora, escoja en algn lugar en el rea en el visor 3D y observar los mensajes en la ventana de salida. Para finalizar la llamada justa de observacin
v.removeEventCallback("SoMouseButtonEvent",c)

Se admiten los siguientes tipos de eventos


SoEvent--todo tipo de eventos SoButtonEvent--todos botn del ratn y eventos clave SoLocation2Event--movimiento 2D eventos (normalmente los movimientos de ratn) SoMotion3Event--eventos de movimiento 3D (normalmente spaceball) SoKeyboradEvent--clave hacia abajo y eventos SoMouseButtonEvent--botn del ratn hacia abajo y eventos SoSpaceballButtonEvent--spaceball botn hacia abajo y eventos

La funcin de Python que se puede registrar con addEventCallback() espera un diccionario. Dependiendo del evento observado el diccionario puede contener diferentes claves. Para todos los eventos tiene las llaves:
Tipo--el nombre del tipo de evento, es decir, SoMouseEvent, SoLocation2Event... Tiempo--la hora actual como cadena Posicin--una tupla de dos nmeros enteros, la posicin del mouse ShiftDown--un valor booleano, true si Mays en caso contrario se presion false CtrlDown--un valor booleano, true si Ctrl se presion lo contrario es false AltDown--un valor booleano, true si Alt se presion lo contrario es false

Para todos los eventos de botn, es decir, teclado, ratn o spaceball eventos
Estado--A string 'UP' si el botn se fue arriba, 'Abajo' si era hacia abajo o

'Desconocido' para todos los dems casos

Para los eventos de teclado:


Clave--un carcter de la tecla presionada

Para el evento de botn del mouse


Botn--el botn presionado, podra ser BUTTON1,..., BUTTON5 o cualquier

Para eventos de spaceball:


Botn--el botn presionado, podra ser BUTTON1,..., BUTTON7 o cualquier

Y por ltimo eventos de movimiento:


Traduccin--una tupla de tres carrozas Rotacin--un cuaternin de la rotacin, es decir, una tupla de cuatro carrozas

Manipular el scenegraph en Python


Tambin es posible obtener y cambiar el scenegraph en Python, con el mdulo de 'pivy'--un enlace de Python para monedas.
from pivy.coin import * view = Gui.ActiveDocument.ActiveView root = view.getSceneGraph() node root.addChild(SoCube()) 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. Como utilizamos en FreeCAD algunos nodos escritos no puede crear directamente en Python. Sin embargo, es posible crear un nodo por su nombre interno. Se puede crear una instancia del tipo 'SoFCSelection' con
type = SoType.fromName("SoFCSelection") node = type.createInstance()

Agregando y quitando objetos hacia/desde el scenegraph


Agregar nuevos nodos a la scenegraph puede hacer de esta manera. Tenga cuidado de aadir siempre un SoSeparator para contener la geometra, las coordenadas y informacin material de un mismo objeto. En el ejemplo siguiente se agrega una lnea roja de (0,0,0) a (10,0,0):
from pivy import coin sg = Gui.ActiveDocument.ActiveView.getSceneGraph() co = coin.SoCoordinate3() pts = [[0,0,0],[10,0,0]]

co.point.setValues(0,len(pts),pts) ma = coin.SoBaseColor() ma.rgb = (1,0,0) li = coin.SoLineSet() li.numVertices.setValue(2) no = coin.SoSeparator() no.addChild(co) no.addChild(ma) no.addChild(li) sg.addChild(no)

Para quitarlo, simplemente ejecute: SG.removeChild(no)

Adicin de widgets personalizados a la interfaz


Puede crear widgets personalizados con el diseador de Qt, transformarlas en una secuencia de comandos python y, a continuacin, cargarlos en la interfaz de FreeCAD con PyQt4. El cdigo de python producido por el compilador de python de Ui (es decir, la herramienta que convierte archivos de qt-diseador .ui en el cdigo de python) generalmente tiene el siguiente aspecto (es simple, tambin puede cdigo directamente en python):
class myWidget_Ui(object): def setupUi(self, myWidget): myWidget.setObjectName("my Nice New Widget") myWidget.resize(QtCore.QSize(QtCore.QRect(0,0,300,100).size()).expande dTo(myWidget.minimumSizeHint())) # sets size of the widget self.label = QtGui.QLabel(myWidget) # creates a label self.label.setGeometry(QtCore.QRect(50,50,200,24)) # sets its size self.label.setObjectName("label") # sets its name, so it can be found by name def retranslateUi(self, draftToolbar): # built-in QT function that manages translations of widgets myWidget.setWindowTitle(QtGui.QApplication.translate("myWidget", "My Widget", None, QtGui.QApplication.UnicodeUTF8)) self.label.setText(QtGui.QApplication.translate("myWidget", "Welcome to my new widget!", None, QtGui.QApplication.UnicodeUTF8))

A continuacin, todo lo que necesita hacer es crear una referencia a la ventana de FreeCAD Qt, inserte un widget personalizado y "transformar" este widget en la suya con el cdigo de Ui acaba de hacer:
app = QtGui.qApp

FCmw = app.activeWindow() # the active qt window, = the freecad window since we are inside it myNewFreeCADWidget = QtGui.QDockWidget() # create a new dckwidget myNewFreeCADWidget.ui = myWidget_Ui() # load the Ui script myNewFreeCADWidget.ui.setupUi(myNewFreeCADWidget) # setup the ui FCmw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myNewFreeCADWidget) # add the widget to the main window

Esta pgina muestra cmo avanzada funcionalidad fcilmente puede ser construido en Python. En este ejercicio, construir una nueva herramienta que dibuja una lnea. Esta herramienta, a continuacin, puede vincularse a un comando de FreeCAD, y ese comando puede ser invocado por cualquier elemento de la interfaz, como un elemento de men o un botn de la barra de herramientas.

La secuencia de comandos principal


En primer lugar escribimos una secuencia de comandos que contiene toda la funcionalidad de nuestra. A continuacin, ser esto guardar en un archivo y importarlo en FreeCAD, por lo que todas las clases y funciones que escribimos ser sencillo a FreeCAD. Por lo tanto, lanzar su editor de texto favorito y escriba las lneas siguientes:
import FreeCADGui, Part from pivy.coin import * class line: "this class will create a line after the user clicked 2 points on the screen" def __init__(self): self.view = FreeCADGui.ActiveDocument.ActiveView self.stack = [] self.callback = self.view.addEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),sel f.getpoint) def getpoint(self,event_cb): event = event_cb.getEvent() if event.getState() == SoMouseButtonEvent.DOWN: pos = event.getPosition() point = self.view.getPoint(pos[0],pos[1]) self.stack.append(point) if len(self.stack) == 2: l = Part.Line(self.stack[0],self.stack[1]) shape = l.toShape() Part.show(shape) self.view.removeEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(), self.callback)

Explicacin detallada
import Part, FreeCADGui from pivy.coin import *

En Python, cuando desea utilizar las funciones de otro mdulo, necesita importarlo. En nuestro caso, necesitaremos las funciones de la Mdulo de parte , para la creacin de la lnea y desde el mdulo de Gui (FreeCADGui), para acceder a la vista 3D. Tambin necesitamos el contenido completo de la biblioteca de la moneda, por lo que podemos utilizar directamente toda moneda objetos como SoMouseButtonEvent, etc...
class line:

Aqu definimos nuestra clase principal. Por qu usamos una clase y no una funcin? La razn es que necesitamos que nuestra herramienta para permanecer "alive" mientras que estamos esperando para que el usuario haga clic en la pantalla. Una funcin termina cuando se ha hecho su tarea, pero un objeto (una clase define un objeto) permanece vivo hasta que sea destruida.
"this class will create a line after the user clicked 2 points on the screen"

En Python, cada clase o funcin puede tener una cadena de descripcin. Esto resulta especialmente til en FreeCAD, porque cuando llamaremos esa clase en el intrprete, la cadena de descripcin se mostrar como una informacin sobre herramientas.
def __init__(self):

Clases de Python siempre pueden contener una funcin __init__, que se ejecuta cuando se llama a la clase para crear un objeto. Por lo tanto, pondremos aqu todo lo que queremos que suceda cuando comienza a nuestra herramienta de la lnea.
self.view = FreeCADGui.ActiveDocument.ActiveView

En una clase, por lo general desea anexar self. antes de un nombre de variable, por lo tanto ser fcilmente accesible a todas las funciones dentro y fuera de esa clase. Aqu, utilizaremos self.view para tener acceso y manipular la vista 3D activa.
self.stack = []

Aqu creamos una lista vaca que va a contener los puntos 3D enviados por la funcin getpoint.
self.callback = self.view.addEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),sel f.getpoint)

Esta es la parte importante: debido a que es en realidad un coin3D escena de , el FreeCAD utiliza el mecanismo de devolucin de llamada de moneda, que permite a una funcin que se llamar cada vez que ocurre un determinado evento de la escena. En nuestro caso, estamos creando una devolucin de llamada para SoMouseButtonEvent eventos y nos enlazarlo a la funcin getpoint. Ahora, cada vez un botn del mouse est presionado o liberado, se ejecutar la funcin de getpoint. Tenga en cuenta que tambin es una alternativa a la addEventCallbackPivy() llamado addEventCallback() que prescinde de la utilizacin de pivy. Pero dado que pivy es una manera natural y muy eficiente para acceder a cualquier parte de la escena de la moneda, es mucho mejor usarlo tanto como usted puede!
def getpoint(self,event_cb):

Ahora definimos la funcin getpoint, que se ejecutar cuando se presiona un botn del mouse en una vista 3D. Esta funcin recibir un argumento, que llamamos event_cb. De este evento de devolucin de llamada podemos acceder el objeto de evento, que contiene varias piezas de informacin (info de modo aqu ).
if event.getState() == SoMouseButtonEvent.DOWN:

La funcin getpoint se llamar cuando se presiona un botn del mouse o se lanz. Pero queremos elegir un punto 3D slo cuando se presiona (de lo contrario tendramos dos puntos 3D muy cercano a cada uno de los otros). Por lo tanto nos debemos comprobar aqu.
pos = event.getPosition()

Aqu tenemos las coordenadas de la pantalla del cursor del ratn


point = self.view.getPoint(pos[0],pos[1])

Esta funcin nos da un vector de FreeCAD (x, y, z) que contiene el punto 3D que se encuentra en el plano focal, justo por debajo de nuestro cursor del ratn. Si ests en la cmara vista, imaginar un rayo procedentes de la cmara, pasando el cursor del ratn y golpear el plano focal. Es nuestro punto de 3D. Si estamos en vista ortogonal, el rayo es paralelo a la direccin de la vista.
self.stack.append(point)

Agregamos a nuestro punto de nuevo a la pila


if len(self.stack) == 2:

Tenemos suficientes puntos ya? Si s y, a continuacin, vamos dibujar la lnea!


l = Part.Line(self.stack[0],self.stack[1])

Aqu utilizamos la funcin Line() de la Mdulo de parte en la que crea una lnea de dos vectores de FreeCAD. Todo lo que crear y modificar dentro del mdulo de parte, permanece en el mdulo de parte. Por lo tanto, hasta ahora, hemos creado un elemento de lnea. No est obligada a cualquier objeto de nuestro documento activo, por lo que no aparece nada en la pantalla.
shape = l.toShape()

El documento de FreeCAD slo puede aceptar formas desde el mdulo de parte. Las formas son el tipo ms genrico del mdulo parte. Por lo tanto, debemos convertir nuestra lnea a una forma antes de agregarlo al documento.
Part.show(shape)

El mdulo de parte tiene una funcin muy til show() que crea un nuevo objeto en el documento y se enlaza una forma. Nos podramos tambin han creado un nuevo objeto en el documento de la primera, a continuacin, enlazada la forma manualmente.
self.view.removeEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(), self.callback)

Ya terminamos con nuestra lnea, Let's quite el mecanismo de devolucin de llamada, que consume preciosos ciclos de CPU.

Pruebas & usando la secuencia de comandos


Ahora, vamos guardar nuestro script en algn lugar donde se encontrarn en el intrprete de python de FreeCAD. Al importar mdulos, el intrprete se ver en los siguientes lugares: las rutas de acceso de instalacin de python, el directorio bin de FreeCAD y todos los directorios de los mdulos de FreeCAD. Por lo tanto, la mejor solucin es crear un nuevo directorio en uno de los FreeCAD mod directorios y para guardar la secuencia de comandos en ella. Por ejemplo, vamos hacer un directorio "MyScripts" y guardar nuestra secuencia de comandos como "exercise.py". Ahora, todo se encuentra listo, vamos comenzar FreeCAD, cree un nuevo documento y, en el intrprete de python, nmero:
import exercise

Si ningn mensaje de error aparece, significa que nuestro script de ejercicio se ha cargado. Ahora nos podemos comprobar su contenido con:
dir(exercise)

El comando dir() es un comando de python incorporada que enumera el contenido de un mdulo. Podemos ver que nuestra clase line() est all, a la espera de nosotros. Ahora vamos a probarlo:

exercise.line()

A continuacin, haga clic dos veces en la vista 3D, y bingo, aqu es nuestra lnea! Volver a hacerlo, slo tiene que escribir exercise.line() una vez ms y una vez ms y de nuevo... Se siente gran, no?

Registrar la secuencia de comandos de la interfaz de FreeCAD


Ahora, para que nuestra nueva herramienta en lnea ser verdaderamente interesante, debera tener un botn en la interfaz, por lo que no necesitamos escribir todos cada vez de ese material. La manera ms fcil es transformar nuestro nuevo directorio de MyScripts en una estacin de trabajo completa de FreeCAD. Es fcil, todo lo que se necesita es colocar un archivo llamado InitGui.py dentro de su directorio de MyScripts. El InitGui.py va a contener las instrucciones para crear una nueva estacin de trabajo y aadir nuestra nueva herramienta a ella. Adems de tambin necesitamos transformar un poco nuestro cdigo de ejercicio, por lo que la herramienta line() es reconocida como un comando de FreeCAD oficial. Vamos comenzar haciendo un archivo InitGui.py y escribir el siguiente cdigo en ella:
class MyWorkbench (Workbench): MenuText = "MyScripts" def Initialize(self): import exercise commandslist = ["line"] self.appendToolbar("My Scripts",commandslist) Gui.addWorkbench(MyWorkbench())

Por ahora, debera ya entiendes el script anterior por usted mismo, creo que: crea una nueva clase que llamamos MyWorkbench, le damos un ttulo (MenuText) y definimos una funcin Initialize() que se ejecutar cuando se carga el workbench en FreeCAD. En esa funcin, 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. A continuacin, hacemos una llamada "Mis Scripts" de la barra de herramientas y asignamos a nuestra lista de comandos a ella. En la actualidad, por supuesto, tenemos slo una herramienta, por lo que nuestra lista de comandos contiene un nico elemento. A continuacin, una vez que nuestro banco est listo, nos agregarlo a la interfaz principal. Pero esto todava no funcionar, porque un comando de FreeCAD debe tener el formato de una cierta manera para trabajar. Por lo tanto ser necesario

transformar un poco nuestra herramienta de line(). Nuestro nuevo script exercise.py tendr ahora este aspecto:
import FreeCADGui, 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.view = FreeCADGui.ActiveDocument.ActiveView self.stack = [] self.callback = self.view.addEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),sel f.getpoint) def getpoint(self,event_cb): event = event_cb.getEvent() if event.getState() == SoMouseButtonEvent.DOWN: pos = event.getPosition() point = self.view.getPoint(pos[0],pos[1]) self.stack.append(point) if len(self.stack) == 2: l = Part.Line(self.stack[0],self.stack[1]) shape = l.toShape() Part.show(shape) self.view.removeEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(), self.callback) def GetResources(self): return {'Pixmap' : 'path_to_an_icon/line_icon.png', 'MenuText': 'Line', 'ToolTip': 'Creates a line by clicking 2 points on the screen'} FreeCADGui.addCommand('line', line())

Lo que hicimos aqu es transformar nuestra funcin de __init__() en una funcin de Activated(), porque cuando se ejecutan los comandos FreeCAD, ejecutar automticamente la funcin de Activated(). Tambin hemos aadido una funcin de GetResources(), que informa a FreeCAD donde puede encontrar un icono de la herramienta, y lo que ser el nombre y la informacin sobre herramientas de nuestra herramienta. Cualquier imagen jpg, png o svg funcionar como un icono, puede ser de cualquier tamao, pero es mejor utilizar un tamao de que est cerca el aspecto final, como 16 x 16, 24 x 24 o 32 x 32. A continuacin, aadimos la clase de line() como un comando de FreeCAD oficial con el mtodo addCommand(). Eso es todo, ahora slo necesitamos reiniciar FreeCAD y vamos a tener una agradable workbench nuevo con nuestra nueva herramienta de la lnea!

As que quieres ms?


Si te gust este ejercicio, por qu no intentar mejorar esta pequea herramienta? Hay muchas cosas que pueden hacer, como por ejemplo:
Agregar comentarios de los usuarios: hasta ahora hicimos una herramienta muy

desnuda, el usuario puede estar un poco perdido cuando lo utilice. Sowe podra aadir algunos comentarios, dicindole que lo que debe hacer a continuacin. Por ejemplo, podra emitir mensajes a la consola de FreeCAD. Echar un vistazo en el mdulo de FreeCAD.Console
Agregar una posibilidad para escribir el 3D puntos de coordenadas manualmente.

Mirar la funcin de input() de python, por ejemplo


Agregar la posibilidad de aadir ms de 2 puntos Agregar eventos para otras cosas: ahora comprobamos slo para eventos de botn

del ratn, qu sucede si tambin haramos algo cuando se mueve el ratn, como mostrar coordenadas actuales?
Asigne un nombre al objeto creado

, No dude en escribir sus preguntas o ideas sobre el hablar de la pgina !

En esta pgina nos mostrar cmo crear un cuadro de dilogo de Qt simple con Qt Designer , La herramienta oficial de qt para disear interfaces, a continuacin, convertirlo en el cdigo de python, a continuacin, utilizarlo dentro de FreeCAD. Supongo en el ejemplo que usted sabe cmo editar y ejecutar python scripts ya, y que se pueden hacer cosas sencillas en una ventana de terminal, como navegar, etc.. Tambin debe tener, por supuesto, pyqt instalado.

Disear el cuadro de dilogo


En CAD, aplicaciones, disear una buena interfaz de usuario (User Interface) es muy importantes. Sobre todo el usuario ser a travs de algn pedazo de interfaz: lectura de cuadros de dilogo, pulsar botones, escogiendo entre iconos, etc.. Por lo que es muy importante pensar cuidadosamente a lo que desea hacer, cmo desea que el usuario se comportan, y cmo ser el flujo de trabajo de su accin. Hay un par de conceptos para conocer al disear la interfaz:
Cuadros de dilogo modales, no-modal : Un cuadro de dilogo modal que aparece

delante de la pantalla, detener la accin de la ventana principal, forzando al usuario a responder al cuadro de dilogo, mientras que un cuadro de dilogo no

modal no parar de trabajar en la ventana principal. En algunos casos, el primero es mejor, en otros casos no.
Identificacin de lo que se necesita y lo que es opcional: asegrese de que el

usuario sabe lo que l debe do. Etiquetar todo con descripcin adecuada, utilizar la informacin sobre herramientas, etc.
Comandos de separating de de parmetros: esto se suele hace con botones y

campos de entrada de texto. El usuario sabe que si hace clic en un botn producir una accin mientras que cambiar un valor dentro de un campo de texto va a cambiar un parmetro en algn lugar. Hoy en da, sin embargo, los usuarios generalmente saben bien lo que es un botn, lo que es un campo de entrada, etc.. El toolkit de interfaz que estamos utilizando, Qt, es un kit de herramientas de Estado-of-the-art, y no tenemos que preocuparnos mucho acerca de hacer las cosas claras, ya que ellos ya ser muy claros por s mismos.

Por lo tanto, ahora que hemos definido bien lo que haremos, es hora de abrir el diseador qt. Vamos disear un dilogo muy simple, como esto:

, A continuacin, utilizaremos este cuadro de dilogo en FreeCAD para producir un plano rectangular agradable. Puede que encuentre no muy til para producir aviones rectangulares agradables, pero va a ser fcil cambiar ms tarde para hacer las cosas ms complejas. Cuando lo abre, Qt Designer se ve as:

Es muy simple de usar. En la barra izquierda tiene elementos que se pueden arrastrar en el widget. En el lado derecho tiene paneles de propiedades muestra todos los tipos de propiedades editables de elementos seleccionados. Por lo tanto, comenzar con la creacin de un nuevo widget. Seleccione "Dilogo sin botones", ya que no queremos que los botones de aceptar y cancelar de forma predeterminada. A continuacin, arrastre en el widget 3 etiquetas, uno para el ttulo, uno para la escritura de "Altura" y otro para escribir "Ancho". Las etiquetas son simples los textos que aparecen en el widget, slo para informar al usuario. Si selecciona una etiqueta, en el lado derecho aparecern varias propiedades que se pueden cambiar si lo desea, como estilo de fuente, altura, etc.. A continuacin, agregue 2 LineEdits, que son campos de texto que el usuario puede rellenar, uno para la altura y otro para el ancho. Aqu tambin podemos editar propiedades. Por ejemplo, por qu no establecer un valor predeterminado? Por ejemplo 1.00 para cada uno. De esta forma, cuando el usuario ver el cuadro de dilogo, ambos valores se rellenar ya y si l est satisfecho l puede directamente pulse el botn, se ahorra tiempo valioso. A continuacin, agregue un PushButton, que es el botn que el usuario tendr que presionar despus de que llen los 2 campos. Nota que he escogido aqu controles muy simples, pero Qt tiene muchas ms opciones, por ejemplo se podra utilizar Spinboxes en lugar de LineEdits, etc.... Eche un vistazo de lo que est disponible, seguramente tendr otras ideas. Es sobre todo lo que necesitamos hacer en el diseador de Qt. Una ltima cosa, sin embargo, Let's renombrar todos nuestros elementos con nombres

ms fciles, por lo que ser ms fcil identificarlos en nuestras secuencias de comandos:

Convertir nuestro dilogo a python


Ahora, vamos guardar nuestro widget en algn lugar. Se guardar como un archivo .ui, que nos convierta fcilmente a la secuencia de comandos python con pyuic. En windows, el programa de pyuic est empaquetado con pyqt (a ser verificado), sobre linux probablemente necesitar instalar por separado desde el gestor de paquetes (en sistemas basados en debian, es parte del paquete de herramientas de pyqt4-dev). Para hacer la conversin, necesitar abrir una ventana de terminal (o una ventana de smbolo del sistema de ventanas), desplcese hasta donde haya guardado su .ui archivo y la cuestin:
pyuic mywidget.ui > mywidget.py

En algunos sistemas, el programa se llama pyuic4 en lugar de pyuic. Simplemente esto convertir el archivo .ui en una secuencia de comandos python. Si abrimos el archivo mywidget.py, sus contenidos son muy fciles de entender:
from PyQt4 import QtCore, QtGui class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(187, 178) self.title = QtGui.QLabel(Dialog) self.title.setGeometry(QtCore.QRect(10, 10, 271, 16))

self.title.setObjectName("title") self.label_width = QtGui.QLabel(Dialog) ... self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8)) self.title.setText(QtGui.QApplication.translate("Dialog", "Plane-O-Matic", None, QtGui.QApplication.UnicodeUTF8)) ...

Como ves tiene una estructura muy simple: se crea una clase denominada Ui_Dialog, que almacena los elementos de la interfaz de nuestro widget. Que la clase tiene dos mtodos, uno para la configuracin del widget y uno para la traduccin de su contenido, es parte del mecanismo general de Qt para traducir los elementos de la interfaz. El mtodo de instalacin simplemente crea, uno por uno, los widgets como hemos definido en el diseador de Qt y establece sus opciones como hemos decidido anteriormente. A continuacin, toda la interfaz obtiene traducida, y por ltimo, conctese a las ranuras (hablaremos acerca de que ms tarde). Ahora podemos crear un nuevo widget y utilizar esta clase para crear su interfaz. Ya podemos ver nuestro widget en accin, poniendo nuestro archivo de mywidget.py en un lugar donde FreeCAD se encuentran (en el directorio bin de FreeCAD, o en cualquiera de los subdirectorios MOD) y, en el intrprete de python FreeCAD, nmero de:
from PyQt4 import QtGui import mywidget d = QtGui.QWidget() d.ui = mywidget.Ui_Dialog() d.ui.setupUi(d) d.show()

Y nuestro dilogo aparecer! Tenga en cuenta que todava est trabajando nuestro intrprete de python, contamos con un cuadro de dilogo no modal. Por lo tanto, para cerrarlo, podemos (aparte de hacer clic en su icono de cerrar, por supuesto) tema:
d.hide()

Hacer nuestro dilogo hacer algo


Ahora que podemos mostrar y ocultar nuestro dilogo, slo tenemos que aadir una ltima parte: para hacer algo! Si juegas un poco con el diseador de Qt, rpidamente descubrir una seccin entera llamada "seales y ranuras".

Bsicamente, funciona como este: los elementos de tus widgets (en la terminologa de Qt, dichos elementos son propios widgets) puede enviar seales. Esas seales difieren segn el tipo de widget. Por ejemplo, un botn puede enviar una seal cuando se est presionado y cuando se publique. Esas seales pueden estar conectadas a las ranuras, que pueden ser una funcionalidad especial de otros widgets (por ejemplo un cuadro de dilogo tiene una ranura "Cerrar" a los que puede conectar la seal desde un botn de cierre), o pueden ser funciones personalizadas. La Documentacin de referencia de PyQt enumera todos los widgets qt, lo que pueden hacer, lo que las seales pueden enviar, etc... Lo que haremos aqu, es crear una nueva funcin que crear un plano basado en altura y anchura y conectar esa funcin a la seal presionada emitida por nuestro botn de "Crear!". Por lo tanto, comencemos con la importacin de nuestros mdulos de FreeCAD, poniendo la siguiente lnea en la parte superior de la secuencia de comandos, donde importamos ya QtCore y QtGui:
import FreeCAD, Part

A continuacin, vamos a agregar una nueva funcin a nuestra clase Ui_Dialog:


def createPlane(self): try: # first we check if valid numbers have been entered w = float(self.width.text()) h = float(self.height.text()) except ValueError: print "Error! Width and Height values must be valid numbers!" else: # create a face from 4 points p1 = FreeCAD.Vector(0,0,0) p2 = FreeCAD.Vector(w,0,0) p3 = FreeCAD.Vector(w,h,0) p4 = FreeCAD.Vector(0,h,0) pointslist = [p1,p2,p3,p4,p1] mywire = Part.makePolygon(pointslist) myface = Part.Face(mywire) Part.show(myface) self.hide()

A continuacin, tenemos que informar a Qt para conectar el botn con la funcin, colocando la siguiente lnea justo antes de QtCore.QMetaObject.connectSlotsByName(Dialog):
QtCore.QObject.connect(self.create,QtCore.SIGNAL("pressed()"),self.cre atePlane)

Esto, como ves, conecta la seal de pressed() de nuestro objeto de crear (el botn de "Crear!"), con una ranura llamada createPlane, que acaba de definir.

Eso es todo! Ahora bien, como un toque final, podemos aadir una pequea funcin para crear el cuadro de dilogo, ser ms fcil llamar. Fuera de la clase Ui_Dialog, vamos a agregar este cdigo:
class plane(): d = QtGui.QWidget() d.ui = Ui_Dialog() d.ui.setupUi(d) d.show()

A continuacin, desde FreeCAD, slo tenemos que hacer:


import mywidget mywidget.plane()

Que es Folks todos... Ahora puede probar todo tipo de cosas, como por ejemplo insertar tu widget en la FreeCAD interfaz (vase la fragmentos de cdigo pgina), o haciendo mucho ms avanzadas herramientas personalizadas, mediante el uso de otros elementos en el widget de.

La secuencia de comandos completa


Esta es la secuencia de comandos completa, para referencia:
# -*- coding: utf-8 -*# Form implementation generated from reading ui file 'mywidget.ui' # # Created: Mon Jun 1 19:09:10 2009 # by: PyQt4 UI code generator 4.4.4 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui import FreeCAD, Part class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(187, 178) self.title = QtGui.QLabel(Dialog) self.title.setGeometry(QtCore.QRect(10, 10, 271, 16)) self.title.setObjectName("title") self.label_width = QtGui.QLabel(Dialog) self.label_width.setGeometry(QtCore.QRect(10, 50, 57, 16)) self.label_width.setObjectName("label_width") self.label_height = QtGui.QLabel(Dialog) self.label_height.setGeometry(QtCore.QRect(10, 90, 57, 16)) self.label_height.setObjectName("label_height") self.width = QtGui.QLineEdit(Dialog) self.width.setGeometry(QtCore.QRect(60, 40, 111, 26)) self.width.setObjectName("width") self.height = QtGui.QLineEdit(Dialog)

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

valid

Traducciones disponibles:

Desarrollo FreeCAD

de

aplicaciones

para

Declaracin del responsable del


S que la discusin sobre la "derecho" licencia de cdigo abierto ocuparon una parte significativa de ancho de banda de internet y por lo tanto es aqu la razn por qu, en mi opinin, FreeCAD debe tener este uno. 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 decisin. FreeCAD es una mezcla de una biblioteca y una aplicacin, por lo que la GPL sera un poco fuerte para ello. Impedira escribir mdulos comerciales para FreeCAD porque impedira la vinculacin con los libs base de FreeCAD. Usted puede solicitar por ello comercial mdulos en absoluto? Por lo tanto, Linux es buen ejemplo. Linux sera tan exitoso cuando la biblioteca de C de GNU sera GPL y por lo tanto, evitar la vinculacin contra aplicaciones no GPL? Y aunque me encanta la libertad de Linux, tambin quiero ser capaz de utilizar el controlador de grfico 3D NVIDIA muy bueno. Comprendo y aceptar la razn que NVIDIA no va a regalar el cdigo del controlador. Todos trabajamos para las empresas y la necesidad de pago o al menos de alimentos. Por lo que para m, una coexistencia de cdigo abierto y el software de cdigo cerrado no es malo, cuando obedece las reglas de la LGPL. Me gustara ver a alguien que escribe un procesador de importacin y exportacin de Catia para FreeCAD y distribuirlo gratuitamente o por algn dinero. No me gusta para obligarle a regalar ms de lo que quiere. No sera bueno ni para l ni para FreeCAD. Sin embargo, esta decisin es hecha slo para el ncleo del sistema de FreeCAD. Cada escritor de un mdulo de aplicacin podr hacer su propia decisin.

Licencias usadas
Aqu los tres licencias en virtud del cual se publica FreeCAD:
Licencia pblica general (GPL2 +) Para las secuencias de comandos de Python construir los archivos binarios, como se afirma en los archivos .py en src/herramientas Menor General Public Licence (LGPL2 +)

Para los ncleo libs como se indica en los ficheros .h y .cpp en src/APP src/Gui src/base y la mayora mdulos en src/mod y para el ejecutable como se indica en los ficheros .h y .cpp en src/principal Licencia de publicacin abierta Para la documentacin sobre http://Free-CAD.sourceforge.NET/ como no marcado de forma diferente por el autor

Intentamos utilizar solo LGPL tipo de licencias para las bibliotecas del sistema vinculado de ncleo (vea Bibliotecas de terceros ) con una excepcin:
la licencia de Coin3D ( www.coin3d.org ).

Ver del FreeCAD archivo copyright Debian para obtener ms 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 bsicamente todo lo que quieren hacer con ella....
Usuarios profesionales

Puede utilizar FreeCAD libremente, para cualquier tipo de trabajo privado o profesional. Pueden personalizar la aplicacin que lo deseen. Pueden escribir extensiones de cdigo fuente abierto o cerrado en FreeCAD. Siempre son maestros de sus datos, no se ven obligados a actualizar FreeCAD, cambiar su uso de FreeCAD. Utilizando FreeCAD no ligarlos a cualquier tipo de contrato u obligacin.
Desarrolladores de cdigo fuente abiertos

Puede utilizar FreeCAD como las bases para los mdulos de extensin propia para propsitos especiales. Pueden elegir la GPL o la LGPL para permitir el uso de su trabajo en software propietario o no.

Desarrolladores profesionales

Los desarrolladores profesionales pueden utilizar FreeCAD como las bases para sus propios mdulos de extensin para fines especiales y no estn obligados a hacer sus mdulos open source. Pueden usar todos los mdulos que utilizan la LGPL. Se les permite distribuir FreeCAD junto con su software propietario. Recibirn el apoyo de los autores como es no una una forma calle. Si desea vender su mdulo necesita una licencia de Coin3D, de lo contrario se ve obligado por esta biblioteca para que sea open source.

Informar de fallos
Recientemente la plataforma de sourceforge hizo el mantis bug tracker aplicacin disponible para proyectos y FreeCAD es ahora utilizando activamente, en lugar del antiguo incorporada bug tracker. La direccin de nuestro bug tracker es: http://sourceforge.NET/Apps/mantisbt/Free-CAD/main_page.php Si usted piensa que usted podra ha encontrado un bug, eres Bienvenido a informar de ello. Pero antes de informar sobre un bug, por favor, compruebe los siguientes elementos:
Make asegrese de que el fallo es realmente un error, es decir, algo que debera

estar trabajando y que no est funcionando. Si no est seguro, dont dude en explicar su problema en el foro y pregunta qu do.
Antes de presentar cualquier cosa, leer el preguntas ms frecuentes , hace una

bsqueda en el foro y asegrese de que el mismo error no ha reportado antes, realizando una bsqueda en el bug tracker.
Describe como claramente como sea posible el problema, y cmo pueden

reproducirse. Si no podemos verificar el fallo, no podramos ser capaces de fijar ella.


Unirse a la siguiente informacin: el sistema operativo, si es de 32 o 64 bits y la

versin de FreeCAD est en ejecucin.


Por favor presentar un informe por separado para cada error. Si ests en un sistema linux y su fallo provoca un accidente en FreeCAD, puede

intentar ejecutar un backtrace de depuracin: desde una terminal ejecutar gdb freecad (suponiendo que est instalado el paquete gdb), a continuacin, dentro de gdb, escriba Ejecutar . FreeCAD, a continuacin, se ejecutar. Despus de que el accidente ocurre, escriba bt , para obtener el backtrace completo. Incluir ese backtrace en su informe de fallo.

Solicitar funciones
Si desea algo que aparecen en FreeCAD que an no se ha implementado, no es un error sino una solicitud de funcin. Tambin puede enviar en el mismo tracker (archivo, como caracterstica solicitar en lugar de errores), pero tenga en cuenta que no son garantiza que su deseo ser cumplida.

Envo de parches
En caso de que usted ha programado una correccin de errores, una extensin o algo que puede ser de uso pblico en FreeCAD, crear un parche utilizando la herramienta diff de Subversion y lo presentar en el mismo tracker (archivo como parche).

El "viejo" rastreador de sourceforge (obsoleto)


Nota : Utilice el nuevo mantis bug tracker para enviar bugs, esta un poco ahora es obsoleto...

Dnde se encuentran?
FreeCAD el proyecto tiene su propio pgina de resumen de Tracker . Encontrars la informacin general sobre las distintas secciones del Rastreador.

Cundo se debe utilizar?

El Rastreador de FreeCAD Bug

Bugs
Si usted piensa que usted podra ha encontrado un bug, vaya a la Seccin de bugs del tracker y elija "cualquiera" para Estado de ver todos los de solicitud de error jams presentada. La bsqueda por palabra clave le permite encontrar bug tracker entradas para un problema similar. Si no puede encontrar una

entrada mayor acerca de su problema, usted debe presentar una nueva entrada en la misma pgina.

Solicitudes de funcin
Si se echa en falta una caracterstica en FreeCAD que usted piense como bombardeos absolutamente necesario para convertirse en el mundos mejores software de CAD, usted podra encontrar el Solicitud de funcin helpfull de la seccin.

Solicitudes de asistencia
Si no obtiene alrededor de compilacin de FreeCAD y el Compilar en Windows o Compile On Unix seccin no le otorga una sugerencia, o intentarlo de puerto a un nuevo entorno o estn programando nuevos mdulos o extensiones para FreeCAD y necesita alguna asistencia a continuacin, la Las solicitudes de asistencia seccin es el lugar que desee ir a.

Parches de nuevos
En caso de que usted ha programado una correccin de errores, una extensin o algo que puede ser de uso pblico en FreeCAD, crear un parche utilizando Subversion y de archivo en el seccin de parches .

En este artculo se explica paso a paso cmo compilar FreeCAD en Windows.

Requisitos previos
Lo que necesita es principalmente el compilador. En Windows, usamos el compilador de 8 M de $ VisualStudio con el service pack ms alto. Aunque es probablemente posible utilizar gcc Cygwin o MingW no ha probado ni portado hasta ahora. Nosotros tambin hemos portado a utilizar VC8 Express Edition. Necesita descargar el SDK de la plataforma de Windows para obtener, por ejemplo, la Windows.h. Tambin necesita todos los Bibliotecas de terceros para compilar correctamente FreeCAD. Si utiliza los compiladores de $ M que desea ms probable es que descargar el LibPack de FreeCAD que le proporciona todos los libs necesarios para construir FreeCAD en Windows.

Edificio con aenderezar


En primer lugar, tienes que Descargar aenderezar e instlelo en el equipo de generacin.

El conmutador de aenderezar

Desde la versin 0.9 utilizamos el sistema de compilacin de aenderezar para generar los archivos de compilacin y ganar para varios compiladores. Ya no entregamos .vcproj archivos. Si quieres ex versiones de generacin de FreeCAD (0,8 y anterior) ver "Building versiones anteriores" ms adelante en este artculo. Nos cambiaron porque se convirti en ms y ms dolorosa mantener archivos de proyecto para 30 + construccin metas y compiladores de x. aenderezar nos da la posibilidad de apoyar IDEs alternativos, como Code:: Blocks, Qt Creator y Eclipse CDT el compilador principal que usamos es todava Express de M $ VC9, sin embargo. Pero tenemos planes para el futuro de un proceso de generacin de Windows sin el software propietario del compilador.
Configurar el proceso de generacin

El primer paso para construir FreeCAD con aenderezar es para configurar el entorno. Bsicamente hay dos formas para ir:
Utilizando el LibPack Instalar todos necesita libs y dejar que aenderezar encontrarlos

En el primer caso slo necesita dar a aenderezar la ruta de acceso a la LibPack y el resto debe hacerse de forma automtica y ver una

pantalla de tal

Ver la ruta de LibPack que se inserta en el FREECAD_LIBPACK_DIR variable. A partir de que todos incluye y rutas de acceso se establecen. Slo necesita presionar la generar obtener generados el botn y los archivos del proyecto. Si cambia la FREECAD_LIBPACK_USE opciones de desactivar la configuracin intenta encontrar cada biblioteca necesaria en su sistema. Dependiendo de las libs que funciona ms o menos. As que tienes a menudo definir algunos trazados a mano. aenderezar le mostrar lo que no se encuentra y deben especificarse.
Opciones para el proceso de creacin de

El sistema de compilacin de aenderezar nos da mucha ms flexibilidad durante el proceso de generacin. Eso significa que podemos encender y apagar algunas caractersticas o mdulos. Es de una manera como la compilacin del kernel de Linux. Tienes mucho switches para determinar el proceso de generacin.

Aqu es la descripcin de estos modificadores. Ms probable es que cambiar mucho en el futuro porque queremos aumentar la flexibilidad de generacin mucho ms.
Tabla de vnculos Nombre de la variable Descripcin 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 mdulos relacionados conSOBRE la Gui Construir el mdulo de CAM, APAGADO experimental!

FREECAD_BUILD_GUI

FREECAD_BUILD_CAM

Crear los archivos de proyecto FREECAD_BUILD_INSTALLER para el instalador deAPAGADO Windows. Crear los archivos de proyecto FREECAD_BUILD_DOXYGEN_ para la documentacin deAPAGADO DOCU cdigo fuente. El encendido de cosas FREECAD_MAINTAINERS_BUI necesitan slo cuando hacesAPAGADO LD una compilacin de versin.
generacin de lnea de comandos

Aqu un ejemplo cmo construir FreeCAD desde la lnea de comandos:


rem @echo off rem Build script, uses vcbuild to completetly build FreeCAD rem update trunc d: cd "D:\_Projekte\FreeCAD\FreeCAD_0.9" "C:\Program Files (x86)\Subversion\bin\svn.exe" update rem set the aprobiated Variables here or outside in the system

set PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem set INCLUDE=

set LIB= rem Register VS Build programms call "C:\Program Files 9.0\VC\vcvarsall.bat"

(x86)\Microsoft

Visual

Studio

rem Set Standard include paths set INCLUDE=%INCLUDE%;%FrameworkSDKDir%\include set INCLUDE=%INCLUDE%;C:\Program SDKs\Windows\v6.0A\Include

Files\Microsoft

rem Set lib Pathes set LIB=%LIB%;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib set LIB=%LIB%;%PROGRAMFILES%\Microsoft Visual Studio\VC98\Lib rem Start the Visuall Studio build process "C:\Program Files (x86)\Microsoft 9.0\VC\vcpackages\vcbuild.exe" FreeCAD_0.9_build\FreeCAD_trunk.sln" /useenv

Visual Studio "D:\_Projekte\FreeCAD

Versiones ms antiguas de fomento de la


Utilizando LibPack

Para hacerlo ms fcil obtener FreeCAD compilado, proporcionamos una coleccin de todas las bibliotecas necesarias. Se llama la LibPack . Usted puede encontrar en el pgina de descarga de en sourceforge. Es necesario establecer las siguientes variables de entorno:
FREECADLIB = "D:\Wherever\LIBPACK" QTDIR = "% FREECADLIB %"

Aadir "% 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, ya que Windows hace variables de entorno de reemplazar a no recursivamente. Directorio de instalacin de Visual Studio Algunos ruta de bsqueda de Visual Studio que deba establecerse. Para cambiarlos, utilice el men ToolsOptionsDirectory
Incluye

Aadir la siguiente ruta de bsqueda a la lista de bsqueda de rutas incluyen:


%FREECADLIB%\include %FREECADLIB%\include\Python %FREECADLIB%\include\boost

%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

Aadir la siguiente ruta de bsqueda a la lista de bsqueda de rutas de lib:


%FREECADLIB%\lib
Ejecutables

Aadir la siguiente ruta de bsqueda a la lista de bsqueda de la ruta del ejecutable:


%FREECADLIB%\bin Directorio

de

instalacin

binario

de

TortoiseSVN,

generalmente

"C:\Programm Files\TortoiseSVN\bin", esto es necesario para una distribucin construir cuando SubWVRev.exe se utiliza para extraer el nmero de versin de Subversion.

Python es necesario Durante la compilacin se ejecutan algunas secuencias de comandos de Python. As que el intrprete de Python tiene que funcionar en el sistema operativo. Utilice un cuadro de mando para comprobarlo. Si no est instalada correctamente la biblioteca de Python obtendr un mensaje de error como no se puede encontrar en python.exe. Si utiliza la LibPack tambin puede utilizar el python.exe en el directorio bin.

Especial para VC8 Al generar el proyecto con VC8, usted tiene que cambiar la informacin de enlace para la biblioteca de WildMagic, puesto que necesita una versin diferente para VC6 y VC8. Ambas versiones se suministran en LIBPACK/dll. En las propiedades del proyecto para AppMesh cambiar el nombre de la biblioteca de la wm.dll a la versin VC8. Tenga cuidado de cambiarlo en Debug y configuracin de Release.
Compilar

Despus de que cumplen todos los requisitos previos la compilacin Ojal - es slo un clic de ratn en VC;-)
Despus 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.exe despus de una generacin correcta:
Python.exe y python_d.exe de LIBPACK/bin python25.dll y python25_d.dll de LIBPACK/bin python25.ZIP de LIBPACK/bin hacer una copia de Python25.zip y cambiarle el nombre a Python25_d.zip QtCore4.dll de LIBPACK/bin QtGui4.dll de LIBPACK/bin boost_signals-vc80-mt-1_34_1.dll de LIBPACK/bin boost_program_options-vc80-mt-1_34_1.dll de LIBPACK/bin Xerces-c_2_8.dll de LIBPACK/bin zlib1.dll de LIBPACK/bin coin2.dll de LIBPACK/bin soqt1.dll de LIBPACK/bin QtOpenGL4.dll de LIBPACK/bin QtNetwork4.dll de LIBPACK/bin QtSvg4.dll de LIBPACK/bin QtXml4.dll de LIBPACK/bin

Cuando se utiliza un LibPack con una versin de Python mayor de 2.5 tiene que copiar los archivos de ms de dos:

zlib.PYD y zlib_d.pyd de LIBPACK/bin/lib. Esto es necesario por python

para abrir la biblioteca de python comprimidos.


_sre.PYD y _sre_d.pyd de LIBPACK/bin/lib. Esto es necesario por python

para la construccin en ayudar a sistema.

Si no lo consigues ejecutarlo debido a un error de Python es muy probable que uno de los zlib*.pyd faltan los archivos.
Material adicional

Si encuentro para construir la fuente cdigo documentacin que necesita DoxyGen . Para crear un paquete de intstaller necesita WIX . Durante la compilacin se ejecutan algunas secuencias de comandos de Python. Por lo tanto, el intrprete de Python tiene para que funcione correctamente. Para obtener ms detalles tambin echar un vistazo a README.Linux en sus fuentes. En primer lugar debe construir el plugin de Qt que proporciona todos los widgets personalizados de FreeCAD que necesitamos para el diseador Qt. Las fuentes se encuentran bajo
//src/Tools/plugins/widget//.

Hasta el momento no proporcionamos un archivo makefile--pero llamada


qmake plugin.pro

lo crea. Una vez hecho esto, llamando a hacer crear la biblioteca


//libFreeCAD_widgets.so//.

Dar a conocer esta biblioteca a tu Qt Designer tiene que copiar el archivo a


//$QTDIR/plugin/designer//.

En recientes distribuciones de linux, FreeCAD es generalmente ms fciles de construir, ya que todas las dependencias son prestadas normalmente por el administrador de paquetes. Bsicamente, slo tiene que necesita obtener el cdigo fuente de FreeCAD y, a continuacin, instale las dependencias que se enumeran a continuacin, y emitir:
./autogen.sh && ./configure && make

o
./cmake . && make

para obtener FreeCAD construido, dependiendo de lo que construir el sistema que prefiere utilizar ( autotools o aenderezar ). A continuacin, encontrar explicaciones detalladas del todo el proceso y particularidades que puedan surgir. Antes de que usted demasiado empantanarse en detalles, tambin hay un shellscript que puede utilizar para seguir a lo largo. Si encuentras algo malo o aqu abajo, por favor, nos ayudan a corregir ella.

Obtencin de la fuente
Antes de que se puede compilar FreeCAD, debe obtener el cdigo fuente. Instalar primero subversin . A continuacin, desde el directorio de su eleccin (por ejemplo, su directorio de usuario), do:
svn co freecad https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk

This will perform an anonymous checkout of the current development version in a new directory called "freecad". 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. Note, though, that the subversion version is the FreeCAD version currently being worked on, and it might contain bugs or even fail to compile.

Prerequisites
To compile FreeCAD under Linux you have to install all libraries mentioned in Third Party Libraries first. You also need the GNU gcc compiler version equal or above 3.0.0. g++ is also needed because FreeCAD is completely written in C+ +. Both gcc and g++ are included in the build-essential package listed below. During the compilation some Python scripts get executed. So the Python interpreter has to work properly. Para evitar cualquier problema de vinculador durante el proceso de compilacin que sera una buena idea que las rutas de acceso de la biblioteca ya sea en su LD_LIBRARY_PATH variable o, en su ld.so.conf archivo. Esto ocurre normalmente ya en recientes distribuciones. Para obtener ms detalles, tienen tambin un vistazo a README.Linux en sus fuentes.
Distribuciones Debian/Ubuntu y ms recientes

En los sistemas basados en Debian es bastante fcil obtener todas necesarias las dependencias instaladas. La mayora de las bibliotecas estn disponibles a

travs del administrador de paquetes apt-get o sinptica. A continuacin figuran todos los packgages que necesita instalar. Sobre otras distribuciones, los nombres del paquete pueden variar, 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, solo copiar y pegar el texto siguiente en una terminal (slo 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.5-dev libopencascade-dev

Opcionalmente, tambin 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, 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, se necesitan unas cuantas sugerencias y trucos:
Instalar un montn de paquetes necesarios, ms estn disponibles desde los

repositorios de Fedora 13
Descargar y generar xerces

Descargar y generar OpenCascade. Necesario sealar a xmu:. /configure--con-xmu-

include = / usr/incluyen/X 11/Xmu--biblioteca con xmu = / usr/lib


Descargar y generar Pivy. Tienen que quitar las 2 referencias a inexistentes

"SoQtSpaceball.h" de pivy/interfaces/soqt.i comentarios fuera de esas dos lneas permiten la generacin & instalar al trabajo.
Configurar Freecad. Necesario sealar a unas pocas cosas:. /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 - golpea un problema donde la generacin es romper porque las ldflags para

soqt se establece en "-LNONE" que hizo libtool barf. Mi solucin alguien fue modificar /usr/lib/Coin2/conf/soqt-default.cfg para que el ldflags son ""en lugar de"LNONE". Despus de esto - > xito!
make install Distribuciones ms antiguas y no convencionales

Distribuciones antiguas, 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. Usted tiene que comprobar usted mismo para su distribucin, si hay alguno disponible. Por lo menos desde Debian Lenny y Ubuntu Intrepid sobre un .deb oficial paquete se ofrece. Para mayores Debian o Ubuntu paquetes de versiones obtendr no oficial de aqu . Para construir su propio .deb privada paquetes siguen estos pasos:
wget http://lyre.mit.edu/~powell/opencascade/opencascade_6.2.0.orig.tar.gz wget http://lyre.mit.edu/~powell/opencascade/opencascade_6.2.0-7.dsc wget http://lyre.mit.edu/~powell/opencascade/opencascade_6.2.07.diff.gz dpkg-source -x opencascade_6.2.0-7.dsc # Install OCC build-deps sudo apt-get install build-essential devscripts debhelper autoconf automake libtool bison libx11-dev tcl8.4-dev tk8.4-dev libgl1-mesa-dev libglu1-mesa-dev java-gcj-compat-dev libxmu-dev #Build Opencascade packages. This takes hours and requires # at least 8 GB of free disk space cd opencascade-6.2.0 ; debuild # Install the resulting library debs sudo dpkg -i libopencascade6.2-0_6.2.0-7_i386.deb libopencascade6.2-dev_6.2.0-7_i386.deb

De forma alternativa, puede descargar y compilar la versin ms reciente de opencascade.org :

Instalar el paquete normalmente, tenga en cuenta que el instalador es un programa de java que requiere la edicin de tiempo de ejecucin de java oficial de Sun (nombre de paquete: Sol-java6-jre), no el open-source java (gij) que se incluye con Ubuntu. Instalarlo si es necesario:
sudo apt-get remove gij sudo apt-get install sun-java6-jre

Tenga cuidado, si utiliza java gij con otras cosas como un complemento del navegador, no funcionar ya. Si el instalador no funciona, intente:
java -cp path_to_file_setup.jar <-Dtemp.dir=path_to_tmp_directory> run

Una vez que est instalado el paquete, vaya al directorio "ros" dentro del dir opencascade y hacer
./configure --with-tcl=/usr/lib/tcl8.4 --with-tk=/usr/lib/tk8.4

Ahora puede compilar. Volver a la carpeta de ros y hacer:


make

Tardar mucho tiempo, tal vez varias horas. Cuando haya terminado, slo tiene que instalar haciendo
sudo make install

Los archivos de biblioteca se copiarn en /usr/local/lib que est muy bien, porque all se va encontrar automticamente por cualquier programa. Si lo prefiere, tambin puede hacer
sudo checkinstall

que hagan lo mismo como hacer instalar pero cree una entrada en su sistema de gestin de paquetes, por lo que fcilmente puede desinstalar ms tarde. Ahora limpiar los archivos de compilacin temporal enorme haciendo
make clean

Posible error 1: si est utilizando la versin 6.2 de OCC, es probable que el compilador se detendr justo despus del comienzo de la operacin de "hacer". Si sucede, edite el script "configure", busque el CXXFLAGS = "$ CXXFLAGS" Declaracin y reemplazarlo por CXXFLAGS = "$ CXXFLAGS - ffriend inyeccin - fpermissive". A continuacin, siga el paso de configuracin una vez ms. Posible error 2: posiblemente varios mdulos (WOKSH, WOKLibs, TKWOKTcl, TKViewerTest y TKDraw) se quejarn de que ellos no pudieron encontrar los encabezados de tcl/tk. En ese caso, ya que la opcin no est disponible en el script de configuracin, tendr que editar manualmente el archivo makefile de cada uno de estos mdulos: go en adm y ganar y en cada una de las carpetas

de mdulos de mala. Editar el fichero Makefile y localice las lneas CSF_TclLibs_INCLUDES = - I/usr/include y CSF_TclTkLibs_INCLUDES = I/usr/include y agregue /tcl8.4 y /tk8.4 a l, por lo que leen: CSF_TclLibs_INCLUDES =-I/usr/include/tcl8.4 and CSF_TclTkLibs_INCLUDES =-I/usr/include/tk8.4
SoQt

La biblioteca de SoQt debe compilarse contra Qt4, que es el caso de las distribuciones ms recientes. Pero en el momento de escribir este artculo hubo slo paquetes de SoQt4 para Debian propia disponible pero no para todas las versiones de Ubuntu. Para obtener los paquetes construidos realice los pasos siguientes:
wget http://ftp.de.debian.org/debian/pool/main/s/soqt/soqt_1.4.1.orig.tar.g z wget http://ftp.de.debian.org/debian/pool/main/s/soqt/soqt_1.4.1-6.dsc wget http://ftp.de.debian.org/debian/pool/main/s/soqt/soqt_1.4.16.diff.gz dpkg-source -x soqt_1.4.1-6.dsc sudo apt-get install doxygen devscripts fakeroot debhelper libqt3-mtdev qt3-dev-tools libqt4-opengl-dev cd soqt-1.4.1 debuild sudo dpkg -i libsoqt4-20_1.4.1-6_i386.deb libsoqt4-dev_1.4.16_i386.deb libsoqt-dev-common_1.4.1-6_i386.deb

Si ests en un sistema de 64 bits, probablemente necesitar cambiar i386, amd64.


Pivy

Pivy no es necesaria para construir FreeCAD o para ejecutarlo, pero es necesario para que el mdulo de redaccin 2D trabajar. Si no vas a usar ese mdulo, no necesita pivy. En el momento de redactar este informe, Pivy es muy nuevo y no podra haber hecho su camino a su repositorio de la distribucin. Si no puede encontrar Pivy en el repositorio de paquetes de su distribucin, puede capturar paquetes de debian/ubuntu en la pgina de descarga de FreeCAD: http://sourceforge.NET/Projects/Free-CAD/Files/FreeCAD%20Linux/ o compilar pivy: Instrucciones de compilacin de Pivy

Compilar FreeCAD

SourceForge bug tracker: errores de compilacin de bsqueda La forma de autotools

Debe disponer de automake y libtool instalado en su sistema; en Debian/Ubuntu:


aptitude install automake libtool

Si tienes las fuentes con la subversin, a continuacin, debe ser el primer paso
./autogen.sh

crea el script de configuracin y mucho ms. Para el proceso de generacin propia proporcionamos un script de configuracin. Slo tiene que escribir
./configure

Para obtener todo configurado. Si desea que una visin general de todas las opciones que puede especificar, puede escribir
./configure --help.

Normalmente necesita ninguno de ellos - a menos que tenga uno de sus bibliotecas instalados en un directorio realmente raro. Despus de que haya finalizado la configuracin, es tan simple como la compilacin FreeCAD
make

Si por favor cualquier error se produce durante la construccin de fuentes, compruebe esta pgina y el archivo README.Linux, entonces usted podra saltar a la Bug Tracker en SourceForge, elija los para el Estado y haga clic en el examinar botn para ver informes anteriores sobre problemas de compilacin. Despus de haber construido FreeCAD correctamente, hacer
make install

para instalarlo en su mquina. El directorio de instalacin por defecto es


~/FreeCAD

Se instalar en una carpeta de FreeCAD en la carpeta de inicio, as que no necesita privilegios de root. En lugar de make install, que tambin puede hacer
checkinstall

De esta manera que se instalar FreeCAD por su sistema de gestin de paquetes, por lo tanto puede desinstalarlo fcilmente ms tarde. Pero dado que todos de instalacin de FreeCAD se encuentran en un nico directorio, simplemente quitando el directorio de FreeCAD es una forma vlida para desinstalar demasiado.
El aenderezar forma

aenderezar es un sistema de compilacin ms reciente que tiene la gran ventaja de ser comn para los sistemas de destino diferentes (Linux, Windows, MacOSX, etc.). FreeCAD est cambiando progresivamente al sistema de aenderezar, y ya puede generar FreeCAD de esa manera. Suponiendo que aenderezar est instalado en su sistema, cambie a su carpeta de origen FreeCAD y la cuestin:
cmake .

Tener el origen configurado, a continuacin


make

Para tener FreeCAD construido. Una instalacin adecuada de todo el sistema de FreeCAD todava no puede hacerse con aenderezar, pero puede ejecutar FreeCAD mediante la emisin de
,/bin/FreeCAD Partes opcionales

Si desea desarrollar Qt cosas para FreeCAD, necesitar el plugin de Qt Designer que proporciona todos los widgets personalizados de FreeCAD. Vete a
freecad/src/Tools/plugins/widget

Hasta el momento no proporcionamos un archivo makefile--pero llamada


qmake plugin.pro

lo crea. Una vez hecho esto, llamar a


make

se crear la libFreeCAD_widgets.so de la biblioteca. Dar a conocer esta biblioteca a Qt Designer tiene que copiar el archivo a
$QTDIR/plugin/designer

Solucin 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. Para obtener FreeCAD que se est ejecutando

correctamente, puede que tenga que ejecutar el. / configure secuencias de comandos con el adicional definir conjunto de _OCC64:
./configure CXXFLAGS="-D_OCC64"

Para sistemas basados en Debian esta solucin no es necesaria cuando se utiliza el paquete precompilado porque all est fabricado para establecer internamente este define que el paquete de OpenCASCADE. Ahora slo necesita compilar FreeCAD de la misma manera como se describi anteriormente.
Macros de automake

El script de configuracin de FreeCAD hace uso de varias macros de automake que a veces no se instalan con sus paquetes: bnv_have_qt.m4, coin.m4 y gts.m4. Si es necesario (error mientras configura), google para ellos y le ser encontrarlas fcilmente. Son slo simples secuencias de comandos que necesita para colocar en la carpeta /usr/share/aclocal.

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, compliant)

used

for

checking

if

packages

are

standard-

Para crear un paquete abierto una consola, simplemente vaya al directorio FreeCAD y llamada
debuild

Una vez que el paquete se construye, usted puede utilizar lintian para comprobar si el paquete contiene errores
lintian your-fresh-new-freecad-package.deb (replace by the name of the package you just created)

Secuencias de comandos de generacin automtica


Aqu es todo lo que usted necesita para una generacin completa de FreeCAD. Es un enfoque de una secuencia de comandos y funciona en una fresca distro instalada. Los comandos le pedir la contrasea de root (para la instalacin de paquetes) y en algn momento a reconocer una huella digital de un repositorio de servidor o https-subversin de repositorio externo. Este secuencias de comandos deben ejecutarse en versiones de 32 y 64 bits. Estn escritas para versin distinta, pero tambin es probables que se ejecutan en una versin posterior, con o sin cambios de menor importancia.

Si tiene una secuencia de comandos para su distro preferida, por favor, mndelo! Incorporar en este artculo.
Ubuntu 9.10 - Karmic Koala / Ubuntu 10.04 LTS - 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.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.svn.sourceforge.net/svnroot/free-cad/trunk freecad # go to source dir cd freecad # build configuration cmake . # build FreeCAD make # test FreeCAD cd bin ./FreeCAD -t 0 Ubuntu 9.04 - 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.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.svn.sourceforge.net/svnroot/free-cad/trunk freecad # go to source dir

cd freecad # build configuration cmake . # build FreeCAD make # test FreeCAD cd bin ./FreeCAD -t 0 11.2 De OpenSuse

Este script es no funciona en este momento porque:


libXerces-c-devel costuras a ser desaparecido....

# 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.svn.sourceforge.net/svnroot/free-cad/trunk freecad # go to source dir cd freecad # build configuration cmake . # build FreeCAD nice make # test FreeCAD cd bin ./FreeCAD -t 0 OpenSuse 11.1 # additional repository (for OpenCascade) sudo zypper -p http://packman.unixheads.com/suse/11.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

svn co freecad

https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk

# go to source dir cd freecad # build configuration cmake . # build FreeCAD nice make # test FreeCAD cd bin ./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.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.svn.sourceforge.net/svnroot/free-cad/trunk freecad # go to source dir cd freecad # build configuration cmake . # build FreeCAD make # test FreeCAD cd bin ./FreeCAD -t 0

FreeCAD de compilar en un Mac no es muy diferente de los pasos en Linux u otras variantes de UNIX. El mayor reto es conseguir realmente todas las dependencias instaladas. En las secciones siguientes, me (lhagan) se detalla

los pasos exactos que tuve que ir a travs de conseguir esta aplicacin para compilar en Leopard y Snow Leopard utilizando un Mac Intel (PowerPC debe ser factible, pero requiere volver a compilar algunas bibliotecas binarios que todava no he llegado a). Por lo que yo s, soy el nico para construir con xito el FreeCAD en un Mac recientemente, por favor, puesto en el foro de discusin si estos pasos funcionan para usted, por el ayudar a Foro si no es as, o editar esta pgina si encuentra errores.

Descargar las fuentes de FreeCAD


En primer lugar que necesita obtener una copia del rbol de cdigo fuente de FreeCAD. Slo retirar la revisin ms reciente desde el repositorio de subversion de SourceForge mediante este comando en el terminal:
svn co freecad http://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk

Esto pondr el origen de la FreeCAD y los archivos relacionados en su carpeta de inicio (~/freecad/). Ubicacin no es importante que si sera ms bien colocarlo en otro lugar, slo necesita acceso completo a los archivos.

Instalacin MacPorts y las dependencias de la biblioteca


A continuacin, si ya no tienes, instalar MacPorts. MacPorts es un sistema que permite descargar, compilar e instalar muchas aplicaciones comunes de cdigo abierto con un solo comando. Aplicaciones similares desde el mundo de UNIX/Linux son PKGSRC y APT. Para instalar, simplemente Descargar la imagen de disco desde el sitio de MacPorts y siga las instrucciones:
http://www.MacPorts.org/Install.php

Si o no acaba de instalar MacPorts, probablemente querr asegurarse de que est actualizado. Ejecutar:
sudo port selfupdate

Ahora que MacPorts est instalado y actualizado, puede iniciar la instalacin de algunos de los paquetes requeridos de FreeCAD:
Oda xercesc impulso GTS OpenCV

El siguiente comando ser compilacin e instalacin todas las bibliotecas necesarias. Si MacPorts produce errores, puede que desee intente instalar de uno en uno.
sudo port install ode xercesc boost gts opencv

El leopardo de nieve, opencv no construir actualmente. Usted puede, sin embargo, continuar sin opencv.

Instalacin de marcos y OpenCASCADE


FreeCAD tiene otras dependencias (vase CompileOnUnix), pero el resto o bien se incluyen de forma predeterminada en OS X Leopard o puede instalarse usando paquetes del instalador. Descargue e instale los siguientes elementos:
Qt http://qt.nokia.com/downloads

Obtenga la versin de "Marco slo" a menos que se planea desarrollar usando Qt (es mucho ms pequeo). FreeCAD compila en OS X Leopard con Qt 4.5. Se instala en /Library/Frameworks y/usr/bin.
Http://www.coin3d.org/lib/coin/releases/ de la moneda

Instale Coin.pkg Y CoinTools.pkg. FreeCAD compila en OS X Leopard con moneda 3.1.0. Se instala en /Library/Frameworks.
SoQt http://dl.getdropbox.com/u/103808/FreeCAD/SoQt-1.4.1.dmg

Instale SoQt.pkg Y SoQtTools.pkg. Por alguna razn, no se proporciona el marco de la SoQt como un binario oficial. Para su comodidad, yo estoy proporcionando la anterior versin compilada. Si desea compilar su propio, descargue la ltima fuente de http://www.coin3d.org/lib/soqt/releases y siga las instrucciones en README.MACOSX. FreeCAD compila en OS X Leopard con SoQt 1.4.1. Se instala en /Library/Frameworks.
OpenCASCADE

http://dl.getdropbox.com/u/103808/FreeCAD/OpenCASCADE_i 386_6.3.0_20091128.dmg La por encima de la OCC 6.3.0 distribucin binaria es una versin modificada de la proporcionada por los mantenedores de PythonOCC http://www.pythonocc.org/. Puede utilizar la versin de PythonOCC, sin embargo, se necesitan cambios a los archivos de .la en orden para el FreeCAD proceso para vincular adecuadamente a ella de construccin y tendrs que descargar el origen de la OCC por separado. He no todava correctamente construido OpenCASCADE yo mismo, pero sera igual que eventualmente--

esto sera clave para brindar una distribucin de PowerPC (si es incluso posible). Si te OpenCASCADE para construir en OS X, djeme saber cmo. Se instala en /usr/local/lib/OCC y /usr/local/include/OCC. ACTUALIZADA de 2009-11-28 con correcciones para Snow Leopard. Si ha instalado OCC anteriores a esta fecha, se recomienda que usted elimina los archivos antiguos e instala manualmente el nuevo paquete.
sudo rm -r /usr/local/lib/OCC sudo rm -r /usr/local/include/OCC

Descargar y 'instalar' a la plantilla de FreeCAD.app


El archivo siguiente contiene la plantilla de una paquete de aplicacin para FreeCAD. Esto no es estrictamente necesario, pero hace que trabajar con FreeCAD ms conveniente que la configuracin predeterminada de la instalacin. Mina se encuentra en la carpeta /aplicaciones, pero usted debe poder ponerlo en cualquier lugar que desee--slo recuerda que el paquete no se puede mover, despus de que FreeCAD est cumplido y instalado (sin algunas modificaciones adicionales). Running hacer usando la configuracin por debajo de la voluntad de la instalacin instalar en este paquete.
http://DL.getdropbox.com/u/103808/FreeCAD/FreeCAD_bundle_template_2009 1128.tar.gz ACTUALIZADA de 2009-11-28 con el nuevo icono de la aplicacin de FreeCAD

Compilar
Ahora configurar, compilar e instalar utilizando los siguientes comandos desde dentro de la carpeta raz del FreeCAD de FreeCAD. Si pone su paquete de FreeCAD.app en algn lugar distinto de /aplicaciones (o no est usando el paquete), cambie la lnea 'PREFIX' en consecuencia.
./autogen.sh PREFIX=/Applications/FreeCAD.app/Contents

./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,-headerpad_max_install_names make install

Dependiendo de su mquina, la hacen paso puede tomar bastante tiempo.

Ejecutar
Si todo ha ido correctamente, haga doble clic en el paquete de .app debe iniciar FreeCAD. Si tienes cualquier problema, los detalles del post sobre la ayudar a Foro .

Visin general
Estas son las bibliotecas que no cambian en el proyecto de FreeCAD. Se utilizan bsicamente sin cambios como una biblioteca de vnculos dinmicos (*.so o *.dll). Si hay un cambio necesario o se necesita una clase contenedora, a continuacin, el cdigo de la envoltura o el cdigo de la Biblioteca ha cambiado necesario mover para el paquete de base de FreeCAD. Las bibliotecas utilizadas son: Tener en cuenta usando LibPack en lugar de descarga e instalacin de todas las cosas en su propia.

Enlaces
Tabla de vnculos Nombre de lib Python Versin necesaria > = 2.5. x Vnculo para obtenerlo http://www.Python.org/ http://www.opencascade.org http://www.qtsoftware.com http://www.coin3d.org

OpenCasCa > = 5.2 de Qt Coin3D > = 4.1. x > = 2.x

ODA SoQt

> = 0.10 > = 1.2

http://www.ode.org http://www.coin3d.org

Xerces-C+ > = 2.7 < 3.0 http://XML.Apache.org/Xerces-c/ + GTS Zlib Impulso Eigen2 > = 0.7 > = 1.x.x > = 1.33.x > = 2.0.5 http://GTS.sourceforge.NET/ http://www.zlib.NET/ http://www.boost.org/ http://eigen.tuxfamily.org/index.php? title=Main_Page

Detalles
Python

Versin: 2.5 o superior Licencia: Licencia de Python 2.5 Puede utilizar la fuente o binario de http://www.Python.org/ o utilizar alternetivly ActiveState Python desde http://www.activestate.com/ aunque es un poco difcil obtener los libs de depuracin de ActiveState. Descripcin Python es el lenguaje principal de secuencias de comandos y se utiliza en toda la aplicacin. Por ejemplo:
Implementar scripts de prueba para realizar pruebas en: prdidas de memoria garantizar presenta funcionalidad despus de los cambios Contabilizar cheques de generacin pruebas de cobertura de la prueba Grabacin de macros y macro Implementar lgica de la aplicacin para los paquetes estndar Aplicacin de workbenches todo Dinmico de carga de los paquetes Aplicacin de normas para el diseo (ingeniera de conocimiento) Haciendo algunas cosas de Internet fancy como grupos de trabajo y PDM. Y as sucesivamente...

Especialmente la carga de paquete dinmico de Python se utiliza para cargar en la funcionalidad adicional de tiempo de ejecucin y workbenches necesarios

para las tareas reales. Para un vistazo a Python vea: www.python.org por qu Python puede pedir. Hay algunas razones: hasta ahora he utilizado diferentes lenguajes de scripting en mi vida profesional:
Perl Tcl/Tk VB Java

Python es ms OO a continuacin, Perl y Tcl, el cdigo no es un desastre como en Perl y VB. Java no es un lenguaje de secuencia de comandos en el primer lugar y disco duro (o imposible) para incrustar. Python est bien documentada y fciles de integrar y extender. Es tambin bien probado y tiene un fuerte respaldo a celebrar en la comunidad de cdigo abierto. Crditos Va a Guido van Rossum y un montn de gente hizo Python sea un xito!
OpenCasCade

Versin: 5.2 o superior Licencia: OCTPL OCC es un ncleo de CAD completo. Originalmente, est desarrollado por Datavision de Matra en Francia para el Strim (Styler) y aplicaciones de Quantum de Euclides y ms tarde hizo Open Source. Es una biblioteca realmente enorme y hace que sea una aplicacin de CAD libre posible en primer lugar, proporcionando algunos paquetes que seran difcil o imposible de aplicar en un proyecto de cdigo abierto:
Un ncleo de geometra compatible con completado de STEP Un modelo de datos topolgicos y las funciones todos necesarias para trabajar en

(cortar, fusible, extruir y as sucesivamente...)


Import estndar- / exportacin de procesadores como STEP, IGES, VRML Visor 3D y 2D con el apoyo de la seleccin Una estructura de datos de proyecto de documento y con soporte para guardar y

restore, externo de vinculacin de documentos, el nuevo clculo de la historia de diseo (modelado paramtrico) y una instalacin para cargar dinmicamente de nuevos tipos de datos como un paquete de extensin

Para aprender ms acerca de OpenCasCade eche un vistazo a la pgina de OpenCasCade o http://www.opencascade.org .

Qt

Versin: 4.1. x o superior Licencia: V2.0/v3.0 de la GPL o comercial (desde la versin 4.5 en tambin LPGL v2.1) No creo que necesario que diga mucho acerca de Qt. Es uno de los kits de herramientas de GUI ms utilizadas en proyectos de cdigo abierto. Para m, el punto ms importante para usar Qt es el diseador de Qt y la posibilidad de cargar los cuadros de dilogo todo como un recurso (XML) e incorporar widgets especializados. En una aplicacin de CAX la interaccin con el usuario y cuadros de dilogo son por lejos la mayor parte del cdigo y un diseador de buen dilogo es muy importante para ampliar fcilmente FreeCAD con nueva funcionalidad. Ms informacin y una muy buena documentacin en lnea que encontrar en http://www.qtsoftware.com .
Coin3D

Versin: 2.0 o mayor Licencia: V2.0 GPL o comercial Moneda es una biblioteca de grficos 3D de alto nivel con una interfaz de programacin de aplicaciones de C++. Moneda utiliza estructuras de datos de scenegraph para representar grficos en tiempo real adecuado para la mayora todo tipo de aplicaciones de visualizacin cientfica y de ingeniera. Moneda es porttil en una amplia gama de plataformas: cualquier UNIX / Linux / * BSD plataforma, todos de Microsoft de Windows, sistema operativo y Mac OS X. Moneda se basa en la biblioteca estndar de la industria de procesamiento del modo inmediato de OpenGL y agrega abstracciones para nivel superiores primitivas, proporciona interactividad 3D, inmensamente aumenta la productividad y comodidad de programador y contiene muchas caractersticas de optimizacin del complejo para el procesamiento rpido que son transparentes para el programador de la aplicacin. Moneda se basa en la API abierta de inventor de SGI. Inventor abierto, para quienes no estn familiarizados con ella, desde hace mucho tiempo se ha convertido en la biblioteca de grficos estndar de facto para la visualizacin en 3D y software de simulacin visual en la comunidad cientfica y de ingeniera. Se ha demostrado que vale durante un perodo de ms de 10 aos, su

madurez que contribuyen a su xito como un gran bloque de creacin en miles de aplicaciones de ingeniera a gran escala alrededor del mundo. 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, especialmente cuando va en representacin de ingeniera a gran escala. Otras cosas como texturas o procesamiento volumtrica no son realmente compatibles y as sucesivamente.... Desde la versin 2.0 Coin utiliza un modelo de licencia diferente. No es ms largo LGPL. Utilizan GPL para una licencia comercial para cdigo cerrado y de cdigo abierto. Esto significa que si desea vender su trabajo basado en FreeCAD (mdulos de extensin), deber adquirir una licencia de monedas!
ODE (Open motor dinmico)

Versin: 0.10.0 o superior Licencia: LGPL v2.1 o posterior o BSD ODE es de cdigo abierto, biblioteca de alto rendimiento para simular dinmica de cuerpo rgido. Aparece completamente, estable, maduro y plataforma independiente con una API de C y C++ fcil de usar. Se ha avanzado tipos conjuntos y integrado de deteccin de colisiones con la friccin. ODE es til para la simulacin de vehculos, objetos en entornos de realidad virtual y criaturas virtuales. Actualmente se utiliza en muchos juegos de ordenador, 3D, herramientas de simulacin y herramientas de autora. Crditos Russell Smith es el principal autor de ODE.

SoQt

Versin: 1.2.0 o superior Licencia: V2.0 GPL o comercial SoQt es el inventor vinculante para el Kit de herramientas de Gui de Qt. Por desgracia, no es ms largo LGPL por lo que tenemos que quitarlo de la base de cdigo de FreeCAD y vincularlo como una biblioteca. Tiene el mismo modelo de licencia como moneda. Y tienes que compilarlo con su versin de Qt.

Xerces-C++

Versin: 2.7.0 o superior Licencia: Versin de licencia de software de Apache 2.0 Xerces-C++ es un analizador XML validar escrito en un subconjunto porttil de C++. Xerces-C++ facilita la tarea de dar a su aplicacin la capacidad para leer y escribir datos XML. Se proporciona una biblioteca compartida para analizar, generando, manipular y validar documentos XML. Xerces-C++ es fiel a la recomendacin XML 1.0 y muchos de los estndares asociados (vase caractersticas ms abajo). El analizador proporciona alto rendimiento, modularidad y escalabilidad. Cdigo fuente, muestras y documentacin de la API se proporcionan con el analizador. Para la portabilidad, ha tenido cuidado para hacer un uso mnimo de plantillas, no RTTI y uso mnimo de #ifdefs. El analizador se utiliza para guardar y restaurar parmetros en FreeCAD.
GTS

Versin: 0.7 Licencia: V2.0 LGPL o posterior GTS las siglas de la biblioteca de superficies trianguladas de GNU. Es un Open Source Free Software Library pretende proporcionar un conjunto de funciones tiles para hacer frente a las superficies 3D con la de tringulos interconectadas. El cdigo fuente est disponible de forma gratuita bajo la licencia LGPL de software libre. Realmente no es necesario compilar FreeCAD. Puede cambiar en el uso con un interruptor proprocessor en FCConfig.h.
Zlib

Versin: 1.x.x Licencia: zlib License zlib est diseado para ser una libre, para fines generales, legalmente no comprometido--es decir, no cubiertos por ninguna patente--biblioteca de compresin sin prdida de datos para su uso en prcticamente cualquier equipo hardware y sistema operativo. El formato de datos de zlib es en s mismo porttil a travs de plataformas. A diferencia del mtodo de compresin LZW utilizado en Unix Compress (1) y en el formato de imagen GIF, el mtodo de compresin que se utiliza actualmente en zlib esencialmente nunca expande

los datos. (LZW puede duplicar o triplicar el tamao del archivo en casos extremos). la huella de la memoria de zlib tambin es independiente de los datos de entrada y puede ser reducida, si es necesario, algunos sin costo en compresin.

Impulso

Versin: 1.33.x Licencia: Licencia de software de impulso - versin 1.0 Las bibliotecas de C++ de Boost son una coleccin de las bibliotecas de peerreviewed y de cdigo abierto que amplan la funcionalidad de C++. Las bibliotecas tienen licencia bajo la licencia de software de Boost, diseado para permitir a Boost ser usado con ambos proyectos de cdigo abierto y cerrado. Muchos de los fundadores del Boost estn en el Comit de estndar de C++ y varias bibliotecas de Boost han sido aceptadas para su incorporacin a la tcnica 1 informe de C ++ 0 x. Las bibliotecas estn encaminadas a una amplia gama de usuarios de C++ y dominios de aplicacin. Van desde bibliotecas de propsito generales como SmartPtr, para OS abstracciones como sistema de archivos, bibliotecas, principalmente dirigidas a otros desarrolladores de biblioteca y avanzadas de C++ los usuarios, como la MPL. A fin de garantizar la eficacia y la flexibilidad, Boost hace un amplio uso de plantillas. Impulso ha sido una fuente de trabajo extenso e investigacin en programacin genrica y metaprogramacin en C++. Ver: http://www.boost.org/ para detalles.

LibPack
LibPack es un conveniente paquete con todas las bibliotecas anteriores empaquetados juntos. Est actualmente disponible para la plataforma de Windows en el Descargar pgina! Si est trabajando bajo Linux no necesita un LibPack, en lugar de debe hacer uso de los repositorios de paquetes de tu distribucin de Linux.
FreeCADLibs7.x Changelog Utilizando QT 4.5. x y 3.1.x de monedas Eigen plantilla lib para robot aadido SMESH experimental

Pgina de herramienta
Para el desarrollo de cada software graves necesita herramientas. 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 tcnica, la herramienta de diseo de interfaz de usuario de plataforma independend. Est contenido en el LibPack de FreeCAD, pero tambin puede descargarse en www.trolltech.com .
InkScape

Programa de dibujo de vector de gran . Adhers para el estndar SVG y se utiliza para dibujar iconos e imgenes. Obtenerlo en www.inkscape.org .
Doxygen

Una herramienta muy buena y estable para generar documentacin de origen de los archivos .h y .cpp.
The Gimp

No mucho que decir sobre el programa de manipulacin de imagen de GNU. Adems puede manejar archivos .xpm que es una forma muy conveniente para manejar iconos en programas de QT. XPM interes es C-cdigo que puede ser compilado en un programa. Obtener el GIMP aqu: www.gimp.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 atrs), su un sistema libre desarrollo en Windows. Para aplicaciones Win32 nativas que necesita descargar el PlatformSDK de M $. Por lo que la edicin Express es difcil de encontrar. Pero se puede intentar este enlace
CamStudio

Es una herramienta de cdigo abierto para grabar podcasts (Webcasts). Su una muy buena herramienta para crear tutoriales por grabarlas. Su medida no tan aburrido como escribir documentacin. Ver CamStudio.org para detalles.

Tortuga SVN

Esta es una herramienta muy grande. Hace uso de Subversion (nuestro sistema de control de versin en sf.net) un verdadero placer. Usted puede a travs de la integracin del explorador, administrar revisiones, compruebe en Diffs, resolver fcilmente Confilcts, hacer ramas y as sucesivamente.... El cuadro de dilogo de confirmacin en s mismo es una obra de arte. Se le da una visin general sobre los archivos cambiados y permite colocarlos en la confirmacin o no. Facilita la Junte los cambios a las unidades lgicas y darles un mensaje de confirmacin clara. Encontrar ToroiseSVN en TortoiseSVN.Tigris.org .
StarUML

Un completo programa de Open Source de UML. Tiene un montn de caractersticas de las grandes, incluyendo el cdigo fuente de C++ engeniering inversa.... Descargar aqu: staruml.sourceforge.net

Herramientas en Linux
TODO Esta pgina muestra las diferentes maneras para iniciar FreeCAD y las caractersticas ms importantes de configuracin.

Iniciar FreeCAD desde la lnea de comandos


FreeCAD puede iniciarse normalmente, haga doble clic en su icono en el escritorio o seleccionndolo en el men de inicio, pero tambin se puede iniciar directamente desde la lnea de comandos. Esto le permite cambiar soem de las opciones de inicio predeterminada.

Opciones de lnea de comandos


Las opciones de lnea de comandos son objeto de frecuentes cambios, por lo tanto, es una buena idea para comprobar las opciones actuales escribiendo:
FreeCAD --help

De la respuesta puede leer los posibles parmetros:


Usage: FreeCAD [options] File1 File2 ..... Allowed options:

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', too

Archivos de respuesta y config


FreeCAD algunas de estas opciones puede leer un archivo de configuracin. Este archivo debe estar en la ruta de acceso de bin y debe tener el nombre FreeCAD.cfg. Tenga en cuenta que las opciones especificadas en la lnea de comandos reemplazan el archivo config! Algunos sistemas operativos tienen un lmite muy bajo de la longitud de la lnea de comandos. La forma comn para solucionar estas limitaciones es usar archivos de respuesta. Un archivo de respuesta es simplemente un archivo de configuracin que utiliza la misma sintaxis que la lnea de comandos. Si la lnea de comando especifica un nombre de archivo de respuesta para utilizar, se ha cargado y analiza adems de la lnea de comandos:
FreeCAD @ResponseFile.txt

o:
FreeCAD --response-file=ResponseFile.txt

Opciones ocultas
Hay un par de opciones no visible para el usuario. Estas opciones son, por ejemplo, los parmetros de X-Window analizados por el sistema de Windows:
-Mostrar la pantalla, define la visualizacin de X (el valor predeterminado es $

DISPLAY).
-geometra geometra, establece la geometra de cliente de la primera ventana que

se muestra.
fuente de -fn o - de la fuente, define la fuente de la aplicacin. La fuente debe

especificarse mediante una descripcin de fuente lgica de X.


-bg o - fondo de color, establece el color de fondo por defecto y una paleta de

aplicacin (se calculan los tonos claros y oscuros).


-establece el color de fg o - primer plano, el color de primer plano predeterminado. -establece el color btn o - botn, el color de botn predeterminado. - name nombre, establece el nombre de la aplicacin.

-ttulo ttulo, establece el ttulo de la aplicacin. -visual TrueColor, las fuerzas de la aplicacin para que utilice un visual TrueColor

sobre una pantalla de 8 bits.


Conde de -ncols, limita el nmero de colores asignados en el cubo de color en una

pantalla de 8 bits, si la aplicacin es mediante la especificacin de color de QApplication::ManyColor. Si el recuento es 216 entonces un 6 x 6 x 6 color cubo se utiliza (es decir, 6 niveles de rojo, 6 de color verde y 6 de azul); para otros valores, un cubo aproximadamente proporcional a un 2 x 3 x 1 cubo se utiliza.
-cmap, hace que la aplicacin instalar un mapa de colores privada en una pantalla

de 8 bits.

Ejecutando FreeCAD sin interfaz de usuario


FreeCAD normalmente se inicia en modo de interfaz grfica, pero tambin puede obligar a que se inicie en modo consola escribiendo:
FreeCAD -c

desde la lnea de comandos. En modo de la consola, no se mostrar ninguna interfaz de usuario y, a continuacin, se le presentar un prompt del intrprete de python. Desde ese indicador de python, que tiene la misma funcionalidad como el intrprete de python que se ejecuta dentro de la interfaz grfica de usuario de FreeCAD y el acceso normal a todos los mdulos y plugins de FreeCAD, salvo el mdulo de FreeCADGui. Tenga en cuenta que los mdulos que dependen de la FreeCADGui tambin pueden no estar disponibles.

Ejecutando FreeCAD como un mdulo de python


FreeCAD tambin puede utilizarse para que se ejecute como un mdulo de python dentro de otras aplicaciones que usan python o desde un shell de python externos. Para ello, la aplicacin de python de host debe saber donde residen sus libs FreeCAD. La mejor manera de obtener es anexar temporalmente ruta de lib del FreeCAD a la variable sys.path. El siguiente cdigo 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.path.append("path/to/FreeCAD/lib")

change

this

by

your own FreeCAD lib path import FreeCAD

Una vez cargada la FreeCAD, corresponde a usted para hacerla a interactuar con la aplicacin host de ninguna manera que se pueda imaginar!

El conjunto de configuracin
En cada FreeCAD de inicio examina sus alrededores y los parmetros de lnea de comandos. Acumula un conjunto de configuracin que mantiene la esencia de la informacin de tiempo de ejecucin. Ms tarde, esta informacin se utiliza para determinar el lugar dnde guardar los datos de usuario o los archivos de registro. Tambin es muy importante para post postmortem analiza. Por lo tanto, est guardado en el archivo de registro.

Informacin relacionada con el usuario


Entradas de configuracin 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 relacionad Data\FreeCAD os de usuario de la aplicacin.

Archivo donde FreeCAD almacena C:\Documents and / UserParamet los datosSettings\nombre Home/username/.FreeCAD/User er relacionad Data\FreeCAD\user.c .cfg os defg usuario de la aplicacin.

SystemPara meter

Archivo donde FreeCAD C:\Documents and / almacena Settings\nombre Home/username/.FreeCAD/Syst los datosData\FreeCAD\syste em.cfg relacionad m.cfg os de aplicacin.

Ruta de C:\Documents and UserHomePa inicio del Settings\username\ / home/nombre de usuario th usuario My documentos actual

Argumentos de lnea de comandos


Entradas de configuracin de usuario

Nombre de var Sinopsis config

En el ejemplo se

LoggingFile

1 si el registro est encendido

LoggingFileName

C:\Documents and Nombre del archivo donde seSettings\nombre coloca el registro Data\FreeCAD\FreeCAD.lo g

RunMode

Esto indica cmo funcionar el"Cmd" bucle principal. "Script" significa que se llama a la secuencia de comandos determinado y, a continuacin, salir. "Cmd" ejecuta el intrprete de lnea de comandos. "Interno" se ejecuta una secuencia de comandos interno. "Gui" entra en el bucle de eventos de Gui. "Mdulo" carga un mdulo de

python determinado.

FileName

Significado RunMode

depende

de

la

ScriptFileName

Significado RunMode

depende

de

la

Detallado

Nivel de prolijo de FreeCAD

"" o "estricto"

OpenFileCount

Contiene el nmero de archivos abiertos a travs de "12" argumentos de lnea de comandos

Contiene las rutas de acceso de AdditionalModuleP mdulo adicionales dadas en la"extraModules /" aths lnea de cmd

Sistema relacionados con


Entradas de configuracin 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.7 de programa FreeCAD .7

PythonSearchP Contiene una ath lista de rutas de acceso que python busca los mdulos. Esto es al inicio puede

cambiar durante la ejecucin

Algunas bibliotecas necesitan llamar a sistema de variables de entorno. A veces, cuando hay un problema con una instalacin de FreeCAD, es porque algunos variable de entorno est ausente o establecer errneamente. Por lo tanto, algunas variables importantes obtener duplicados en la configuracin y guardados en el archivo de registro. 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 informacin relacionada


La siguiente tabla muestra las tetera informaciones acerca de la versin de compilacin. La mayora de ella proviene desde el repositorio de Subversion. Esto es necesario para reconstruir exactamente una versin!
Entradas de configuracin de usuario

Nombre var config

de

Sinopsis

En el ejemplo se

Mayor nmero de BuildVersionMaj versin de la 0 or compilacin. Definidas en src/Build/Version.h.in

Menor nmero de BuildVersionMin versin de la 7 or compilacin. Definidas en src/Build/Version.h.in

BuildRevision

Nmero de revisin de repositorio SVN de la 356 src en la construccin. Generados por SVN

BuildRevisionRa Intervalo de cambios de 123-356 nge diferentes

BuildRepository Direccin URL repositorio

URL

del

https://FreeCAD.SVN.sourceforge.NET/svnroot/Fr ee-CAD/trunk/src

BuildRevisionDa Fecha de la revisin 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

Configuracin de estas entradas estn relacionadas con el mecanismo de creacin de marca de FreeCAD. Consulte Marca para ms detalles.
Entradas de configuracin de usuario

Nombre de var Sinopsis config

En se

el

ejemplo

/EXENAME

Nombre del archivo ejecutable de generacin. Puede buzo de FreeCAD si seFreeCAD.exe utiliza un main.cpp diferentes.

ExeVersion

En todos los conciertos de versin hasta a V0.7 la hora de inicio

AppIcon

Icono que se utiliza para el ejecutable, se "FCIcon" muestra en aplicaciones MainWindow.

ConsoleBanner

Banner que se solicita en modo consola

SplashPicture

Nombre del icono utilizado pantalla de bienvenida

para

la"FreeCADSplashe r"

SplashAlignment

Alineacin del texto en el cuadro de Izquierda" dilogo de bienvenida

SplashTextColor Color de splasher el texto

"#000000"

StartWorkbench

Nombre de la Workbech que empezar"Diseo program despus 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 tcnico

El FreeCAD crear la herramienta o fcbt es un script de python ubicado en


trunc/src/Tools/fcbt.py

Se puede utilizar para simplificar algunas tareas frecuentes en la construccin, la distribucin y la extensin FreeCAD.

Uso
Con Python correctamente instalado, fcbt puede ser invocado por el comando
python fbct.py

Muestra un men, donde puede seleccionar la tarea que desea utilizar para:
FreeCAD Build Tool Usage: fcbt <command name> [command parameter] possible commands are: - DistSrc (DS) Build a source Distr. of the current source tree - DistBin (DB) Build a binary Distr. of the current source tree - DistSetup (DI) Build a Setup Distr. of the current source tree - DistSetup (DUI) Build a User Setup Distr. of the current source tree - DistAll (DA) Run all three above modules - BuildDoc (BD) Create the documentation (source docs) - NextBuildNumber (NBN) Increase the Build Number of this Version - 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. Por ejemplo, escriba "CM" para creacin de un mdulo .

DistSrc
El comando "DS" crea una distribucin de cdigo fuente del rbol de cdigo fuente actual.

DistBin
El comando "DB" crea una distribucin binaria del rbol de cdigo fuente actual.

DistSetup
El comando "DI" crea una distribucin de configuracin del rbol de cdigo fuente actual.

DistSetup
El comando "DUI" crea una distribucin de configuracin de usuario del rbol de cdigo fuente actual.

DistAll
El comando "DA" ejecuta "DS", "DB" y "DI" en la secuencia.

BuildDoc
El comando "BD" crea la documentacin del software mediante la ejecucin de Doxygen que debe estar instalado.

NextBuildNumber
El comando "NBN" incrementa el nmero de compilacin para crear una nueva versin de lanzamiento de FreeCAD.

CreateModule
El comando "CM" crea un nuevo mdulo de aplicacin .

Creacin de un nuevo mdulo de aplicacin en FreeCAD es bastante simple. En la FreeCAD rbol de desarrollo existe la Herramienta de generacin de FreeCAD ( fcbt ) que hace las cosas ms importantes para usted. Es un Python secuencia de comandos se encuentra bajo
trunk/src/Tools/fcbt.py

Cuando se instalan correctamente su intrprete de python puede ejecutar la secuencia de comandos desde la lnea de comandos
python fcbt.py

Se mostrar el siguiente men:


FreeCAD Build Tool Usage: fcbt <command name> [command parameter] possible commands are: - DistSrc (DS) Build a source Distr. of the current source tree - DistBin (DB) Build a binary Distr. of the current source tree - DistSetup (DI) Build a Setup Distr. of the current source tree - DistSetup (DUI) Build a User Setup Distr. of the current source tree - DistAll (DA) Run all three above modules - BuildDoc (BD) Create the documentation (source docs) - NextBuildNumber (NBN) Increase the Build Number of this Version

- CreateModule directory

(CM)

Insert a new FreeCAD Module in the module

For help on the modules type: fcbt <command name> ?

En el smbolo del sistema escriba CM para iniciar la creacin de un mdulo:


Insert command: CM

Ahora se pide para especificar un nombre para su nuevo mdulo. Permite llamarlo TestMod por ejemplo:
Please enter a name for your application: TestMod

Despus de presionar entrar en fcbt comienza a copiar todos los archivos necesarios para el mdulo en una nueva carpeta en
trunk/src/Mod/TestMod/

A continuacin, todos los archivos se modifican con su nuevo nombre del mdulo. 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). Thats se!

Probar primero
Antes de ir a travs del dolor fuera de depuracin del uso del marco de prueba para comprobar si las pruebas estndar funcionen correctamente. Si no quiz es una instalacin rota.

lnea de comandos
El de depuracin de FreeCAD es apoyado por unos pocos mecanismos internos. La versin de lnea de comandos de FreeCAD proporciona opciones para la depuracin de soporte:
-v Con la "v" opcin FreeCAD da un resultado ms detallado. -l Con la "l" opcin FreeCAD escribe informacin adicional en un archivo de registro.

Introduccin
FreeCAD viene con un amplio marco de prueba. Las bases de la pruebas en un conjunto de secuencias de comandos de Python que se encuentran en el mdulo de prueba. Este artculo se describe el Marca de FreeCAD. La marca significa para iniciar su propia aplicacin en base de FreeCAD. Puede ser slo su propio ejecutable o salpicadura pantalla hasta un completo programa refundido. Sobre la base de la arquitectura flexible de FreeCAD es fcil de utilizar como base para su propio programa de propsito especial.

General
La mayor parte de la marca se realiza en el MainCmd.cpp o MainGui.cpp . Estos proyectos de generan los archivos ejecutables de FreeCAD. Para hacer su propia marca simplemente copie el projets principal o MainGui y dar el ejecutable de un nombre propio, por ejemplo, FooApp.exe. Los ajustes ms importantes para un nuevo aspecto pueden hacerse en un lugar en la funcin main(). Aqu es la seccin de cdigo que controla la marca:
int main( int argc, char ** argv ) { // Name and Version of the Application App::Application::Config()["ExeName"] = "FooApp.exe"; App::Application::Config()["ExeVersion"] = "0.7"; // set the banner (for loging and console) App::Application::Config()["ConsoleBanner"] = sBanner; App::Application::Config()["AppIcon"] = "FCIcon"; App::Application::Config()["SplashPicture"] = "FooAppSplasher"; App::Application::Config()["StartWorkbench"] = "Part design"; App::Application::Config()["HiddenDockWindow"] = "Property editor"; App::Application::Config()["SplashAlignment" ] = "Bottom|Left"; App::Application::Config()["SplashTextColor" ] = "#000000"; // black // Inits the Application App::Application::Config()["RunMode"] = "Gui"; App::Application::init(argc,argv); Gui::BitmapFactory().addXPM("FooAppSplasher", splash_screen); Gui::Application::initApplication(); Gui::Application::runApplication(); App::Application::destruct(); ( const char** )

return 0; }

La primera entrada de configuracin define el nombre del programa. Esto es, no el nombre del archivo ejecutable, que se puede cambiar por cambiar el nombre o por la configuracin del compilador, pero el nombre que se muestra en la barra de tareas de windows o en la lista de programas de sistemas Unix. Lneas de la siguiente definen las entradas de configuracin de su aplicacin de FooApp. Una descripcin de la configuracin y sus entradas que encontrar en Start up y configuracin .

Imgenes
Todos los recursos de imagen se compilan en FreeCAD. Esto reduce la carga retrasada y mantiene la instalacin compacta. Las imgenes se incluyen en formato XPM que es bsicamente un formato de texto que utiliza la sintaxis de C. Puede dibujar bsicamente este imgenes con un editor de texto, pero es ms cmodo crear las imgenes con su programa de grficos favorito y convertirlo posteriormente en formato XPM. Programa de imagen de la GNU Gimp puede guardar archivo XPM. Para la conversin, puede utilizar el ImageConv herramienta de que se incluye con freecad. Lo puede encontrar en
/trunk/src/Tools/ImageTools/ImageConv

Se puede no slo convertir imgenes pero tambin automticamente se actualizarn la BmpFactoryIcons.cpp archivo, donde se registran las imgenes. El uso tpico es tan simple como el siguiente ejemplo:
ImageConv -i InputImage.png -o OutputImage.xpm

Esto convierte el archivo InputImage.png en formato XPM y escribe el resultado en el archivo OutputImage.xpm . La lnea:
Gui::BitmapFactory().addXPM("FooAppSplasher", splash_screen); ( const char** )

en el main(), a continuacin, se incluyen la imagen en la BitmapFactory de FreeCAD.

Iconos

El icono de la aplicacin principal FCIcon que aparece en la ventana de ttulos y otros lugares se define en
/trunk/src/Gui/Icons/images.cpp

y comienza con la lnea


static const char *FCIcon[]={

Reemplazarlo con su icono de favorito, vuelva a compilar freecad y se lleva a cabo el siguiente paso para crear su propia marca. Hay muchos otros iconos en este archivo que podra cambiar a su gusto. Si usted necesita agregar nuevos iconos, tienes que registrarlo en
/trunk/src/Gui/Icons/BmpFactoryIcons.cpp

por lo que se puede acceder desde FreeCAD.


Imagen de fondo

Que aparece la imagen de fondo, cuando no hay ninguna ventana de documento est abierta. Como la pantalla de bienvenida que se ha definido en developers.h en la seccin comenzando con:
static const char* const background[]={

Debe elegir una imagen de bajo contraste para el fondo. De lo contrario podra irritar al usuario. Localizacin es, en general, el proceso de proporcionar un software con una interfaz de usuario de lengua mltiples. En FreeCAD se puede establecer el idioma de la interfaz de usuario bajo EditPreferencesApplication . Utiliza FreeCAD Qt para habilitar el soporte de mltiples idiomas. En sistemas Unix/Linux, FreeCAD utiliza los ajustes actuales de la configuracin regional del sistema por defecto.

Ayudar a traducir FreeCAD


Una de las cosas muy importantes que puede hacer para FreeCAD si no eres un programador, es ayudar a traducir el programa en su idioma. Para hacerlo es ahora ms fcil que nunca, con el uso de la Crowdin sistema de colaboracin de traduccin en lnea.

Cmo traducir
Ir a la Pgina del proyecto de traduccin de FreeCAD en Crowdin ;

Inicio de sesin mediante la creacin de un nuevo perfil, o mediante una

cuenta de terceros, como su direccin de GMail;


Haga clic en el idioma que desee trabajar en; Inicio traducir haciendo clic en el botn traducir junto a uno de los archivos.

Por ejemplo, FreeCAD.ts contiene las cadenas de texto para la GUI principal FreeCAD.
Se puede votar por las traducciones existentes, o crear los suyos propios. Note: If you are actively taking part in translating FreeCAD and want to be informed before next release is ready to be launched, so there is time to review your translation, please subscribe to this issue: http://sourceforge.net/apps/mantisbt/free-cad/view.php? id=137

Traducir con Qt-lingista (antigua usanza)


La siguiente informacin no tiene que utilizarse ya y es probable que se convertir en obsoleta. Se mantiene aqu para que los programadores pueden familiarizarse con su funcionamiento.
Abra todas las carpetas de idioma de FreeCAD que se muestra a

continuacin
Comprobar que un .ts de archivo con el cdigo de idioma no existe ("fr"

para francs, "de" para alemn, etc...)


Si es que existe, puede descargar ese archivo, si desea modificar,

revisin/mejor la traduccin (haga clic en el archivo, a continuacin, Descargar)


Si no existe, descargue el archivo de .ts sin cdigo de idioma (o cualquier

otros .ts disponible, que funciona demasiado)


Cambiar el nombre de ese archivo con el cdigo de idioma Abrirlo con el programa de Qt-lingista Empezar a traducir (lingista de Qt es muy fcil de usar) Una vez que se realiza completamente, guarde el archivo enviar los archivos para nosotros por lo que nos podemos incluirlas en el

cdigo fuente de freecad por lo que stas beneficien otros usuarios demasiado.
Archivos de traduccin disponibles GUI principal de FreeCAD Workbench completa Dibujo Workbench

Proyecto Workbench Invertir la ingeniera 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 mdulos para la traduccin


Requisitos previos
Para localizar a su mdulo de aplicacin de su necesidad de ayudantes que vienen con Qt . Puede descargarlos desde la Trolltechsitio Web , pero tambin estn incluidos en el LibPack :
qmake Genera archivos de proyecto lupdate Extractos o actualiza los textos originales en el proyecto mediante el anlisis de cdigo fuente Qt-lingista El Qt-lingista es muy fcil de usar y lo ayuda a traducir con caractersticas interesantes como un libro de la frase comn de las sentencias.

Configuracin de proyecto
Para iniciar la localizacin de su proyecto de ir a la GUIparte del mdulo de usted y tipo sobre la lnea de comandos:
qmake -project

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.06c) Do 2. Nov 14:44:21 2006 ###################################################################### TEMPLATE = app DEPENDPATH += .\Icons INCLUDEPATH += . # Input HEADERS += ViewProvider.h Workbench.h SOURCES += AppMyModGui.cpp \ Command.cpp \ ViewProvider.cpp \ Workbench.cpp TRANSLATIONS += MyMod_de.ts

Puede agregar manualmente archivos aqu. La seccin traducciones contiene una lista de archivos con la traduccin para cada idioma. En el ejemplo anterior MyMod_de.ts es la traduccin alemana. Ahora que necesita para ejecutar lupdate para extraer todos los literales de cadena en su GUI. Ejecutando lupdate despus de que los cambios en el cdigo fuente es siempre segura ya que nunca elimina cadenas de los archivos de las traducciones. Slo agrega nuevas cadenas. Ahora necesita agregar el .ts -archivos al proyecto VisualStudio. Especifique la costumbre siguiente construir un mtodo para ellos:
python ..\..\..\Tools\qembed.py "$(InputDir)\$(InputName).ts" "$(InputDir)\$(InputName).h" "$(InputName)"

Nota: Escriba esto en una lnea de comandos, el salto de lnea es slo para propsitos de diseo. Mediante la compilacin de la .ts -archivo del ejemplo anterior, un archivo de encabezado MyMod_de.h se crea. El mejor lugar para incluir esta es en app <Modul> Gui.cpp. En nuestro ejemplo sera AppMyModGui.cpp . Hay que agregar la lnea
new Gui::LanguageProducer("Deutsch", <Modul>_de_h_len); <Modul>_de_h_data,

para publicar su traduccin en la aplicacin.

Creacin de archivos de python para la traduccin

Para facilitar la localizacin de los archivos de py puede utilizar la herramienta "pylupdate4", que acepta uno o ms archivos de py. Con la opcin -ts usted puede preparar o actualizar uno o ms archivos de .ts. Por ejemplo a preparar un archivo .ts francs simplemente entrar en la lnea de comandos:
pylupdate4 *.py -ts YourModule_fr.ts

la herramienta de pylupdate ser analizar los archivos .py para funciones translate() o tr() y crear un archivo de YourModule_fr.ts. Ese archivo puede el ser traducidos con QLinguist y un archivo de YourModule_fr.qm producidos a partir de QLinguist o con el comando
lrelease YourModule_fr.ts

Cuidado con el que la herramienta de pylupdate4 no es muy buena en reconociendo las funciones de translate(), que necesitan para ser formateado muy especficamente (vase los archivos del mdulo de proyecto para obtener ejemplos). Dentro de su archivo, a continuacin, puede configurar un traductor como este (despus de cargar su QApplication pero antes de crear cualquier widget de qt):
translator = QtCore.QTranslator() translator.load("YourModule_"+languages[ln]) QtGui.QApplication.installTranslator(translator)

Opcionalmente, tambin puede crear el archivo XML Draft.qrc con este contenido:
<RCC> <qresource prefix="/translations" > <file>Draft_fr.qm</file> </qresource> </RCC>

y la ejecucin de pyrcc4 Draft.qrc -o qrc_Draft.py crea un gran Python que contiene todos los recursos. BTW este enfoque tambin trabaja para poner los archivos de icono en el archivo de un recurso

Traducir la wiki
Este wiki es hosting mucho del contenido. Material ms actualizado e interesante se reunieron en el manual . As que el primer paso es comprobar si ya se ha iniciado la traduccin manual para su idioma (busque en la barra lateral izquierda, bajo "manual"). Si no, la cabeza para el foro y decir que desea iniciar una nueva traduccin, vamos a crear la configuracin bsica para el idioma que desee trabajar en. Usted debe, a continuacin obtener permiso de edicin wiki .

Si su idioma ya est en la lista, consulte las pginas que faltan todava una traduccin (que se mostrarn en rojo). La tcnica es simple: entrar en una pgina de Roja y copiar y pegar el contenido de la pgina correspondiente de ingls y empezar a traducir. No olvide incluir todas las etiquetas y las plantillas de la pgina original de ingls. Algunas de esas plantillas tendr un equivalente en el idioma (por ejemplo, existe una plantilla de Docnav francs llamada Docnav/fr). Mirar otras pginas ya traducidas para ver cmo lo hicieron. A continuacin, una vez que usted traduce una pgina, debe agregar a la pgina original ingls un vnculo para su traduccin, para que los lectores sepan que existe una versin traducida, utilizando la plantilla {{idiomas}}. Vistazo de cmo otros traductores lo hizo para hacer lo mismo. Y si no est seguro, la cabeza a los foros y pedir a personas que compruebe lo que hiciste y te indicar si es justo o no.

Tres plantillas se utilizan comnmente en las pginas del manual. Estas 3 plantillas han versiones localizadas (plantilla: Docnav / fr, plantilla: fr, etc....)
Plantilla: Docnav : es la barra de navegacin en la parte inferior de las pginas, que

muestra anterior y siguientes pginas


Plantilla: idiomas : esta plantilla se colocarn en las pginas originales, para indicar

al lector que existe una traduccin. La versin localizada a cambio debe colocarse en la pgina traducida, un vnculo a la pgina original de ingls.
Plantilla: en : hay uno de ellos para cada idioma. Deben colocarse dentro de la

plantilla de la lengua.

Pgina de Convencin de nomenclatura


Ten en cuenta que, debido a limitaciones en la aplicacin de SourceForge del motor MediaWiki, requerimos que las pginas todos mantengan de nombre su original del homlogo ingls, anexando una barra diagonal y su cdigo de idioma. Por ejemplo, la pgina traducida para acerca de FreeCAD debe ser acerca de Freecad/es para espaol, acerca de FreeCAD/pl para pulir, etc.. La razn es simple: para que si traductores est a punto de desaparecer, los administradores del wiki, que no hablan todos los idiomas, sabr cules son estas pginas. Esto facilitar el mantenimiento y evitar pginas perdidas. Si desea que la plantilla de Docnav para mostrar las pginas vinculadas en su idioma, puede utilizar redirigir las pginas . Son bsicamente los vnculos de acceso directo a la pgina real. Aqu hay un ejemplo con la pgina de francs para acerca de FreeCAD.

La pgina sobre FreeCAD/fr es la pgina con contenido La pgina propos de FreeCAD contiene este cdigo: #REDIRECT [[About FreeCAD/fr]] Pgina en the acerca de FreeCAD/fr, el cdigo de Docnav tendr este aspecto: {{docnav/fr|Bienvenue sur l'aide en ligne|Fonctionnalits}}

La pgina "Bienvenue sur Aide en ligne" redirige a la pgina inicial de la ayuda en lnea/fr y en la pgina "Fonctionnalits" se redirige a la funcin de lista/fr. Si no est seguro de cmo proceder, no dude en pedir ayuda en el foro . El intrprete de python dentro de FreeCAD se puede extender fcilmente mediante la adicin de nuevos mdulos para la instalacin de su sistema de python. Esos mdulos se detecta automticamente y se utilizarn por FreeCAD. Todos los mdulos de pyhton pueden utilizarse desde dentro de FreeCAD, pero varios de ellos, enumerados a continuacin, tienen una importancia especial porque permiten python acceso de programas completo a la funcionalidad central de FreeCAD. Ejemplos de utilizacin de los mdulos de pueden encontrarse tambin en la fragmentos de cdigo pgina. Nota : de los siguientes mdulos, Pivy es ahora plenamente integrados en cualquier paquete de instalacin de FreeCAD, y PyQt4 tambin est integrada en el paquete de instalacin de Windows.

PyQt4
pgina Web: http://www.riverbankcomputing.co.uk/pyqt PyQt (versin 4) es una biblioteca de enlaces de python que permiten acceder, crear o modificar los programas Qt interfaces. Desde la interfaz de FreeCAD est construida con Qt, instalacin de PyQt4 en el sistema permiten python programas dentro de FreeCAD para acceder a toda la interfaz, modificar sus partes, crear nuevos widgets o recopilar informacin de partes de la interfaz. PyQt est liberado bajo un sistema de licencias mltiples, el mismo sistema que utilizado por Qt . Para reanudar, es una versin comercial y una versin gratuita de la GPL. Si desea utilizarlo para hacer programas comerciales (cdigo cerrado), deber adquirir la licencia comercial, de lo contrario, simplemente se puede instalar y utilizar libremente la versin de la GPL.

Instalacin
Antes de instalar PyQt4, obviamente necesita un entorno de python instalado y funcionando.

Linux La forma ms sencilla de instalar PyQt4 es a travs de gestor de paquetes su distribucin. En los sistemas de Debian/Ubuntu, el nombre del paquete generalmente python-Qt mientras que en sistemas basados en RPM denomina pyqt4 . Las dependencias necesarias (Qt y SIP) va ser atendidas forma automtica. Windows El programa puede descargarse de aqu . Necesitar instalar las bibliotecas QT y SIP antes de instalar pyqt4 (a ser documentados). de es se de

Uso
Una vez que est instalado, puede comprobar que todo funciona escribiendo en la consola de python de FreeCAD:
import PyQt4

Para acceder a la interfaz de FreeCAD, escriba:


from PyQt4 import QtCore,QtGui app = QtGui.qApp FreeCADWindow = app.activeWindow()

Ahora puede empezar a explorar la interfaz con el comando dir(). Puede agregar nuevos elementos, como un widget personalizado, con comandos como:
FreeCADWindow.addDockWidget(QtCore.Qt.RghtDockWidgetArea,my_custom_wid get)

Documentacin
Ms tutoriales de pyQt4 (incluyendo cmo construir interfaces con Qt Designer para utilizar con python): http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/HTML/Classes.html -la referencia de la API de PyQt4 oficial http://www.rkblog.RK.edu.pl/w/p/Introduction-pyqt4/ -una introduccin sencilla http://www.zetcode.com/tutorials/pyqt4/ - tutorial muy completo de fondo

Pivy
pgina Web: http://pivy.coin3d.org/ Pivy es un moneda enlaces de biblioteca para python, oficialmente apoyado por moneda. Moneda de s mismo es un kit de herramientas para la construccin

de aplicaciones 3D en OpenGL. Es el Kit de herramientas que FreeCAD se utiliza para dibujar su escena 3d en la pantalla. Instalacin de Pivy en el sistema permitir python programas para acceder a la scenegraph FreeCAD, dibujar objetos nuevos en la escena y utilizar la amplia gama de herramientas de monedas disponibles para las operaciones de dibujo. Moneda se basa en el lenguaje de descripcin de escena abierto de inventor. Pivy es utilizado por el mdulo de redaccin 2D de FreeCAD (y tambin por el mdulo completo), por lo que es necesario si desea utilizar cualquier herramienta de esos mdulos. Es importante saber que FreeCAD slo utiliza moneda para la representacin de objetos en la pantalla, que est separada de la definicin de objetos. Esto significa pivy no ser capaz de modificar los objetos existentes, ni para crear objetos de FreeCAD vlidos. Pero puede ser utilizado para dibujar todo tipo de cosas temporales en pantalla, tales como eje, cuadrculas, manipuladores, geometra de construccin, etc.... Pivy, as como monedas, es liberado bajo una licencia GPL.

Instalacin
Ubuntu & de Debian

Iniciar con Debian Squeeze y Ubuntu Lucid, pivy estar disponible directamente desde los repositorios oficiales, ahorrndonos muy complicado. En el nterin, puede o bien disponibles de descarga uno de los paquetes que hicimos (para debian y ubuntu karmic) en el Descargar las pginas, o compilarlo usted mismo. La mejor manera para compilar pivy fcilmente es agarrar el paquete de fuente de debian para pivy y hacer un paquete con debuild. Es el mismo cdigo fuente desde el sitio oficial de pivy, pero la gente de debian hizo varias adiciones de fijacin de errores. Tambin compila fino sobre ubuntu karmic: http://packages.debian.org/squeeze/python-pivy (Descargar la. orig.gz y el. diff.gz de archivo, a continuacin, descomprima ambos y, a continuacin, aplicar la .diff al origen: vaya a la carpeta de origen pivy sin comprimir y aplique el parche .diff:
patch -p1 < ../pivy_0.5.0~svn765-2.diff

a continuacin
debuild

para que pivy correctamente integrado en un paquete instalable oficial. A continuacin, slo tiene que instalar el paquete con gdebi.

Otras distribuciones de linux

Primero hay que obtener las fuentes ms recientes desde el repositorio del proyecto:
svn co https://svn.coin3d.org/repos/Pivy/trunk Pivy

a continuacin, necesita una herramienta llamada SWIG para generar el cdigo de C++ para los enlaces de Python. Se recomienda utilizar la versin 1.3.25 de SWIG, no es la versin ms reciente, porque en este momento pivy slo funcionar correctamente con 1.3.25. Descargar un 1.3.25 tarball fuente de http://www.swig.org . A continuacin, desembalarlo y desde una lnea de comandos do (como root):
./configure make make install (or checkinstall if you use it)

Tarda unos pocos segundos para construir. Despus de vaya a las fuentes de pivy y la llamada
python setup.py build

que crea los archivos de origen. Se puede ejecutar en un error del compilador donde un 'const char *' no puede convertirse en un 'char *'. Para corregir que slo necesita escribir un 'const' antes en las lneas adecuadas. Hay seis lneas para corregir. Despus de eso, instalar mediante la emisin de (como root):
python setup.py install (or checkinstall python setup.py install)

Eso es todo, pivy est instalado.


Windows

Suponiendo que ests utilizando Visual Studio 2005 o posterior debe abrir un smbolo del sistema con ' Visual Studio 2005 smbolo ' en el men Herramientas. Si el intrprete de Python todava no est en la ruta del sistema
set PATH=path_to_python_2.5;%PATH%

Para obtener trabajo de pivy debe obtener las fuentes ms recientes desde el repositorio del proyecto:
svn co https://svn.coin3d.org/repos/Pivy/trunk Pivy

a continuacin, necesita una herramienta llamada SWIG para generar el cdigo de C++ para los enlaces de Python. Se recomienda utilizar la versin 1.3.25 de SWIG, no es la versin ms reciente, porque en este momento pivy slo funcionar correctamente con 1.3.25. Descargar los archivos binarios para 1.3.25 de http://www.swig.org . A continuacin, desembalarlo y desde la lnea de comandos agregarlo a la ruta del sistema

set PATH=path_to_swig_1.3.25;%PATH%

y COINDIR a la ruta apropiada


set COINDIR=path_to_coin

En Windows, el archivo de configuracin de pivy espera SoWin en lugar de SoQt como predeterminado. No encuentro una forma obvia para construir con SoQt, por lo que he modificado el archivo setup.py directamente. En la lnea 200 simplemente elimine la parte ' sowin': ('gui._sowin', 'sowin-config', 'pivy.gui'.) (no retire el parntesis de cierre). Despus de vaya a las fuentes de pivy y la llamada
python setup.py build

que crea los archivos de origen. Se puede ejecutar en varios archivos de encabezado no se encontr un error de compilacin. En este caso ajustar la variable INCLUDE.
set INCLUDE=%INCLUDE%;path_to_coin_include_dir

y si los encabezados de SoQt no estn en el mismo lugar que los encabezados de monedas tambin
set INCLUDE=%INCLUDE%;path_to_soqt_include_dir

y por ltimo los encabezados de Qt


set INCLUDE=%INCLUDE%;path_to_qt4\include\Qt

Si est utilizando el Express Edition de Visual Studio puede obtener un pitn excepcin de keyerror. En este caso, usted tiene que modificar algunas cosas en msvccompiler.py situado en su instalacin de python. Ir a la lnea 122 y reemplace la lnea
vsbase = r"Software\Microsoft\VisualStudio\%0.1f" % version

con
vsbase = r"Software\Microsoft\VCExpress\%0.1f" % version

A continuacin, vuelva a intentarlo una vez ms. Si obtiene un segundo error como
error: Python was built with Visual Studio 2003;...

Tambin debe reemplazar lnea 128


self.set_macro("FrameworkSDKDir", net, "sdkinstallrootv1.1")

con
self.set_macro("FrameworkSDKDir", net, "sdkinstallrootv2.0")

Vuelva a intentarlo una vez ms. Si vuelve a obtener un error como

error: Python was built with Visual Studio version 8.0, and extensions need to be built with the same version of the compiler, but it isn't installed.

a continuacin, debe comprobar DISTUTILS_USE_SDK y MSSDK con


echo %DISTUTILS_USE_SDK% echo %MSSDK%

las

variables

de

entorno

Si no an definida, entonces, a slo, por ejemplo, a establecer a 1


set DISTUTILS_USE_SDK=1 set MSSDK=1

Ahora, se puede ejecutar en un error del compilador donde un 'const char *' no puede convertirse en un 'char *'. Para corregir que slo necesita escribir un 'const' antes en las lneas adecuadas. Hay seis lneas para corregir. Despus de que copiar el directorio de pivy generado a un lugar donde se encontrar en el intrprete de python en FreeCAD.

Uso
Tener Pivy acceder a la FreeCAD scenegraph haga lo siguiente:
from pivy import coin App.newDocument() # Open a document and a view view = Gui.ActiveDocument.ActiveView FCSceneGraph = view.getSceneGraph() # returns a pivy Python object that holds a SoSeparator, the main "container" of the Coin scenegraph FCSceneGraph.addChild(coin.SoCube()) # add a box to scene

Ahora puede explorar la FCSceneGraph con el comando dir().

Documentacin
Lamentablemente la documentacin acerca de pivy est todava casi inexistant en la red. Pero puede encontrar documentacin de Coin tiles, ya que pivy simplemente traducir las funciones de la moneda, los nodos y los mtodos en python, todo lo mantiene el mismo nombre y las propiedades, teniendo en cuenta la diferencia de sintaxis entre C y python: http://doc.coin3d.org/Coin/Classes.html - Coin3D referencia de la API http://wwwEvasion.imag.fr/~Francois.Faure/doc/inventorMentor/sgi_html/index.html - El Inventor Mentor - la "Biblia" de lenguaje de descripcin de escena de inventor. Tambin puede buscar en el archivo Draft.py en la carpeta FreeCAD Mod/proyecto, ya que hace gran uso de pivy.

Crditos
Aqu una visin general que las personas o las empresas contribuyen a FreeCAD. Los crditos para las bibliotecas utilizadas ver Bibliotecas de terceros .

Desarrollador
Desarrollador principal

Slo los desarrolladores de plomo son capaces de cometer el cdigo en el repositorio SVN. Actualmente son:
Jrgen Riegel Werner Mayer

Ms tarde all pueden ser responsabilidades sobre la base del mdulo.


Desarrolladores

Personas que han contribuido a una notable cantidad de cdigo:


Havre de van de Yorik Graeme van der Vlugt Berthold Grupp Georg Wiora

Empresas
Empresas que don el cdigo o Developer:
Imetric 3D

También podría gustarte