Manual de Freecad 2[1]

206
Manual de Freecad Este es el manual FreeCAD. Incluye las partes esenciales de la wiki de documentación FreeCAD . Está hecho principalmente para ser impresos en un solo documento grande, así que, si usted está leyendo esto en línea, usted lo prefiere, puede dirigirse directamente a la ayuda en línea la versión, que es más fácil de navegar. Bienvenido a la ayuda FreeCAD en línea Este documento ha sido creado de forma automática a partir del contenido de la wiki de documentación oficial FreeCAD, que puede leerse en línea en http://apps.sourceforge.net/mediawiki/free-cad/index.php? title=Main_Page . Desde que el wiki es mantenido activamente y continuamente desarrollado por la comunidad FreeCAD de desarrolladores y usuarios, es posible que la versión en línea contiene la información más reciente o más de este documento. Pero no obstante, esperamos que usted encontrará aquí toda la información que usted necesita. En caso de que tenga preguntas que usted no puede encontrar respuestas en el presente documento, eche un vistazo en el foro FreeCAD , donde tal vez se puede encontrar respuesta a su pregunta, o alguien que pueda ayudarte. Cómo utilizar Este documento se divide en varias secciones: introducción, uso de secuencias de comandos y el desarrollo, la dirección de los tres últimos especialmente los tres grandes categorías de usuarios de FreeCAD: usuarios finales, que simplemente quieren usar el programa, los usuarios de energía, que se interesan por las capacidades de scripting de FreeCAD y me gustaría personalizar algunos de sus aspectos, y los desarrolladores, que consideran FreeCAD como base para desarrollar sus propias aplicaciones. Si eres nuevo en comletely FreeCAD, le sugerimos que para empezar simplemente por la introducción. Contribuir

Transcript of Manual de Freecad 2[1]

Manual de FreecadEste es el manual FreeCAD. Incluye las partes esenciales de la wiki de documentación

FreeCAD. Está hecho principalmente para ser impresos en un solo documento grande, así que,

si usted está leyendo esto en línea, usted lo prefiere, puede dirigirse directamente a la ayuda

en línea la versión, que es más fácil de navegar.

Bienvenido a la ayuda FreeCAD en línea

Este documento ha sido creado de forma automática a partir del contenido de la wiki de

documentación oficial FreeCAD, que puede leerse en línea

en http://apps.sourceforge.net/mediawiki/free-cad/index.php?title=Main_Page . Desde que el

wiki es mantenido activamente y continuamente desarrollado por la comunidad FreeCAD de

desarrolladores y usuarios, es posible que la versión en línea contiene la información más

reciente o más de este documento. Pero no obstante, esperamos que usted encontrará aquí

toda la información que usted necesita. En caso de que tenga preguntas que usted no puede

encontrar respuestas en el presente documento, eche un vistazo en el foro FreeCAD, donde tal

vez se puede encontrar respuesta a su pregunta, o alguien que pueda ayudarte.

Cómo utilizar

Este documento se divide en varias secciones: introducción, uso de secuencias de comandos y

el desarrollo, la dirección de los tres últimos especialmente los tres grandes categorías de

usuarios de FreeCAD: usuarios finales, que simplemente quieren usar el programa, los

usuarios de energía, que se interesan por las capacidades de scripting de FreeCAD y me

gustaría personalizar algunos de sus aspectos, y los desarrolladores, que consideran FreeCAD

como base para desarrollar sus propias aplicaciones. Si eres nuevo en comletely FreeCAD, le

sugerimos que para empezar simplemente por la introducción.

Contribuir

Como usted puede haber experimentado en ocasiones, los programadores son realmente

ayudar a los escritores malos! Para ellos todo es del todo claro porque lo hizo de esa

manera. Por lo tanto es vital que los usuarios experimentados nos ayudan a escribir y revisar la

documentación. Sí, tenemos que decir! ¿Cómo, usted pregunta? Sólo tienes que ir a la Wiki

enhttp://apps.sourceforge.net/mediawiki/free-cad/index.php en la sección de usuario. Usted

necesitará una cuenta de sourceforgepara iniciar la sesión, entonces se puede empezar a

editar!

Introducción

la interfaz FreeCAD

FreeCAD es un propósito general 3D CAD modelador. El desarrollo es completamente de

código abierto (GPL y LGPL licencia). FreeCAD va destinado directamente a la ingeniería

mecánica y diseño de productos , pero también encaja en una gama más amplia de

aplicaciones en la ingeniería, tales como la arquitectura o la ingeniería de otras especialidades.

FreeCAD cuenta con herramientas similares a Catia, SolidWorks y Solid Edge, y por lo tanto

también cae en la categoría de MCAD, PLM, CAx y CAE. Será una película basada modelador

paramétrico con una arquitectura de software modular que hace fácil para proporcionar

funcionalidad adicional, sin modificar el núcleo del sistema.

Como ocurre con muchos modernos 3D CAD y modeladores que tendrá un componente 2D

para extraer los detalles del diseño del modelo 3D para crear dibujos en 2D de producción,

pero el dibujo 2D directa (como AutoCAD LT) no es el foco, no son orgánicos o formas de

animación ( como Maya, 3ds Max o Cinema 4D), aunque, gracias a su amplia adaptabilidad,

FreeCAD podría ser útil en una amplia área mucho más que su enfoque actual.

Otra de las principales preocupaciones de FreeCAD es hacer un uso intensivo de todos los de

código abierto grandes bibliotecas que existen por ahí en el campo de la computación

científica. Entre ellos se encuentran OpenCascade, un poderoso núcleo de CAD,Coin3D, una

encarnación de OpenInventor, Qt, la famosa interfaz de usuario marco del mundo, y Python,

uno de los mejores lenguajes de scripting disponibles. FreeCAD misma también se puede

utilizar como una biblioteca por otros programas.

FreeCAD está totalmente multiplataforma, y actualmente se ejecuta sin problemas en Windows

y Linux / Unix y Mac OS X sistemas, con el mismo aspecto y funcionalidad en todas las

plataformas.

¿Tienes curiosidad? Echa un vistazo a la lista de características o de la Introducción a los

artículos, o dirigirse directamente al centro de usuario!

Esta es una, por lo tanto no es completa, extensa lista de características FreeCAD

implementa. Si desea buscar en el futuro ver lahoja de ruta para el Desarrollo de una visión

general rápida de la Imagen es un buen lugar para ir.

Características generalesBase de la aplicación

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

manera en Windows, Linux y OSX plataformas Mac.

FreeCAD es una completa aplicación con interfaz gráfica. FreeCAD cuenta con una

completa interfaz gráfica de usuario basada en el famoso Qtmarco, con un visor 3D basado

en Open Inventor, permitiendo rápido renderizado de escenas 3D y una representación

gráfica de la escena muy accesible.

FreeCAD también se ejecuta como una aplicación de línea de comandos, con la

huella de memoria baja. En modo de línea de comandos, FreeCAD se ejecuta sin su

interfaz, pero con todas las herramientas de la geometría. Puede ser, por ejemplo, utiliza

como servidor de producir contenidos para otras aplicaciones.

FreeCAD se pueden importar como un módulo de Python, dentro de otras

aplicaciones que pueden ejecutar scripts de Python, o en una serpiente pitón de la

consola. Al igual que en modo consola, la parte de interfaz de FreeCAD no está disponible,

pero todas las herramientas de la geometría son accesibles.

Plugin / marco del módulo para la carga tardía de características y tipos de

datos. FreeCAD se divide en una aplicación de base y los módulos, que se cargan sólo

cuando es necesario. Casi todas las herramientas y tipos de geometría se almacena en

módulos. Los módulos se comportan como plugins, y puede incluir o eliminar una

instalación existente de FreeCAD.

Construido en secuencias de comandos marco: FreeCAD incorpora un

en Python intérprete, y una API que cubre casi cualquier parte de la aplicación, la interfaz,

la geometría y la representación de esta geometría en el visor 3D. El intérprete puede

ejecutar comandos individuales hasta las secuencias de comandos complejas, de hecho,

los módulos de todo, incluso se puede programar completamente en Python.

un instalador MSI modular permite instalaciones flexibles en los sistemas

Windows. Los paquetes para los sistemas de Ubuntu también 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.

gestión 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 paramétricos: Todos los objetos en un documento

FreeCAD puede ser definido por los parámetros. Los parámetros se pueden modificar

sobre la marcha, y vuelven a calcular en cualquier momento. La relación entre los objetos

también se almacena, por lo que la modificación de un objeto también modifica sus objetos

dependientes.

(ZIP base) del documento compuesto guardar formato: FreeCAD documentos

guardados con iconos fcstd. extensión puede contener diversos tipos de información, tales

como la geometría, las secuencias de comandos o en miniatura.

Interfaz de usuario

Totalmente personalizable / scripts interfaz gráfica de usuario. El Qtbasado en la

interfaz de FreeCAD es totalmente accesible a través del intérprete de Python. Además de

las funciones simples que FreeCAD se dota a los bancos de trabajo, el marco de Qt está

adaptado demasiado, permitiendo que cualquier operación en la interfaz gráfica 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 sólo las herramientas utilizadas para

llevar a cabo una determinada tarea, manteniendo la ordenada y responsable, y la rápida

aplicación 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 módulos y fácil aprender sobre FreeCAD

internos.

reflejo de la interacción del usuario en la consola: Todo lo que el usuario hace en la

interfaz de FreeCAD ejecuta código python, que se puede imprimir en la consola y se

registran en las macros.

macro de grabación y edición completa: La pitón órdenes emitidas cuando el

usuario manipula la interfaz puede ser grabado, editado, si es necesario, y salvo que se

reproduce más adelante.

Thumbnailer (los sistemas Linux solamente en el momento): Los iconos de documento

FreeCAD mostrar el contenido del archivo en la mayoría de las aplicaciones de

administrador de archivos, como los nautilus de gnome.

Características específicas de la aplicación

La funcionalidad de FreeCAD está separado en módulos, cada uno tratando con tipos de datos

y aplicaciones especiales:

Mallas

El acoplamiento del módulo se refiere a mallas 3D. Es esta destinada principalmente

para la importación, la curación y la conversión de parte de malla generada geometría de

sesiones en FreeCAD, y la exportación de la geometría FreeCAD en formato de

malla. Pero sí FreeCAD también cuenta mucho la geometría de los tipos más avanzados

de las mallas.

la creación de primitivas (caja, esfera, etc cilindro), desplazamiento(triviales o

después de Jung / Shin / Choi) o las operaciones booleanas(añadir, cortar, se cruzan)

Importación de los siguientes formatos: ASCII o binario STL (litografía formato

estéreo) (*. stl, *. ast), el formato OBJ (*. obj), limitadaNASTRAN apoyo (*. nas), Open

Inventor mallas (iv *.), y nativo del kernel de malla FreeCAD (*. BMS)

Exportación de los siguientes formatos: ASCII o binario STL (Stereo formato

litografía) (*. stl, *. ast), el formato OBJ (*. obj), limitada NASTRAN apoyo (*. nas, *.

BRL), VRML mallas (*. wrl), nativa del núcleo de malla FreeCAD (*. BMS), de malla como

módulo de Python (*. py)

Prueba y reparación de herramientas para mallas: prueba de sólidos, y dos colectores

de ensayo que no, intersección de autocomprobación, orificio de llenado y la orientación

uniforme.

Amplia Python API de scripting.

2D de Redacción

Gráfica de creación de la geometría plana simples como líneas, cables, rectángulos,

arcos o círculos en cualquier plano del espacio 3D

Anotaciones como los textos o las dimensiones

Gráfica de las operaciones de modificación como la traducción, rotación, escalado,

espejo, desplazamiento o la forma de conversión, en cualquier plano del espacio 3D

Importación y exportación de los siguientes formatos: Autodesk Dibujo Exchange

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

CAD

La pieza del módulo se ocupa de todo alrededor de modelado CAD y las estructuras de

datos CAD. La funcionalidad CAD está en fuerte desarrollo (véase

el PartDesign_project y Assembly_project en elDevelopment_roadmap). El módulo de la

parte trabaja con alto nivel Abrir CASCADE geometría.

Paramétrico formas primitivas como la caja, la esfera, el cono del cilindro o un toro.

Topológica componentes como vértices, bordes, cables y aviones (a través de

secuencias de comandos de Python).

Modelado con rectas o revolución extrusiones, secciones y filetes.

operaciones booleanas  , como la unión, diferencia y la intersección.

Amplia Python API de scripting.

Importación y exportación de los siguientes formatos: PASO piezas y ensamblajes (*.

stp, *. paso), IGES modelos (*. igs, *. IGES) y BREP (*. BRP), el formato nativo de

nuestro Abrir CASCADE núcleo CAD .

Raytracing

El módulo de trazado de rayos permite la exportación de la geometría FreeCAD

a renderizadores externos para la generación de imágenes de alta calidad. En la

actualidad, el motor de render compatible sólo es POV-Ray. El módulo permite actualmente

la creación de una hoja de representación, y la geometría de la adición a esa hoja de

representación para exportar a un archivo de POV-Ray.

Dibujo

El módulo de dibujo permite exportar vistas proyectadas de la geometría 3D a

un documento SVG 2D. Permite la creación de una hoja en 2D con una plantilla de svg

existentes, y la inserción de puntos de vista de la geometría proyectada en esa hoja. A

continuación, la hoja se pueden guardar como un archivo SVG.

CAM

El módulo CAM se dedica a trabajar a máquina mecánica, como la molienda. Este

módulo se encuentra en el principio y en el momento en su mayoría dedicados a la hoja

que forma incremental. Aunque hay algunos algoritmos de planificación trayectorias que no

son utilizables para el usuario final en el momento.

InstalaciónInstalar en Windows

La forma más fácil de instalar FreeCAD en Windows es utilizar el instalador. Esta página

describe el uso y las características delinstalador de Microsoft para conocer las opciones de

instalación más.

Instalación sencilla

instalador FreeCAD se entrega en. MSI (Windows Installer) en formato.

Puede descargar la última versión. Msi de la FreeCAD página de descarga oficial. Después de

descargar el archivo, haga doble clic sobre él para iniciar el proceso de instalación.

Instalación de la línea de comandos

Con el msiexec.exe utilidad de línea de comandos, funciones adicionales están disponibles,

como no-instalación interactiva y la instalación administrativa.

Instalación no interactiva

Con la línea de comandos

msiexec / i FreeCAD <versión>. msi

instalación se puede iniciar mediante programación. Los parámetros adicionales se pueden

pasar al final de esta línea 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 básica - sólo un pequeño diálogo de progreso

/ Qb! - Al igual que / qb, pero ocultar el botón Cancelar

/ Qr - Reducción de la interfaz - mostrar todos los cuadros de diálogo que no requieren

la interacción del usuario (saltar todos los cuadros de diálogo modales)

/ Qn + - Me gusta / qn, pero muestran "Completado" diálogo al final

/ Qb + - Me gusta / qb, pero muestran "Completado" diálogo al final

Objetivo de la guía

El TARGETDIR propiedad determina el directorio raíz de la instalación FreeCAD. Por ejemplo,

un disco de instalación diferente se puede especificar con

TARGETDIR = R: \ FreeCAD25

El TARGETDIR predeterminado es [WindowsVolume \ Programm Files \] FreeCAD <versión>.

Instalación para todos los usuarios

Agregar

ALLUSERS = 1

causa de una instalación a todos los usuarios. De forma predeterminada, la instalación no

interactiva instalar el paquete sólo para el usuario actual, y la instalación interactiva ofrece un

cuadro de diálogo que por defecto es "todos los usuarios" si el usuario es lo suficientemente

privilegiada.

Selección de características

Un número de propiedades permiten la selección de características para ser instalado,

reinstalado o eliminadas. El conjunto de características para el programa de instalación es

FreeCAD

DefaultFeature - instalar el software adecuado, además de las bibliotecas del núcleo

Documentación - instalar la documentación

El código fuente - instalar las fuentes

... Cosas por hacer

Además, TODOS especifica todas las características. Todas las funciones dependen de

DefaultFeature, por lo que la instalación de cualquier característica instala automáticamente la

función de default. Las características siguientes propiedades de control para instalar o

desinstalar

ADDLOCAL - lista de características para ser instalado en el equipo local

REMOVER - lista de características para ser retirados

ADDDEFAULT - lista de funciones adicionales en su configuración por defecto (que es

local para todas las características FreeCAD)

REINSTALL - lista de características para volver a instalar / reparar

PUBLICIDAD - lista de características para el que se realizará una instalación de

publicidad

Hay algunas características adicionales disponibles, consulte la documentación de MSDN para

obtener más detalles.

Con estas opciones, añadiendo

ADDLOCAL = Extensiones

instala el propio intérprete y los registros de las extensiones, pero no instalar nada más.

Desinstalación

Con

msiexec / x FreeCAD <versión>. msi

FreeCAD se puede desinstalar. No es necesario contar con el archivo MSI disponibles para la

desinstalación, como alternativa, el paquete o código de producto también puede ser

especificado. Usted puede encontrar el código de producto al observar las propiedades del

acceso directo Desinstalar FreeCAD que se instala en el menú de inicio.

instalación administrativa

Con

msiexec / a FreeCAD <versión>. msi

un "administrativo" (red) de instalación se puede iniciar. Los archivos se desempaquetado en el

directorio de destino (que debe ser un directorio de red), pero sin otra modificación que se haga

en el sistema local. Además, otro archivo (más pequeño) msi se genera en el directorio de

destino, que los clientes pueden entonces utilizar para realizar una instalación local (las

versiones futuras pueden ofrecer también para mantener algunas de las características de la

unidad de red en total).

Actualmente, no existe ninguna interfaz de usuario para las instalaciones administrativas, por lo

que el directorio de destino se debe pasar la línea de comandos.

No hay ninguna específica procedimiento de desinstalación de una administrativa de instalación

- simplemente borre el directorio de destino si no hay cliente que usa más.

Publicidad

Con

msiexec / jm FreeCAD <versión>. msi

sería posible, en principio, a "anunciar" FreeCAD a una máquina (con / ju a un usuario). Esto

haría 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 característica haría que

cuentan para su instalación.

El instalador FreeCAD actualmente soporta sólo el anuncio de las entradas del menú de inicio,

pero no hay anuncio de accesos directos.

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

Con la directiva de grupo de Windows, es posible instalar automáticamente FreeCAD un grupo

de una de las máquinas. Para ello, siga estos pasos:

1. Inicie sesión en el controlador de dominio

2. Copie el archivo MSI en una carpeta que se comparte con acceso permitido a todos los

equipos de destino.

3. Abra el complemento MMC de "usuarios de Active Directory y equipos"

4. Navegue hasta el grupo de equipos que necesitan FreeCAD

5. Abra Propiedades

6. Abrir directivas de grupo

7. Añadir una nueva política, y editarlo

8. En Configuración del equipo / Instalación de software, seleccione Nuevo / Paquete

9. Seleccione el archivo MSI a través de la ruta de red

10. Opcionalmente, seleccione la que desea la FreeCAD ser desinstalado si el equipo sale

del ámbito de aplicación de la política.

la propagación del Grupo de política general, toma algún tiempo - para implementar el paquete

de forma fiable, todos los equipos debe ser reiniciado.

Instalación en Linux usando Crossover Office

Puede instalar la versión para Windows de FreeCAD en un sistema Linux utilizando CXOffice

5.0.1. Ejecutar msiexec de la línea de comandos CXOffice, suponiendo que el paquete de

instalación se coloca en el "software" de la guía que se asigna a la unidad de letra "Y":

msiexec / i Y: \ \ software \ \ FreeCAD <versión> msi.

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.

Instalación en Unix / Linux

Por el momento, el equipo FreeCAD sólo proporciona a los instaladores de sistemas de 32 bits

de Debian y Ubuntu, pero algunos miembros de la comunidad de usuarios FreeCAD también

proporciona a los instaladores de encargo para otras versiones de Linux.Por favor, eche un

vistazo a la descarga página para ver lo que está actualmente availible.

Instalación en sistemas Debian / Ubuntu

Una vez descargado el. Deb correspondiente a su versión del sistema, si usted tiene

la gdebi paquete instalado (normalmente lo es), sólo tiene que desplazarse a donde ha

descargado el archivo, y haga doble clic en él. Las dependencias necesarias serán atendidos

de forma automática por el gestor de paquetes del sistema de tipos. Alternativamente se puede

instalar también 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.

Después de instalar FreeCAD, un icono de inicio se agregó en la "gráfica" de su Menú de Inicio.

Instalación en otros sistemas Linux / Unix

Unfortnately, por el momento, ningún paquete precompilado es availible para otros sistemas

Linux / Unix, por lo que tendrá quecompilar FreeCAD mismo.

Instalación en Mac

FreeCAD se puede instalar en Mac OS X en un solo paso utilizando el instalador. Esta página

describe el uso y características de la instalación FreeCAD. También incluye las instrucciones

de desinstalación.

Instalación sencilla

El instalador FreeCAD se ofrece como un paquete de Installer (. Mpkg) incluido en un archivo

de imagen de disco.

Puede descargar la última instalación de la descarga la página. Después de descargar el

archivo, simplemente montar la imagen de disco, a continuación, ejecute la instalación

FreeCAD paquete.

El instalador le presentará una instalación Personalizar la pantalla que lista los paquetes que

serán instalados. Si usted sabe que usted ya tiene alguno de estos paquetes, se puede anular

la selección utilizando las casillas de verificación. Si no está seguro, deje todos los elementos

seleccionados.

Desinstalación

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 auto-

contenida para toda esta molestia desaparece.

Descubrir FreeCADPrefacio

FreeCAD es un sistema CAD / CAE de aplicaciones de modelado paramétrico. Todavía 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 características

que se están 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 geometría compleja con relativa facilidad. Si no, probablemente

encontrará que FreeCAD todavía tiene pocos para ofrecer a usted. Pero, sea paciente, se

espera que esto cambie pronto.

Y si después de la prueba tiene comentarios, ideas u opiniones, por favor, comparta con

nosotros en el foro de discusión FreeCAD!

Instalación

En primer lugar (si no se hace ya) descargar e instalar FreeCAD. Véase la descarga página

para obtener información 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 más imágenes aquí.

FreeCAD es una aplicación de modelado 3D todos los fines generales, enfocada en la

ingeniería mecánica y otras áreas relacionadas, tales como otras especialidades de la

ingeniería o la arquitectura. Se concibe como una plataforma para el desarrollo de cualquier

tipo de aplicación 3D, sino también para hacer tareas específicas 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 sólo las herramientas necesarias para una tarea específica, o

un grupo de tareas.

La interfaz FreeCAD por lo tanto se puede describir como un contenedor muy simple, con una

barra de menús, un área de visualización 3D, y un par de paneles laterales para la visualización

de los contenidos escena o propiedades de los objetos. Todos los contenidos de estos paneles

puede haber cambios en función 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 más madura de otros bancos de trabajo. Desde FreeCAD es bastante joven y aún

no se utilizan para el trabajo muy especializado, este banco de trabajo es muy útil para

descubrir FreeCAD con mayor facilidad.Básicamente, todas las herramientas que son lo

suficientemente buenas para la producción de la geometría está aquí.

Navegando en el espacio 3D

FreeCAD tiene dos diferentes modos de navegación disponibles, que se pueden establecer en

la configuración de diálogo de preferencias. En el modo por defecto, el zoom se realiza con

la rueda del ratón, paneo con el botón central del ratón, y larotación con el botón izquierdo del

ratón y Botón central del ratón al mismo tiempo. Selección de un objeto se hace simplemente

haciendo clic sobre ella con el botón izquierdo del ratón, con CTRL presionado si desea

seleccionar varios objetos.

También tiene varios presets vista (vista superior, vista frontal, etc) disponibles en el menú Ver

y en la barra de herramientas Vista, y por atajos numéricos (1, 2, etc ..)

2D de RedacciónHerramientas de dibujo

Estas herramientas le permiten configurar su entorno de trabajo o producir operaciones

genéricas.

 plano de trabajo: Establece el plano de trabajo para las operaciones de al lado

 Coloque en la hoja: Escribe los objetos seleccionados a una hoja de dibujo SVG

Objetos de dibujo

Estas son herramientas para la creación de objetos.

 De 2 puntos la línea: Dibuja un segmento de línea de 2 puntos

 Hilos (punto de varias líneas): Dibuja una línea hecha de segmentos de varias

líneas

 Círculo: dibuja un círculo desde el centro y el radio

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

ángulo

 Rectángulo: dibuja un rectángulo de 2 puntos opuestos

 Texto: Dibuja una línea de texto de la anotación-multi

 Dimensión: Dibuja una anotación dimensión

Modificación de objetos

Estas son las herramientas para modificar los objetos existentes. Trabajan en los objetos

seleccionados, pero si no hay ningún 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

 Actualización: se une a los objetos en un alto nivel de objeto

 Baja de Calificación: Se descompone en objetos de nivel inferior objetos

 Recortar / Extender (Trimex): Recorta o se extiende un objeto

 Aplicar el estilo: Aplica el color actual y el ancho de línea a los objetos

 Escala: escala objeto seleccionado (s) en torno a un punto base

 Editar: edita un objeto seleccionado

La creación de piezas en 3DPrimitivos

Estas son herramientas para la creación de objetos primitivos.

 Caja: Dibuja un cuadro especificando sus dimensiones

 Cono: Dibuja un cono mediante la especificación de sus dimensiones

 Cilindro: Dibuja un cilindro mediante la especificación de sus dimensiones

 Esfera: Dibuja una esfera mediante la especificación de sus dimensiones

 Toro: Dibuja un toro (anillo), especificando sus dimensiones

Modificación de objetos

Estas son las herramientas para modificar los objetos existentes. Que le permitirá elegir el

objeto a modificar.

 Booleanos: boolean Realiza operaciones en los objetos

 Fusible: Fusibles (sindicatos) dos objetos

 Común: extraer los comunes (intersección) parte de dos objetos

 Cortar: corta (resta) un objeto de otro

 Extrusión: Eleva caras planas de un objeto

 Solomillo: Filete (balas) bordes de un objeto

 Girar: Crea un objeto por otro objeto giratorio alrededor de un eje

 Sección: Crea una sección por la intersección de un objeto con un plano de

sección

Exportar a dibujos 2D

Estas son las herramientas para crear, configurar y exportación 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 exportación de su trabajo en 3D para renderizadores externos

 Crear un proyecto de Povray: Crea un POV-Ray nuevo proyecto

 Insertar información ver: Inserta el ver los datos (posición de la cámara, etc) a la

POV-Ray proyecto actual

 Insertar información parte: Inserta el objeto seleccionado al POV-Ray proyecto

actual

Secuencias de comandos

Y, por último, una de las características más potentes de FreeCAD es la secuencia de

comandos medio ambiente. Desde la pitón consola integrada (o de cualquier secuencia de

comandos Python externo), puede acceder a casi cualquier parte del FreeCAD, crear o

modificar la geometría, modificar la representación de los objetos en la escena 3D o acceder y

modificar la interfaz FreeCAD.secuencias de comandos de Python también pueden ser

utilizados en las macros, que proporcionan un método sencillo para crear comandos

personalizados.

<anterior: Instalación en Mac

siguiente: modelo de ratón>

Índice

Traducciones disponibles:       

Trabajar con FreeCADde navegación en 3D

El modelo de ratón de FreeCAD es muy flexible e intuitiva y con algunas pistas se puede

utilizar después de sólo un minuto de la práctica.

Selección de objetos

Los objetos se pueden seleccionar con un clic con el botón izquierdo del ratón o haciendo clic

en el objeto en la vista 3D o mediante la selección en la vista de árbol. También hay

una preselección mecanismo que pone de relieve los objetos y muestra información acerca de

ellos antes de la selección con sólo pasar el mouse sobre él. Si no le gusta que la conducta o si

tiene una máquina lenta, puede cambiar de preselección en las preferencias.

Manipulación de objetos

La manipulación de objetos es común a todos los bancos de trabajo. Los gestos del ratón

siguientes se pueden utilizar para controlar la posición del objeto y el punto de vista.

Seleccione

Pulse el botón izquierdo del ratón sobre un objeto que desea seleccionar.

Zoom

Utilice el + o - las llaves de la rueda del ratón para acercar y alejar.

Pan

Haga clic en el botón central del ratón y mover el objeto.

Gire

Primero haga clic con el botón central del ratón, mantenga y haga clic en el botón

izquierdo del ratón en cualquier parte visible de un objeto y arrastrarlo en la dirección

deseada. Esto funciona como hacer girar una pelota que gira alrededor de su centro. Si

se suelta el botón antes de dejar su petición, el objeto sigue girando, si esta opción

está activada.

Centro de Marco de la rotación

Un doble clic con el botón central del ratón en cualquier parte de un objeto establece el

nuevo centro de rotación y zoom sobre este punto.

Manipulación 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ú. Después de la activación del objeto plano de corte aparece y muestra siete

manipuladores obvio como cajitas: Uno en cada extremo de sus tres ejes de coordenadas y

otra en el centro del plano eje normal. Hay otros cuatro que no son tan obvios: el propio avión y

la parte fina de los tres objetos eje.

Escala

Para escalar el objeto, haga clic con el botón izquierdo del ratón sobre los

manipuladores recuadro al final de los ejes y tire de ellos hacia atrás y

adelante. Dependiendo del objeto a los manipuladores trabajar independientemente o

de forma sincrónica.

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 botón izquierdo del ratón.Para el plano de corte no es sólo 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 avión y tire de él

hasta la posición deseada.

Rotación

Al hacer clic en la parte fina de los ejes del manipulador pone en modo de rotación.

<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. También 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.Administración de grupos, objetos y nombres de objeto que se realiza principalmente

desde el punto de vista de árbol. También se puede hacer, por supuesto, como todo en

FreeCAD, desde el intérprete de Python. En la vista de árbol, se pueden crear grupos, 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 función 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 también crea objetos de la parte, etc

Si hay al menos un documento abierto en FreeCAD, siempre hay uno y sólo un documento

activo. Ese es el documento que aparece en la vista 3D actual, el documento que están

trabajando actualmente.

Aplicación y la interfaz de usuario

Como casi todo lo demás en FreeCAD, la parte de interfaz de usuario (GUI) se separa de la

parte de la aplicación de base (la aplicación). Esto también es válido para los documentos. Los

documentos también están hechas de dos partes: el documento de solicitud, que contiene los

objetos, y el documento de Vista, que contiene la representación en pantalla de nuestros

objetos.

Piense en ello como dos espacios, donde los objetos se definen. Sus parámetros constructivos

(es un cubo? Un cono? Qué tamaño?) Se almacenan en el documento de solicitud, mientras

que su representación gráfica (es dibujado con líneas negro? Con rostros azules?) Se

almacenan en el documento Ver. ¿Por qué es eso? Debido a FreeCAD también puede ser

utilizado sin interfaz gráfica, por ejemplo dentro de otros programas, y todavía 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 gustaría ver una vista superior y una vista frontal de

su trabajo al mismo tiempo? A continuación, 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 fácilmente, acceder y modificar desde el intérprete de

Python. Por ejemplo:

FreeCAD.ActiveDocument

Devolverá el actual (activo) documento

FreeCAD.ActiveDocument.Blob

¿Podría acceder a un objeto llamado "Blob" dentro de su documento

FreeCADGui.ActiveDocument

Devolverá el documento vista asociada al documento actual

FreeCADGui.ActiveDocument.Blob

¿Podría acceder a la representación gráfica (ver) una parte de nuestro objeto Blob

FreeCADGui.ActiveDocument.ActiveView

Configuración de las preferencias del usuario

El sistema de preferencias de FreeCAD se encuentra en el menú Editar -> Preferencias.

funcionalidad FreeCAD está dividido en diferentes módulos, cada módulo está encargado de la

elaboración de un determinado banco de trabajo. FreeCAD también utiliza un concepto llamado

de carga tarde, lo que significa que los componentes se cargan sólo 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 configuración de las preferencias.

La configuración de las preferencias generales

Al iniciar FreeCAD sin mesa de trabajo abierta, se le tendrá entonces una ventana de

preferencias mínimo. A medida que la carga de módulos adicionales, nuevas secciones

aparecerán en la ventana de preferencias, lo que le permite configurar los detalles de cada

mesa de trabajo.

Sin ningún módulo cargado, usted tendrá acceso a dos secciones de configuración,

responsables de la configuración de aplicación general y para la configuración de la pantalla.

La configuración de la pantalla

FreeCAD está siempre en constante evolución, por lo que el contenido de las pantallas pueden

diferir de las capturas de pantalla de arriba. Los ajustes son por lo general explica por sí mismo,

lo que no debería enfrentarse a cualquier dificultad de configurar FreeCAD a sus necesidades.

     

Personalización de la interfaz

Desde la interfaz FreeCAD se basa en la moderna Qt toolkit, que tiene un estado-de-la

organización de arte. Widgets, menús, barras de herramientas y otras herramientas se pueden

modificar, mover, compartida entre los bancos de trabajo, métodos abreviados de teclado se

puede establecer, modificar y macros se pueden grabar y reproducir. La ventana de

personalización se puede acceder desde Herramientas -> Personalizar menú:

Los comandos de la ficha le permite ver todos los comandos disponibles FreeCAD, organizado

por su categoría.

En el teclado, puedes ver las combinaciones de teclas asociadas a cada comando FreeCAD, y

si lo desea, modificar o asignar nuevo acceso directo a cualquier comando. Aquí es donde

puede venir si se utiliza una mesa de trabajo particular, a menudo, y me gustaría acelerar su

uso mediante el teclado.

Las barras de herramientas y barras de Herramientas etiquetas permiten modificar las

barras de herramientas existentes, o crear sus propias barras de herramientas personalizadas.

Las macros ficha le permite administrar su guarda macros.

Propiedades de los objetos

Una propiedad es una pieza de información como un número o una cadena de texto que se

adjunta a un documento FreeCAD o un objeto en un documento. Las propiedades se pueden

ver y - si lo permite - modificado con el editor de propiedades.

Propiedades juegan un papel muy importante en FreeCAD, ya que es desde el principio los

hizo trabajar con objetos paramétricos, que son objetos definidos sólo por sus propiedades.

Personalizada guión objetos en FreeCAD pueden tener propiedades de los siguientes tipos:

Boolean flotador FloatConstraint ángulo FloatList Distancia entero IntegerConstraint

Porcentaje Enumeración IntegerList cadena StringList Vincular LinkList matriz de vectores

VectorList colocación PlacementLink color colorlist Material Ruta del Archivo FileIncluded

Círculo FilletContour PartShape

       

Trabajar con bancos de trabajoFreeCAD, al igual que muchas aplicaciones de diseño moderno, como Revit, se basa en el

concepto de banco de trabajo. Un banco de trabajo puede ser considerado como un conjunto

de herramientas especialmente agrupados para una determinada tarea. En un taller de

muebles tradicionales, usted tendría una mesa de trabajo para la persona que trabaja con

madera, otra para el que trabaja con piezas de metal, y quizás un tercero para el tipo que se

monta todas las piezas juntas.

En FreeCAD, el mismo concepto se aplica. Las herramientas se agrupan en bancos de trabajo

de acuerdo a las tareas que están relacionadas con.

Actualmente tenemos disponibles las mesas de trabajo siguientes:

Construido en bancos de trabajo

El Workbench de malla para trabajar con mallas trianguladas.

El Workbench parte para trabajar con piezas de CAD.

El banco de trabajo de imagen para trabajar con imágenes de mapa de bits.

El banco de trabajo trazado de rayos para trabajar con trazado de rayos (rendering).

El Proyecto de Workbench para hacer de base CAD 2D de redacción.

El banco de trabajo de dibujo para mostrar su trabajo en 3D en una hoja 2D.

Varios bancos de trabajo de pruebas. Usted encontrará en la lista de bancos de trabajo de

varios bancos de trabajo para las pruebas de las diferentes áreas y funcionalidades desde

FreeCAD se encuentra todavía en una fase temprana de desarrollo.

bancos de trabajo nuevos en el desarrollo, estad atentos!

Cuando se cambia de banco de trabajo a otro, las herramientas disponibles en el cambio de

interfaz. Barras de herramientas, barras de comandos y eventualmente otras partes del

interruptor de interfaz a la mesa de trabajo nuevos, pero el contenido de la escena no

cambia. Podría, por ejemplo, empezar a dibujar formas en 2D con el Workbench de Proyecto, a

continuación, seguir trabajando sobre ellos con el Workbench Parte.

El acoplamiento de banco de trabajo

El Workbench de malla maneja mallas de triángulos. Las mallas son un tipo especial de

objetos 3D, compuesto de triángulos conectados por los bordes y las esquinas (también

llamadosvértices).

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 sólo vértices (puntos), los bordes y triangular) caras (, son muy fáciles de crear,

modificar, dividir, estirar, y fácilmente se puede pasar de una aplicación a otra sin ningún tipo

de pérdida.Además, ya que contienen datos muy sencilla, aplicaciones 3D por lo general

pueden manejar grandes cantidades de ellos sin ningún problema. Por estas razones, las

mallas son a menudo el tipo de objeto 3D de elección de las aplicaciones que tratan con las

películas, animación y creación de imágenes.

En el campo de la ingeniería, sin embargo, las mallas presentan una gran limitación: Son

objetos muy tonto, sólo compuesto de puntos, líneas y caras. Ellos sólo se hacen de las

superficies, y no tienen información de masas, por lo que no se comportan como sólidos. En

una malla no hay forma automática saber si un punto está dentro o fuera del objeto. Esto

significa que todas las operaciones sólida basada, como sumas o restas, son siempre un poco

difícil de realizar en las mallas, y los errores de regresar a menudo.

En FreeCAD, ya que es una aplicación de ingeniería, que, obviamente, prefieren trabajar con

tipos más inteligentes de los objetos 3D, que pueden transportar más información, como la

masa, el comportamiento de sólidos, o incluso parámetros personalizados. El módulo de

acoplamiento fue creada para servir como banco de pruebas, pero ser capaz de leer, manipular

y convertir mallas también 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 más inteligente,

y, por último, convertir a los objetos más inteligente, a cargo de la parte del módulo.

Con el módulo de acoplamiento

El módulo de malla tiene actualmente una interfaz muy sencilla, todas sus funciones se

agrupan en el acoplamiento de entrada del menú. Las operaciones más importantes que

actualmente se puede hacer con las mallas son:

mallas de importación en varios formatos de archivo

Exportación de mallas en varios formatos de archivo

Convertir Parte objetos en mallas

Analizar la curvatura, se enfrenta, y comprobar si hay una malla puede ser con seguridad

convertirse en un sólido

Flip mallas normales

Cerrar los agujeros en las mallas

Eliminar caras de las mallas

Herramientas GUIEstas son herramientas para la exportación de su trabajo en 3D para

renderizadores externos

Crear un proyecto de Povray : crea un nuevo proyecto de POV-Ray

Insertar vista info : insertar la información de vista (posición de la cámara,

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 exportación

Es la forma más 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 orientación de vista 3D como desee. , A continuación, elija

"Exportar... ver" en el menú de logicial.

Usted obtener pedir una ubicación para guardar el archivo resultante de la *.pov.

Después de que se puede abrir en Povray y de procesamiento:

Como es habitual en una rendererer se pueden hacer fotografías grandes y agradables:

Secuencias de comandos

Aquí es cómo utilizar estas características de python:

import Raytracing,RaytracingGuiOutFile = 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 imágenes

El módulo de imagen administra diferentes tipos de imágenes de mapa de bits

y le permite abrirlos en FreeCAD. En la actualidad, los módulos permite abrir

los formatos de archivo .bmp, .jpg, .png y .xpm en una ventana independiente

del visor. También es una herramienta que le permite capturar una imagen

desde una webcam.

El workbench de proyecto

El proyecto de módulo es un módulo de trabajo en progreso y bastante

experimental realizado para agregar la funcionalidad básica de dibujo 2d a

FreeCAD. Está escrito totalmente en python y también sirve para mostrar hasta

qué punto se puede extender FreeCAD totalmente en python, sin siquiera tocar

el código fuente.

Actualmente no es realmente útil para el trabajo de producción, pero ya

contiene un par de funciones básicas de trabajo. Siéntase libre de probar y nos

dan una retroalimentación sobre el página de discusión .

El workbench de proyecto está disponible en tu lista de workbenches. Cuando se activa, aparecerán dos barras de herramientas; un clásico barra de herramientas que contiene los comandos de proyecto estándar que se enumeran a continuación y un especial de barra de comandos que no tiene ningún icono de herramienta en ella, pero que es utilizado por las diferentes funciones para mostrar sus controles. De esa barra de comandos, también puede cambiar las cosas generales como el color de la línea 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 explicación detallada, lea la Tutorial de proyecto (en curso), o

lee la sección quickstart para ponerse rápidamente en rieles.

Inicio rápido

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

ortográfica antes de empezar a dibujar. Para ello, abra o cree un nuevo

documento y, a continuación, pulse el O clave (o en la vista de menú - > vista

ortográfica) para cambiar al modo ortográfica. A continuación, pulse el 2 clave

(o en la vista de menú - > vistas estándar - > arriba) para ponerlo en vista

superior. Ahora, está listo para dibujar. También puede configurar freecad

(menú Editar - > Preferencias) para siempre iniciar en modo ortográfica.

Todos los comandos de proyecto más o menos siguen las mismas reglas:

herramientas de dibujo se le pedirá que elija puntos en la pantalla o introduzca

coordenadas numéricas, mientras que las herramientas de modificación le

pedirá que seleccione un objeto para trabajar en primer lugar, en caso de que

no hay ningún objeto seleccionado. En casi todos los comandos, presionando

el CTRL clave te permitirá ajustar a puntos existentes, Mayús limitará su

movimiento horizontalmente, verically o en relación con un segmento existente

y en algunas herramientas ALT le dará opciones adicionales tales como la

creación de un nuevo objeto en lugar de la transformación de uno ya existente.

La ESC clave siempre cancelará el comando activa.

NoteOn 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 están en posición

horizontal, simplemente asegúrese de que la coordenada Z se desbloquea

cuando dibujo y sitúese en la vista adecuada. A continuación encontrará una

descripción más completa de todas las herramientas disponibles.

Importar & exportación

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 importación anexará el contenido del archivo al documento

actual. Exportar guardará los objetos seleccionados en un archivo. Si no se

selecciona nada, se exportarán todos los objetos. Tenga en cuenta que, puesto

que el propósito del proyecto módulo es trabajar con objetos 2d, los

importadores centran sólo 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 volumétricos como mallas,

caras 3D, etc., sino más bien las líneas, círculos, textos o formas planas.

Formatos de archivo admitidos actualmente son:

Autodesk .DXF : Las importaciones y exportaciones de los archivos DXF

creados con otras aplicaciones CAD

SVG (como geometría) : Las importaciones y exportaciones de los archivos

SVG creados con las aplicaciones de dibujo vectorial

Formato abierto de CAD .Oca : Las importaciones y exportaciones archivos

OCA/GCAD, un nuevo potencialmente Abrir el formato de archivo de CAD

Herramientas de redacción

Estas herramientas permiten configurar su entorno de trabajo o producir

genéricas de las operaciones.

Plano de trabajo : define el plano de trabajo para las operaciones de la

próximas

Poner en hoja de : escribe los objetos seleccionados en un svg hoja de

dibujo

Objetos de dibujo

Estas son herramientas para la creación de objetos.

2-punto línea : dibuja un segmento de línea de puntos 2

Cable (línea de múltiples puntos) : dibuja una línea compuesta de

múltiples segmentos de línea

Círculo : dibuja un círculo desde el centro y el radio

Arco : dibuja un segmento de arco desde el centro, radio, ángulo del

comienzo y ángulo final

Rectángulo : dibuja un rectángulo de puntos opuestos 2

Texto : dibuja una anotación de texto multilínea

Dimensión: dibuja una anotación de dimensión

Modificación de objetos

Estas son herramientas para modificar los objetos existentes. Trabajan en los

objetos seleccionados, pero si no se ha seleccionado ningún objeto, será

invitados para seleccionar uno.

Mover : mover objetos desde una ubicación a otra

Rotate : permite girar objetos desde un ángulo de inicio a un ángulo de

final

Offset : mover segmentos de un objeto acerca de una cierta distancia

Actualizar : se une a los objetos en un objeto de nivel superior

Downgrade : Explodes objetos en objetos de nivel inferior

Trim/Extend (Trimex) : permite recortar o extender un objeto

Aplicar estilo : se aplica el color actual y ancho a objetos

Escala : escala seleccionado objetos alrededor de un punto de base

Editar: editar un objeto seleccionado

Comportamientos comunes

El ajuste : Permite colocar puntos de nuevos en lugares especiales sobre los

objetos existentes

Restricción de : Permite colocar puntos de nuevos horizontal o verticalmente

en relación con los puntos anteriores

Trabajar con coordenadas manuales : Permite introducir las coordenadas

manuales en lugar de hacer clic en la pantalla

Copiar: todas herramientas de modificación pueden modificar los objetos

seleccionados o crear una copia modificada de ellos. Presionar ALT

mientras utiliza la herramienta hará una copia

Modo de construcción : Permite poner geometría aparte del resto, para

conmutador fácil encendido y apagado

Todos los objetos recién creados adoptar el proyecto actual color y ancho

El proyecto módulo también tiene su Preferencias pantalla

API

Ver la API de proyecto página para obtener una descripción completa de las

funciones de proyecto que se pueden utilizar en secuencias de comandos y

macros

Secuencias de comandos y macros Macros

Las macros son una manera conveniente para crear acciones complejas en

FreeCAD. 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, también puede editarlos y

crear secuencias de comandos muy complejas.

Cómo 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 acción que haces, como presionar un

botón, 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 botón de grabación, le pedirá que asigne un

nombre a la macro y, a continuación, realizar algunas acciones. Cuando haya

terminado, haga clic en el botón de grabación de parada, y se guardarán sus

acciones. Ahora puede acceder al diálogo de macro con el botón de edición:

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 código.

En el ejemplo se

Presione el botón de grabación, asigne un nombre a, digamos "cilindro 10 x

10", a continuación, en el Parte Workbench , crear un cilindro con radio = 10 y

altura = 10. A continuación, pulse el botón "detener la grabación". En el cuadro

de diálogo de edición de macros, puede ver el código de python que se ha

registrado y, si lo desea, hacer alteraciones a la misma. Para ejecutar la macro,

simplemente pulse el botón 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 próxima vez que inicie FreeCAD.

Personalización de

Por supuesto, no resulta práctico cargar una macro en el editor en el fin de

utilizarlo. FreeCAD proporciona mucho mejores maneras de usar la macro,

como asignar un método abreviado de teclado a ella o poner una entrada en el

menú. Una vez creada la macro, todo esto puede hacerse a través 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 estándar. Esto,

añadido a la potencia de python de secuencias de comandos dentro de

FreeCAD, hace posible agregar fácilmente sus propias herramientas de la

interfaz. Siga leyendo para la secuencias de comandos página si desea saber

más acerca de los scripts de python...

Creación de macros sin grabación

Usted puede también directamente copiar y pegar código python en una macro,

sin acción de GUI de grabación. Simplemente crear una nueva macro, editarlo

y pegar el código. Usted puede, a continuación, guardar la macro del mismo

modo como se guarda un documento de FreeCAD. Próxima 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 página para recoger algunas macros útiles para

agregar a su instalación de FreeCAD.

Introducción a Python

Este es un tutorial corto realizado para quién es totalmente nuevo para python.

Python es un código abierto, multiplataforma lenguaje de programación. Python

tiene varias características que lo hacen muy diferente de otros lenguajes de

programación común y muy accesible a los nuevos usuarios como usted:

Ha sido diseñado especialmente para ser fácil de leer por los seres humanos, y por

lo tanto es muy fácil 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 código que escriba

puede ser inmediatamente ejecutado, línea por línea, si así lo desea. Esto hace

extremadamente fácil para aprender y para encontrar errores en el código, porque

usted ir despacio, paso a paso.

Puede incrustarse en otros programas que se utiliza como lenguaje de scripting.

FreeCAD tiene un intérprete de python incrustado, por lo que se puede escribir en

python código en FreeCAD, en la que se manipulan piezas de FreeCAD, por

ejemplo, para crear la geometría. Esto es extremadamente potente, porque en

lugar de simplemente hacer clic en un botón con la etiqueta "crear la esfera", que

un programador ha colocado allí para usted, usted tiene la libertad para crear

fácilmente su propia herramienta para crear exactamente la geometría desee.

Es extensible, fácilmente puede conectar nuevos módulos en su instalación de

python y ampliar su funcionalidad. Por ejemplo, tiene módulos que permiten python

leer y escribir imágenes jpg, para comunicarse con twitter, para planificar las tareas

que debe realizar su sistema operativo, etc.

Por lo tanto, las manos! Tenga en cuenta que lo que vendrá siguiente es una

introducción muy simple, de ninguna manera un tutorial completo. Pero mi

esperanza es que después de obtendrá suficiente fundamentos para explorar

más profunda en los mecanismos de FreeCAD.

El intérprete

Por lo general, al escribir programas informáticos, usted simplemente abra un

editor de texto o su entorno de programación especial que se encuentra en

caso de mayoría un editor de texto con varias herramientas alrededor de ella,

escribe su programa, a continuación, compilarlo y ejecútelo. La mayoría del

tiempo usted cometió errores al escribir, por lo que su programa no funcionará

y obtendrá un mensaje de error que indica lo que salió mal. A continuación, vas

a volver a su editor de texto, corregir los errores, ejecutar una vez más, y así

sucesivamente hasta que el programa funciona bien.

Que todo el proceso, en python, se puede hacer transparente dentro del

intérprete de python. El intérprete es una ventana de python con un símbolo del

sistema, donde simplemente se puede escribir código python. Si instala python

en el equipo (descargarlo desde el sitio Web de python si estás en Windows o

Mac, instálelo desde el repositorio de paquete si estás en linux), usted tendrá

un intérprete de python en su menú de inicio. Pero FreeCAD también tiene un

intérprete de python en su parte inferior:

El intérprete muestra la pitón versión, a continuación, un >>> símbolo, que es el

símbolo, es decir, donde introducir código python. Escribir código en el

intérprete es simple: una línea es una instrucción. Cuando se presiona Intro, su

línea de código se ejecutará (después de ser invisible y instantáneamente

compilado). Por ejemplo, intente escribir esto:

print "hello"

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

print hello

Python nos dirá que no sabe exactamente qué Hola es. Los "personajes

especificar que el contenido es una cadena, que es simplemente, en jerga de

programación, un fragmento de texto. sin el ", el comando de impresión creía

Hola no era un trozo de texto pero una palabra clave de python especiales. Lo

importante es que usted obtenga notificada inmediatamente que ha cometido

un error. Pulsando la flecha hacia arriba (o, en el intérprete de FreeCAD, CTRL

+ Flecha arriba), usted puede ir realizar copia de seguridad en el último

comando que usted escribió y corregirlo.

el intérprete de python también tiene un integrado ayuda a sistema. Intente

escribir:

help

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

Help("Print")

Usted obtendrá una descripción larga y completa de todo lo que puede hacer el

comando de impresión.

Ahora nos dominan totalmente nuestro intérprete, podemos empezar con cosas

graves.

Variables

Por supuesto, impresión "hello" no es muy interesante. Impresión de cosas que

no saber antes de, o dejar que python a encontrar para usted es más

interesante. Es donde entra en juego el concepto de variable. Una variable es

simplemente un valor que almacena bajo un nombre. Por ejemplo, escriba esto:

a = "hello" imprimir una

Supongo que usted entiende lo que ha ocurrido, "salvó" la cadena "hello" bajo

el nombre de una. Ahora, una ya no es un nombre desconocido! Podemos

usarlo en cualquier lugar, por ejemplo en el comando de impresión. Podemos

utilizar cualquier nombre que queremos que sólo respetando las reglas simples,

como no usar espacios ni signos de puntuación. Por ejemplo, muy bien

podríamos escribir:

Hola = "mi propia versión de Hola" Hola impresión

¿Ver? Ahora Hola ya no es una palabra no definida. ¿Qué pasa si, por el

terrible mala suerte, hemos escogido un nombre que ya existe en python?

Digamos que queremos almacenar nuestra cadena bajo el nombre de "print":

imprimir = "hello"

Python es muy inteligente y nos dirá que esto no es posible. Tiene algunas

palabras de clave "reservados" que no se puede modificar. Pero nuestras

propias variables pueden modificarse en cualquier momento, eso es,

exactamente, por qué se les llama variables, el contenido puede variar. Por

ejemplo:

myVariable = "hello" imprimir myVariable myVariable = "good bye" imprimir myVariable

Hemos cambiado el valor de myVariable. También 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, después de un

tiempo no recuerdas lo que su variable denominada a" es para. Pero si llamó

por ejemplo myWelcomeMessage, que te recuerde fácilmente lo que se utiliza

para cuando lo verás.

Números

Por supuesto usted debe saber que la programación es útil para tratar a todo

tipo de datos y especialmente los números, no sólo las cadenas de texto. Una

cosa es importante, python debe saber qué tipo de datos que se trata. Vimos

en nuestro ejemplo de impresión Hola, que el comando print reconocido

nuestra cadena "hello". Eso es porque mediante el ", se dice específicamente el

comando de impresión que lo que vendría próximo 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.

También tenemos otros tipos básicos de datos, tales como números enteros y

float:

firstNumber = 10 secondNumber = 20 imprimir firstNumber + secondNumber Type(firstNumber)

Esto ya es mucho más interesante, ¿verdad? Ahora ya tenemos una potente

calculadora! Mirar bien en cómo funcionaba, python sabe que 10 y 20 son

números enteros. Por lo que están almacenados como "int" y python puede

hacer con ellos todo lo que puede hacer con números 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 números sino meras fragmentos de texto. Python puede

sumar dos fragmentos de texto, pero no trate de averiguar cualquier suma.

Pero estábamos hablando de números enteros. También hay números de float.

La diferencia es que los números enteros no tienen parte decimal, mientras que

los números 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 impresión type(total)

¿Por supuesto, el total tiene decimales, derechos? Python automáticamente

decidió entonces que el resultado es un flotante. En varios casos como este,

python automáticamente 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 operación! Tenga en cuenta que nos

"stringified" varB en el momento de la impresión, pero no cambiamos varB por

sí mismo. Si hemos querido convertir varB permanentemente en una cadena,

necesitamos hacer esto:

varB = str(varB)

También podemos usar int() y float() para convertir a int y float si queremos:

varA = "123" impresión int(varA) impresión float(varA)

Nota sobre los comandos de python

Usted debe haber notado que, en esta sección, hemos utilizado el comando de

impresión 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 también vio que haciendo estos dos comandos:

Type(varA) impresión type(varA)

tienen exactamente el mismo resultado. Eso es porque estamos en el

intérprete, y todo se imprime automáticamente en la pantalla. Cuando te

escribimos más complejos de los programas que se ejecutan fuera del

intérprete, no imprimen automáticamente todo en pantalla, por lo que

necesitaremos utilizar el comando de impresión. Pero de ahora en adelante,

vamos dejar de usarlo aquí, va a ir más rápido. por lo que simplemente

podemos escribir:

myVar = "Hola amigos" myVar

Usted debe también han visto que la mayoría de los comandos de python (o

palabras clave) ya sabemos tienen paréntesis solía decirles sobre qué

contenido debe trabajar el comando: type(), int(), str(). Única excepción es el

comando de impresión, que en realidad no es una excepción, también funciona

normalmente como esta: print("hello"), pero, ya que se utiliza a menudo, los

programadores de python hecho una versión 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 continuación, 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 número total de

elementos de una lista, su "posición" en la lista comienza con 0. El primer

elemento de una lista es siempre en la posición 0, por lo que en nuestra

myOtherList, "Bob" será en la posición 2. Podemos hacer mucho más 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 también puede hacerse con

cadenas.

Fuera de cadenas, enteros, carrozas y listas, hay tipos de datos más

integrados, tales como dictionnaries , o incluso puede crear sus propios tipos de

datos con clases .

Sangría

Uno de los grande usos fresco de listas también es navegar a través de ellos y

hacer algo con cada elemento. Por ejemplo mirar esto:

alldaltons = ["Joe", "William", "Jack", "Averell"] para dalton en alldaltons: imprimir dalton + "Dalton"

Nos itera (programación jerga otra vez!) a través 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

después va a ser un bloque de uno de los comandos más. Inmediatamente

después de introducir la línea de comandos que terminan con:, el símbolo

cambiará a... que significa python sabe que un: - línea terminó ha ocurrido y lo

que vendrá el próximo formarán parte de ella.

¿Cómo sabe cuántas de las siguientes líneas python voluntad será a

ejecutarse dentro del for.. en operación? Para ello, python utiliza sangría. Es

decir, las siguientes líneas 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 programación utilizan otros métodos, como poner

everythin dentro de paréntesis, etc.. Como escribe tus próximas líneas con la

sangría de la misma, se considerará parte del bloque para-en. Si comienza

una línea con 2 espacios y el siguiente con 4, será un error. Cuando usted haya

terminado, simplemente escribir otra línea sin sangría, o simplemente pulse

Intro para volver desde el bloque para-en

Sangría es cool porque si realiza grandes (por ejemplo utilizar fichas en lugar

de espacios, porque es más grande), cuando se escribe un gran programa

tendrá una visión clara de lo que se ejecuta dentro de lo que. Vamos a ver que

muchos otros comandos que para-en pueden haber sangría bloques de código

demasiado.

Para-en comandos pueden utilizarse para muchas cosas que hay que hacer

más de una vez. Por ejemplo, se puede combinar con el comando range():

serie = range(1,11) total = 0 imprimir "suma" número de serie: imprimir el número total = total + número imprimir "----" imprimir total

O cosas más complejas como este:

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

Verá que el comando de range() también tiene esa extraña particularidad que

comienza con 0 (si no se especifica el número inicial) y que su último número

uno será menor que el número final que especifique. 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 sangría es con el si comando. Si un

bloque de código sólo se ejecuta si se cumple una determinada condición, 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 impresión, pero intente

reemplazar la segunda línea por:

Si "Lucky" en alldaltons:

A continuación, se imprime nada. También podemos especificar una cosa:

declaración:

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

Funciones

El comandos estándar de python no son muchos. En la versión actual de

python hay alrededor de 30 años, y ya sabemos que varios de ellos. ¿Pero

Imagínese si podríamos inventar nuestros propios comandos? Pues bien,

podemos, y es sumamente fácil. De hecho, la mayoría de los módulos

adicionales que se pueden conectar en su instalación de python hacen justo

que, agregar comandos que puede utilizar. un comando personalizado en

python se llama a una función y se realiza como esta:

Def printsqm(myValue): imprimir str(myValue) + "metros cuadrados"  printsqm(45)

Muy simple: el comando de def() define una nueva función. Asígnele un

nombre, y dentro de los paréntesis definir argumentos que vamos a usar en

nuestra función. Los argumentos son datos que se pasan a la función. Por

ejemplo, mirar el comando len(). Si escribes sólo len() por sí sola, python le dirá

que necesita un argumento. ¿Es decir, desea len() de algo, derecho? Por

ejemplo, a continuación, podrá escribir len(myList) y obtendrá la longitud de

myList. Pues bien, myList es un argumento que se pasa a la función len(). La

función 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á sólo

dentro de la función. Es más que un nombre que usted da al argumento de

manera que pueda hacer algo con ella, pero también sirve para que la función

sepa cuántos argumentos a esperar. Por ejemplo, si haces esto:

printsqm(45,34)

Habrá un error. Nuestra función fue programada para recibir sólo un

argumento, pero recibió dos, 45 y 34. En lugar de ello podríamos hacer algo

como esto:

Def sum(val1,val2): total = val1 + val2 retorno total Sum(45,34) myTotal = sum(45,34)

Hicimos una función 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 intérprete y todo se imprime, haciendo:

Sum(45,34)

se imprimirá el resultado en la pantalla, pero fuera del intérprete, ya que existe

el comando de impresión no más dentro de la función, nada que aparecen en la

pantalla. Tendría que hacer:

impresión sum(45,34)

de tener algo impreso. Obtenga más información acerca de las funciones aquí .

Módulos

Ahora que tenemos una buena idea de cómo funciona el Pitón, necesitaremos

una última cosa: cómo trabajar con archivos y módulos.

¿Hasta ahora, escribimos python instrucciones línea por línea en el intérprete,

derecho? ¿Qué sucede si podríamos escribir varias líneas juntos y tenerlos

ejecutado todos a la vez? Sin duda sería practico para hacer las cosas más

complejas. Y podríamos ahorrar nuestro trabajo demasiado. Pues bien,

también es extremadamente fácil. Simplemente abra un editor de texto (como

el Bloc de notas de windows) y escribir todos tus python líneas, del mismo

modo como escribirlos en el intérprete, con muescas, etc.. A continuación,

guarde ese archivo en algún lugar, preferiblemente con una extensión de .py.

Eso es todo, tiene un programa completo de python. Por supuesto, hay editores

mucho mejores que el Bloc de notas, pero es sólo para mostrarle que un

programa de python es nada más que un archivo de texto.

Para hacer python ejecuta ese programa, hay cientos de maneras. En

ventanas, simplemente pulse el botón derecho de su archivo, ábralo con python

y ejecutarlo. Pero también puede ejecutarla desde el intérprete de python por sí

mismo. Para ello, el intérprete debe saber donde está su programa .py. En

FreeCAD, la forma más sencilla es colocar su programa en un lugar que

intérprete 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 intérprete, escribir:

prueba de importación

sin la extensión .py. Esto simplemente ejecutará el contenido del archivo, línea

por línea, como si nos habíamos escrito en el intérprete. Se creará la función

suma, y el mensaje se imprimirá. Hay una gran diferencia: el comando de

importación se realiza no sólo para ejecutar programas escritos en los archivos,

como el nuestro, sino también para cargar las funciones en su interior, para que

estén disponibles en el intérprete. Archivos que contienen funciones, como la

nuestra, se denominan módulos.

Normalmente cuando escribimos una función sum() en el intérprete, ejecutarlo

simplemente como éste:

Sum(14,45)

Como se hizo anteriormente. Cuando importa un módulo que contiene nuestra

función sum(), la sintaxis es un poco diferente. Hacemos:

Test.Sum(14,45)

Es decir, el módulo se importa como un "contenedor", y todas sus funciones

están dentro. Esto es muy útil, porque podemos importar un montón de

módulos y mantenerlo todo bien organizado. Por lo tanto, básicamente, en todo

el mundo verá something.somethingElse, con un entre puntos, lo que significa

somethingElse está dentro de algo.

También podemos tirar de la parte de la prueba y importar nuestra función

sum() directamente en el espacio principal intérprete, como este:

de importación de prueba * Sum(12,54)

Básicamente todos los módulos se comportan como ese. Importar un módulo y,

a continuación, puede utilizar sus funciones como éste:

module.function(argument). Casi todos los módulos de hacen: definir funciones,

tipos de datos nuevos y clases que se pueden utilizar en el intérprete o en sus

propios módulos de python, porque nada le impide que importar módulos

dentro de su módulo!

Una última cosa sumamente útil. ¿Cómo sabemos lo que tenemos los módulos,

¿cuáles son las funciones dentro de y cómo utilizarlas (es decir, qué tipo de

argumentos que necesitan)? Ya vimos python tiene una función de help().

Haciendo:

Help() módulos

Nos dará una lista de todos los módulos 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()

matemáticas de importación Dir(Math)

Vamos a ver todas las funciones contenidas en el módulo de matemáticas, así

como material extraño llamado __doc__, __file__, __name__. El __doc__ es

extremadamente útil, se trata de un texto de documentación. Cada función de

módulos (decolletée) tiene un __doc__ que explica cómo utilizarlo. Por ejemplo,

vemos que hay una función de pecado en lado el módulo de matemáticas.

¿Quieres saber cómo usarlo?

impresión math.sin.__doc__

Comenzando con FreeCAD

Bien, creo que usted debe saber tener una buena idea de cómo funciona la

Pitón, y puede comenzar a explorar lo que FreeCAD tiene que ofrecer. Las

funciones de python de FreeCAD son todos bien organizados en diferentes

módulos. Algunos de ellos ya se cargan (importado) al iniciar FreeCAD. Por lo

tanto, sólo hacer

Dir()

y leer a Conceptos básicos de secuencias de comandos de FreeCAD...

Por supuesto, vimos aquí sólo una parte muy pequeña del mundo python. Hay

muchos conceptos importantes que no mencionamos aquí. Hay dos python

muy importantes documentos de referencia en la red:

la referencia oficial de Python

el 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 representación de este

contenido en las vistas 3d son accesibles desde el intérprete de python

incorporada o desde sus propios scripts. De resultas de ello, FreeCAD es

probablemente una de las más aplicaciones de ingeniería profundamente

personalizables disponible hoy en día.

En su estado actual, sin embargo, FreeCAD tiene muy pocos comandos

"nativos" para interactuar en los objetos 3D, principalmente porque es todavía

en fase temprana de desarrollo, sino también porque la filosofía detrás de ella

es más para proporcionar una plataforma para el desarrollo de CAD que una

aplicación diseñada por el usuario. Pero la facilidad de python interior FreeCAD

probablemente ayudará mucho para ver rápidamente nuevas funcionalidades,

siendo desarrollado por "usuarios de poder", o, por lo general, los usuarios que

saben un poco de programación 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 rápido a su estructura. Python es un

lenguaje muy fácil para aprender, sobre todo porque se puede ejecutar dentro

de un intérprete, donde desde comandos simples para completar los

programas se pueden ejecutar sobre la marcha, sin la necesidad de compilar

nada. FreeCAD tiene un intérprete de python incorporada.

El intérprete

Desde el intérprete, puede acceder a todos los módulos de sus sistema

instalado python, así como los módulos integrados de FreeCAD y todos los

módulos adicionales de FreeCAD instaló posteriormente. La captura de

pantalla siguiente muestra la pitón intérprete:

Desde el intérprete, puede ejecutar código python y navegar a través de las clases disponibles y la función. FreeCAD proporciona un explorador de clase muy útil para la exploración de su nuevo mundo FreeCAD: cuando se escribe el nombre de una clase conocida seguida por un punto (lo que significa que desea agregar algo de esa clase), se clase navegador abre una ventana, donde puede navegar entre las subclases disponibles y los métodos. 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

más genérico de python de explorar el contenido de los módulos y las clases es

utilizar el comando de impresión dir(). Por ejemplo, si escribe Imprimir dir()

enumerará todos los módulos cargados actualmente en FreeCAD. dir(App) de

impresión le mostrará todo dentro del módulo de la aplicación, etc..

Otra característica útil del intérprete es la posibilidad de volver atrás en el

historial de comandos y recuperar una línea de código ya escrito anteriormente.

Para navegar en la historia de comando, utilice CTRL + arriba o CTRL + abajo.

Haciendo clic derecho en la ventana de intérprete, usted también tiene varias

otras opciones, tales como copia toda la historia (útil para experimentar algo

aquí y, a continuación, realizar una secuencia de comandos completa de la

misma) o inserta el nombre de archivo con la ruta de acceso completa.

Ayuda de Python

En el menú de ayuda de FreeCAD, usted encontrará una entrada con la

etiqueta "Python ayudar a", que se abrirá una ventana del explorador que

contiene una documentación completa, generado en tiempo real de todos los

módulos de python disponibles para el intérprete de FreeCAD, incluyendo

python y módulos integrados de FreeCAD, módulos de sistema instalado y

módulos adicionales de FreeCAD. La documentación disponible allí depende

de cuánto esfuerzo cada desarrollador de módulo poner en documentar su

código, pero generalmente módulo de python tienen la reputación de ser

bastante bien documentado. La ventana de FreeCAD debe permanecer abierta

para este sistema de documentación trabajar.

Módulos integrados

Dado que FreeCAD está diseñado para ejecutarse sin interfaz gráfica de

usuario, casi toda su funcionalidad está separada en dos grupos: funcionalidad

principal, llamado APP y funcionalidad de Gui, llamado Gui. Por lo tanto,

nuestros dos principales módulos integrados de FreeCAD se llaman APP y Gui.

Estos dos módulos también pueden accederse desde secuencias de comandos

de fuera del intérprete, por los respectivos nombres de FreeCAD y

FreeCADGui.

En el módulo de aplicación, usted encontrará todo lo relacionado a la aplicación en

sí, como métodos para la apertura o archivos de cierre y a los documentos, como

la configuración del documento activo o la lista de su contenido.

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

de la Gui, como los workbenches y sus barras de herramientas y, más interesante,

la representación gráfica de todos los contenidos de FreeCAD.

Listado de todo el contenido de los módulos es tarea un poco

contraproducente, ya que crecen muy rápido a lo largo de desarrollo de

FreeCAD. Pero las dos exploración herramientas proporcionadas (el explorador

de clases y la ayuda de python) deberían proporcionarle, en cualquier

momento, una documentación completa y actualizada de estos módulos.

Los objetos de aplicación y Gui

Como dijimos, en FreeCAD, todo está separada entre el núcleo y la

representación. Esto incluye también los objetos 3D. Puede obtener acceso a

propiedades definitorias de objetos (llamados características en FreeCAD) a

través del módulo de aplicación y cambiar la forma en que están representados

en la pantalla a través del módulo de Gui. Por ejemplo, un cubo tiene

propiedades que lo definen, como anchura, longitud, altura, se almacenan en

un objeto de aplicación y representación, tales como el color de caras, modo de

dibujo, que se almacenan en un objeto de Gui correspondiente.

Esta forma de hacerlo permite una muy amplia gama de usos, como tener

algoritmos sólo funcionan en la parte definitoria de funciones, sin necesidad de

preocuparse por cualquier parte visual, o incluso redirigir el contenido del

documento a aplicaciones no gráficos, tales como listas, hojas de cálculo o

análisis de elementos.

Para cada objeto de la aplicación en el documento, existe un objeto

correspondiente de la Gui. El documento en sí, en realidad, también tiene

aplicación y una Gui objetos. Esto, por supuesto, sólo es válido cuando se

ejecuta FreeCAD con su interfaz completa. En la versión de línea de

comandos, no GUI existe, por lo que sólo los objetos de aplicación son sencillo.

Nota que la Gui es parte de los objetos genera de nuevo cada vez que un

objeto de aplicación está marcado como "a ser recalculadas" (por ejemplo,

cuando uno de sus parámetros cambiado), por lo que los cambios que podría

haber hecho directamente al objeto Gui podría perderse.

para acceder a la parte de aplicación de algo, escribe:

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

donde "ObjectName es el nombre del objeto. También puede escribir:

myObject = App.ActiveDocument.ObjectName

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

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

donde "ObjectName es el nombre del objeto. También puede escribir:

myViewObject = App.ActiveDocument.ObjectName.ViewObject

Los objetos Document

En FreeCAD todo el trabajo se encuentra dentro de documentos. Un

documento contiene su geometría y puede guardarse en un archivo. Pueden

abrir varios documentos al mismo tiempo. El documento, como la geometría

contenido en su interior, tiene objetos de aplicación y Gui. Objeto de la

aplicación contiene las definiciones de la geometría real, mientras que el objeto

de Gui contiene las diferentes vistas del documento. Puede abrir varias

ventanas, cada uno ver su trabajo con un factor de zoom diferentes o un punto

de vista. Estas vistas son parte del objeto de Gui de su documento.

Para acceder a la parte de la aplicación del documento abierto actualmente

(activo), escriba:

myDocument = App.ActiveDocument

Para crear un nuevo documento, escriba:

myDocument = App.newDocument("Document Name")

Para acceder a la parte de Gui el documento abierto actualmente (activo),

escriba:

myGuiDocument = Gui.ActiveDocument

Para acceder a la vista actual, escriba:

myView = Gui.ActiveDocument.ActiveView

Introducción

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

import Mesh

Después de usted tiene acceso al módulo de malla y la clase de malla que

facilitar las funciones de la versión C++ Mesh-núcleo de FreeCAD.

Creación y carga

Para crear un objeto de malla vacío sólo utilice el constructor estándar:

mesh = Mesh.Mesh()

También puede crear un objeto desde un archivo

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

¿Qué formatos de archivo que se puede utilizar para crear una malla es notable

aquí .

O crearlo fuera de un conjunto de triángulos 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 núcleo de la malla se encarga acerca de cómo crear una estructura de datos

correcto topológico por clasificación puntos coincidentes y bordes juntos.

Más adelante se verá cómo puede probar y examinar los datos de la malla.

Modelado

Para crear geometrías regulares que puede utilizar Python secuencia de

comandos BuildRegularGeoms.py.

import BuildRegularGeoms

Esta secuencia de comandos proporciona métodos para definir cuerpos de

rotación simple como elipsoides, esferas, cilindros, conos y toroides. Y también

tiene un método para crear un cubo simple. Para crear un toroide, por ejemplo,

puede hacer lo siguiente:

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

Los dos primeros parámetros definen los radios del toroide y el tercer

parámetro es un factor de sub-sampling para cuántos triángulos se crean.

Cuanto mayor sea este valor la más suave y cuanto menor sea el más gruesa

el cuerpo es. La clase de malla proporciona un conjunto de funciones

booleanas que pueden utilizarse para fines de modelado. Proporciona la Unión,

la intersección y la diferencia de dos objetos de malla.

m1, m2              # are the input mesh objectsm3 = Mesh.mesh(m1)  # create a copy of m1m3.unite(m2)        # union of m1 and m2, the result is stored in m3m4 = Mesh.mesh(m1)m4.intersect(m2)    # intersection of m1 and m2m5 = Mesh.mesh(m1)m5.difference(m2)   # the difference of m1 and m2m6 = Mesh.mesh(m2)

m6.difference(m1)   # the difference of m2 and m1, usually the result is different to m5

Por último, un ejemplo completo que computa la intersección entre una esfera y

un cilindro que intersecta con la esfera.

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

Examinar y pruebas Escribir sus propios algoritmos Exportar

Incluso puede escribir la malla a un módulo de python:

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

Cosas relacionadas con la Gui Probabilidades y extremos

Una extensa, debería relacionados difíciles de usar, fuente de malla con

secuencias de comandos son las secuencias de comandos de prueba de

unidad del módulo de malla. En esta unidad se llaman a métodos literalmente

todas las pruebas y todas las propiedades o atributos son ajustados. Así que si

eres lo suficientemente audaz, eche un vistazo el módulo de prueba de la

unidad .

Introducción

Nos aquí le explicará cómo controlar la Módulo de parte directamente desde el

intérprete de python FreeCAD, o desde cualquier secuencia de comandos

externo. Asegúrese de examinar el secuencias de comandos sección y la

Básico de secuencias de comandos de FreeCAD páginas si necesita obtener

más información acerca de cómo funciona el pitón de secuencias de comandos

en FreeCAD.

Primero para utilizar la funcionalidad de módulo de parte tiene que cargar el

módulo de parte en el intérprete: import Part

Diagrama de clase

Se trata de una visión UML acerca de las clases más importantes del módulo

de parte de:

Geometría

Los objetos geomtric son el bloque de creación de todos los objetos

topológicos:

GEOM Clase base de los objetos geométricos

LINE Una línea recta en 3D, definida por el punto de partida y y punto de

CIRCLE Círculo o segmento del círculo, definido por un punto central y el inicio y el

punto final

...... y pronto algunas más;-)

Topología

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

Compuestos Un grupo de cualquier tipo de objeto topológico.

COMPSOLID A compuesto sólido es un conjunto de sólidos conectados por sus

caras. Se expande las nociones de WIRE y SHELL para sólidos.

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 geometría

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

WIRE A conjunto de bordes conectados por sus vértices. Puede ser un contorno

abierto o cerrado dependiendo de si los bordes están vinculados o no.

EDGE A elemento topológico correspondiente a una curva sobrio. Un borde está

generalmente limitado por vértices. Tiene una dimensión.

VÉRTICE Un elemento topológico correspondiente a un punto. Tiene cero

dimensión.

SHAPE Un término genérico que abarca todo lo anterior.

Creación de tipos básicos Breve descripción

Puede crear fácilmente objetos topológicos básicos con los métodos de

"make...()" desde el módulo de elemento:

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

Un par de otros métodos de make...() disponibles:

makeBox(l,w,h,[p,d])--crear una casilla ubicada en p y apuntando en la dirección 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 círculo 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 línea 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 polígono 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

 

¿Cómo crear un vértice?

 >>> vertex = Part.Vertex((1,0,0)) 

vértice es un punto creado en x = 1, y = 0, z = 0 dado un objeto de vértice,

usted puede encontrar su ubicación como este:

 >>> vertex.PointVector (1, 0, 0) 

¿Cómo crear un borde?

Un borde es nada más que una línea con dos vértices:

 >>> 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 vértices. Usted puede

encontrar la longitud y el centro de un borde como este:

 >>> edge.Length10.0>>> edge.CenterOfMassVector (5, 0, 0) 

¿Cómo 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 líneas como un cuadrado:

 >>> wire3.Length40.0>>> wire3.CenterOfMassVector (5, 5, 0)>>> wire3.isClosed()True>>> wire2.isClosed()False 

¿Cómo crear un rostro?

Sólo los rostros creados a partir de cables cerrados será válidos. En este

ejemplo, wire3 es un alambre cerrado pero wire2 no es un alambre cerrado

(véase más arriba)

 >>> face = Part.Face(wire3)>>> face.Area99.999999999999972>>> face.CenterOfMassVector (5, 5, 0)>>> face.Length40.0>>> face.isValid()True>>> sface = Part.Face(wire2)>>> face.isValid()False 

Sólo caras tendrá un área, no cables ni bordes.

¿Cómo crear un círculo?

círculo = Part.makeCircle(radius,[center,dir_normal,angle1,angle2])--crear un

círculo 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 círculo como esto:

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

Si desea crearla en cierta posición y con cierta dirección

 >>> ccircle = Part.makeCircle(10, Base.Vector(10,0,0), Base.Vector(1,0,0))>>> ccircle.CurveCircle (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 sólo acepta Base.Vector() de posición y normal, pero no de

tuplas. También puede crear parte del círculo dando el ángulo del comienzo y

ángulo de final como:

 >>> from math import pi>>> arc1 = Part.makeCircle(10, Base.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 harán un círculo. Deben ser los ángulos siempre en

grados, si tienes radianes simplemente conversión mediante la fórmula: grados

= radianes * 180/PI o utilizando el módulo de matemáticas de python (después

de hacer matemáticas de importación, por supuesto): grados =

math.degrees(radians)

¿Cómo crear un arco a lo largo de puntos?

Lamentablemente no existe ninguna función de makeArc, pero tenemos la

función Part.Arc para crear un arco a lo largo de tres puntos. Básicamente

puede suponerse como un arco uniéndose 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 sólo 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 pequeña porción de un círculo como un arco, es posible

también:

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

¿Cómo crear un polígono o una línea a lo largo de puntos?

Una línea a lo largo de múltiples puntos no es nada, pero la creación de un

alambre con múltiples aristas. función 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)]) 

¿Cómo 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(3,0,0), Base.Vector(0,1,0))>>> plane.BoundBoxBoundBox (3, 0, 0, 5, 0, 2) 

BoundBox es un paralelepípedo 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 sólo acepta Base.Vector() para start_pnt y

dir_normal pero no de tuplas

¿Cómo crear una elipse?

Para crear una elipse de allí son de varias maneras:

Part.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 código anterior hemos aprobado S1, S2 y centro. De forma similar a arco,

Ellipse también crea un objeto elipse pero no edge, así que necesitamos

convertirlo en arista a través de toShape() para mostrar

Nota: Arco sólo 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

¿Cómo 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 pequeño círculo barrer a lo largo de un

gran círculo:

radius1 es el radio de cirlce grande, radius2 es el radio de un círculo pequeño,

puntos es el centro del Toro y dir es la dirección normal. ángulo1 y ángulo2 son

los ángulos en radianes para el pequeño círculo, para crear un arco que el

último ángulo de parámetro es hacer una sección de un toro:

 >>> torus = Part.makeTorus(10, 2) 

El código anterior creará un toro con 20(radius 10) de diámetro y espesor 4

(cirlce pequeño radio 2)

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

El código anterior creará una división del Toro

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

El código anterior, creará un toro de semi, sólo el último parámetro 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

¿Cómo hacer un cuadro o un paralelepípedo?

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 

¿Cómo 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

mínima y máxima de la esfera, ángulo3 es el diámetro 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) 

¿Cómo 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) 

¿Cómo 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

¿Cómo 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

¿Cómo obtener común 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: común Playground:common.png

¿Cómo 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>] 

¿Cómo a la sección de un sólido con dar forma?

Section(...)

   Section of this with a given topo shape.

devolverá una curva de intersección, 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

Fácilmente puede explorar la estructura de datos topológicos:

import Partb = Part.makeBox(100,100,100)b.Wiresw = b.Wires[0]ww.Wiresw.VertexesPart.show(w)w.Edgese = w.Edges[0]e.Vertexesv = e.Vertexes[0]v.Point

Escribiendo la línea de arriba en el intérprete de python, obtendrá una buena

comprensión de la estructura de los objetos de la parte. Aquí nuestro comando

makeBox() crea una forma sólida. Este sólido, como todos los de parte de

sólidos, 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 vértices. Bordes rectos tienen sólo dos vértices, obviamente.

Parte vértices 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 más probable es que

desee hacer un carácter. En FreeCAD los bordes son parametrizados por sus

longitudes. Eso significa que usted podrá caminar con una curva de borde por

su longitud:

import PartanEdge = Part.makeBox(100,100,100).Edges[0] # make a box with 100mm edge length and get the first edgeprint 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 posición. Esto significa que si el borde es 100 mm

durante mucho tiempo la posición de inicio es 0 y la posición final 100.

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

Mediante la selección

Aquí vemos ahora cómo podemos utilizar la selección del usuario lo hizo en el

visor. En primer lugar creamos un cuadro y lo muestra en el Visor

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

Seleccione ahora algunas caras o bordes. Con esta secuencia de comandos

puede recorrer en iteración 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.0for o in Gui.Selection.getSelectionEx():        for s in o.SubObjects:               length += s.Length print "Length of the selected edges:" ,length

Ejemplos Creación de topología simple

Ahora crearemos una topología construyendo fuera de la geometría más

simple. Como un estudio de caso utilizamos una parte como se ve en la imagen

que consta de cuatro vértices, dos círculos y dos líneas.

Creación de geometría

En primer lugar tenemos que crear las distintas partes geométricas de este hilo.

Y tenemos que cuidar que los vértices de las piezas geométricas se encuentran

en el mismo posición. De lo contrario más tarde no podamos conectar las

piezas geométricas con una topología!

Por lo que creamos en primer lugar los puntos:

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

Arco

Para crear un arco de círculo hacemos un ayudante punto y crear el arco de

círculo a través de tres puntos:

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

Línea

Creó la línea puede ser muy simple fuera de los puntos:

L1 = Part.Line(V1,V2)# and the second oneL2 = Part.Line(V4,V3)

Poniendo todos juntos

El último paso es colocar los elementos geométricos de base juntos y hornear

una forma topológica:

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

Hacer un prisma

Ahora el cable en una dirección de la extrusión y hacer una forma 3D real:

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

La botella OCC

Un ejemplo típico se encuentra en la Página de inicio de OpenCasCade rápido

es cómo construir una botella. Este es un buen ejercicio para FreeCAD

demasiado. De hecho, usted puede seguir en nuestro siguiente ejemplo y la

página de la OCC, simultáneamente, entienda bien cómo se implementan las

estructuras de la OCC en FreeCAD.

La secuencia de comandos completa a continuación también se incluye en la

instalación de FreeCAD (dentro de la carpeta de mod/Part) y puede ser llamado

desde el intérprete de python escribiendo:

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

La secuencia de comandos completa

Aquí es la secuencia de comandos de MakeBottle completa:

import Part, FreeCAD, mathfrom 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.e-3)      return myBody

Explicación detallada

import Part, FreeCAD, mathfrom FreeCAD import Base

Necesitamos, por supuesto, el módulo de parte, sino también el módulo de

FreeCAD.Base, que contiene estructuras básicas de FreeCAD como vectores y

matrices.

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

Aquí definimos nuestra función de makeBottle. Esta función puede ser llamada

sin argumentos, como lo hicimos anteriormente, en los valores que caso

predeterminado para anchura, altura, y se utilizará el espesor. A continuación,

definimos un par de puntos que se utilizará para la construcción de nuestro

perfil base.

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

Aquí definimos realmente la geometría: un arco, hecho de 3 puntos y dos de

los segmentos de línea, 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 geometría y las formas? Aquí construimos

las formas fuera de nuestra geometría de construcción. 3 los bordes (bordes

pueden ser rectos o curvos) y, a continuación, 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 sólo la mitad. Es más fácil que

edificio todo el perfil del mismo modo, sólo podemos espejo de lo que hicimos y

pegue ambas partes juntos. Por lo que primero creamos una matriz. Una matriz

es una manera muy común para aplicar transformaciones a objetos en el

mundo 3D, ya que puede contener en una estructura de todas las

transformaciones básicas que pueden sufrir los objetos 3D (mover, rotar y

escalar). Aquí, después de que creamos la matriz, nos reflejarlo, y creamos una

copia de nuestro hilo con la matriz de transformación 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 extrusión. Al hacerlo, realmente

hicimos un sólido. ¿A continuación, aplicamos un filete poco agradable a

nuestro objeto porque nos interesa un buen diseño, 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, todavía tenemos que

crear un cuello. Por lo tanto, hacemos un nuevo sólido, con un cilindro.

   myBody = myBody.fuse(myNeck)

La operación de fusibles, que, en otras aplicaciones, a veces se llama a la

Unión, es muy poderosa. Encargará de pegar lo que necesita para ser pegada

y quitar partes que deben eliminarse.

   return myBody

A continuación, volvemos nuestra parte sólida como resultado de nuestra

función. Ese elemento sólido, 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, más simple:

Part.show(bottle)

Cargar y guardar

Hay varias maneras de guardar su trabajo en el módulo de parte. Por supuesto

puede guardar el documento de FreeCAD, pero también 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 fácil. Hay disponibles de métodos

exportBrep(), exportIges(), exportStl() y exportStep() para todos los objetos de

forma. Por lo tanto, haciendo:

import Parts = 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 Parts = Part.Shape()s.read("test.stp")

Tenga en cuenta que importar o abrir archivos BREP, IGES o STEP también

puede hacerse directamente desde el archivo - > Abrir o archivo - > menú

Importar. En este momento exportar es todavía no es posible de esa manera,

pero debería estar ahí pronto.

< anterior: secuencias de comandos de malla

siguiente: malla a la parte >

Índice

Conversión de objetos de la parte a mallas

Convertir objetos de nivel superiores como Formas de parte en objetos más

simples, como mallas es una operación bastante simple, donde obtener

trianguladas todas las caras de un objeto Part. El resultado de esa triangulación

(mosaico), a continuación, se utiliza para construir una malla:

#let's assume our document contains one part objectimport Meshfaces = []shape = FreeCAD.ActiveDocument.ActiveObject.Shapetriangles = 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 triangulación de ciertas caras ofrecidas por OpenCascade es

bastante fea. Si la cara tiene un espacio rectangular de parámetro y no

contiene ningún agujeros o otras curvas de recorte también puede crear una

malla por cuenta propia:

import Meshdef 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

Conversión de mallas a objetos de parte

Conversión de mallas a parte de objetos es una operación sumamente

importante en el trabajo de CAD, porque muy a menudo reciben datos 3D en

formato de malla de otras personas o van desde otras aplicaciones. Mallas son

muy prácticos representar la geometría de forma libre y grandes escenas

visuales, ya que es muy ligero, pero para CAD preferimos generalmente

objetos de nivel superiores que llevan mucha más información, tales como la

idea de sólido, o caras de curvas en lugar de triángulos.

Convertir mallas a esos objetos de nivel superiores (a cargo de la Módulo de

parte en FreeCAD) no es una operación fácil. Mallas pueden hacerse de miles

de triángulos (por ejemplo cuando generados por un escáner 3D), y habiendo

sólidos del mismo número de caras sería extremadamente pesado manipular.

Por lo que generalmente desea optimizar el objeto al convertir.

FreeCAD actualmente ofrece dos métodos para convertir mallas en objetos de

parte. El primer método es una conversión simple y directa, sin cualquier

optimización:

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

El segundo método ofrece la posibilidad de considerar facetas de malla

coplanares cuando el ángulo entre ellas es en virtud de un determinado valor.

Esto permite construir mucho las formas más simples:

# let's assume our document contains one Mesh objectimport Mesh,Part,MeshPartfaces = []mesh = App.ActiveDocument.ActiveObject.Meshsegments = mesh.getPlanes(0.00001) # use rather strict tolerance here for i in segments:  if len(i) > 0:     # a segment can have inner holes     wires = MeshPart.wireFromSegment(mesh, i)     # we assume that the exterior boundary is that one with the biggest bounding box     if len(wires) > 0:        ext=None        max_length=0        for i in wires:           if i.BoundBox.DiagonalLength > max_length:              max_length = i.BoundBox.DiagonalLength              ext = i         wires.remove(ext)        # all interior wires mark a hole and must reverse their orientation, otherwise Part.Face fails        for i in wires:           i.reverse()         # make sure that the exterior wires comes as first in the 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 básicamente un collage de diferentes bibliotecas potentes, siendo

los más importantes openCascade , para la gestión y construcción de

geometría, Coin3d para mostrar la geometría, y Qt para poner todo esto en una

interfaz gráfica de usuario agradable.

La geometría que aparece en las vistas 3D de FreeCAD son prestados por la

biblioteca de Coin3D. Coin3D es una implementación de la OpenInventor

estándar. El software de openCascade también proporciona la misma

funcionalidad, pero se decidió, en los inicios de FreeCAD, no para utilizar el

Visor de openCascade integrada y más bien cambiar al más alto rendimiento

coin3D software.

OpenInventor es realmente un lenguaje de descripción de la escena 3D. La

escena que se describe en openInventor, a continuación, 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,

sólo tiene que le proporcione código válido de OpenInventor. La gran ventaja

es que openInventor es un estándar muy conocida y está bien documentado.

Uno de los grandes trabajos que FreeCAD se hace por usted es básicamente

traducir información de geometría de openCascade en lengua openInventor.

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 geometría, colores, materiales, luces, etc. y todo lo que

organiza los datos en una estructura clara y cómoda. 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 sería organizar sus archivos en

carpetas. Cada instrucción afecta a lo que viene a continuación, por ejemplo los

dos primeros elementos de nuestro separador de raíz son una rotación y una

traducción, ambos afectará el elemento siguiente, que es un separador. En ese

separador, se define un material y transformación otro. Por lo tanto, nuestro

cilindro se verán afectado por ambas transformaciones, quien fue aplicada

directamente y uno de los que se aplicó a la separación de su padre.

También 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. También podemos definir incluso de

movimiento, cámaras y luces. Incluso es posible incrustar piezas de secuencias

de comandos en archivos de openInventor, para definir comportamientos más

complejos.

Si estás interesado en aprender más sobre openInventor, la cabeza

directamente a su referencia más 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

automáticamente convierte en código de openInventor y insertado en el

principal scenegraph que puede ver en una vista 3D. Ese scenegraph se

actualiza continuamente cuando usted hacer modificaciones, añadir 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 emisión de código openInventor.

Pero hay muchas ventajas para poder acceder directamente a la scenegraph.

Por ejemplo, podemos cambiar temporalmente la aparición de un objeto, o

podemos añadir objetos a la escena que no tienen existencia real en el

documento FreeCAD, tales como la geometría de construcción, ayudantes,

sugerencias de gráficas o herramientas tales como manipuladores o en

pantalla información.

FreeCAD sí cuenta con varias herramientas para ver o modificar el código de

openInventor. Por ejemplo, el siguiente código python mostrará la

representación openInventor de un objeto seleccionado:

obj = FreeCAD.ActiveDocument.ActiveObjectviewprovider = obj.ViewObjectprint viewprovider.toString()

, Pero también contamos con un módulo 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

intérprete de python ejecutándose, permite a diálogo directamente con

cualquier ejecución Coin3d scenegraphs , tales como las vistas 3D de

FreeCAD, o incluso crear otros nuevos. Pivy se incluye en la instalación

estándar 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 añadir 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 aún accesible y modificable sobre la marcha. Sin necesidad de

volver a calcular o repintado de nada, moneda se encarga de todo. Puede

añadir cosas a tu scenegraph, cambiar las propiedades, ocultar cosas, mostrar

objetos temporales, cualquier cosa. Por supuesto, esto solo afecta a la

visualización en la vista 3D. Esa pantalla obtiene recalculada por FreeCAD en

el archivo abierto, y cuando un objeto debe recálculo de al. Por lo tanto, si

cambia el aspecto de un objeto existente de FreeCAD, esos cambios se

perderán 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 queríamos mover nuestro cubo, nos

habría añadido un nodo de SoTranslation a nuestro nodo personalizado, y

habría parecía 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 continuación, por lo que se puede decir algo como:

color rojo, cubo, color amarillo, esfera y obtendrá un cubo rojo y una esfera

amarilla. Si añadimos la traducción ahora a nuestro nodo personalizado

existente, sería venir después del cubo y no lo afectan. Si nos hubiéramos

insertado al crearlo, como aquí arriba, podemos ahora hacer:

trans.translation.setValue([2,0,0])

Y nuestro cubo saltaría 2 unidades a la derecha. Por último, eliminando algo se

hace con:

sg.removeChild(myCustomNode)

Utilizando los mecanismos de devolución de llamada

A mecanismo de devolución de llamada es un sistema que permita una

biblioteca que se esté utilizando, como nuestra biblioteca de moneda, para

llamar a realizar la seguridad, es decir, para llamar a una función de

determinados desde su objeto de python que se está ejecutando. Esto es muy

útil, porque de esa manera moneda puede notificarle si algún acontecimiento

específico se produce en la escena. Moneda puede ver cosas muy diferentes,

tales como la posición del ratón, clics de un botón del mouse, las teclas del

teclado que se presiona y muchas otras cosas.

FreeCAD ofrece una manera fácil de utilizar dichas devoluciones de llamada:

class ButtonTest:  def __init__(self):    self.view = FreeCADGui.ActiveDocument.ActiveView    self.callback = self.view.addEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),self.getMouseClick)   def getMouseClick(self,event_cb):    event = event_cb.getEvent()    if event.getState() == SoMouseButtonEvent.DOWN:      print "Alert!!! A mouse button has been improperly clicked!!!"      self.view.removeEventCallbackSWIG(SoMouseButtonEvent.getClassTypeId(),self.callback)  ButtonTest()

La devolución de llamada debe iniciarse desde un objeto, porque ese objeto

todavía debe ejecutarse cuando se producirá la devolución de llamada. Véase

también una lista completa de posibles eventos y sus parámetros, o el

documentación de moneda oficial .

Documentación

Por desgracia pivy sí mismo todavía no tiene una documentación adecuada,

pero dado que es una traducción exacta de la moneda, con seguridad puede

utilizar la documentación de la moneda como referencia y utilizar el estilo de

python en lugar de c ++ estilo (por ejemplo SoFile::getClassTypeId() en pivy

sería SoFile.getClassId())

PyQt es un módulo 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 aplicación que se ejecuta de qt, como FreeCAD.

Utilizando el módulo 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 Documentación de la API , y hay muchos tutoriales en

la red que le enseñe cómo 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 sysfrom PyQt4 import QtGuiapp = QtGui.qAppmw = app.activeWindow()

A continuación, puede examinar por ejemplo a través 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 están anidados en widgets del

"contenedores", por lo que los hijos de la ventana principal de nuestro propios

pueden contener a otros niños. Dependiendo del tipo de widget, hay un montón

de cosas que puede hacer. Compruebe la documentación 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 fácil:

myWidget = QtGui.QDockWidget()mw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myWidget)

Podría 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 método preferido crear un objeto de interfaz de usuario que hará

todo de la configuración de tu widget a la vez. La gran ventaja es que puede

ser un objeto de interfaz de usuario de tal creó gráficamente con el programa

de Qt Designer. Un objeto típico generado por el diseñador 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()).expandedTo(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 recién creado como este:

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

Además de los tipos de objeto estándar tales como anotaciones, mallas y

partes de objetos, FreeCAD también ofrece la posibilidad de sorprendente para

construir objetos 100% script python, llamados características de Python. Esos

objetos se comportan exactamente como cualquier otro objeto de FreeCAD,

puede ser guardados en un documento y abrió en cualquier otra instalación de

FreeCAD, ya que el código de python que define el objeto también se guarda

en el documento.

Características de Python siga la misma regla como todas las funciones de

FreeCAD: están separados en partes de la aplicación y GUI. La parte de app,

el objeto Document, define la geometría de nuestro objeto, mientras que su

parte de GUI, el objeto de proveedor de la vista, define cómo se dibujarán el

objeto en la pantalla. El objeto de proveedor de ver, como cualquier otra

característica de la FreeCAD, sólo está disponible cuando se ejecuta FreeCAD

en su propia interfaz gráfica. Hay varias propiedades y métodos disponibles

para construir su objeto. Las propiedades deben ser de cualquiera de los tipos

de propiedades predefinidos que ofrece el FreeCAD, y aparecerá en la ventana

de vista de la propiedad, por lo que pueden ser editados por el usuario. De esta

forma, los objetos FeaturePython son verdaderamente y totalmente

paramétricos. se pueden definir propiedades para el objeto y su ViewObject por

separado.

Ejemplo básico

En el siguiente ejemplo puede encontrarse en el

src/Mod/TemplatePyMod/FeaturePython.py archivo, junto con varios otros

ejemplos:

"Examples for a feature class and its view provider." import FreeCAD, FreeCADGuifrom pivy import coin class Box:        def __init__(self, obj):               "Add some custom properties to our box feature"               obj.addProperty("App::PropertyLength","Length","Box","Length of the box").Length=1.0               obj.addProperty("App::PropertyLength","Width","Box","Width of the box").Width=1.0               obj.addProperty("App::PropertyLength","Height","Box", "Height of the box").Height=1.0               obj.Proxy = self       

        def onChanged(self, fp, prop):               "Do something when a property has changed"               FreeCAD.Console.PrintMessage("Change property: " + str(prop) + "\n")         def execute(self, fp):               "Do something when doing a recomputation, this method is mandatory"               FreeCAD.Console.PrintMessage("Recompute Python Box feature\n") class ViewProviderBox:        def __init__(self, obj):               "Set this object to the proxy object of the actual view provider"               obj.addProperty("App::PropertyColor","Color","Box","Color of the box").Color=(1.0,0.0,0.0)               obj.Proxy = self         def attach(self, obj):               "Setup the scene sub-graph of the view provider, this method is mandatory"               self.shaded = coin.SoGroup()               self.wireframe = coin.SoGroup()               self.scale = coin.SoScale()               self.color = coin.SoBaseColor()                              data=coin.SoCube()               self.shaded.addChild(self.scale)               self.shaded.addChild(self.color)               self.shaded.addChild(data)               obj.addDisplayMode(self.shaded,"Shaded");               style=coin.SoDrawStyle()               style.style = coin.SoDrawStyle.LINES               self.wireframe.addChild(style)               self.wireframe.addChild(self.scale)               self.wireframe.addChild(self.color)               self.wireframe.addChild(data)               obj.addDisplayMode(self.wireframe,"Wireframe");               self.onChanged(obj,"Color")         def updateData(self, fp, prop):               "If a property of the handled feature has changed we have the chance to handle this here"               # fp is the handled feature, prop is the name of the property that has changed               l = fp.getPropertyByName("Length")               w = fp.getPropertyByName("Width")               h = fp.getPropertyByName("Height")               self.scale.scaleFactor.setValue(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 creación de piedras de objetos

FeaturePython. A través de ellos, el usuario podrá interactuar y modificar su

objeto. Después 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 emisión de:

a.supportedProperties()

Obtendrá una lista de propiedades disponibles:

App::PropertyBoolApp::PropertyFloatApp::PropertyFloatListApp::PropertyFloatConstraintApp::PropertyAngleApp::PropertyDistanceApp::PropertyIntegerApp::PropertyIntegerConstraintApp::PropertyPercentApp::PropertyEnumerationApp::PropertyIntegerListApp::PropertyString

App::PropertyStringListApp::PropertyLinkApp::PropertyLinkListApp::PropertyMatrixApp::PropertyVectorApp::PropertyVectorListApp::PropertyPlacementApp::PropertyPlacementLinkApp::PropertyColorApp::PropertyColorListApp::PropertyMaterialApp::PropertyPathApp::PropertyFileApp::PropertyFileIncludedPart::PropertyPartShapePart::PropertyFilletContourPart::PropertyCircle

Otro ejemplo más complejo

Este ejemplo hace uso de la Módulo de parte para crear un octaedro, a

continuación, crea su representación 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 of the octahedron").Length=1.0         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", "Shape of the octahedron")         obj.Proxy = self       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 continuación, 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 of the octahedron").Color=(1.0,0.0,0.0)         obj.Proxy = self       def attach(self, obj):         "Setup the scene sub-graph of the view provider, this method is mandatory"         self.shaded = coin.SoGroup()         self.wireframe = coin.SoGroup()         self.scale = coin.SoScale()         self.color = coin.SoBaseColor()          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, sólo

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 visualización, debe incluir su geometría de

moneda dentro de un nodo de SoFCSelection. Si el objeto tiene una

representación compleja, con widgets, anotaciones, etc., puede incluir sólo una

parte del mismo en un SoFCSelection. Todo lo que es un SoFCSelection se

analiza constantemente por FreeCAD para detectar la selección y preselección,

así que tiene sentido tratar de no sobrecargar el con análisis innecesarios. Esto

es lo que haría 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 ObjectselectionNode.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

geometría a la misma, luego que lo agregue a su nodo principal, en lugar de

agregar los nodos de geometría directamente.

Trabajar con formas simples

Si su objeto paramétrico salidas simplemente una forma, no es necesario

utilizar un objeto de proveedor de vista. La forma se mostrará mediante

representación de forma estándar 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 increíble para ser importables como un módulo de

python en otros programas o en una consola de python independiente, junto

con todos sus módulos y componentes. Incluso es posible importar la GUI de

FreeCAD como módulo de python--con algunas restricciones, sin embargo.

Utilizando FreeCAD sin interfaz gráfica de usuario

Una aplicación primera, directa, fácil y útil, que puede hacer que esto es

importar documentos de FreeCAD en su programa. En el ejemplo siguiente,

podrá importar la geometría 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' # path to your FreeCAD.so or FreeCAD.dll fileimport Blender, syssys.path.append(FREECADPATH) 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 itif __name__=='__main__':   main()

La parte primera, importante es asegurarse de que python encontrará nuestra

biblioteca de FreeCAD. Una vez que lo encuentra, todos los módulos de

FreeCAD tales como elemento, que vamos a usar también estará disponibles

automáticamente. Por lo que simplemente tomamos la variable sys.path, que

es donde python busca módulos, y acompañamos a la ruta de acceso de lib

FreeCAD. Esta modificación es sólo temporal y se perderá cuando te cerramos

nuestro intérprete de python. Otra manera podría estar haciendo un vínculo a la

biblioteca de FreeCAD en uno de la pitón rutas de acceso de búsqueda.

Mantuvo la ruta de acceso en una constante (FREECADPATH), así que habrá

más fácil 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 haría dentro intérprete de python del propio FreeCAD. Abrimos el

documento de FreeCAD que se pasa a nosotros por la función main(), y hacer

una lista de sus objetos. Entonces, como hemos escogido sólo a la atención

sobre la geometría de la pieza, verificamos si la propiedad Type de cada objeto

contiene "Parte", entonces nos tesselate se.

Los tesselation producen una lista de vértices y una lista de caras definido por

índices de vértices. Esto es perfecto, ya que es exactamente de la misma

manera como licuadora define mallas. Por lo tanto, nuestra tarea es

ridículamente simple, que solo añadimos el contenido de ambas listas a las

caras de una malla de blender y verts. Cuando todo está hecho, nosotros sólo

repintar la pantalla, y eso es todo!

Por supuesto, este script es muy simple (en realidad hice una más avanzada

aquí), puede que desee extender, por ejemplo importación de malla objetos

demasiado o importación de parte de la geometría que no tiene caras, o

importar otros formatos de archivo que se puede leer FreeCAD. También

puede exportar la geometría a un documento de FreeCAD, que puede hacerse

de la misma manera. También puede que desee crear un cuadro de diálogo,

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 elección.

Uso de FreeCAD con la interfaz gráfica de usuario

Desde la versión 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 aplicación con su interfaz de usuario completa donde la

aplicación host tiene control total sobre FreeCAD, entonces.

El código de python todo para lograr que tiene sólo dos líneas

import FreeCADGui FreeCADGui.showMainWindow()

Si la aplicación host se basa en Qt esta solución debe funcionar en todas las

plataformas que soporta Qt. No obstante, el host debe vincular la misma

versión de Qt que FreeCAD porque de lo contrario podría ejecutar en errores

de tiempo de ejecución inesperado.

Para las aplicaciones no Qt, sin embargo, existen algunas limitaciones que

debe tener en cuenta. Probablemente, esta solución no funciona junto con

todos los otros kits de herramientas. Para Windows funciona siempre y cuando

la aplicación host se basa directamente en Win32 o cualquier otro Kit de

herramientas que utiliza internamente la API de Win32, como wxWidgets, MFC

o WinForms. A fin de hacerlo funcionar bajo X 11 en el host de aplicación debe

vincular la biblioteca "Wittgenstein".

Tenga en cuenta, para cualquier aplicación de consola de que esta solución por

supuesto no funciona porque no hay ningún lazo de evento que se ejecuta.

Esta página contiene ejemplos, piezas, fragmentos de código 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 típico

Cada módulo debe contener, además de su archivo de módulo principal, un

archivo de InitGui.py, responsable de insertar el módulo 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 módulo típico

Este es un ejemplo de un archivo de módulo principal, que contiene todo lo que

hace de su módulo. 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', 'MenuText': 'Short text', 'ToolTip': 'More detailed text'}       FreeCADGui.addCommand('Script_Cmd', ScriptCmd())

Importar un nuevo tipo de fichero

Es fácil 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 extensión de

archivo a la lista de FreeCAD de extensiones conocidas y escribir el código que

leerá el archivo y crear los objetos FreeCAD que desea:

Esta línea se debe agregar al archivo InitGui.py para agregar la nueva

extensión de archivo a la lista:

# Assumes Import_Ext.py is the file that has the code for opening and reading .ext filesFreeCAD.addImportType("Your new File Type (*.ext)","Import_Ext")

A continuación, 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 algún tipo de fichero nuevo funciona del mismo

modo, salvo que utilice:

FreeCAD.addExportType("Your new File Type (*.ext)","Export_Ext")

Agregar una línea

Una línea 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()

Adición de un polígono

Un polígono es simplemente un conjunto de segmentos de línea conectados

(una polilínea 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()

Adición y eliminación 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 grpgrp.removeObject(lin) # removes the lin object from the group grp

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

Adición de una malla import Meshdoc=App.activeDocument()

# create a new empty meshm = Mesh.Mesh()# build up box out of 12 facetsm.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 100m.scale(100.0)# add the mesh to the active documentme=doc.addObject("Mesh::Feature","Cube")me.Mesh=m

Adición de un arco o un círculo import Partdoc = 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 representación de un objeto

Cada objeto en un documento de FreeCAD tiene un objeto de representación

de vista asociados que almacena todos los parámetros que definen cómo

aparece el objeto, como color, ancho, etc....

gad=Gui.activeDocument()   # access the active document containing all                           # view representations of the features in the                          # corresponding App document  v=gad.getObject("Cube")    # access the view representation to the 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

Observando los eventos de mouse (ratón) en el visor 3D a través de Python

La estructura del inventor permite agregar uno o más nodos de devolución de

llamada para el scenegraph del visor. Un nodo de devolución de llamada se

instala de forma predeterminada en FreeCAD por el visor que permite añadir

funciones de C++ globales o estáticas. En Python adecuado vinculante algunos

métodos son proporcionados para hacer uso de esta técnica desde dentro de

código Python.

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 algún lugar en el área en el visor 3D y observar los mensajes

en la ventana de salida. Para finalizar la llamada justa de observación

v.removeEventCallback("SoMouseButtonEvent",c)

Se admiten los siguientes tipos de eventos

SoEvent--todo tipo de eventos

SoButtonEvent--todos botón del ratón y eventos clave

SoLocation2Event--movimiento 2D eventos (normalmente los movimientos de ratón)

SoMotion3Event--eventos de movimiento 3D (normalmente spaceball)

SoKeyboradEvent--clave hacia abajo y eventos

SoMouseButtonEvent--botón del ratón hacia abajo y eventos

SoSpaceballButtonEvent--spaceball botón hacia abajo y eventos

La función de Python que se puede registrar con addEventCallback() espera un

diccionario. 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

Posición--una tupla de dos números enteros, la posición del mouse

ShiftDown--un valor booleano, true si Mayús 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 botón, es decir, teclado, ratón o spaceball eventos

Estado--A string 'UP' si el botón se fue arriba, 'Abajo' si era hacia abajo o

'Desconocido' para todos los demás casos

Para los eventos de teclado:

Clave--un carácter de la tecla presionada

Para el evento de botón del mouse

Botón--el botón presionado, podría ser BUTTON1,..., BUTTON5 o cualquier

Para eventos de spaceball:

Botón--el botón presionado, podría ser BUTTON1,..., BUTTON7 o cualquier

Y por último eventos de movimiento:

Traducción--una tupla de tres carrozas

Rotación--un cuaternión de la rotación, es decir, una tupla de cuatro carrozas

Manipular el scenegraph en Python

También es posible obtener y cambiar el scenegraph en Python, con el módulo

de 'pivy'--un enlace de Python para monedas.

from pivy.coin import *                # load the pivy moduleview = Gui.ActiveDocument.ActiveView   # get the active viewerroot = view.getSceneGraph()            # the root is an SoSeparator noderoot.addChild(SoCube())view.fitAll()

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 añadir siempre un SoSeparator para contener la geometría, las

coordenadas y información material de un mismo objeto. En el ejemplo

siguiente se agrega una línea roja de (0,0,0) a (10,0,0):

from pivy import coinsg = 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)

Adición de widgets personalizados a la interfaz

Puede crear widgets personalizados con el diseñador de Qt, transformarlas en

una secuencia de comandos python y, a continuación, cargarlos en la interfaz

de FreeCAD con PyQt4.

El código de python producido por el compilador de python de Ui (es decir, la

herramienta que convierte archivos de qt-diseñador .ui en el código de python)

generalmente tiene el siguiente aspecto (es simple, también puede código

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()).expandedTo(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 continuación, 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 código 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 página muestra cómo avanzada funcionalidad fácilmente puede ser

construido en Python. En este ejercicio, construirá una nueva herramienta que

dibuja una línea. Esta herramienta, a continuación, 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 botón 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 continuación, 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 líneas siguientes:

import FreeCADGui, Partfrom 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(),self.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)

Explicación detallada import Part, FreeCADGuifrom pivy.coin import *

En Python, cuando desea utilizar las funciones de otro módulo, necesita

importarlo. En nuestro caso, necesitaremos las funciones de la Módulo de parte

, para la creación de la línea y desde el módulo de Gui (FreeCADGui), para

acceder a la vista 3D. También 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

función? La razón es que necesitamos que nuestra herramienta para

permanecer "alive" mientras que estamos esperando para que el usuario haga

clic en la pantalla. Una función 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 función puede tener una cadena de descripción. Esto

resulta especialmente útil en FreeCAD, porque cuando llamaremos esa clase

en el intérprete, la cadena de descripción se mostrará como una información

sobre herramientas.

def __init__(self):

Clases de Python siempre pueden contener una función __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 línea.

self.view = FreeCADGui.ActiveDocument.ActiveView

En una clase, por lo general desea anexar self. antes de un nombre de

variable, por lo tanto será fácilmente 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 vacía que va a contener los puntos 3D enviados por la

función getpoint.

self.callback = self.view.addEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),self.getpoint)

Esta es la parte importante: debido a que es en realidad un coin3D escena de , el

FreeCAD utiliza el mecanismo de devolución de llamada de moneda, que

permite a una función que se llamará cada vez que ocurre un determinado

evento de la escena. En nuestro caso, estamos creando una devolución de

llamada para SoMouseButtonEvent eventos y nos enlazarlo a la función

getpoint. Ahora, cada vez un botón del mouse está presionado o liberado, se

ejecutará la función de getpoint.

Tenga en cuenta que también es una alternativa a la addEventCallbackPivy()

llamado addEventCallback() que prescinde de la utilización 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 función getpoint, que se ejecutará cuando se presiona un

botón del mouse en una vista 3D. Esta función recibirá un argumento, que

llamamos event_cb. De este evento de devolución de llamada podemos

acceder el objeto de evento, que contiene varias piezas de información (info de

modo aquí ).

if event.getState() == SoMouseButtonEvent.DOWN:

La función getpoint se llamará cuando se presiona un botón del mouse o se

lanzó. Pero queremos elegir un punto 3D sólo cuando se presiona (de lo

contrario tendríamos dos puntos 3D muy cercano a cada uno de los otros). Por

lo tanto nos debemos comprobar aquí.

pos = event.getPosition()

Aquí tenemos las coordenadas de la pantalla del cursor del ratón

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

Esta función 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

ratón. Si estás en la cámara vista, imaginar un rayo procedentes de la cámara,

pasando el cursor del ratón y golpear el plano focal. Es nuestro punto de 3D. Si

estamos en vista ortogonal, el rayo es paralelo a la dirección 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 continuación, vamos dibujar la

línea!

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

Aquí utilizamos la función Line() de la Módulo de parte en la que crea una línea

de dos vectores de FreeCAD. Todo lo que crear y modificar dentro del módulo

de parte, permanece en el módulo de parte. Por lo tanto, hasta ahora, hemos

creado un elemento de línea. 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 sólo puede aceptar formas desde el módulo de

parte. Las formas son el tipo más genérico del módulo parte. Por lo tanto,

debemos convertir nuestra línea a una forma antes de agregarlo al documento.

Part.show(shape)

El módulo de parte tiene una función muy útil show() que crea un nuevo objeto

en el documento y se enlaza una forma. Nos podríamos también han creado un

nuevo objeto en el documento de la primera, a continuación, enlazada la forma

manualmente.

self.view.removeEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),self.callback)

Ya terminamos con nuestra línea, Let's quite el mecanismo de devolución de

llamada, que consume preciosos ciclos de CPU.

Pruebas & usando la secuencia de comandos

Ahora, vamos guardar nuestro script en algún lugar donde se encontrarán en el

intérprete de python de FreeCAD. Al importar módulos, el intérprete se verá en

los siguientes lugares: las rutas de acceso de instalación de python, el

directorio bin de FreeCAD y todos los directorios de los módulos de FreeCAD.

Por lo tanto, la mejor solución es crear un nuevo directorio en uno de los

FreeCAD mod directorios y para guardar la secuencia de comandos en ella.

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 intérprete de python, número:

import exercise

Si ningún 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 módulo. Podemos ver que nuestra clase line() está allí, a la

espera de nosotros. Ahora vamos a probarlo:

exercise.line()

A continuación, haga clic dos veces en la vista 3D, y bingo, aquí es nuestra

línea! Volver a hacerlo, sólo tiene que escribir exercise.line() una vez más y una

vez más y de nuevo... ¿Se siente gran, no?

Registrar la secuencia de comandos de la interfaz de FreeCAD

Ahora, para que nuestra nueva herramienta en línea ser verdaderamente

interesante, debería tener un botón en la interfaz, por lo que no necesitamos

escribir todos cada vez de ese material. La manera más fácil es transformar

nuestro nuevo directorio de MyScripts en una estación de trabajo completa de

FreeCAD. Es fácil, 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 estación de trabajo y añadir nuestra nueva

herramienta a ella. Además de también necesitamos transformar un poco

nuestro código 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 código en ella:

class MyWorkbench (Workbench):    MenuText = "MyScripts"   def Initialize(self):       import exercise       commandslist = ["line"]       self.appendToolbar("My Scripts",commandslist)Gui.addWorkbench(MyWorkbench())

Por ahora, debería ya entiendes el script anterior por usted mismo, creo que:

crea una nueva clase que llamamos MyWorkbench, le damos un título

(MenuText) y definimos una función Initialize() que se ejecutará cuando se

carga el workbench en FreeCAD. En esa función, 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 continuación, 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 sólo una

herramienta, por lo que nuestra lista de comandos contiene un único elemento.

A continuación, una vez que nuestro banco está listo, nos agregarlo a la

interfaz principal.

Pero esto todavía 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, Partfrom 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(),self.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 función de __init__() en una

función de Activated(), porque cuando se ejecutan los comandos FreeCAD,

ejecutar automáticamente la función de Activated(). También hemos añadido

una función de GetResources(), que informa a FreeCAD donde puede

encontrar un icono de la herramienta, y lo que será el nombre y la información

sobre herramientas de nuestra herramienta. Cualquier imagen jpg, png o svg

funcionará como un icono, puede ser de cualquier tamaño, pero es mejor

utilizar un tamaño de que está cerca el aspecto final, como 16 x 16, 24 x 24 o

32 x 32. A continuación, añadimos la clase de line() como un comando de

FreeCAD oficial con el método addCommand().

Eso es todo, ahora sólo necesitamos reiniciar FreeCAD y vamos a tener una

agradable workbench nuevo con nuestra nueva herramienta de la línea!

¿Así que quieres más?

Si te gustó este ejercicio, ¿por qué no intentar mejorar esta pequeña

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 podría

añadir algunos comentarios, diciéndole que lo que debe hacer a continuación. Por

ejemplo, podría emitir mensajes a la consola de FreeCAD. Echar un vistazo en el

módulo de FreeCAD.Console

Agregar una posibilidad para escribir el 3D puntos de coordenadas manualmente.

Mirar la función de input() de python, por ejemplo

Agregar la posibilidad de añadir más de 2 puntos

Agregar eventos para otras cosas: ahora comprobamos sólo para eventos de botón

del ratón, qué sucede si también haríamos algo cuando se mueve el ratón, como

mostrar coordenadas actuales?

Asigne un nombre al objeto creado

, No dude en escribir sus preguntas o ideas sobre el hablar de la página !

En esta página nos mostrará cómo crear un cuadro de diálogo de Qt simple

con Qt Designer , La herramienta oficial de qt para diseñar interfaces, a

continuación, convertirlo en el código de python, a continuación, utilizarlo

dentro de FreeCAD. Supongo en el ejemplo que usted sabe cómo editar y

ejecutar python scripts ya, y que se pueden hacer cosas sencillas en una

ventana de terminal, como navegar, etc.. También debe tener, por supuesto,

pyqt instalado.

Diseñar el cuadro de diálogo

En CAD, aplicaciones, diseñar una buena interfaz de usuario (User Interface)

es muy importantes. Sobre todo el usuario será a través de algún pedazo de

interfaz: lectura de cuadros de diálogo, pulsar botones, escogiendo entre

iconos, etc.. Por lo que es muy importante pensar cuidadosamente a lo que

desea hacer, cómo desea que el usuario se comportan, y cómo será el flujo de

trabajo de su acción.

Hay un par de conceptos para conocer al diseñar la interfaz:

Cuadros de diálogo modales, no-modal : Un cuadro de diálogo modal que aparece

delante de la pantalla, detener la acción de la ventana principal, forzando al

usuario a responder al cuadro de diálogo, mientras que un cuadro de diálogo no

modal no parar de trabajar en la ventana principal. En algunos casos, el primero es

mejor, en otros casos no.

Identificación de lo que se necesita y lo que es opcional: asegúrese de que el

usuario sabe lo que él debe do. Etiquetar todo con descripción adecuada, utilizar la

información sobre herramientas, etc.

Comandos de separating de de parámetros: esto se suele hace con botones y campos

de entrada de texto. El usuario sabe que si hace clic en un botón producirá una

acción mientras que cambiar un valor dentro de un campo de texto va a cambiar

un parámetro en algún lugar. Hoy en día, sin embargo, los usuarios generalmente

saben bien lo que es un botón, 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

diseñador qt. Vamos diseñar un diálogo muy simple, como esto:

, A continuación, utilizaremos este cuadro de diálogo en FreeCAD para producir

un plano rectangular agradable. Puede que encuentre no muy útil para producir

aviones rectangulares agradables, pero va a ser fácil cambiar más tarde para

hacer las cosas más 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 creación de un nuevo widget. Seleccione

"Diálogo sin botones", ya que no queremos que los botones de aceptar y

cancelar de forma predeterminada. A continuación, arrastre en el widget 3

etiquetas, uno para el título, uno para la escritura de "Altura" y otro para

escribir "Ancho". Las etiquetas son simples los textos que aparecen en el

widget, sólo para informar al usuario. Si selecciona una etiqueta, en el lado

derecho aparecerán varias propiedades que se pueden cambiar si lo desea,

como estilo de fuente, altura, etc..

A continuación, agregue 2 LineEdits, que son campos de texto que el usuario

puede rellenar, uno para la altura y otro para el ancho. Aquí también 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 diálogo, ambos valores se rellenará ya y si él está

satisfecho él puede directamente pulse el botón, se ahorra tiempo valioso. A

continuación, agregue un PushButton, que es el botón que el usuario tendrá

que presionar después de que llenó los 2 campos.

Nota que he escogido aquí controles muy simples, pero Qt tiene muchas más

opciones, por ejemplo se podría 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 diseñador de Qt. Una última

cosa, sin embargo, Let's renombrar todos nuestros elementos con nombres

más fáciles, por lo que será más fácil identificarlos en nuestras secuencias de

comandos:

Convertir nuestro diálogo a python

Ahora, vamos guardar nuestro widget en algún lugar. Se guardará como un

archivo .ui, que nos convierta fácilmente 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 conversión, necesitará

abrir una ventana de terminal (o una ventana de símbolo del sistema de

ventanas), desplácese hasta donde haya guardado su .ui archivo y la cuestión:

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 fáciles 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 métodos, uno para la configuración del widget y uno para la

traducción de su contenido, es parte del mecanismo general de Qt para traducir

los elementos de la interfaz. El método de instalación simplemente crea, uno

por uno, los widgets como hemos definido en el diseñador de Qt y establece

sus opciones como hemos decidido anteriormente. A continuación, toda la

interfaz obtiene traducida, y por último, conéctese a las ranuras (hablaremos

acerca de que más tarde).

Ahora podemos crear un nuevo widget y utilizar esta clase para crear su

interfaz. Ya podemos ver nuestro widget en acción, 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 intérprete de

python FreeCAD, número de:

from PyQt4 import QtGuiimport mywidgetd = QtGui.QWidget()d.ui = mywidget.Ui_Dialog()d.ui.setupUi(d)d.show()

Y nuestro diálogo aparecerá! Tenga en cuenta que todavía está trabajando

nuestro intérprete de python, contamos con un cuadro de diálogo no modal. Por

lo tanto, para cerrarlo, podemos (aparte de hacer clic en su icono de cerrar, por

supuesto) tema:

d.hide()

Hacer nuestro diálogo hacer algo

Ahora que podemos mostrar y ocultar nuestro diálogo, sólo tenemos que añadir

una última parte: para hacer algo! Si juegas un poco con el diseñador de Qt,

rápidamente descubrirá una sección entera llamada "señales y ranuras".

Básicamente, funciona como este: los elementos de tus widgets (en la

terminología de Qt, dichos elementos son propios widgets) puede enviar

señales. Esas señales difieren según el tipo de widget. Por ejemplo, un botón

puede enviar una señal cuando se está presionado y cuando se publique. Esas

señales pueden estar conectadas a las ranuras, que pueden ser una

funcionalidad especial de otros widgets (por ejemplo un cuadro de diálogo tiene

una ranura "Cerrar" a los que puede conectar la señal desde un botón de

cierre), o pueden ser funciones personalizadas. La Documentación de

referencia de PyQt enumera todos los widgets qt, lo que pueden hacer, lo que

las señales pueden enviar, etc...

Lo que haremos aquí, es crear una nueva función que creará un plano basado

en altura y anchura y conectar esa función a la señal presionada emitida por

nuestro botón de "Crear!". Por lo tanto, comencemos con la importación de

nuestros módulos de FreeCAD, poniendo la siguiente línea en la parte superior

de la secuencia de comandos, donde importamos ya QtCore y QtGui:

import FreeCAD, Part

A continuación, vamos a agregar una nueva función a nuestra clase Ui_Dialog:

def createPlane(self):    try:        # first we check if valid numbers have been entered        w = float(self.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 continuación, tenemos que informar a Qt para conectar el botón con la

función, colocando la siguiente línea justo antes de

QtCore.QMetaObject.connectSlotsByName(Dialog):

QtCore.QObject.connect(self.create,QtCore.SIGNAL("pressed()"),self.createPlane)

Esto, como ves, conecta la señal de pressed() de nuestro objeto de crear (el

botón de "Crear!"), con una ranura llamada createPlane, que acaba de definir.

Eso es todo! Ahora bien, como un toque final, podemos añadir una pequeña

función para crear el cuadro de diálogo, será más fácil llamar. Fuera de la clase

Ui_Dialog, vamos a agregar este código:

class plane():    d = QtGui.QWidget()    d.ui = Ui_Dialog()    d.ui.setupUi(d)    d.show()

A continuación, desde FreeCAD, sólo tenemos que hacer:

import mywidgetmywidget.plane()

Que es Folks todos... Ahora puede probar todo tipo de cosas, como por

ejemplo insertar tu widget en la FreeCAD interfaz (véase la fragmentos de

código página), o haciendo mucho más 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, QtGuiimport 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.createPlane)       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 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) class plane():    d = QtGui.QWidget()    d.ui = Ui_Dialog()    d.ui.setupUi(d)    d.show()

 

Traducciones disponibles:  

Desarrollo de aplicaciones para FreeCAD Declaración del responsable del

Sé que la discusión sobre la "derecho" licencia de código abierto ocuparon una

parte significativa de ancho de banda de internet y por lo tanto es aquí la razón

por qué, en mi opinión, 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 decisión.

FreeCAD es una mezcla de una biblioteca y una aplicación, por lo que la GPL

sería un poco fuerte para ello. Impediría escribir módulos comerciales para

FreeCAD porque impediría la vinculación con los libs base de FreeCAD.

¿Usted puede solicitar por ello comercial módulos en absoluto? Por lo tanto,

Linux es buen ejemplo. ¿Linux sería tan exitoso cuando la biblioteca de C de

GNU sería GPL y por lo tanto, evitar la vinculación contra aplicaciones no GPL?

Y aunque me encanta la libertad de Linux, también quiero ser capaz de utilizar

el controlador de gráfico 3D NVIDIA muy bueno. Comprendo y aceptar la razón

que NVIDIA no va a regalar el código 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 código abierto y el software de código cerrado no es

malo, cuando obedece las reglas de la LGPL. Me gustaría ver a alguien que

escribe un procesador de importación y exportación de Catia para FreeCAD y

distribuirlo gratuitamente o por algún dinero. No me gusta para obligarle a

regalar más de lo que quiere. No sería bueno ni para él ni para FreeCAD.

Sin embargo, esta decisión es hecha sólo para el núcleo del sistema de

FreeCAD. Cada escritor de un módulo de aplicación podrá hacer su propia

decisión.

Licencias usadas

Aquí los tres licencias en virtud del cual se publica FreeCAD:

Licencia pública general (GPL2 +)

Para las secuencias de comandos de Python construir los archivos binarios,

como se afirma en los archivos .py en src/herramientas

Menor General Public Licence (LGPL2 +)

Para los núcleo libs como se indica en los ficheros .h y .cpp en src/APP src/Gui

src/base y la mayoría módulos en src/mod y para el ejecutable como se indica en los

ficheros .h y .cpp en src/principal

Licencia de publicación abierta

Para la documentación 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 núcleo (vea Bibliotecas de terceros ) con una excepción:

la licencia de Coin3D ( www.coin3d.org ).

Ver del FreeCAD archivo copyright Debian para obtener más detalles acerca de

las licencias utilizadas en FreeCAD

Impacto de las licencias

Usuarios privados

Los usuarios privados pueden utilizar FreeCAD de forma gratuita y puede hacer

básicamente todo lo que quieren hacer con ella....

Usuarios profesionales

Puede utilizar FreeCAD libremente, para cualquier tipo de trabajo privado o

profesional. Pueden personalizar la aplicación que lo deseen. Pueden escribir

extensiones de código 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

obligación.

Desarrolladores de código fuente abiertos

Puede utilizar FreeCAD como las bases para los módulos de extensión propia

para propósitos 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 módulos de extensión para fines especiales y no están

obligados a hacer sus módulos open source. Pueden usar todos los módulos

que utilizan la LGPL. Se les permite distribuir FreeCAD junto con su software

propietario. Recibirán el apoyo de los autores como es no una una forma calle.

Si desea vender su módulo 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

aplicación disponible para proyectos y FreeCAD es ahora utilizando

activamente, en lugar del antiguo incorporada bug tracker. La dirección de

nuestro bug tracker es:

http://sourceforge.NET/Apps/mantisbt/Free-CAD/main_page.php

Si usted piensa que usted podría ha encontrado un bug, eres Bienvenido a

informar de ello. Pero antes de informar sobre un bug, por favor, compruebe los

siguientes elementos:

Make asegúrese de que el fallo es realmente un error, es decir, algo que debería

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 más frecuentes , hace una

búsqueda en el foro y asegúrese de que el mismo error no ha reportado antes,

realizando una búsqueda en el bug tracker.

Describe como claramente como sea posible el problema, y cómo pueden

reproducirse. Si no podemos verificar el fallo, no podríamos ser capaces de fijar

ella.

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

versión de FreeCAD está en ejecución.

Por favor presentar un informe por separado para cada error.

Si estás en un sistema linux y su fallo provoca un accidente en FreeCAD, puede

intentar ejecutar un backtrace de depuración: desde una terminal ejecutar gdb

freecad (suponiendo que está instalado el paquete gdb), a continuación, dentro de

gdb, escriba Ejecutar . FreeCAD, a continuación, se ejecutará. Después 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 aún no se ha implementado, no

es un error sino una solicitud de función. También puede enviar en el mismo

tracker (archivo, como característica solicitar en lugar de errores), pero tenga

en cuenta que no son garantiza que su deseo será cumplida.

Envío de parches

En caso de que usted ha programado una corrección de errores, una extensión

o algo que puede ser de uso público 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...

¿Dónde se encuentran?

FreeCAD el proyecto tiene su propio página de resumen de Tracker .

Encontrarás la información general sobre las distintas secciones del

Rastreador.

¿Cuándo se debe utilizar?

El Rastreador de FreeCAD Bug

Bugs

Si usted piensa que usted podría ha encontrado un bug, vaya a la Sección de

bugs del tracker y elija "cualquiera" para Estado de ver todos los de solicitud de

error jamás presentada. La búsqueda 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 página.

Solicitudes de función

Si se echa en falta una característica en FreeCAD que usted piense como

bombardeos absolutamente necesario para convertirse en el mundos mejores

software de CAD, usted podría encontrar el Solicitud de función helpfull de la

sección.

Solicitudes de asistencia

Si no obtiene alrededor de compilación de FreeCAD y el Compilar en Windows

o Compile On Unix sección no le otorga una sugerencia, o intentarlo de puerto

a un nuevo entorno o están programando nuevos módulos o extensiones para

FreeCAD y necesita alguna asistencia a continuación, la Las solicitudes de

asistencia sección es el lugar que desee ir a.

Parches de nuevos

En caso de que usted ha programado una corrección de errores, una extensión

o algo que puede ser de uso público en FreeCAD, crear un parche utilizando

Subversion y de archivo en el sección de parches .

En este artículo se explica paso a paso cómo 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 más alto. Aunque es

probablemente posible utilizar gcc Cygwin o MingW no ha probado ni portado

hasta ahora. Nosotros también hemos portado a utilizar VC8 Express Edition.

Necesita descargar el SDK de la plataforma de Windows para obtener, por

ejemplo, la Windows.h. También necesita todos los Bibliotecas de terceros para

compilar correctamente FreeCAD.

Si utiliza los compiladores de $ M que desea más probable es que descargar el

LibPack de FreeCAD que le proporciona todos los libs necesarios para

construir FreeCAD en Windows.

Edificio con aenderezar

En primer lugar, tienes que Descargar aenderezar e instálelo en el equipo de

generación.

El conmutador de aenderezar

Desde la versión 0.9 utilizamos el sistema de compilación de aenderezar para

generar los archivos de compilación y ganar para varios compiladores. Ya no

entregamos .vcproj archivos. Si quieres ex versiones de generación de

FreeCAD (0,8 y anterior) ver "Building versiones anteriores" más adelante en

este artículo.

Nos cambiaron porque se convirtió en más y más dolorosa mantener archivos

de proyecto para 30 + construcción metas y compiladores de x. aenderezar nos

da la posibilidad de apoyar IDEs alternativos, como Code:: Blocks, Qt Creator y

Eclipse CDT el compilador principal que usamos es todavía Express de M $

VC9, sin embargo. Pero tenemos planes para el futuro de un proceso de

generación de Windows sin el software propietario del compilador.

Configurar el proceso de generación

El primer paso para construir FreeCAD con aenderezar es para configurar el

entorno. Básicamente hay dos formas para ir:

Utilizando el LibPack

Instalar todos necesita libs y dejar que aenderezar encontrarlos

En el primer caso sólo necesita dar a aenderezar la ruta de acceso a la LibPack

y el resto debe hacerse de forma automática y verá una

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. Sólo

necesita presionar la generar obtener generados el botón y los archivos del

proyecto.

Si cambia la FREECAD_LIBPACK_USE opciones de desactivar la

configuración intenta encontrar cada biblioteca necesaria en su sistema.

Dependiendo de las libs que funciona más 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 creación de

El sistema de compilación de aenderezar nos da mucha más flexibilidad

durante el proceso de generación. Eso significa que podemos encender y

apagar algunas características o módulos. Es de una manera como la

compilación del kernel de Linux. Tienes mucho switches para determinar el

proceso de generación.

Aquí es la descripción de estos modificadores. Más probable es que cambiará

mucho en el futuro porque queremos aumentar la flexibilidad de generación

mucho más.

Tabla de vínculos

Nombre de la variable Descripción De forma predeterminada

FREECAD_LIBPACK_USE El uso de la LibPack de FreeCAD o encenderlos y apagarlos

En Win32 sobre otherwishe off

FREECAD_LIBPACK_DIR Directorio donde se encuentra el LibPack

Dir de fuente de FreeCAD

FREECAD_BUILD_GUI Construir FreeCAD con todos los módulos relacionados con la Gui

SOBRE

FREECAD_BUILD_CAM Construir el módulo de CAM, experimental!

APAGADO

FREECAD_BUILD_INSTALLER Crear los archivos de proyecto para el instalador de Windows.

APAGADO

FREECAD_BUILD_DOXYGEN_DOCU Crear los archivos de proyecto para la documentación de código fuente.

APAGADO

FREECAD_MAINTAINERS_BUILD El encendido de cosas necesitan sólo cuando haces una compilación de versión.

APAGADO

generación de línea de comandos

Aquí un ejemplo cómo construir FreeCAD desde la línea de comandos:

rem @echo offrem   Build script, uses vcbuild to completetly build FreeCAD rem update truncd: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\Wbemset INCLUDE=set LIB= rem Register VS Build programms

call "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" rem Set Standard include pathsset INCLUDE=%INCLUDE%;%FrameworkSDKDir%\includeset INCLUDE=%INCLUDE%;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include rem Set lib Pathesset LIB=%LIB%;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Libset LIB=%LIB%;%PROGRAMFILES%\Microsoft Visual Studio\VC98\Lib rem Start the Visuall Studio build process"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" "D:\_Projekte\FreeCAD FreeCAD_0.9_build\FreeCAD_trunk.sln" /useenv

Versiones más antiguas de fomento de la

Utilizando LibPack

Para hacerlo más fácil obtener FreeCAD compilado, proporcionamos una

colección de todas las bibliotecas necesarias. Se llama la LibPack . Usted

puede encontrar en el página de descarga de en sourceforge.

Es necesario establecer las siguientes variables de entorno:

FREECADLIB = "D:\Wherever\LIBPACK"

QTDIR = "% FREECADLIB %"

Añadir "% FREECADLIB%\bin" y "% FREECADLIB%\dll" para el

sistema PATH variable. Tenga en cuenta que tienes que sustituir "%

FREECADLIB %" con el nombre de ruta de acceso, ya que Windows

hace variables de entorno de reemplazar a no recursivamente.

Directorio de instalación de Visual Studio

Algunos ruta de búsqueda de Visual Studio que deba establecerse.

Para cambiarlos, utilice el menú Tools→Options→Directory

Incluye

Añadir la siguiente ruta de búsqueda a la lista de búsqueda de rutas

incluyen:

%FREECADLIB%\include

%FREECADLIB%\include\Python

%FREECADLIB%\include\boost

%FREECADLIB%\include\xercesc

%FREECADLIB%\include\OpenCascade

%FREECADLIB%\include\OpenCV

%FREECADLIB%\include\Coin

%FREECADLIB%\include\SoQt

%FREECADLIB%\include\QT

%FREECADLIB%\include\QT\Qt3Support

%FREECADLIB%\include\QT\QtCore

%FREECADLIB%\include\QT\QtGui

%FREECADLIB%\include\QT\QtNetwork

%FREECADLIB%\include\QT\QtOpenGL

%FREECADLIB%\include\QT\QtSvg

%FREECADLIB%\include\QT\QtUiTools

%FREECADLIB%\include\QT\QtXml

%FREECADLIB%\include\Gts

%FREECADLIB%\include\zlib

Libs

Añadir la siguiente ruta de búsqueda a la lista de búsqueda de rutas

de lib:

%FREECADLIB%\lib

Ejecutables

Añadir la siguiente ruta de búsqueda a la lista de búsqueda de la ruta

del ejecutable:

%FREECADLIB%\bin

Directorio de instalación binario de TortoiseSVN, generalmente "C:\

Programm Files\TortoiseSVN\bin", esto es necesario para una

distribución construir cuando SubWVRev.exe se utiliza para extraer el

número de versión de Subversion.

Python es necesario

Durante la compilación se ejecutan algunas secuencias de comandos

de Python. Así que el intérprete 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 también puede utilizar el python.exe en el directorio bin.

Especial para VC8

Al generar el proyecto con VC8, usted tiene que cambiar la

información de enlace para la biblioteca de WildMagic, puesto que

necesita una versión 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 versión

VC8. Tenga cuidado de cambiarlo en Debug y configuración de

Release.

Compilar

Después de que cumplen todos los requisitos previos la compilación -

Ojalá - es sólo un clic de ratón en VC;-)

Después de compilar

Para obtener FreeCAD activo y funcionando desde el entorno de

compilador necesita copiar algunos archivos de la LibPack a la bin

carpeta donde está instalado el FreeCAD.exe después de una

generación 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 versión de Python mayor de 2.5

tiene que copiar los archivos de más 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 construcción 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 código documentación que

necesita DoxyGen .

Para crear un paquete de intstaller necesita WIX .

Durante la compilación se ejecutan algunas secuencias de comandos

de Python. Por lo tanto, el intérprete de Python tiene para que

funcione correctamente.

Para obtener más detalles también 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

diseñador 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 más fáciles de

construir, ya que todas las dependencias son prestadas normalmente por el

administrador de paquetes. Básicamente, sólo tiene que necesita obtener el

código fuente de FreeCAD y, a continuación, instale las dependencias que se

enumeran a continuación, 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 continuación, encontrará

explicaciones detalladas del todo el proceso y particularidades que puedan

surgir. Antes de que usted demasiado empantanarse en detalles, también 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.

Obtención de la fuente

Antes de que se puede compilar FreeCAD, debe obtener el código fuente.

Instalar primero subversión . A continuación, desde el directorio de su elección

(por ejemplo, su directorio de usuario), do:

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

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 compilación

que sería una buena idea que las rutas de acceso de la biblioteca ya sea en su

LD_LIBRARY_PATH variable o, en su ld.so.conf archivo. Esto ocurre

normalmente ya en recientes distribuciones.

Para obtener más detalles, tienen también un vistazo a README.Linux en sus

fuentes.

Distribuciones Debian/Ubuntu y más recientes

En los sistemas basados en Debian es bastante fácil obtener todas necesarias

las dependencias instaladas. La mayoría de las bibliotecas están disponibles a

través del administrador de paquetes apt-get o sináptica. A continuación 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-essentialpythonlibcoin60-devlibsoqt4-devlibxerces-c2-dev (or libxerces28-dev depending on your system)libboost-devlibboost-date-time-devlibboost-filesystem-devlibboost-graph-devlibboost-iostreams-devlibboost-program-options-devlibboost-serialization-devlibboost-signals-devlibboost-regex-devlibqt4-devqt4-dev-toolspython2.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 (sólo para sistemas basados en

debian/ubuntu) como root:

aptitude install build-essential python libcoin60-dev libsoqt4-dev libxerces-c2-devlibboost-dev libboost-date-time-dev libboost-filesystem-dev libboost-graph-dev libboost-iostreams-devlibboost-program-options-dev libboost-serialization-dev libboost-signals-dev libboost-regex-devlibqt4-dev qt4-dev-tools python2.5-dev libopencascade-dev

Opcionalmente, también puede instalar

libsimage-dev (to make Coin to support additinal image file formats)checkinstall (to register your installed files into your system's package manager, 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 montón de paquetes necesarios, más están disponibles desde los

repositorios de Fedora 13

Descargar y generar xerces

Descargar y generar OpenCascade. Necesario señalar 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 líneas

permiten la generación & instalar al trabajo.

Configurar Freecad. Necesario señalar a unas pocas cosas:. /configure--con-Qt-

include = / usr/include--con-Qt-bin = / usr/lib/qt/bin--con-occ-lib = / usr/local/lib--con-

occ-include = / usr/local/inc--con-xercesc-lib = / usr/local/lib

make - golpea un problema donde la generación es romper porque las ldflags para

soqt se establece en "-LNONE" que hizo libtool barf. Mi solución alguien fue

modificar /usr/lib/Coin2/conf/soqt-default.cfg para que el ldflags son ""en lugar de"-

LNONE". Después de esto - > éxito!

make install

Distribuciones más 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

distribución, 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.gzwget http://lyre.mit.edu/~powell/opencascade/opencascade_6.2.0-7.dscwget http://lyre.mit.edu/~powell/opencascade/opencascade_6.2.0-7.diff.gzdpkg-source -x opencascade_6.2.0-7.dsc# Install OCC build-depssudo apt-get install build-essential devscripts debhelper autoconfautomake libtool bison libx11-dev tcl8.4-dev tk8.4-dev libgl1-mesa-devlibglu1-mesa-dev java-gcj-compat-dev libxmu-dev#Build Opencascade packages. This takes hours and requires # at least 8 GB of free disk spacecd opencascade-6.2.0 ; debuild# Install the resulting library debssudo dpkg -i libopencascade6.2-0_6.2.0-7_i386.deblibopencascade6.2-dev_6.2.0-7_i386.deb

De forma alternativa, puede descargar y compilar la versión más reciente de

opencascade.org :

Instalar el paquete normalmente, tenga en cuenta que el instalador es un

programa de java que requiere la edición de tiempo de ejecución de java oficial

de Sun (nombre de paquete: Sol-java6-jre), no el open-source java (gij) que se

incluye con Ubuntu. Instalarlo si es necesario:

sudo apt-get remove gijsudo 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, sólo tiene que instalar haciendo

sudo make install

Los archivos de biblioteca se copiarán en /usr/local/lib que está muy bien,

porque allí se va encontrar automáticamente por cualquier programa. Si lo

prefiere, también puede hacer

sudo checkinstall

que hagan lo mismo como hacer instalar pero cree una entrada en su sistema

de gestión de paquetes, por lo que fácilmente puede desinstalar más tarde.

Ahora limpiar los archivos de compilación temporal enorme haciendo

make clean

Posible error 1: si está utilizando la versión 6.2 de OCC, es probable que el

compilador se detendrá justo después del comienzo de la operación de "hacer".

Si sucede, edite el script "configure", busque el CXXFLAGS = "$ CXXFLAGS"

Declaración y reemplazarlo por CXXFLAGS = "$ CXXFLAGS - ffriend -

inyección - fpermissive". A continuación, siga el paso de configuración una vez

más.

Posible error 2: posiblemente varios módulos (WOKSH, WOKLibs, TKWOKTcl,

TKViewerTest y TKDraw) se quejarán de que ellos no pudieron encontrar los

encabezados de tcl/tk. En ese caso, ya que la opción no está disponible en el

script de configuración, tendrá que editar manualmente el archivo makefile de

cada uno de estos módulos: go en adm y ganar y en cada una de las carpetas

de módulos de mala. Editar el fichero Makefile y localice las líneas

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 más recientes. Pero en el momento de escribir este artículo hubo

sólo paquetes de SoQt4 para Debian propia disponible pero no para todas las

versiones de Ubuntu. 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.gzwget http://ftp.de.debian.org/debian/pool/main/s/soqt/soqt_1.4.1-6.dscwget http://ftp.de.debian.org/debian/pool/main/s/soqt/soqt_1.4.1-6.diff.gzdpkg-source -x soqt_1.4.1-6.dscsudo apt-get install doxygen devscripts fakeroot debhelper libqt3-mt-dev qt3-dev-tools libqt4-opengl-devcd soqt-1.4.1debuildsudo dpkg -i libsoqt4-20_1.4.1-6_i386.deb libsoqt4-dev_1.4.1-6_i386.deb libsoqt-dev-common_1.4.1-6_i386.deb

Si estás 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 módulo de redacción 2D trabajar. Si no vas a usar ese

módulo, no necesita pivy. En el momento de redactar este informe, Pivy es muy

nuevo y no podría haber hecho su camino a su repositorio de la distribución. Si

no puede encontrar Pivy en el repositorio de paquetes de su distribución, puede

capturar paquetes de debian/ubuntu en la página de descarga de FreeCAD:

http://sourceforge.NET/Projects/Free-CAD/Files/FreeCAD%20Linux/

o compilar pivy:

Instrucciones de compilación de Pivy

Compilar FreeCAD

SourceForge bug tracker: errores de compilación de búsqueda

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 subversión, a continuación, debe ser el primer paso

./autogen.sh

crea el script de configuración y mucho más. Para el proceso de generación

propia proporcionamos un script de configuración. Sólo tiene que escribir

./configure

Para obtener todo configurado. Si desea que una visión 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. Después de que haya

finalizado la configuración, es tan simple como la compilación FreeCAD

make

Si por favor cualquier error se produce durante la construcción de fuentes,

compruebe esta página y el archivo README.Linux, entonces usted podría

saltar a la Bug Tracker en SourceForge, elija los para el Estado y haga clic en

el examinar botón para ver informes anteriores sobre problemas de

compilación. Después de haber construido FreeCAD correctamente, hacer

make install

para instalarlo en su máquina. El directorio de instalación 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 también puede hacer

checkinstall

De esta manera que se instalará FreeCAD por su sistema de gestión de

paquetes, por lo tanto puede desinstalarlo fácilmente más tarde. Pero dado que

todos de instalación de FreeCAD se encuentran en un único directorio,

simplemente quitando el directorio de FreeCAD es una forma válida para

desinstalar demasiado.

El aenderezar forma

aenderezar es un sistema de compilación más reciente que tiene la gran

ventaja de ser común para los sistemas de destino diferentes (Linux, 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 cuestión:

cmake .

Tener el origen configurado, a continuación

make

Para tener FreeCAD construido. Una instalación adecuada de todo el sistema

de FreeCAD todavía no puede hacerse con aenderezar, pero puede ejecutar

FreeCAD mediante la emisión 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

Solución de problemas

Nota para los sistemas de 64 bits

Al crear FreeCAD para 64 bits allí es un problema conocido con el paquete

OpenCASCADE de 64 bits. 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 solución no es necesaria cuando se

utiliza el paquete precompilado porque allí está fabricado para establecer

internamente este define que el paquete de OpenCASCADE. Ahora sólo

necesita compilar FreeCAD de la misma manera como se describió

anteriormente.

Macros de automake

El script de configuración de FreeCAD hace uso de varias macros de automake

que a veces no se instalan con sus paquetes: bnv_have_qt.m4, coin.m4 y

gts.m4. Si es necesario (error mientras configura), google para ellos y le será

encontrarlas fácilmente. Son sólo 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-makedevscriptslintian (optional, used for checking if packages are standard-compliant)

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 generación automática

Aquí es todo lo que usted necesita para una generación completa de FreeCAD.

Es un enfoque de una secuencia de comandos y funciona en una fresca distro

instalada. Los comandos le pedirá la contraseña de root (para la instalación de

paquetes) y en algún momento a reconocer una huella digital de un repositorio

de servidor o https-subversión de repositorio externo. Este secuencias de

comandos deben ejecutarse en versiones de 32 y 64 bits. Están escritas para

versión distinta, pero también es probables que se ejecutan en una versión

posterior, con o sin cambios de menor importancia.

Si tiene una secuencia de comandos para su distro preferida, por favor,

mándelo! Incorporará en este artículo.

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 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.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 sourcesvn co https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk freecad # go to source dircd freecad # build configuration cmake . # build FreeCADmake # test FreeCADcd bin./FreeCAD -t 0

Ubuntu 9.04 - Jaunty Jackalope

# get the needed tools and libssudo apt-get install build-essential python libcoin40-dev libsoqt4-dev \libxerces-c2-dev 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.6-dev \libsimage-dev libopencascade-dev \libsoqt4-dev libode0-dev subversion cmake libeigen2-dev python-pivy \libtool autotools-dev automake # checkout the latest sourcesvn co https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk freecad # go to source dir

cd freecad # build configuration cmake . # build FreeCADmake # test FreeCADcd 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 developmentsudo 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 sourcesvn co https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk freecad # go to source dircd freecad # build configuration cmake . # build FreeCADnice make # test FreeCADcd 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 developmentsudo 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 dircd freecad # build configuration cmake . # build FreeCADnice make # test FreeCADcd bin./FreeCAD -t 0

Squeeze Debian

# get the needed tools and libssudo apt-get install build-essential python libcoin60-dev libsoqt4-dev \libxerces-c2-dev 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 \libsimage-dev libopencascade-dev \libsoqt4-dev libode-dev subversion cmake libeigen2-dev python-pivy \libtool autotools-dev automake # checkout the latest sourcesvn co https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk freecad # go to source dircd freecad # build configuration cmake . # build FreeCADmake # test FreeCADcd 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 través de conseguir esta aplicación para

compilar en Leopard y Snow Leopard utilizando un Mac Intel (PowerPC debe

ser factible, pero requiere volver a compilar algunas bibliotecas binarios que

todavía 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 discusión

si estos pasos funcionan para usted, por el ayudar a Foro si no es así, o editar

esta página si encuentra errores.

Descargar las fuentes de FreeCAD

En primer lugar que necesita obtener una copia del árbol de código fuente de

FreeCAD. Sólo retirar la revisión más reciente desde el repositorio de

subversion de SourceForge mediante este comando en el terminal:

svn co http://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk freecad

Esto pondrá el origen de la FreeCAD y los archivos relacionados en su carpeta

de inicio (~/freecad/). Ubicación no es importante que si sería más bien

colocarlo en otro lugar, sólo necesita acceso completo a los archivos.

Instalación MacPorts y las dependencias de la biblioteca

A continuación, si ya no tienes, instalar MacPorts. MacPorts es un sistema que

permite descargar, compilar e instalar muchas aplicaciones comunes de código

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

instalación de algunos de los paquetes requeridos de FreeCAD:

Oda

xercesc

impulso

GTS

OpenCV

El siguiente comando será compilación e instalación 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.

 

Instalación de marcos y OpenCASCADE

FreeCAD tiene otras dependencias (véase 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 versión de "Marco sólo" a menos que se planea desarrollar usando

Qt (es mucho más pequeño). 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 razón, no se proporciona el

marco de la SoQt como un binario oficial. Para su comodidad, yo estoy

proporcionando la anterior versión 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 distribución binaria es una versión modificada

de la proporcionada por los mantenedores de PythonOCC

http://www.pythonocc.org/. Puede utilizar la versión de PythonOCC, sin

embargo, se necesitan cambios a los archivos de .la en orden para el FreeCAD

proceso para vincular adecuadamente a ella de construcción y tendrás que

descargar el origen de la OCC por separado. He no todavía correctamente

construido OpenCASCADE yo mismo, pero sería igual que eventualmente--

esto sería clave para brindar una distribución de PowerPC (si es incluso

posible). Si te OpenCASCADE para construir en OS X, déjeme saber cómo. 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/OCCsudo 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 aplicación para FreeCAD. Esto no es

estrictamente necesario, pero hace que trabajar con

FreeCAD más conveniente que la configuración

predeterminada de la instalación. Mina se encuentra

en la carpeta /aplicaciones, pero usted debe poder

ponerlo en cualquier lugar que desee--sólo recuerda

que el paquete no se puede mover, después de que

FreeCAD está cumplido y instalado (sin algunas

modificaciones adicionales). Running hacer usando

la configuración por debajo de la voluntad de la

instalación instalar en este paquete.

http://DL.getdropbox.com/u/103808/FreeCAD/

FreeCAD_bundle_template_20091128.tar.gz

ACTUALIZADA de 2009-11-28 con el nuevo icono de la aplicación de FreeCAD

Compilar

Ahora configurar, compilar e instalar

utilizando los siguientes comandos desde

dentro de la carpeta raíz del FreeCAD de

FreeCAD. Si pone su paquete de

FreeCAD.app en algún lugar distinto de

/aplicaciones (o no está usando el

paquete), cambie la línea 'PREFIX' en

consecuencia.

./autogen.sh      PREFIX=/Applications/FreeCAD.app/Contents     

./configure --with-xercesc-lib=/opt/local/lib --with-xercesc-include=/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-occ-include=/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 máquina, 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 .

Visión general

Estas son las bibliotecas que no cambian en el proyecto de FreeCAD. Se

utilizan básicamente sin cambios como una biblioteca de vínculos dinámicos

(*.so o *.dll). Si hay un cambio necesario o se necesita una clase contenedora,

a continuación, el código de la envoltura o el código 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 instalación de todas

las cosas en su propia.

Enlaces Tabla de vínculos

Nombre de lib Versión necesaria Vínculo para obtenerlo

Python > = 2.5. x http://www.Python.org/

OpenCasCade > = 5.2 http://www.opencascade.org

Qt > = 4.1. x http://www.qtsoftware.com

Coin3D > = 2.x http://www.coin3d.org

ODA > = 0.10 http://www.ode.org

SoQt > = 1.2 http://www.coin3d.org

Xerces-C++ > = 2.7 < 3.0 http://XML.Apache.org/Xerces-c/

GTS > = 0.7 http://GTS.sourceforge.NET/

Zlib > = 1.x.x http://www.zlib.NET/

Impulso > = 1.33.x http://www.boost.org/

Eigen2 > = 2.0.5 http://eigen.tuxfamily.org/index.php?title=Main_Page

Detalles

Python

Versión: 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 difícil

obtener los libs de depuración de ActiveState.

Descripción

Python es el lenguaje principal de secuencias de comandos y se utiliza en toda

la aplicación. Por ejemplo:

Implementar scripts de prueba para realizar pruebas en:

pérdidas de memoria

garantizar presenta funcionalidad después de los cambios

Contabilizar cheques de generación

pruebas de cobertura de la prueba

Grabación de macros y macro

Implementar lógica de la aplicación para los paquetes estándar

Aplicación de workbenches todo

Dinámico de carga de los paquetes

Aplicación de normas para el diseño (ingeniería de conocimiento)

Haciendo algunas cosas de Internet fancy como grupos de trabajo y PDM.

Y así sucesivamente...

Especialmente la carga de paquete dinámico de Python se utiliza para cargar

en la funcionalidad adicional de tiempo de ejecución y workbenches necesarios

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 más OO a continuación, Perl y Tcl, el código 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

fáciles de integrar y extender. Es también bien probado y tiene un fuerte

respaldo a celebrar en la comunidad de código abierto.

Créditos

Va a Guido van Rossum y un montón de gente hizo Python sea un éxito!

OpenCasCade

Versión: 5.2 o superior

Licencia: OCTPL

OCC es un núcleo de CAD completo. Originalmente, está desarrollado por

Datavision de Matra en Francia para el Strim (Styler) y aplicaciones de

Quantum de Euclides y más tarde hizo Open Source. Es una biblioteca

realmente enorme y hace que sea una aplicación de CAD libre posible en

primer lugar, proporcionando algunos paquetes que serían difícil o imposible de

aplicar en un proyecto de código abierto:

Un núcleo de geometría compatible con completado de STEP

Un modelo de datos topológicos y las funciones todos necesarias para trabajar en

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

Import estándar- / exportación de procesadores como STEP, IGES, VRML

Visor 3D y 2D con el apoyo de la selección

Una estructura de datos de proyecto de documento y con soporte para guardar y

restore, externo de vinculación de documentos, el nuevo cálculo de la historia de

diseño (modelado paramétrico) y una instalación para cargar dinámicamente de

nuevos tipos de datos como un paquete de extensión

Para aprender más acerca de OpenCasCade eche un vistazo a la página de

OpenCasCade o http://www.opencascade.org .

Qt

Versión: 4.1. x o superior

Licencia: V2.0/v3.0 de la GPL o comercial (desde la versión 4.5 en también

LPGL v2.1)

No creo que necesario que diga mucho acerca de Qt. Es uno de los kits de

herramientas de GUI más utilizadas en proyectos de código abierto. Para mí, el

punto más importante para usar Qt es el diseñador de Qt y la posibilidad de

cargar los cuadros de diálogo todo como un recurso (XML) e incorporar widgets

especializados. En una aplicación de CAX la interacción con el usuario y

cuadros de diálogo son por lejos la mayor parte del código y un diseñador de

buen diálogo es muy importante para ampliar fácilmente FreeCAD con nueva

funcionalidad. Más información y una muy buena documentación en línea que

encontrará en http://www.qtsoftware.com .

Coin3D

Versión: 2.0 o mayor

Licencia: V2.0 GPL o comercial

Moneda es una biblioteca de gráficos 3D de alto nivel con una interfaz de

programación de aplicaciones de C++. Moneda utiliza estructuras de datos de

scenegraph para representar gráficos en tiempo real adecuado para la mayoría

todo tipo de aplicaciones de visualización científica y de ingeniería.

Moneda es portátil 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 estándar 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 características

de optimización del complejo para el procesamiento rápido que son

transparentes para el programador de la aplicación.

Moneda se basa en la API abierta de inventor de SGI. Inventor abierto, para

quienes no están familiarizados con ella, desde hace mucho tiempo se ha

convertido en la biblioteca de gráficos estándar de facto para la visualización en

3D y software de simulación visual en la comunidad científica y de ingeniería.

Se ha demostrado que vale durante un período de más de 10 años, su

madurez que contribuyen a su éxito como un gran bloque de creación en miles

de aplicaciones de ingeniería a gran escala alrededor del mundo.

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

representación de ingeniería a gran escala. Otras cosas como texturas o

procesamiento volumétrica no son realmente compatibles y así

sucesivamente....

Desde la versión 2.0 Coin utiliza un modelo de licencia diferente. No es más

largo LGPL. Utilizan GPL para una licencia comercial para código cerrado y de

código abierto. Esto significa que si desea vender su trabajo basado en

FreeCAD (módulos de extensión), deberá adquirir una licencia de monedas!

ODE (Open motor dinámico)

Versión: 0.10.0 o superior

Licencia: LGPL v2.1 o posterior o BSD

ODE es de código abierto, biblioteca de alto rendimiento para simular dinámica

de cuerpo rígido. Aparece completamente, estable, maduro y plataforma

independiente con una API de C y C++ fácil de usar. Se ha avanzado tipos

conjuntos y integrado de detección de colisiones con la fricción. ODE es útil

para la simulación de vehículos, objetos en entornos de realidad virtual y

criaturas virtuales. Actualmente se utiliza en muchos juegos de ordenador, 3D,

herramientas de simulación y herramientas de autoría.

Créditos

Russell Smith es el principal autor de ODE.

 

SoQt

Versión: 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 más largo LGPL por lo que tenemos que quitarlo de la base

de código de FreeCAD y vincularlo como una biblioteca. Tiene el mismo

modelo de licencia como moneda. Y tienes que compilarlo con su versión de

Qt.

Xerces-C++

Versión: 2.7.0 o superior

Licencia: Versión de licencia de software de Apache 2.0

Xerces-C++ es un analizador XML validar escrito en un subconjunto portátil de

C++. Xerces-C++ facilita la tarea de dar a su aplicación 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 recomendación XML 1.0 y muchos de los estándares

asociados (véase características más abajo).

El analizador proporciona alto rendimiento, modularidad y escalabilidad. Código

fuente, muestras y documentación de la API se proporcionan con el analizador.

Para la portabilidad, ha tenido cuidado para hacer un uso mínimo de plantillas,

no RTTI y uso mínimo de #ifdefs.

El analizador se utiliza para guardar y restaurar parámetros en FreeCAD.

GTS

Versión: 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 triángulos

interconectadas. El código 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

Versión: 1.x.x

Licencia: zlib License

zlib está diseñado para ser una libre, para fines generales, legalmente no

comprometido--es decir, no cubiertos por ninguna patente--biblioteca de

compresión sin pérdida de datos para su uso en prácticamente cualquier

equipo hardware y sistema operativo. El formato de datos de zlib es en sí

mismo portátil a través de plataformas. A diferencia del método de compresión

LZW utilizado en Unix Compress (1) y en el formato de imagen GIF, el método

de compresión que se utiliza actualmente en zlib esencialmente nunca expande

los datos. (LZW puede duplicar o triplicar el tamaño del archivo en casos

extremos). la huella de la memoria de zlib también es independiente de los

datos de entrada y puede ser reducida, si es necesario, algunos sin costo en

compresión.

 

Impulso

Versión: 1.33.x

Licencia: Licencia de software de impulso - versión 1.0

Las bibliotecas de C++ de Boost son una colección de las bibliotecas de peer-

reviewed y de código abierto que amplían la funcionalidad de C++. Las

bibliotecas tienen licencia bajo la licencia de software de Boost, diseñado para

permitir a Boost ser usado con ambos proyectos de código abierto y cerrado.

Muchos de los fundadores del Boost están en el Comité de estándar de C++ y

varias bibliotecas de Boost han sido aceptadas para su incorporación a la

técnica 1 informe de C ++ 0 x.

Las bibliotecas están encaminadas a una amplia gama de usuarios de C++ y

dominios de aplicación. Van desde bibliotecas de propósito 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 investigación en

programación genérica y metaprogramación 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 página! Si está trabajando bajo Linux no necesita un

LibPack, en lugar de debe hacer uso de los repositorios de paquetes de tu

distribución de Linux.

FreeCADLibs7.x Changelog

Utilizando QT 4.5. x y 3.1.x de monedas

Eigen plantilla lib para robot añadido

SMESH experimental

Página 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 técnica, la herramienta de diseño de interfaz de

usuario de plataforma independend. Está contenido en el LibPack de FreeCAD,

pero también puede descargarse en www.trolltech.com .

InkScape

Programa de dibujo de vector de gran . Adhers para el estándar SVG y se utiliza

para dibujar iconos e imágenes. Obtenerlo en www.inkscape.org .

Doxygen

Una herramienta muy buena y estable para generar documentación de origen

de los archivos .h y .cpp.

The Gimp

No mucho que decir sobre el programa de manipulación de imagen de GNU.

Además puede manejar archivos .xpm que es una forma muy conveniente para

manejar iconos en programas de QT. XPM interes es C-código 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 atrás), su un sistema

libre desarrollo en Windows. Para aplicaciones Win32 nativas que necesita

descargar el PlatformSDK de M $.

Por lo que la edición Express es difícil de encontrar. Pero se puede intentar

este enlace

CamStudio

Es una herramienta de código abierto para grabar podcasts (Webcasts). Su

una muy buena herramienta para crear tutoriales por grabarlas. Su medida no

tan aburrido como escribir documentación.

Ver CamStudio.org para detalles.

 

Tortuga SVN

Esta es una herramienta muy grande. Hace uso de Subversion (nuestro

sistema de control de versión en sf.net) un verdadero placer. Usted puede a

través de la integración del explorador, administrar revisiones, compruebe en

Diffs, resolver fácilmente Confilcts, hacer ramas y así sucesivamente.... El

cuadro de diálogo de confirmación en sí mismo es una obra de arte. Se le da

una visión general sobre los archivos cambiados y permite colocarlos en la

confirmación o no. Facilita la Junte los cambios a las unidades lógicas y darles

un mensaje de confirmación clara.

Encontrar ToroiseSVN en TortoiseSVN.Tigris.org .

StarUML

Un completo programa de Open Source de UML. Tiene un montón de

características de las grandes, incluyendo el código fuente de C++ engeniering

inversa....

Descargar aquí: staruml.sourceforge.net

 

Herramientas en Linux

TODO

Esta página muestra las diferentes maneras para iniciar FreeCAD y las

características más importantes de configuración.

Iniciar FreeCAD desde la línea de comandos

FreeCAD puede iniciarse normalmente, haga doble clic en su icono en el

escritorio o seleccionándolo en el menú de inicio, pero también se puede iniciar

directamente desde la línea de comandos. Esto le permite cambiar soem de las

opciones de inicio predeterminada.

Opciones de línea de comandos

Las opciones de línea 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 parámetros:

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

 Generic options: -v [ --version ]      print version string -h [ --help ]         print help message -c [ --console ]      start in console mode Configuration: -l [ --write-log ] arg    write a log file -t [ --run-test ] arg     test level -M [ --module-path ] arg  additional module paths -P [ --python-path ] arg  additional python paths --response-file arg       can be specified with '@name', too

Archivos de respuesta y config

FreeCAD algunas de estas opciones puede leer un archivo de configuración.

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 línea de

comandos reemplazan el archivo config!

Algunos sistemas operativos tienen un límite muy bajo de la longitud de la línea

de comandos. La forma común para solucionar estas limitaciones es usar

archivos de respuesta. Un archivo de respuesta es simplemente un archivo de

configuración que utiliza la misma sintaxis que la línea de comandos. Si la línea

de comando especifica un nombre de archivo de respuesta para utilizar, se ha

cargado y analiza además de la línea 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 parámetros de X-Window analizados por el sistema de Windows:

-Mostrar la pantalla, define la visualización de X (el valor predeterminado es $

DISPLAY).

-geometría geometría, establece la geometría de cliente de la primera ventana que

se muestra.

fuente de -fn o - de la fuente, define la fuente de la aplicación. La fuente debe

especificarse mediante una descripción de fuente lógica de X.

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

aplicación (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 - botón, el color de botón predeterminado.

- name nombre, establece el nombre de la aplicación.

-título título, establece el título de la aplicación.

-visual TrueColor, las fuerzas de la aplicación para que utilice un visual TrueColor

sobre una pantalla de 8 bits.

Conde de -ncols, limita el número de colores asignados en el cubo de color en una

pantalla de 8 bits, si la aplicación es mediante la especificación 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 aplicación 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 gráfica, pero también

puede obligar a que se inicie en modo consola escribiendo:

FreeCAD -c

desde la línea de comandos. En modo de la consola, no se mostrará ninguna

interfaz de usuario y, a continuación, se le presentará un prompt del intérprete

de python. Desde ese indicador de python, que tiene la misma funcionalidad

como el intérprete de python que se ejecuta dentro de la interfaz gráfica de

usuario de FreeCAD y el acceso normal a todos los módulos y plugins de

FreeCAD, salvo el módulo de FreeCADGui. Tenga en cuenta que los módulos

que dependen de la FreeCADGui también pueden no estar disponibles.

 

Ejecutando FreeCAD como un módulo de python

FreeCAD también puede utilizarse para que se ejecute como un módulo de

python dentro de otras aplicaciones que usan python o desde un shell de

python externos. Para ello, la aplicación 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

código escrito desde cualquier shell de python será importar FreeCAD y le

permiten ejecutarlo en la misma forma como en el modo de consola:

import sys sys.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 aplicación host de ninguna manera que se pueda imaginar!

El conjunto de configuración

En cada FreeCAD de inicio examina sus alrededores y los parámetros de línea

de comandos. Acumula un conjunto de configuración que mantiene la

esencia de la información de tiempo de ejecución. Más tarde, esta información

se utiliza para determinar el lugar dónde guardar los datos de usuario o los

archivos de registro. También es muy importante para post postmortem analiza.

Por lo tanto, está guardado en el archivo de registro.

Información relacionada con el usuario

Entradas de configuración de usuario

Nombre de var config

Sinopsis Ejemplo M $ Ejemplo Posix (Linux)

UserAppData

Ruta de acceso donde FreeCAD almacena los datos relacionados de usuario de la aplicación.

C:\Documents and Settings\nombre Data\FreeCAD

/Home/username/.FreeCAD

UserParameter

Archivo donde FreeCAD almacena los datos relacionados de usuario de la aplicación.

C:\Documents and Settings\nombre Data\FreeCAD\user.cfg

/Home/username/.FreeCAD/User.cfg

SystemParameter

Archivo donde FreeCAD almacena los datos relacionados de aplicación.

C:\Documents and Settings\nombre Data\FreeCAD\system.cfg

/Home/username/.FreeCAD/System.cfg

UserHomePath

Ruta de inicio del usuario actual

C:\Documents and Settings\username\My documentos

/ home/nombre de usuario

Argumentos de línea de comandos

Entradas de configuración de usuario

Nombre de var config Sinopsis En el ejemplo se

LoggingFile 1 si el registro está encendido 1

LoggingFileName Nombre del archivo donde se coloca el registro

C:\Documents and Settings\nombre Data\FreeCAD\FreeCAD.log

RunMode

Esto indica cómo funcionará el bucle principal. "Script" significa que se llama a la secuencia de comandos determinado y, a continuación, salir. "Cmd" ejecuta el intérprete de línea de comandos. "Interno" se ejecuta una secuencia de comandos interno. "Gui" entra en el bucle de eventos de Gui. "Módulo" carga un módulo de python determinado.

"Cmd"

FileName Significado depende de la RunMode

ScriptFileName Significado depende de la RunMode

Detallado Nivel de prolijo de FreeCAD "" o "estricto"

OpenFileCount Contiene el número de archivos abiertos a través de argumentos de línea de comandos

"12"

AdditionalModulePaths Contiene las rutas de acceso de módulo adicionales dadas en la línea de cmd

"extraModules /"

Sistema relacionados con

Entradas de configuración de usuario

Nombre de var config

Sinopsis Ejemplo M $ Ejemplo Posix (Linux)

AppHomePath Ruta donde está instalado FreeCAD

c:/archivos/FreeCAD_0.7 de programa

/User/local/FreeCAD_0.7

PythonSearchPath

Contiene una lista de rutas de acceso que python busca los módulos. Esto es al inicio puede cambiar durante la ejecución

Algunas bibliotecas necesitan llamar a sistema de variables de entorno. A

veces, cuando hay un problema con una instalación de FreeCAD, es porque

algunos variable de entorno está ausente o establecer erróneamente. Por lo

tanto, algunas variables importantes obtener duplicados en la configuración 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 información relacionada

La siguiente tabla muestra las tetera informaciones acerca de la versión de

compilación. La mayoría de ella proviene desde el repositorio de Subversion.

Esto es necesario para reconstruir exactamente una versión!

Entradas de configuración de usuario

Nombre de var config

Sinopsis En el ejemplo se

BuildVersionMajor Mayor número de versión 0

de la compilación. Definidas en src/Build/Version.h.in

BuildVersionMinor Menor número de versión de la compilación. Definidas en src/Build/Version.h.in

7

BuildRevision

Número de revisión de repositorio SVN de la src en la construcción. Generados por SVN

356

BuildRevisionRange Intervalo de cambios de diferentes

123-356

BuildRepositoryURL Dirección URL del repositorio

https://Free-CAD.SVN.sourceforge.NET/svnroot/Free-CAD/trunk/src

BuildRevisionDate Fecha de la revisión de arriba

2007/02/03 22:21:18

BuildScrClean Indica si la fuente fue retirada de ager ha cambiado

Origen modificado

BuildScrMixed Origen no mezclada

Relacionados con la marca

Configuración de estas entradas están relacionadas con el mecanismo de

creación de marca de FreeCAD. Consulte Marca para más detalles.

Entradas de configuración de usuario

Nombre de var config

Sinopsis En el ejemplo se

/EXENAME Nombre del archivo ejecutable de generación. Puede buzo de FreeCAD si se utiliza un main.cpp diferentes.

FreeCAD.exe

ExeVersion En todos los conciertos de versión hasta a la hora de inicio

V0.7

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

"FCIcon"

ConsoleBanner Banner que se solicita en modo consola

SplashPicture Nombre del icono utilizado para la pantalla de bienvenida

"FreeCADSplasher"

SplashAlignment Alineación del texto en el cuadro de diálogo de bienvenida

Izquierda"

SplashTextColor Color de splasher el texto "#000000"

StartWorkbench Nombre de la Workbech que empezar programó después de inicio

"Diseño de la parte"

HiddenDockWindow Lista de dockwindows (separados por un punto y coma) que estará deshabilitado

"Editor de propiedad"

Construir herramientas de soporte técnico

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 construcción,

la distribución y la extensión 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 creación de un módulo .

DistSrc

El comando "DS" crea una distribución de código fuente del árbol de código

fuente actual.

DistBin

El comando "DB" crea una distribución binaria del árbol de código fuente actual.

DistSetup

El comando "DI" crea una distribución de configuración del árbol de código

fuente actual.

DistSetup

El comando "DUI" crea una distribución de configuración de usuario del árbol

de código fuente actual.

DistAll

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

BuildDoc

El comando "BD" crea la documentación del software mediante la ejecución de

Doxygen que debe estar instalado.

NextBuildNumber

El comando "NBN" incrementa el número de compilación para crear una nueva

versión de lanzamiento de FreeCAD.

CreateModule

El comando "CM" crea un nuevo módulo de aplicación .

Creación de un nuevo módulo de aplicación en FreeCAD es bastante

simple. En la FreeCAD árbol de desarrollo existe la Herramienta de generación

de FreeCAD ( fcbt ) que hace las cosas más importantes para usted. Es un

Python secuencia de comandos se encuentra bajo

trunk/src/Tools/fcbt.py

Cuando se instalan correctamente su intérprete de python puede ejecutar la

secuencia de comandos desde la línea de comandos

python fcbt.py

Se mostrará el siguiente menú:

FreeCAD Build ToolUsage:   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 el símbolo del sistema escriba CM para iniciar la creación de un módulo:

Insert command: CM

Ahora se pide para especificar un nombre para su nuevo módulo. Permite

llamarlo TestMod por ejemplo:

Please enter a name for your application: TestMod

Después de presionar entrar en fcbt comienza a copiar todos los archivos

necesarios para el módulo en una nueva carpeta en

trunk/src/Mod/TestMod/

A continuación, todos los archivos se modifican con su nuevo nombre del

módulo. 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 través del dolor fuera de depuración del uso del marco de prueba

para comprobar si las pruebas estándar funcionen correctamente. Si no quizá

es una instalación rota.

 

línea de comandos

El de depuración de FreeCAD es apoyado por unos pocos mecanismos

internos. La versión de línea de comandos de FreeCAD proporciona opciones

para la depuración de soporte:

-v

Con la "v" opción FreeCAD da un resultado más detallado.

-l

Con la "l" opción FreeCAD escribe información adicional en un archivo de

registro.

Introducción

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 módulo de prueba.

Este artículo se describe el Marca de FreeCAD. La marca significa

para iniciar su propia aplicación en base de FreeCAD. Puede ser sólo

su propio ejecutable o salpicadura pantalla hasta un completo

programa refundido. Sobre la base de la arquitectura flexible de

FreeCAD es fácil de utilizar como base para su propio programa de

propósito 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 más importantes para un nuevo

aspecto pueden hacerse en un lugar en la función main(). Aquí es la

sección de código 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", ( const char** ) splash_screen);   Gui::Application::initApplication();  Gui::Application::runApplication();  App::Application::destruct();   return 0;}

La primera entrada de configuración define el nombre del programa.

Esto es, no el nombre del archivo ejecutable, que se puede cambiar

por cambiar el nombre o por la configuración del compilador, pero el

nombre que se muestra en la barra de tareas de windows o en la lista

de programas de sistemas Unix.

Líneas de la siguiente definen las entradas de configuración de su

aplicación de FooApp. Una descripción de la configuración y sus

entradas que encontrará en Start up y configuración .

Imágenes

Todos los recursos de imagen se compilan en FreeCAD. Esto reduce

la carga retrasada y mantiene la instalación compacta. Las imágenes

se incluyen en formato XPM que es básicamente un formato de texto

que utiliza la sintaxis de C. Puede dibujar básicamente este imágenes

con un editor de texto, pero es más cómodo crear las imágenes con

su programa de gráficos favorito y convertirlo posteriormente en

formato XPM.

Programa de imagen de la GNU Gimp puede guardar archivo XPM.

Para la conversión, puede utilizar el ImageConv herramienta de que se

incluye con freecad. Lo puede encontrar en

/trunk/src/Tools/ImageTools/ImageConv

Se puede no sólo convertir imágenes pero también automáticamente

se actualizarán la BmpFactoryIcons.cpp archivo, donde se registran

las imágenes. El uso típico 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 línea:

Gui::BitmapFactory().addXPM("FooAppSplasher", ( const char** ) splash_screen);

en el main(), a continuación, se incluyen la imagen en la

BitmapFactory de FreeCAD.

Iconos

El icono de la aplicación principal FCIcon que aparece en la ventana

de títulos y otros lugares se define en

/trunk/src/Gui/Icons/images.cpp

y comienza con la línea

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 podría 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 sección comenzando con:

static const char* const background[]={

Debe elegir una imagen de bajo contraste para el fondo. De lo

contrario podría irritar al usuario.

Localización es, en general, el proceso de proporcionar un software

con una interfaz de usuario de lengua múltiples. En FreeCAD se

puede establecer el idioma de la interfaz de usuario bajo

Edit→Preferences→Application . Utiliza FreeCAD Qt para habilitar el

soporte de múltiples idiomas. En sistemas Unix/Linux, FreeCAD utiliza

los ajustes actuales de la configuración 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 más fácil que nunca, con el uso de la

Crowdin sistema de colaboración de traducción en línea.

Cómo traducir

Ir a la Página del proyecto de traducción de FreeCAD en Crowdin ;

Inicio de sesión mediante la creación de un nuevo perfil, o mediante una

cuenta de terceros, como su dirección de GMail;

Haga clic en el idioma que desee trabajar en;

Inicio traducir haciendo clic en el botón 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-lingüista (antigua usanza)

La siguiente información 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

continuación

Comprobar que un .ts de archivo con el código de idioma no existe ("fr"

para francés, "de" para alemán, etc...)

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

revisión/mejor la traducción (haga clic en el archivo, a continuación,

Descargar)

Si no existe, descargue el archivo de .ts sin código de idioma (o cualquier

otros .ts disponible, que funciona demasiado)

Cambiar el nombre de ese archivo con el código de idioma

Abrirlo con el programa de Qt-lingüista

Empezar a traducir (lingüista de Qt es muy fácil de usar)

Una vez que se realiza completamente, guarde el archivo

enviar los archivos para nosotros por lo que nos podemos incluirlas en el

código fuente de freecad por lo que éstas beneficien otros usuarios

demasiado.

Archivos de traducción disponibles

GUI principal de FreeCAD

Workbench completa

Dibujo Workbench

Proyecto Workbench

Invertir la ingeniería Workbench

FEM Workbench

Robot Workbench

Imagen Workbench

El programa de esbozo Workbench

Workbench de malla

Prueba Workbench

Los puntos de Workbench

Logicial Workbench

Parte Workbench

PartDesign Workbench

Ensamblado Workbench

MeshPart Workbench

Preparar sus propias aplicaciones de módulos para la traducción

Requisitos previos

Para localizar a su módulo de aplicación de su necesidad de

ayudantes que vienen con Qt . Puede descargarlos desde la Trolltech-

sitio Web , pero también están incluidos en el LibPack :

qmake

Genera archivos de proyecto

lupdate

Extractos o actualiza los textos originales en el proyecto mediante el análisis de

código fuente

Qt-lingüista

El Qt-lingüista es muy fácil de usar y lo ayuda a traducir con características

interesantes como un libro de la frase común de las sentencias.

Configuración de proyecto

Para iniciar la localización de su proyecto de ir a la GUI-

parte del módulo de usted y tipo sobre la línea 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 = appDEPENDPATH += .\IconsINCLUDEPATH += . # InputHEADERS += ViewProvider.h Workbench.hSOURCES += AppMyModGui.cpp \           Command.cpp \           ViewProvider.cpp \           Workbench.cppTRANSLATIONS += MyMod_de.ts

Puede agregar manualmente archivos aquí. La sección traducciones contiene

una lista de archivos con la traducción para cada idioma. En el ejemplo anterior

MyMod_de.ts es la traducción alemana.

Ahora que necesita para ejecutar lupdate para extraer todos los literales de

cadena en su GUI. Ejecutando lupdate después de que los cambios en el

código fuente es siempre segura ya que nunca elimina cadenas de los archivos

de las traducciones. Sólo agrega nuevas cadenas.

Ahora necesita agregar el .ts -archivos al proyecto VisualStudio. Especifique la

costumbre siguiente construir un método para ellos:

python ..\..\..\Tools\qembed.py "$(InputDir)\$(InputName).ts"                "$(InputDir)\$(InputName).h" "$(InputName)"

Nota: Escriba esto en una línea de comandos, el salto de línea es sólo para

propósitos de diseño.

Mediante la compilación 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 sería AppMyModGui.cpp . Hay que

agregar la línea

new Gui::LanguageProducer("Deutsch", <Modul>_de_h_data, <Modul>_de_h_len);

para publicar su traducción en la aplicación.

Creación de archivos de python para la traducción

Para facilitar la localización de los archivos de py puede utilizar la herramienta

"pylupdate4", que acepta uno o más archivos de py. Con la opción -ts usted

puede preparar o actualizar uno o más archivos de .ts. Por ejemplo a preparar

un archivo .ts francés simplemente entrar en la línea 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 específicamente (véase los archivos del módulo de proyecto para obtener

ejemplos). Dentro de su archivo, a continuación, puede configurar un traductor

como este (después 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, también puede crear el archivo XML Draft.qrc con este

contenido:

<RCC><qresource prefix="/translations" > <file>Draft_fr.qm</file> </qresource> </RCC>

y la ejecución de pyrcc4 Draft.qrc -o qrc_Draft.py crea un gran Python que

contiene todos los recursos. BTW este enfoque también trabaja para poner los

archivos de icono en el archivo de un recurso

Traducir la wiki

Este wiki es hosting mucho del contenido. Material más actualizado e

interesante se reunieron en el manual . Así que el primer paso es comprobar si

ya se ha iniciado la traducción manual para su idioma (busque en la barra

lateral izquierda, bajo "manual"). Si no, la cabeza para el foro y decir que desea

iniciar una nueva traducción, vamos a crear la configuración básica para el

idioma que desee trabajar en.

Usted debe, a continuación obtener permiso de edición wiki .

Si su idioma ya está en la lista, consulte las páginas que faltan todavía una

traducción (que se mostrarán en rojo). La técnica es simple: entrar en una

página de Roja y copiar y pegar el contenido de la página correspondiente de

inglés y empezar a traducir. No olvide incluir todas las etiquetas y las plantillas

de la página original de inglés. Algunas de esas plantillas tendrá un equivalente

en el idioma (por ejemplo, existe una plantilla de Docnav francés llamada

Docnav/fr). Mirar otras páginas ya traducidas para ver cómo lo hicieron.

A continuación, una vez que usted traduce una página, debe agregar a la

página original inglés un vínculo para su traducción, para que los lectores

sepan que existe una versión traducida, utilizando la plantilla {{idiomas}}.

Vistazo de cómo 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 comúnmente en las páginas del manual. Estas 3

plantillas han versiones localizadas (plantilla: Docnav / fr, plantilla: fr, etc....)

Plantilla: Docnav : es la barra de navegación en la parte inferior de las páginas, que

muestra anterior y siguientes páginas

Plantilla: idiomas : esta plantilla se colocarán en las páginas originales, para indicar

al lector que existe una traducción. La versión localizada a cambio debe colocarse en

la página traducida, un vínculo a la página original de inglés.

Plantilla: en : hay uno de ellos para cada idioma. Deben colocarse dentro de la

plantilla de la lengua.

Página de Convención de nomenclatura

Ten en cuenta que, debido a limitaciones en la aplicación de SourceForge del

motor MediaWiki, requerimos que las páginas todos mantengan de nombre su

original del homólogo inglés, anexando una barra diagonal y su código de

idioma. Por ejemplo, la página traducida para acerca de FreeCAD debe ser

acerca de Freecad/es para español, acerca de FreeCAD/pl para pulir, etc.. La

razón es simple: para que si traductores está a punto de desaparecer, los

administradores del wiki, que no hablan todos los idiomas, sabrá cuáles son

estas páginas. Esto facilitará el mantenimiento y evitar páginas perdidas.

Si desea que la plantilla de Docnav para mostrar las páginas vinculadas en su

idioma, puede utilizar redirigir las páginas . Son básicamente los vínculos de

acceso directo a la página real. Aquí hay un ejemplo con la página de francés

para acerca de FreeCAD.

La página sobre FreeCAD/fr es la página con contenido

La página À propos de FreeCAD contiene este código: #REDIRECT [[About FreeCAD/fr]]

Página en the acerca de FreeCAD/fr, el código de Docnav tendrá este aspecto: {{docnav/fr|Bienvenue sur l'aide en ligne|Fonctionnalités}}

La página "Bienvenue sur Aide en ligne" redirige a la página inicial de la ayuda

en línea/fr y en la página "Fonctionnalités" se redirige a la función de lista/fr.

Si no está seguro de cómo proceder, no dude en pedir ayuda en el foro .

El intérprete de python dentro de FreeCAD se puede extender fácilmente

mediante la adición de nuevos módulos para la instalación de su sistema de

python. Esos módulos se detecta automáticamente y se utilizarán por

FreeCAD.

Todos los módulos de pyhton pueden utilizarse desde dentro de FreeCAD, pero

varios de ellos, enumerados a continuación, tienen una importancia especial

porque permiten python acceso de programas completo a la funcionalidad

central de FreeCAD. Ejemplos de utilización de los módulos de pueden

encontrarse también en la fragmentos de código página.

Nota : de los siguientes módulos, Pivy es ahora plenamente integrados en

cualquier paquete de instalación de FreeCAD, y PyQt4 también está integrada

en el paquete de instalación de Windows.

PyQt4

página Web: http://www.riverbankcomputing.co.uk/pyqt

PyQt (versión 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, instalación 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 información de partes de la interfaz.

PyQt está liberado bajo un sistema de licencias múltiples, el mismo sistema

que utilizado por Qt . Para reanudar, es una versión comercial y una versión

gratuita de la GPL. Si desea utilizarlo para hacer programas comerciales

(código cerrado), deberá adquirir la licencia comercial, de lo contrario,

simplemente se puede instalar y utilizar libremente la versión de la GPL.

Instalación

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

funcionando.

Linux

La forma más sencilla de instalar PyQt4 es a través de gestor de paquetes de

su distribución. En los sistemas de Debian/Ubuntu, el nombre del paquete es

generalmente python-Qt mientras que en sistemas basados en RPM se

denomina pyqt4 . Las dependencias necesarias (Qt y SIP) va ser atendidas de

forma automática.

Windows

El programa puede descargarse de aquí . Necesitará instalar las bibliotecas QT

y SIP antes de instalar pyqt4 (a ser documentados).

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,QtGuiapp = QtGui.qAppFreeCADWindow = 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_widget)

Documentación

Más tutoriales de pyQt4 (incluyendo cómo 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 introducción sencilla

http://www.zetcode.com/tutorials/pyqt4/ - tutorial muy completo de fondo

 

Pivy

página 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 construcción

de aplicaciones 3D en OpenGL. Es el Kit de herramientas que FreeCAD se

utiliza para dibujar su escena 3d en la pantalla. Instalación 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 descripción de escena abierto de inventor. Pivy es utilizado por el

módulo de redacción 2D de FreeCAD (y también por el módulo completo), por

lo que es necesario si desea utilizar cualquier herramienta de esos módulos.

Es importante saber que FreeCAD sólo utiliza moneda para la representación

de objetos en la pantalla, que está separada de la definición de objetos. Esto

significa pivy no será capaz de modificar los objetos existentes, ni para crear

objetos de FreeCAD válidos. Pero puede ser utilizado para dibujar todo tipo de

cosas temporales en pantalla, tales como eje, cuadrículas, manipuladores,

geometría de construcción, etc....

Pivy, así como monedas, es liberado bajo una licencia GPL.

Instalación

Ubuntu & de Debian

Iniciar con Debian Squeeze y Ubuntu Lucid, pivy estará disponible directamente

desde los repositorios oficiales, ahorrándonos 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 páginas, o compilarlo usted

mismo.

La mejor manera para compilar pivy fácilmente es agarrar el paquete de fuente

de debian para pivy y hacer un paquete con debuild. Es el mismo código fuente

desde el sitio oficial de pivy, pero la gente de debian hizo varias adiciones de

fijación de errores. También compila fino sobre ubuntu karmic:

http://packages.debian.org/squeeze/python-pivy (Descargar la. orig.gz y el.

diff.gz de archivo, a continuación, descomprima ambos y, a continuación,

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 continuación

debuild

para que pivy correctamente integrado en un paquete instalable oficial. A

continuación, sólo tiene que instalar el paquete con gdebi.

Otras distribuciones de linux

Primero hay que obtener las fuentes más recientes desde el repositorio del

proyecto:

svn co https://svn.coin3d.org/repos/Pivy/trunk Pivy

a continuación, necesita una herramienta llamada SWIG para generar el código

de C++ para los enlaces de Python. Se recomienda utilizar la versión 1.3.25 de

SWIG, no es la versión más reciente, porque en este momento pivy sólo

funcionará correctamente con 1.3.25. Descargar un 1.3.25 tarball fuente de

http://www.swig.org . A continuación, desembalarlo y desde una línea de

comandos do (como root):

./configuremakemake install (or checkinstall if you use it)

Tarda unos pocos segundos para construir.

Después 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

sólo necesita escribir un 'const' antes en las líneas adecuadas. Hay seis líneas

para corregir. Después de eso, instalar mediante la emisión de (como root):

python setup.py install (or checkinstall python setup.py install)

Eso es todo, pivy está instalado.

Windows

Suponiendo que estás utilizando Visual Studio 2005 o posterior debe abrir un

símbolo del sistema con ' Visual Studio 2005 símbolo ' en el menú

Herramientas. Si el intérprete de Python todavía no está en la ruta del sistema

set PATH=path_to_python_2.5;%PATH%

Para obtener trabajo de pivy debe obtener las fuentes más recientes desde el

repositorio del proyecto:

svn co https://svn.coin3d.org/repos/Pivy/trunk Pivy

a continuación, necesita una herramienta llamada SWIG para generar el código

de C++ para los enlaces de Python. Se recomienda utilizar la versión 1.3.25 de

SWIG, no es la versión más reciente, porque en este momento pivy sólo

funcionará correctamente con 1.3.25. Descargar los archivos binarios para

1.3.25 de http://www.swig.org . A continuación, desembalarlo y desde la línea

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 configuración 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 línea

200 simplemente elimine la parte ' sowin': ('gui._sowin', 'sowin-config',

'pivy.gui'.) (no retire el paréntesis de cierre).

Después 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 compilación. En este caso ajustar la

variable INCLUDE.

set INCLUDE=%INCLUDE%;path_to_coin_include_dir

y si los encabezados de SoQt no están en el mismo lugar que los encabezados

de monedas también

set INCLUDE=%INCLUDE%;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 pitón

excepción de keyerror. En este caso, usted tiene que modificar algunas cosas

en msvccompiler.py situado en su instalación de python.

Ir a la línea 122 y reemplace la línea

vsbase = r"Software\Microsoft\VisualStudio\%0.1f" % version

con

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

A continuación, vuelva a intentarlo una vez más. Si obtiene un segundo error

como

error: Python was built with Visual Studio 2003;...

También debe reemplazar línea 128

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

con

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

Vuelva a intentarlo una vez más. 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 continuación, debe comprobar las variables de entorno

DISTUTILS_USE_SDK y MSSDK con

echo %DISTUTILS_USE_SDK%echo %MSSDK%

Si no aún definida, entonces, a sólo, por ejemplo, a establecer a 1

set DISTUTILS_USE_SDK=1set MSSDK=1

Ahora, se puede ejecutar en un error del compilador donde un 'const char *' no

puede convertirse en un 'char *'. Para corregir que sólo necesita escribir un

'const' antes en las líneas adecuadas. Hay seis líneas para corregir. Después

de que copiar el directorio de pivy generado a un lugar donde se encontrará en

el intérprete de python en FreeCAD.

Uso

Tener Pivy acceder a la FreeCAD scenegraph haga lo siguiente:

from pivy import coinApp.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 scenegraphFCSceneGraph.addChild(coin.SoCube()) # add a box to scene

Ahora puede explorar la FCSceneGraph con el comando dir().

Documentación

Lamentablemente la documentación acerca de pivy está todavía casi inexistant

en la red. Pero puede encontrar documentación de Coin útiles, ya que pivy

simplemente traducir las funciones de la moneda, los nodos y los métodos 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://www-Evasion.imag.fr/~Francois.Faure/doc/inventorMentor/sgi_html/

index.html - El Inventor Mentor - la "Biblia" de lenguaje de descripción de

escena de inventor.

También puede buscar en el archivo Draft.py en la carpeta FreeCAD

Mod/proyecto, ya que hace gran uso de pivy.

Créditos Aquí una visión general que las personas o las empresas contribuyen a

FreeCAD. Los créditos para las bibliotecas utilizadas ver Bibliotecas de

terceros .

Desarrollador

Desarrollador principal

Sólo los desarrolladores de plomo son capaces de cometer el código en el

repositorio SVN. Actualmente son:

Jürgen Riegel

Werner Mayer

Más tarde allí pueden ser responsabilidades sobre la base del módulo.

Desarrolladores

Personas que han contribuido a una notable cantidad de código:

Havre de van de Yorik

Graeme van der Vlugt

Berthold Grupp

Georg Wiora

Empresas

Empresas que donó el código o Developer:

Imetric 3D