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