Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Freecad
Freecad
Este es el manual FreeCAD. Incluye las partes esenciales de la wiki de documentacin FreeCAD. Est hecho principalmente para ser impresos en un solo documento grande, as que, si usted est leyendo esto en lnea, usted lo prefiere, puede dirigirse directamente a la ayuda en lnea la versin, que es ms fcil de navegar.
wiki es mantenido activamente y continuamente desarrollado por la comunidad FreeCAD de desarrolladores y usuarios, es posible que la versin en lnea contiene la informacin ms reciente o ms de este documento. Pero no obstante, esperamos que usted encontrar aqu toda la informacin que usted necesita. En caso de que tenga preguntas que usted no puede encontrar respuestas en el presente documento, eche un vistazo en el foro FreeCAD, donde tal vez se puede encontrar respuesta a su pregunta, o alguien que pueda ayudarte.
Cmo utilizar
Este documento se divide en varias secciones: introduccin, uso de secuencias de comandos y el desarrollo, la direccin de los tres ltimos especialmente los tres grandes categoras de usuarios de FreeCAD: usuarios finales, que simplemente quieren usar el programa, los usuarios de energa, que se interesan por las capacidades de scripting de FreeCAD y me gustara personalizar algunos de sus aspectos, y los desarrolladores, que consideran FreeCAD como base para desarrollar sus propias aplicaciones. Si eres nuevo en comletely FreeCAD, le sugerimos que para empezar simplemente por la introduccin.
Contribuir
Como usted puede haber experimentado en ocasiones, los programadores son realmente ayudar a los escritores malos! Para ellos todo es del todo claro porque lo hizo de esa manera. Por lo tanto es vital que los usuarios experimentados nos ayudan a escribir y revisar la documentacin. S, tenemos que decir! Cmo, usted pregunta? Slo tienes que ir a la Wiki enhttp://apps.sourceforge.net/mediawiki/free-cad/index.php en la seccin de usuario. Usted necesitar una cuenta de sourceforgepara iniciar la sesin, entonces se puede empezar a editar!
Introduccin
la interfaz FreeCAD
FreeCAD es un propsito general 3D CAD modelador. El desarrollo es completamente de cdigo abierto (GPL y LGPL licencia). FreeCAD va destinado directamente a la ingeniera mecnica y diseo de productos , pero tambin encaja en una gama ms amplia de aplicaciones en la ingeniera, tales como la arquitectura o la ingeniera de otras especialidades. FreeCAD cuenta con herramientas similares a Catia, SolidWorks y Solid Edge, y por lo tanto tambin cae en la categora de MCAD, PLM, CAx y CAE. Ser una pelcula basada modelador paramtrico con una arquitectura de software modular que hace fcil para proporcionar funcionalidad adicional, sin modificar el ncleo del sistema. Como ocurre con muchos modernos 3D CAD y modeladores que tendr un componente 2D para extraer los detalles del diseo del modelo 3D para crear dibujos en 2D de produccin, pero el dibujo 2D directa (como AutoCAD LT) no es el foco, no son orgnicos o formas de animacin ( como Maya, 3ds Max o Cinema 4D), aunque, gracias a su amplia adaptabilidad, FreeCAD podra ser til en una amplia rea mucho ms que su enfoque actual. Otra de las principales preocupaciones de FreeCAD es hacer un uso intensivo de todos los de cdigo abierto grandes bibliotecas que existen por ah en el campo de la computacin cientfica. Entre ellos se encuentran OpenCascade, un poderoso ncleo de CAD,Coin3D, una encarnacin de OpenInventor, Qt, la famosa interfaz de usuario marco del mundo, y Python, uno de los mejores lenguajes de scripting disponibles. FreeCAD misma tambin se puede utilizar como una biblioteca por otros programas. FreeCAD est totalmente multiplataforma, y actualmente se ejecuta sin problemas en Windows y Linux / Unix y Mac OS X sistemas, con el mismo aspecto y funcionalidad en todas las plataformas. Tienes curiosidad? Echa un vistazo a la lista de caractersticas o de la Introduccin a los artculos, o dirigirse directamente al centro de usuario! Esta es una, por lo tanto no es completa, extensa lista de caractersticas FreeCAD implementa. Si desea buscar en el futuro ver lahoja de ruta para el Desarrollo de una visin general rpida de la Imagen es un buen lugar para ir.
Caractersticas generales
Base de la aplicacin
manera en Windows, Linux y OSX plataformas Mac. FreeCAD es una completa aplicacin con interfaz grfica. FreeCAD cuenta con una
completa interfaz grfica de usuario basada en el famoso Qtmarco, con un visor 3D basado en Open Inventor, permitiendo rpido renderizado de escenas 3D y una representacin grfica de la escena muy accesible. FreeCAD tambin se ejecuta como una aplicacin de lnea de comandos, con la
huella de memoria baja. En modo de lnea de comandos, FreeCAD se ejecuta sin su interfaz, pero con todas las herramientas de la geometra. Puede ser, por ejemplo, utiliza como servidor de producir contenidos para otras aplicaciones. FreeCAD se pueden importar como un mdulo de Python, dentro de otras
aplicaciones que pueden ejecutar scripts de Python, o en una serpiente pitn de la consola. Al igual que en modo consola, la parte de interfaz de FreeCAD no est disponible, pero todas las herramientas de la geometra son accesibles. Plugin / marco del mdulo para la carga tarda de caractersticas y tipos de
datos. FreeCAD se divide en una aplicacin de base y los mdulos, que se cargan slo cuando es necesario. Casi todas las herramientas y tipos de geometra se almacena en mdulos. Los mdulos se comportan como plugins, y puede incluir o eliminar una instalacin existente de FreeCAD. Construido en secuencias de comandos marco: FreeCAD incorpora un
en Python intrprete, y una API que cubre casi cualquier parte de la aplicacin, la interfaz, la geometra y la representacin de esta geometra en el visor 3D. El intrprete puede ejecutar comandos individuales hasta las secuencias de comandos complejas, de hecho, los mdulos de todo, incluso se puede programar completamente en Python.
Estructura de documento
deshacer, varios pasos por lo que puede ser deshecho a la vez. gestin de transacciones: La deshacer / rehacer pila documento transacciones
tiendas y no las acciones individuales, permitiendo que cada herramienta para definir exactamente lo que hay que deshacer o rehacer. asociativas documento objetos paramtricos: Todos los objetos en un documento
FreeCAD puede ser definido por los parmetros. Los parmetros se pueden modificar sobre la marcha, y vuelven a calcular en cualquier momento. La relacin entre los objetos tambin se almacena, por lo que la modificacin de un objeto tambin modifica sus objetos dependientes. (ZIP base) del documento compuesto guardar formato: FreeCAD documentos
guardados con iconos fcstd. extensin puede contener diversos tipos de informacin, tales como la geometra, las secuencias de comandos o en miniatura.
Interfaz de usuario
Totalmente personalizable / scripts interfaz grfica de usuario. El Qtbasado en la
interfaz de FreeCAD es totalmente accesible a travs del intrprete de Python. Adems de las funciones simples que FreeCAD se dota a los bancos de trabajo, el marco de Qt est adaptado demasiado, permitiendo que cualquier operacin en la interfaz grfica de usuario, tales como crear, agregar, de acoplamiento, modificar o eliminar widgets y barras de herramientas.
agrupan por mesas de trabajo. Esto permite mostrar slo las herramientas utilizadas para llevar a cabo una determinada tarea, manteniendo la ordenada y responsable, y la rpida aplicacin de espacio de trabajo para la carga. Incorporado en la consola de Python con resaltado de sintaxis, y la clase explorador
autocompletar: comandos de Python pueden ser introducidas directamente en FreeCAD y devolvi de inmediato los resultados, lo que permite guionistas para probar la funcionalidad sobre la marcha, explorar el contenido de los mdulos y fcil aprender sobre FreeCAD internos. reflejo de la interaccin del usuario en la consola: Todo lo que el usuario hace en la
interfaz de FreeCAD ejecuta cdigo python, que se puede imprimir en la consola y se registran en las macros. macro de grabacin y edicin completa: La pitn rdenes emitidas cuando el
usuario manipula la interfaz puede ser grabado, editado, si es necesario, y salvo que se reproduce ms adelante. Thumbnailer (los sistemas Linux solamente en el momento): Los iconos de documento
FreeCAD mostrar el contenido del archivo en la mayora de las aplicaciones de administrador de archivos, como los nautilus de gnome.
Mallas
para la importacin, la curacin y la conversin de parte de malla generada geometra de sesiones en FreeCAD, y la exportacin de la geometra FreeCAD en formato de malla. Pero s FreeCAD tambin cuenta mucho la geometra de los tipos ms avanzados de las mallas. la creacin de primitivas (caja, esfera, etc cilindro), desplazamiento(triviales o
despus de Jung / Shin / Choi) o las operaciones booleanas(aadir, cortar, se cruzan) Importacin de los siguientes formatos: ASCII o binario STL (litografa formato
estreo) (*. stl, *. ast), el formato OBJ (*. obj), limitadaNASTRAN apoyo (*. nas), Open Inventor mallas (iv *.), y nativo del kernel de malla FreeCAD (*. BMS) Exportacin de los siguientes formatos: ASCII o binario STL (Stereo formato
litografa) (*. stl, *. ast), el formato OBJ (*. obj), limitada NASTRAN apoyo (*. nas, *. BRL), VRML mallas (*. wrl), nativa del ncleo de malla FreeCAD (*. BMS), de malla como mdulo de Python (*. py) Prueba y reparacin de herramientas para mallas: prueba de slidos, y dos colectores
de ensayo que no, interseccin de autocomprobacin, orificio de llenado y la orientacin uniforme. Amplia Python API de scripting.
2D de Redaccin
Grfica de creacin de la geometra plana simples como lneas, cables, rectngulos,
arcos o crculos en cualquier plano del espacio 3D Anotaciones como los textos o las dimensiones Grfica de las operaciones de modificacin como la traduccin, rotacin, escalado,
espejo, desplazamiento o la forma de conversin, en cualquier plano del espacio 3D Importacin y exportacin de los siguientes formatos: Autodesk Dibujo Exchange
Format (*. dxf), Open Cad Formato (*. oca, *. gcad) e SVG (*. svg)
CAD
La pieza del mdulo se ocupa de todo alrededor de modelado CAD y las estructuras de CAD. La funcionalidad CAD est en fuerte desarrollo (vase
datos
el PartDesign_project y Assembly_project en elDevelopment_roadmap). El mdulo de la parte trabaja con alto nivel Abrir CASCADE geometra. Paramtrico formas primitivas como la caja, la esfera, el cono del cilindro o un toro. Topolgica componentes como vrtices, bordes, cables y aviones (a travs de
secuencias de comandos de Python). Modelado con rectas o revolucin extrusiones, secciones y filetes. operaciones booleanas , como la unin, diferencia y la interseccin. Amplia Python API de scripting. Importacin y exportacin de los siguientes formatos: PASO piezas y ensamblajes (*.
stp, *. paso), IGES modelos (*. igs, *. IGES) y BREP (*. BRP), el formato nativo de nuestro Abrir CASCADE ncleo CAD .
Raytracing
El mdulo de trazado de rayos permite la exportacin de la geometra FreeCAD
a renderizadores externos para la generacin de imgenes de alta calidad. En la actualidad, el motor de render compatible slo es POV-Ray. El mdulo permite actualmente la creacin de una hoja de representacin, y la geometra de la adicin a esa hoja de representacin para exportar a un archivo de POV-Ray.
Dibujo
un documento SVG 2D. Permite la creacin de una hoja en 2D con una plantilla de svg existentes, y la insercin de puntos de vista de la geometra proyectada en esa hoja. A continuacin, la hoja se pueden guardar como un archivo SVG.
CAM
El mdulo CAM se dedica a trabajar a mquina mecnica, como la molienda. Este
mdulo se encuentra en el principio y en el momento en su mayora dedicados a la hoja que forma incremental. Aunque hay algunos algoritmos de planificacin trayectorias que no son utilizables para el usuario final en el momento.
Instalacin
Instalar en Windows
La forma ms fcil de instalar FreeCAD en Windows es utilizar el instalador. Esta pgina describe el uso y las caractersticas delinstalador de Microsoft para conocer las opciones de instalacin ms.
Instalacin sencilla
instalador FreeCAD se entrega en. MSI (Windows Installer) en formato. Puede descargar la ltima versin. Msi de la FreeCAD pgina de descarga oficial. Despus de descargar el archivo, haga doble clic sobre l para iniciar el proceso de instalacin.
instalacin se puede iniciar mediante programacin. Los parmetros adicionales se pueden pasar al final de esta lnea de comandos, como
msiexec / i FreeCAD-2.5.msi TARGETDIR = r: \ FreeCAD25
El importe de la interfaz de usuario que el instalador muestra se puede controlar con / q opciones, en particular: / Qn - No interfaz / Qb - Interfaz bsica - slo un pequeo dilogo de progreso
/ Qb! - Al igual que / qb, pero ocultar el botn Cancelar / Qr - Reduccin de la interfaz - mostrar todos los cuadros de dilogo que no requieren / Qn + - Me gusta / qn, pero muestran "Completado" dilogo al final / Qb + - Me gusta / qb, pero muestran "Completado" dilogo al final
Objetivo de la gua
El TARGETDIR propiedad determina el directorio raz de la instalacin FreeCAD. Por ejemplo, un disco de instalacin diferente se puede especificar con
TARGETDIR = R: \ FreeCAD25
Agregar
ALLUSERS = 1
causa de una instalacin a todos los usuarios. De forma predeterminada, la instalacin no interactiva instalar el paquete slo para el usuario actual, y la instalacin interactiva ofrece un cuadro de dilogo que por defecto es "todos los usuarios" si el usuario es lo suficientemente privilegiada.
Seleccin de caractersticas
Un nmero de propiedades permiten la seleccin de caractersticas para ser instalado, reinstalado o eliminadas. El conjunto de caractersticas para el programa de instalacin es FreeCAD DefaultFeature - instalar el software adecuado, adems de las bibliotecas del ncleo Documentacin - instalar la documentacin El cdigo fuente - instalar las fuentes ... Cosas por hacer
Adems, TODOS especifica todas las caractersticas. Todas las funciones dependen de DefaultFeature, por lo que la instalacin de cualquier caracterstica instala automticamente la funcin de default. Las caractersticas siguientes propiedades de control para instalar o desinstalar ADDLOCAL - lista de caractersticas para ser instalado en el equipo local REMOVER - lista de caractersticas para ser retirados ADDDEFAULT - lista de funciones adicionales en su configuracin por defecto (que es REINSTALL - lista de caractersticas para volver a instalar / reparar
publicidad Hay algunas caractersticas adicionales disponibles, consulte la documentacin de MSDN para obtener ms detalles. Con estas opciones, aadiendo
ADDLOCAL = Extensiones
instala el propio intrprete y los registros de las extensiones, pero no instalar nada ms.
Desinstalacin
Con
msiexec / x FreeCAD <versin>. msi
FreeCAD se puede desinstalar. No es necesario contar con el archivo MSI disponibles para la desinstalacin, como alternativa, el paquete o cdigo de producto tambin puede ser especificado. Usted puede encontrar el cdigo de producto al observar las propiedades del acceso directo Desinstalar FreeCAD que se instala en el men de inicio.
instalacin administrativa
Con
msiexec / a FreeCAD <versin>. msi
un "administrativo" (red) de instalacin se puede iniciar. Los archivos se desempaquetado en el directorio de destino (que debe ser un directorio de red), pero sin otra modificacin que se haga en el sistema local. Adems, otro archivo (ms pequeo) msi se genera en el directorio de destino, que los clientes pueden entonces utilizar para realizar una instalacin local (las versiones futuras pueden ofrecer tambin para mantener algunas de las caractersticas de la unidad de red en total). Actualmente, no existe ninguna interfaz de usuario para las instalaciones administrativas, por lo que el directorio de destino se debe pasar la lnea de comandos. No hay ninguna especfica procedimiento de desinstalacin de una administrativa de instalacin - simplemente borre el directorio de destino si no hay cliente que usa ms.
Publicidad
Con
msiexec / jm FreeCAD <versin>. msi
sera posible, en principio, a "anunciar" FreeCAD a una mquina (con / ju a un usuario). Esto hara que los iconos que aparecen en el men de inicio, y las extensiones para ser registrada, sin el software en realidad se est instalando. El primer uso de una caracterstica hara que cuentan para su instalacin.
El instalador FreeCAD actualmente soporta slo el anuncio de las entradas del men de inicio, pero no hay anuncio de accesos directos.
Paquete
equipo sale del mbito de aplicacin de la poltica. la propagacin del Grupo de poltica general, toma algn tiempo - para implementar el paquete de forma fiable, todos los equipos debe ser reiniciado.
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.
descargado el archivo, y haga doble clic en l. Las dependencias necesarias sern atendidos de forma automtica por el gestor de paquetes del sistema de tipos. Alternativamente se puede instalar tambin de la terminal, navegar hasta donde hemos descargado el archivo, y:
sudo dpkg-i Name_of_your_FreeCAD_package.deb
cambiando Name_of_your_FreeCAD_package.deb por el nombre del archivo descargado. Despus de instalar FreeCAD, un icono de inicio se agreg en la "grfica" de su Men de Inicio.
Instalacin en Mac
FreeCAD se puede instalar en Mac OS X en un solo paso utilizando el instalador. Esta pgina describe el uso y caractersticas de la instalacin FreeCAD. Tambin incluye las instrucciones de desinstalacin.
Instalacin sencilla
El instalador FreeCAD se ofrece como un paquete de Installer (. Mpkg) incluido en un archivo de imagen de disco. Puede descargar la ltima instalacin de la descarga la pgina. Despus de descargar el archivo, simplemente montar la imagen de disco, a continuacin, ejecute la instalacin FreeCAD paquete.
El instalador le presentar una instalacin Personalizar la pantalla que lista los paquetes que sern instalados. Si usted sabe que usted ya tiene alguno de estos paquetes, se puede anular la seleccin utilizando las casillas de verificacin. Si no est seguro, deje todos los elementos seleccionados.
Desinstalacin
En este momento no es un desinstalador de FreeCAD. Para eliminar completamente FreeCAD y todos los componentes instalados, arrastre los siguientes archivos y carpetas a la Papelera: En / Aplicaciones: FreeCAD
Eso es todo. Finalmente, FreeCAD estar disponible como un paquete de aplicaciones de autocontenida para toda esta molestia desaparece.
Descubrir FreeCAD
Prefacio
FreeCAD es un sistema CAD / CAE de aplicaciones de modelado paramtrico. Todava est en fase inicial de desarrollo, as que no espere ser capaz de utilizarlo para producir un trabajo ya. Pero, si eres curioso acerca de lo que FreeCAD Aspecto del producto y las caractersticas que se estn desarrollando, le invitamos a descargarlo y darle una oportunidad. Por el momento, mucha funcionalidad ya est presente, pero no la interfaz de usuario mucho se ha creado para l. Esto significa que si usted sabe un poco de python, que ya ser capaz de producir y modificar la geometra compleja con relativa facilidad. Si no, probablemente encontrar que FreeCAD todava tiene pocos para ofrecer a usted. Pero, sea paciente, se espera que esto cambie pronto. Y si despus de la prueba tiene comentarios, ideas u opiniones, por favor, comparta con nosotros en el foro de discusin FreeCAD!
Instalacin
En primer lugar (si no se hace ya) descargar e instalar FreeCAD. Vase la descarga pgina para obtener informacin acerca de las versiones y actualizaciones. Hay paquetes listos para instalar Windows (. Msi), Ubuntu y Debian (. Deb) openSUSE (. Rpm) y Mac OSX.
Explorando FreeCAD
FreeCAD es una aplicacin de modelado 3D todos los fines generales, enfocada en la ingeniera mecnica y otras reas relacionadas, tales como otras especialidades de la ingeniera o la arquitectura. Se concibe como una plataforma para el desarrollo de cualquier tipo de aplicacin 3D, sino tambin para hacer tareas especficas muy. A tal efecto, su interfaz se divide en una serie de bancos de trabajo. Bancos de trabajo permiten cambiar el contenido de interfaz para mostrar todos y slo las herramientas necesarias para una tarea especfica, o un grupo de tareas. La interfaz FreeCAD por lo tanto se puede describir como un contenedor muy simple, con una barra de mens, un rea de visualizacin 3D, y un par de paneles laterales para la visualizacin de los contenidos escena o propiedades de los objetos. Todos los contenidos de estos paneles puede haber cambios en funcin de la mesa de trabajo. Al iniciar FreeCAD por primera vez, se le presentar un "general" banco de trabajo, que llamamos "banco de trabajo completo". Esta mesa de trabajo, simplemente recoge las herramientas ms madura de otros bancos de trabajo. Desde FreeCAD es bastante joven y an no se utilizan para el trabajo muy especializado, este banco de trabajo es muy til para descubrir FreeCAD con mayor facilidad.Bsicamente, todas las herramientas que son lo suficientemente buenas para la produccin de la geometra est aqu.
Navegando en el espacio 3D
FreeCAD tiene dos diferentes modos de navegacin disponibles, que se pueden establecer en la configuracin de dilogo de preferencias. En el modo por defecto, el zoom se realiza con la rueda del ratn, paneo con el botn central del ratn, y larotacin con el botn izquierdo del ratn y Botn central del ratn al mismo tiempo. Seleccin de un objeto se hace simplemente haciendo clic sobre ella con el botn izquierdo del ratn, con CTRL presionado si desea seleccionar varios objetos. Tambin tiene varios presets vista (vista superior, vista frontal, etc) disponibles en el men Ver y en la barra de herramientas Vista, y por atajos numricos (1, 2, etc ..)
2D de Redaccin
Herramientas de dibujo
Estas herramientas le permiten configurar su entorno de trabajo o producir operaciones genricas.
plano de trabajo: Establece el plano de trabajo para las operaciones de al lado Coloque en la hoja: Escribe los objetos seleccionados a una hoja de dibujo SVG
Objetos de dibujo
Estas son herramientas para la creacin de objetos.
lneas ngulo
De 2 puntos la lnea: Dibuja un segmento de lnea de 2 puntos Hilos (punto de varias lneas): Dibuja una lnea hecha de segmentos de varias
Crculo: dibuja un crculo desde el centro y el radio Arco: Dibuja un segmento de arco desde el centro, radio, ngulo inicial y final del
Rectngulo: dibuja un rectngulo de 2 puntos opuestos Texto: Dibuja una lnea de texto de la anotacin-multi Dimensin: Dibuja una anotacin dimensin
Modificacin de objetos
Estas son las herramientas para modificar los objetos existentes. Trabajan en los objetos seleccionados, pero si no hay ningn objeto seleccionado, se le invitar a seleccionar una.
Mover: Mueve el objeto (s) de un lugar a otro Girar: Gira objeto (s) de un ngulo inicial a un ngulo final
Offset: los segmentos de un objeto se mueve sobre una distancia determinada Actualizacin: se une a los objetos en un alto nivel de objeto Baja de Calificacin: Se descompone en objetos de nivel inferior objetos Recortar / Extender (Trimex): Recorta o se extiende un objeto Aplicar el estilo: Aplica el color actual y el ancho de lnea a los objetos Escala: escala objeto seleccionado (s) en torno a un punto base Editar: edita un objeto seleccionado
La creacin de piezas en 3D
Primitivos
Estas son herramientas para la creacin de objetos primitivos.
Caja: Dibuja un cuadro especificando sus dimensiones Cono: Dibuja un cono mediante la especificacin de sus dimensiones Cilindro: Dibuja un cilindro mediante la especificacin de sus dimensiones Esfera: Dibuja una esfera mediante la especificacin de sus dimensiones Toro: Dibuja un toro (anillo), especificando sus dimensiones
Modificacin de objetos
Estas son las herramientas para modificar los objetos existentes. Que le permitir elegir el objeto a modificar.
Booleanos: boolean Realiza operaciones en los objetos Fusible: Fusibles (sindicatos) dos objetos Comn: extraer los comunes (interseccin) parte de dos objetos Cortar: corta (resta) un objeto de otro Extrusin: Eleva caras planas de un objeto Solomillo: Filete (balas) bordes de un objeto Girar: Crea un objeto por otro objeto giratorio alrededor de un eje
seccin
Exportar a dibujos 2D
Estas son las herramientas para crear, configurar y exportacin de hojas de dibujo 2D
Nueva hoja de dibujo: Crea una nueva hoja de dibujo desde un archivo SVG
existentes A3 dibujo de paisaje Nueva: Crea una nueva hoja de dibujo de la plantilla por
defecto A3 FreeCAD Inserte un punto de vista: Inserta una vista del objeto seleccionado en la hoja de
dibujo activo hoja Guardar: Guarda la hoja actual como un archivo SVG
Crear un proyecto de Povray: Crea un POV-Ray nuevo proyecto Insertar informacin ver: Inserta el ver los datos (posicin de la cmara, etc) a la
POV-Ray proyecto actual actual Insertar informacin parte: Inserta el objeto seleccionado al POV-Ray proyecto
Secuencias de comandos
Y, por ltimo, una de las caractersticas ms potentes de FreeCAD es la secuencia de comandos medio ambiente. Desde la pitn consola integrada (o de cualquier secuencia de comandos Python externo), puede acceder a casi cualquier parte del FreeCAD, crear o modificar la geometra, modificar la representacin de los objetos en la escena 3D o acceder y modificar la interfaz FreeCAD.secuencias de comandos de Python tambin pueden ser utilizados en las macros, que proporcionan un mtodo sencillo para crear comandos personalizados.
Seleccin de objetos
Los objetos se pueden seleccionar con un clic con el botn izquierdo del ratn o haciendo clic en el objeto en la vista 3D o mediante la seleccin en la vista de rbol. Tambin hay una preseleccin mecanismo que pone de relieve los objetos y muestra informacin acerca de ellos antes de la seleccin con slo pasar el mouse sobre l. Si no le gusta que la conducta o si tiene una mquina lenta, puede cambiar de preseleccin en las preferencias.
Manipulacin de objetos
La manipulacin de objetos es comn a todos los bancos de trabajo. Los gestos del ratn siguientes se pueden utilizar para controlar la posicin del objeto y el punto de vista. Seleccione Pulse el botn izquierdo del ratn sobre un objeto que desea seleccionar. Zoom Utilice el + o - las llaves de la rueda del ratn para acercar y alejar. Pan
Haga clic en el botn central del ratn y mover el objeto. Gire Primero haga clic con el botn central del ratn, mantenga y haga clic en el botn izquierdo del ratn en cualquier parte visible de un objeto y arrastrarlo en la direccin deseada. Esto funciona como hacer girar una pelota que gira alrededor de su centro. Si se suelta el botn antes de dejar su peticin, el objeto sigue girando, si esta opcin est activada. Centro de Marco de la rotacin Un doble clic con el botn central del ratn en cualquier parte de un objeto establece el nuevo centro de rotacin y zoom sobre este punto.
Manipulacin de objetos
FreeCAD ofrece manipuladores que se pueden utilizar para modificar un objeto o su aspecto visual. Un ejemplo sencillo es el plano de corte que se puede activar con el recorte Ver plano de men. Despus de la activacin del objeto plano de corte aparece y muestra siete manipuladores obvio como cajitas: Uno en cada extremo de sus tres ejes de coordenadas y otra en el centro del plano eje normal. Hay otros cuatro que no son tan obvios: el propio avin y la parte fina de los tres objetos eje. Escala Para escalar el objeto, haga clic con el botn izquierdo del ratn sobre los manipuladores recuadro al final de los ejes y tire de ellos hacia atrs y adelante. Dependiendo del objeto a los manipuladores trabajar independientemente o de forma sincrnica. Fuera del plano de desplazamiento Para cambiar el objeto a lo largo de su vector normal, tire de la caja larga en el centro de un eje con el botn izquierdo del ratn.Para el plano de corte no es slo un manipulador a lo largo del vector normal. En el plano de cambio Para mover el centro del plano de recorte, haga clic en el objeto de avin y tire de l hasta la posicin deseada. Rotacin Al hacer clic en la parte fina de los ejes del manipulador pone en modo de rotacin. <Anterior: Primeros pasos siguiente: Documento> estructura ndice
Traducciones disponibles:
El documento FreeCAD
Un documento FreeCAD contiene todos los objetos de la escena. Puede contener grupos y objetos elaborados con cualquier banco de trabajo. Por lo tanto, puede cambiar entre los bancos de trabajo, y siguen trabajando en el mismo documento. El documento es lo que se guarda en el disco al guardar su trabajo. Tambin puede abrir varios documentos al mismo tiempo en FreeCAD, y abrir varias vistas del mismo documento. Dentro del documento, los objetos se pueden mover en grupos, y tener un nombre nico.Administracin de grupos, objetos y nombres de objeto que se realiza principalmente desde el punto de vista de rbol. Tambin se puede hacer, por supuesto, como todo en FreeCAD, desde el intrprete de Python. En la vista de rbol, se pueden crear grupos, los objetos se mueven a los grupos, eliminar objetos o grupos, haciendo clic derecho en la vista en rbol o en un objeto, los objetos de cambiar el nombre haciendo doble clic en sus nombres, o posiblemente otras operaciones, en funcin de la mesa de trabajo actual. Los objetos dentro de un documento FreeCAD puede ser de diferentes tipos. Cada mesa de trabajo puede crear sus propios tipos de objetos, por ejemplo, el banco de trabajo de malla crea objetos de malla, el Workbench Partecrear objetos de la parte, el Proyecto de Workbench tambin crea objetos de la parte, etc Si hay al menos un documento abierto en FreeCAD, siempre hay uno y slo un documento activo. Ese es el documento que aparece en la vista 3D actual, el documento que estn trabajando actualmente.
Piense en ello como dos espacios, donde los objetos se definen. Sus parmetros constructivos (es un cubo? Un cono? Qu tamao?) Se almacenan en el documento de solicitud, mientras que su representacin grfica (es dibujado con lneas negro? Con rostros azules?) Se almacenan en el documento Ver. Por qu es eso? Debido a FreeCAD tambin puede ser utilizado sin interfaz grfica, por ejemplo dentro de otros programas, y todava deben ser capaces de manipular nuestros objetos, incluso si no se dibuja en la pantalla. Otra cosa que est contenida en el documento Ver puntos de vista en 3D. Un documento puede tener varias vistas abiertas, para que pueda inspeccionar el documento desde varios puntos de vista al mismo tiempo. Tal vez le gustara ver una vista superior y una vista frontal de su trabajo al mismo tiempo? A continuacin, tendr dos vistas del mismo documento, ambos almacenados en el documento Ver. Crear nuevos puntos de vista u opiniones cerca se puede hacer desde el men Ver o haciendo clic derecho en una ficha de vista.
Secuencias de comandos
Los documentos pueden crearse fcilmente, acceder y modificar desde el intrprete de Python. Por ejemplo:
FreeCAD.ActiveDocument
Podra acceder a la representacin grfica (ver) una parte de nuestro objeto Blob
FreeCADGui.ActiveDocument.ActiveView
necesario. Usted puede haber notado que cuando se selecciona una mesa de trabajo en la barra de herramientas FreeCAD, que la mesa de trabajo y todos sus componentes se cargan en ese momento. Esto incluye la configuracin de las preferencias.
La configuracin de las preferencias generales Al iniciar FreeCAD sin mesa de trabajo abierta, se le tendr entonces una ventana de preferencias mnimo. A medida que la carga de mdulos adicionales, nuevas secciones aparecern en la ventana de preferencias, lo que le permite configurar los detalles de cada mesa de trabajo. Sin ningn mdulo cargado, usted tendr acceso a dos secciones de configuracin, responsables de la configuracin de aplicacin general y para la configuracin de la pantalla.
La configuracin de la pantalla FreeCAD est siempre en constante evolucin, por lo que el contenido de las pantallas pueden diferir de las capturas de pantalla de arriba. Los ajustes son por lo general explica por s mismo, lo que no debera enfrentarse a cualquier dificultad de configurar FreeCAD a sus necesidades.
Personalizacin de la interfaz
Desde la interfaz FreeCAD se basa en la moderna Qt toolkit, que tiene un estado-de-la organizacin de arte. Widgets, mens, barras de herramientas y otras herramientas se pueden modificar, mover, compartida entre los bancos de trabajo, mtodos abreviados de teclado se puede establecer, modificar y macros se pueden grabar y reproducir. La ventana de personalizacin se puede acceder desde Herramientas -> Personalizar men:
Los comandos de la ficha le permite ver todos los comandos disponibles FreeCAD, organizado por su categora. En el teclado, puedes ver las combinaciones de teclas asociadas a cada comando FreeCAD, y si lo desea, modificar o asignar nuevo acceso directo a cualquier comando. Aqu es donde puede venir si se utiliza una mesa de trabajo particular, a menudo, y me gustara acelerar su uso mediante el teclado. Las barras de herramientas y barras de Herramientas etiquetas permiten modificar las barras de herramientas existentes, o crear sus propias barras de herramientas personalizadas. Las macros ficha le permite administrar su guarda macros.
Boolean
flotador
FloatConstraint
ngulo
FloatList
Distancia
entero
IntegerConstraint matriz de
Porcentaje
Enumeracin
IntegerList
cadena
StringList
Vincular
LinkList
vectores VectorList colocacin PlacementLink color colorlist Material Ruta del Archivo FileIncluded Crculo FilletContour PartShape
cambia. Podra, por ejemplo, empezar a dibujar formas en 2D con el Workbench de Proyecto, a continuacin, seguir trabajando sobre ellos con el Workbench Parte.
Un ejemplo de un objeto de malla Muchas de las aplicaciones 3D utilizar mallas como su principal tipo de objetos en 3D, con sketchup, licuadora, Maya o 3D Studio Max. Puesto que las mallas son simples objetos muy, contiene slo vrtices (puntos), los bordes y triangular) caras (, son muy fciles de crear, modificar, dividir, estirar, y fcilmente se puede pasar de una aplicacin a otra sin ningn tipo de prdida.Adems, ya que contienen datos muy sencilla, aplicaciones 3D por lo general pueden manejar grandes cantidades de ellos sin ningn problema. Por estas razones, las mallas son a menudo el tipo de objeto 3D de eleccin de las aplicaciones que tratan con las pelculas, animacin y creacin de imgenes. En el campo de la ingeniera, sin embargo, las mallas presentan una gran limitacin: Son objetos muy tonto, slo compuesto de puntos, lneas y caras. Ellos slo se hacen de las superficies, y no tienen informacin de masas, por lo que no se comportan como slidos. En una malla no hay forma automtica saber si un punto est dentro o fuera del objeto. Esto
significa que todas las operaciones slida basada, como sumas o restas, son siempre un poco difcil de realizar en las mallas, y los errores de regresar a menudo. En FreeCAD, ya que es una aplicacin de ingeniera, que, obviamente, prefieren trabajar con tipos ms inteligentes de los objetos 3D, que pueden transportar ms informacin, como la masa, el comportamiento de slidos, o incluso parmetros personalizados. El mdulo de acoplamiento fue creada para servir como banco de pruebas, pero ser capaz de leer, manipular y convertir mallas tambin es muy importante para FreeCAD. Muy a menudo, en su flujo de trabajo, recibir los datos 3D en formato de malla. Tendr que manejar esos datos, analizarlos para detectar los errores u otros problemas que les impiden convertir a objetos ms inteligente, y, por ltimo, convertir a los objetos ms inteligente, a cargo de la parte del mdulo.
Herramientas GUI
Estas son herramientas para la exportacin de su trabajo en 3D para renderizadores externos
Crear un proyecto de Povray : crea un nuevo proyecto de POV-Ray Insertar vista info : insertar la informacin de vista (posicin de la cmara, etc.) para el proyecto actual de POV-Ray Insertar parte info : inserta el objeto seleccionado para el proyecto actual de POV-Ray
Usted obtener pedir una ubicacin para guardar el archivo resultante de la *.pov. Despus de que se puede abrir en Povray y de procesamiento:
Secuencias de comandos
Aqu es cmo utilizar estas caractersticas de python:
import Raytracing,RaytracingGui OutFile = open('C:/Documents and Settings/jriegel/Desktop/test.pov','w') OutFile.write(open(App.getResourceDir() +'Mod/Raytracing/Templates/ProjectStd.pov').read()) OutFile.write(RaytracingGui.povViewCamera()) OutFile.write(Raytracing.getPartAsPovray('Box',App.activeDocument( ).Box.Shape,0.800000,0.800000,0.800000)) OutFile.close() del OutFile
Links
About POV-Ray:
http://www.yafaray.org/ http://www.luxrender.net/
El Banco de imgenes
El mdulo de imagen administra diferentes tipos de imgenes de mapa de bits y le permite abrirlos en FreeCAD. En la actualidad, los mdulos permite abrir los formatos de archivo .bmp, .jpg, .png y .xpm en una ventana independiente del visor. Tambin es una herramienta que le permite capturar una imagen desde una webcam.
El workbench de proyecto
El proyecto de mdulo es un mdulo de trabajo en progreso y bastante experimental realizado para agregar la funcionalidad bsica de dibujo 2d a FreeCAD. Est escrito totalmente en python y tambin sirve para mostrar hasta qu punto se puede extender FreeCAD totalmente en python, sin siquiera tocar el cdigo fuente. Actualmente no es realmente til para el trabajo de produccin, pero ya contiene un par de funciones bsicas de trabajo. Sintase libre de probar y nos dan una retroalimentacin sobre el pgina de discusin .
El workbench de proyecto est disponible en tu lista de workbenches. Cuando se activa, aparecern dos barras de herramientas; un clsico barra de herramientas que contiene los comandos de proyecto estndar que se enumeran a continuacin y un especial de barra de comandos que no tiene ningn icono de herramienta en ella, pero que es utilizado por las diferentes funciones para mostrar sus controles. De esa barra de comandos, tambin puede cambiar las cosas generales como el color de la lnea actual y el ancho. Como una nota, la barra de comandos (y, IMHO, toda la interfaz QT) se ve mucho mejor si se elige el estilo de "cleanlooks" en las preferencias generales de FreeCAD...
Tutorial
Para obtener una explicacin detallada, lea la Tutorial de proyecto (en curso), o lee la seccin quickstart para ponerse rpidamente en rieles.
Inicio rpido
No todos los comandos de dibujo funcionan bien en 3D en este momento. Por lo tanto, la mejor cosa a hacer es poner a usted mismo en la vista 2D ortogrfica antes de empezar a dibujar. Para ello, abra o cree un nuevo documento y, a continuacin, pulse el O clave (o en la vista de men - > vista ortogrfica) para cambiar al modo ortogrfica. A continuacin, pulse el 2 clave (o en la vista de men - > vistas estndar - > arriba) para ponerlo en vista superior. Ahora, est listo para dibujar. Tambin puede configurar freecad (men Editar - > Preferencias) para siempre iniciar en modo ortogrfica. Todos los comandos de proyecto ms o menos siguen las mismas reglas: herramientas de dibujo se le pedir que elija puntos en la pantalla o introduzca coordenadas numricas, mientras que las herramientas de modificacin le pedir que seleccione un objeto para trabajar en primer lugar, en caso de que no hay ningn objeto seleccionado. En casi todos los comandos, presionando el CTRL clave te permitir ajustar a puntos existentes, Mays limitar su movimiento horizontalmente, verically o en relacin con un segmento existente y en algunas herramientas ALT le dar opciones adicionales tales como la creacin de un nuevo objeto en lugar de la transformacin de uno ya existente. La ESC clave siempre cancelar el comando activa.
Note On some desktop systems (ex. Gnome, Kde), the ALT key is bound by default to moving windows on the desktop. You might need to change that shortcut key in your desktop preferences.
Algunos comandos trabajan demasiado en los aviones no estn en posicin horizontal, simplemente asegrese de que la coordenada Z se desbloquea cuando dibujo y sitese en la vista adecuada. A continuacin encontrar una descripcin ms completa de todas las herramientas disponibles.
Estas son las funciones para abrir, importar o exportar a otros formatos de archivo. Apertura abrir un nuevo documento con el contenido del archivo, mientras que la importacin anexar el contenido del archivo al documento actual. Exportar guardar los objetos seleccionados en un archivo. Si no se selecciona nada, se exportarn todos los objetos. Tenga en cuenta que, puesto que el propsito del proyecto mdulo es trabajar con objetos 2d, los importadores centran slo en objetos 2d y, a pesar de que son compatibles con formatos DXF y OCA objetos definiciones en el espacio 3D (objetos no son necesariamente planos), ellos no importan objetos volumtricos como mallas, caras 3D, etc., sino ms bien las lneas, crculos, textos o formas planas. Formatos de archivo admitidos actualmente son:
Autodesk SVG
.DXF : Las importaciones y exportaciones de los archivos DXF creados con otras aplicaciones CAD (como geometra) : Las importaciones y exportaciones de los archivos SVG creados con las aplicaciones de dibujo vectorial abierto de CAD .Oca : Las importaciones y exportaciones archivos OCA/GCAD, un nuevo potencialmente Abrir el formato de archivo de CAD
Formato
Herramientas de redaccin
Estas herramientas permiten configurar su entorno de trabajo o producir genricas de las operaciones.
Plano de trabajo : define el plano de trabajo para las operaciones de la prximas Poner en hoja de : escribe los objetos seleccionados en un svg hoja de dibujo
Objetos de dibujo
Estas son herramientas para la creacin de objetos.
2-punto lnea : dibuja un segmento de lnea de puntos 2 Cable (lnea de mltiples puntos) : dibuja una lnea compuesta de mltiples segmentos de lnea Crculo : dibuja un crculo desde el centro y el radio Arco : dibuja un segmento de arco desde el centro, radio, ngulo del comienzo y ngulo final
Rectngulo : dibuja un rectngulo de puntos opuestos 2 Texto : dibuja una anotacin de texto multilnea Dimensin: dibuja una anotacin de dimensin
Modificacin de objetos
Estas son herramientas para modificar los objetos existentes. Trabajan en los objetos seleccionados, pero si no se ha seleccionado ningn objeto, ser invitados para seleccionar uno.
Mover : mover objetos desde una ubicacin a otra Rotate : permite girar objetos desde un ngulo de inicio a un ngulo de final Offset : mover segmentos de un objeto acerca de una cierta distancia Actualizar : se une a los objetos en un objeto de nivel superior Downgrade : Explodes objetos en objetos de nivel inferior Trim/Extend (Trimex) : permite recortar o extender un objeto Aplicar estilo : se aplica el color actual y ancho a objetos Escala : escala seleccionado objetos alrededor de un punto de base Editar: editar un objeto seleccionado
Comportamientos comunes
El
ajuste : Permite colocar puntos de nuevos en lugares especiales sobre los objetos existentes de : Permite colocar puntos de nuevos horizontal o verticalmente en relacin con los puntos anteriores con coordenadas manuales : Permite introducir las coordenadas manuales en lugar de hacer clic en la pantalla todas herramientas de modificacin pueden modificar los objetos seleccionados o crear una copia modificada de ellos. Presionar ALT mientras utiliza la herramienta har una copia de construccin : Permite poner geometra aparte del resto, para conmutador fcil encendido y apagado los objetos recin creados adoptar el proyecto actual color y ancho
Modo
Todos
El
API
Ver la API de proyecto pgina para obtener una descripcin completa de las funciones de proyecto que se pueden utilizar en secuencias de comandos y macros
Cmo funciona
Si habilita la salida de la consola (men Editar - > Preferencias - > General - > macros - > Mostrar los comandos de consola de python de secuencias de comandos), ver que en FreeCAD, cada accin que haces, como presionar un botn, salidas de un comando de python. Los comandos Thos son lo que puede ser grabado en una macro. La herramienta principal para hacer macros es la barra de herramientas de macros: En ella tienes 4 botones: record, parada de grabar, editar y reproducir la macro actual. Es muy simple de usar: pulse el botn de grabacin, le pedir que asigne un nombre a la macro y, a continuacin, realizar algunas acciones. Cuando haya terminado, haga clic en el botn de grabacin de parada, y se guardarn sus acciones. Ahora puede acceder al dilogo de macro con el botn de edicin:
Se puede administrar sus macros, eliminar, editar o crear nuevas desde cero. Si edita una macro, se abrir en una ventana del editor de donde puede realizar cambios en su cdigo.
En el ejemplo se
Presione el botn de grabacin, asigne un nombre a, digamos "cilindro 10 x 10", a continuacin, en el Parte Workbench , crear un cilindro con radio = 10 y altura = 10. A continuacin, pulse el botn "detener la grabacin". En el cuadro de dilogo de edicin de macros, puede ver el cdigo de python que se ha registrado y, si lo desea, hacer alteraciones a la misma. Para ejecutar la macro, simplemente pulse el botn de ejecutar en la barra de herramientas mientras la macro se encuentra en el editor. Macro siempre est guardado en el disco, as que cualquier cambio que realice, o cualquier nueva macro se crea, estar siempre disponible prxima vez que inicie FreeCAD.
Personalizacin de
Por supuesto, no resulta prctico cargar una macro en el editor en el fin de utilizarlo. FreeCAD proporciona mucho mejores maneras de usar la macro, como asignar un mtodo abreviado de teclado a ella o poner una entrada en el men. Una vez creada la macro, todo esto puede hacerse a travs de las herramientas - > Personalizar men:
Herramienta de FreeCAD de de esta manera puede hacer que la macro se convierten en un verdadero instrumento, al igual que cualquier estndar. Esto, aadido a la potencia de python de secuencias de comandos dentro de FreeCAD, hace posible agregar fcilmente sus propias herramientas de la interfaz. Siga leyendo para la secuencias de comandos pgina si desea saber ms acerca de los scripts de python...
Repositorio de macros
Visita el Recetas de las macros pgina para recoger algunas macros tiles para agregar a su instalacin de FreeCAD.
Introduccin a Python
Este es un tutorial corto realizado para quin es totalmente nuevo para python. Python es un cdigo abierto, multiplataforma lenguaje de programacin. Python tiene varias caractersticas que lo hacen muy diferente de otros lenguajes de programacin comn y muy accesible a los nuevos usuarios como usted:
Ha sido diseado especialmente para ser fcil de leer por los seres humanos, y por
no es necesario ser compilado antes de que se ejecute. El cdigo que escriba puede ser inmediatamente ejecutado, lnea por lnea, si as lo desea. Esto hace extremadamente fcil para aprender y para encontrar errores en el cdigo, porque usted ir despacio, paso a paso.
Puede incrustarse en otros programas que se utiliza como lenguaje de scripting.
FreeCAD tiene un intrprete de python incrustado, por lo que se puede escribir en python cdigo en FreeCAD, en la que se manipulan piezas de FreeCAD, por ejemplo, para crear la geometra. Esto es extremadamente potente, porque en lugar de simplemente hacer clic en un botn con la etiqueta "crear la esfera", que un programador ha colocado all para usted, usted tiene la libertad para crear fcilmente su propia herramienta para crear exactamente la geometra desee.
Es extensible, fcilmente puede conectar nuevos mdulos en su instalacin de
python y ampliar su funcionalidad. Por ejemplo, tiene mdulos que permiten python leer y escribir imgenes jpg, para comunicarse con twitter, para planificar las tareas que debe realizar su sistema operativo, etc.
Por lo tanto, las manos! Tenga en cuenta que lo que vendr siguiente es una introduccin muy simple, de ninguna manera un tutorial completo. Pero mi esperanza es que despus de obtendr suficiente fundamentos para explorar ms profunda en los mecanismos de FreeCAD.
El intrprete
Por lo general, al escribir programas informticos, usted simplemente abra un editor de texto o su entorno de programacin especial que se encuentra en caso de mayora un editor de texto con varias herramientas alrededor de ella, escribe su programa, a continuacin, compilarlo y ejectelo. La mayora del tiempo usted cometi errores al escribir, por lo que su programa no funcionar y obtendr un mensaje de error que indica lo que sali mal. A continuacin, vas a volver a su editor de texto, corregir los errores, ejecutar una vez ms, y as sucesivamente hasta que el programa funciona bien. Que todo el proceso, en python, se puede hacer transparente dentro del intrprete de python. El intrprete es una ventana de python con un smbolo del sistema, donde simplemente se puede escribir cdigo python. Si instala python en el equipo (descargarlo desde el sitio Web de python si ests en Windows o Mac, instlelo desde el repositorio de paquete si ests en linux), usted tendr un intrprete de python en su men de inicio. Pero FreeCAD tambin tiene un intrprete de python en su parte inferior:
El intrprete muestra la pitn versin, a continuacin, un >>> smbolo, que es el smbolo, es decir, donde introducir cdigo python. Escribir cdigo en el intrprete es simple: una lnea es una instruccin. Cuando se presiona Intro, su lnea de cdigo se ejecutar (despus de ser invisible y instantneamente compilado). Por ejemplo, intente escribir esto:
print "hello"
Imprimir es una palabra clave especial de python que significa, obviamente, para imprimir algo en la pantalla. Cuando pulsa Intro, se ejecuta la operacin, y se imprime el mensaje "hello". Si comete un error, por ejemplo vamos escribir:
print hello
Python nos dir que no sabe exactamente qu Hola es. Los "personajes especificar que el contenido es una cadena, que es simplemente, en jerga de programacin, un fragmento de texto. sin el ", el comando de impresin crea Hola no era un trozo de texto pero una palabra clave de python especiales. Lo importante es que usted obtenga notificada inmediatamente que ha cometido un error. Pulsando la flecha hacia arriba (o, en el intrprete de FreeCAD, CTRL + Flecha arriba), usted puede ir realizar copia de seguridad en el ltimo comando que usted escribi y corregirlo. el intrprete de python tambin tiene un integrado ayuda a sistema. Intente escribir:
help
o, por ejemplo, supongamos que no entendemos lo que sali mal con nuestro comando de impresin Hola anterior, queremos informacin especfica sobre el comando "print":
Help("Print")
Usted obtendr una descripcin larga y completa de todo lo que puede hacer el comando de impresin. Ahora nos dominan totalmente nuestro intrprete, podemos empezar con cosas graves.
Variables
Por supuesto, impresin "hello" no es muy interesante. Impresin de cosas que no saber antes de, o dejar que python a encontrar para usted es ms interesante. Es donde entra en juego el concepto de variable. Una variable es simplemente un valor que almacena bajo un nombre. Por ejemplo, escriba esto:
Supongo que usted entiende lo que ha ocurrido, "salv" la cadena "hello" bajo el nombre de una. Ahora, una ya no es un nombre desconocido! Podemos usarlo en cualquier lugar, por ejemplo en el comando de impresin. Podemos utilizar cualquier nombre que queremos que slo respetando las reglas simples, como no usar espacios ni signos de puntuacin. Por ejemplo, muy bien podramos escribir:
Hola = "mi propia versin de Hola" Hola impresin
Ver? Ahora Hola ya no es una palabra no definida. Qu pasa si, por el terrible mala suerte, hemos escogido un nombre que ya existe en python? Digamos que queremos almacenar nuestra cadena bajo el nombre de "print":
imprimir = "hello"
Python es muy inteligente y nos dir que esto no es posible. Tiene algunas palabras de clave "reservados" que no se puede modificar. Pero nuestras propias variables pueden modificarse en cualquier momento, eso es, exactamente, por qu se les llama variables, el contenido puede variar. Por ejemplo:
myVariable = "hello" imprimir myVariable myVariable = "good bye" imprimir myVariable
Tenga en cuenta que es interesante para darle buenos nombres a sus variables, "porque cuando te escribir programas de largos, despus de un tiempo no recuerdas lo que su variable denominada a" es para. Pero si llam por ejemplo myWelcomeMessage, que te recuerde fcilmente lo que se utiliza para cuando lo vers.
Nmeros
Por supuesto usted debe saber que la programacin es til para tratar a todo tipo de datos y especialmente los nmeros, no slo las cadenas de texto. Una cosa es importante, python debe saber qu tipo de datos que se trata. Vimos en nuestro ejemplo de impresin Hola, que el comando print reconocido nuestra cadena "hello". Eso es porque mediante el ", se dice especficamente el comando de impresin que lo que vendra prximo es una cadena de texto. siempre podemos comprobar de qu tipo de datos es el contenido de una variable con el tipo de palabra clave de python especiales:
myVar = "hello" Type(myVar)
Nos dir el contenido de myVar es 'str', o una cadena en la jerga de python. Tambin tenemos otros tipos bsicos de datos, tales como nmeros enteros y float:
firstNumber = 10 secondNumber = 20 imprimir firstNumber + secondNumber Type(firstNumber)
Esto ya es mucho ms interesante, verdad? Ahora ya tenemos una potente calculadora! Mirar bien en cmo funcionaba, python sabe que 10 y 20 son nmeros enteros. Por lo que estn almacenados como "int" y python puede hacer con ellos todo lo que puede hacer con nmeros enteros. Mira los resultados de esto:
firstNumber = "10" secondNumber = "20" imprimir firstNumber + secondNumber
Ver? Nos oblig a python a considerar la posibilidad de que nuestros dos variables no son nmeros sino meras fragmentos de texto. Python puede sumar dos fragmentos de texto, pero no trate de averiguar cualquier suma.
Pero estbamos hablando de nmeros enteros. Tambin hay nmeros de float. La diferencia es que los nmeros enteros no tienen parte decimal, mientras que los nmeros de foat pueden tener una parte decimal:
var1 = 13 var2 = 15,65 imprimir "var1 es de tipo", type(var1) imprimir "var2 es de tipo", type(var2)
Por supuesto, el total tiene decimales, derechos? Python automticamente decidi entonces que el resultado es un flotante. En varios casos como este, python automticamente decide qu tipo para hacer algo. En otros casos no es as. Por ejemplo:
varA = "hello 123" varB = 456 imprimir varA + varB
Esto nos dar un error, varA es una cadena y varB es un tipo int, y python no sabe qu hacer. Pero podemos obligar a python para convertir entre los tipos:
varA = "hello" varB = 123 imprimir varA + str(varB)
Ahora ambos son cadenas, funciona la operacin! Tenga en cuenta que nos "stringified" varB en el momento de la impresin, pero no cambiamos varB por s mismo. Si hemos querido convertir varB permanentemente en una cadena, necesitamos hacer esto:
varB = str(varB)
Tambin podemos usar int() y float() para convertir a int y float si queremos:
varA = "123" impresin int(varA) impresin float(varA)
Nota sobre los comandos de python Usted debe haber notado que, en esta seccin, hemos utilizado el comando de impresin de varias maneras. Hemos impreso variables, sumas, varias cosas, separadas por comas y incluso el resultado de otros comandos de python, como type(). Tal vez usted tambin vio que haciendo estos dos comandos:
Type(varA) impresin type(varA)
tienen exactamente el mismo resultado. Eso es porque estamos en el intrprete, y todo se imprime automticamente en la pantalla. Cuando te escribimos ms complejos de los programas que se ejecutan fuera del intrprete, no imprimen automticamente todo en pantalla, por lo que necesitaremos utilizar el comando de impresin. Pero de ahora en adelante, vamos dejar de usarlo aqu, va a ir ms rpido. por lo que simplemente podemos escribir:
myVar = "Hola amigos" myVar
Usted debe tambin han visto que la mayora de los comandos de python (o palabras clave) ya sabemos tienen parntesis sola decirles sobre qu contenido debe trabajar el comando: type(), int(), str(). nica excepcin es el comando de impresin, que en realidad no es una excepcin, tambin funciona normalmente como esta: print("hello"), pero, ya que se utiliza a menudo, los programadores de python hecho una versin simplificada.
Listas
Otro tipo de datos interesantes es listas. Una lista es simplemente una lista de otros datos. La misma manera que definimos una cadena de texto mediante el uso de "", definimos listas mediante el uso de []:
myList = [1,2,3] Type(myList) myOtherList = ["Bart", "Frank", "Bob"] myMixedList = ["Hola", 345, 34.567]
Ver que puede contener cualquier tipo de datos. Las listas son muy tiles porque se pueden agrupar las variables. A continuacin, puede hacer todo tipo de cosas en que los grupos, por ejemplo contarlos:
Len(myOtherList)
Ves que mientras que el comando de len() devuelve el nmero total de elementos de una lista, su "posicin" en la lista comienza con 0. El primer elemento de una lista es siempre en la posicin 0, por lo que en nuestra myOtherList, "Bob" ser en la posicin 2. Podemos hacer mucho ms cosas con listas, como se puede leer aqu tales como ordenar contenido, eliminar o agregar elementos.
Una cosa divertida e interesante para usted: una cadena de texto es, en realidad, una lista de caracteres! Intente hacer esto:
mi_var = "hello" Len(myVar) myVar [2]
Por lo general todo lo que puede hacer con listas tambin puede hacerse con cadenas. Fuera de cadenas, enteros, carrozas y listas, hay tipos de datos ms integrados, tales como dictionnaries , o incluso puede crear sus propios tipos de datos con clases .
Sangra
Uno de los grande usos fresco de listas tambin es navegar a travs de ellos y hacer algo con cada elemento. Por ejemplo mirar esto:
alldaltons = ["Joe", "William", "Jack", "Averell"] para dalton en alldaltons: imprimir dalton + "Dalton"
Nos itera (programacin jerga otra vez!) a travs de nuestra lista con la "para... en..." comando e hizo algo con cada uno de los elementos. Tenga en cuenta la sintaxis especial: la de comando termina con: que indica que lo que viene despus va a ser un bloque de uno de los comandos ms. Inmediatamente despus de introducir la lnea de comandos que terminan con:, el smbolo cambiar a... que significa python sabe que un: - lnea termin ha ocurrido y lo que vendr el prximo formarn parte de ella. Cmo sabe cuntas de las siguientes lneas python voluntad ser a ejecutarse dentro del for.. en operacin? Para ello, python utiliza sangra. Es decir, las siguientes lneas no comienzan de forma inmediata. Les comenzar con un espacio en blanco, o varios espacios en blanco, o una ficha o varias fichas. Otros lenguajes de programacin utilizan otros mtodos, como poner everythin dentro de parntesis, etc.. Como escribe tus prximas lneas con la sangra de la misma, se considerar parte del bloque para-en. Si comienza una lnea con 2 espacios y el siguiente con 4, ser un error. Cuando usted haya terminado, simplemente escribir otra lnea sin sangra, o simplemente pulse Intro para volver desde el bloque para-en Sangra es cool porque si realiza grandes (por ejemplo utilizar fichas en lugar de espacios, porque es ms grande), cuando se escribe un gran programa tendr una visin clara de lo que se ejecuta dentro de lo que. Vamos a ver que
muchos otros comandos que para-en pueden haber sangra bloques de cdigo demasiado. Para-en comandos pueden utilizarse para muchas cosas que hay que hacer ms de una vez. Por ejemplo, se puede combinar con el comando range():
serie = range(1,11) total = 0 imprimir "suma" nmero de serie: imprimir el nmero total = total + nmero imprimir "----" imprimir total
Ver que el comando de range() tambin tiene esa extraa particularidad que comienza con 0 (si no se especifica el nmero inicial) y que su ltimo nmero uno ser menor que el nmero final que especifique. Es decir, por supuesto, as que funciona bien con otros comandos de python. Por ejemplo:
alldaltons = ["Joe", "William", "Jack", "Averell"] total = len(alldaltons) para n en range(total): imprimir alldaltons [n]
Otro uso interesante de bloques con sangra es con el si comando. Si un bloque de cdigo slo se ejecuta si se cumple una determinada condicin, por ejemplo:
alldaltons = ["Joe", "William", "Jack", "Averell"] Si "Joe" en alldaltons: imprimir "We found que Dalton!!!!!!"
Por supuesto esto ser siempre la primera frase de la impresin, pero intente reemplazar la segunda lnea por:
Si "Lucky" en alldaltons:
Funciones
El comandos estndar de python no son muchos. En la versin actual de python hay alrededor de 30 aos, y ya sabemos que varios de ellos. Pero Imagnese si podramos inventar nuestros propios comandos? Pues bien, podemos, y es sumamente fcil. De hecho, la mayora de los mdulos adicionales que se pueden conectar en su instalacin de python hacen justo que, agregar comandos que puede utilizar. un comando personalizado en python se llama a una funcin y se realiza como esta:
Def printsqm(myValue): imprimir str(myValue) + "metros cuadrados" printsqm(45)
Muy simple: el comando de def() define una nueva funcin. Asgnele un nombre, y dentro de los parntesis definir argumentos que vamos a usar en nuestra funcin. Los argumentos son datos que se pasan a la funcin. Por ejemplo, mirar el comando len(). Si escribes slo len() por s sola, python le dir que necesita un argumento. Es decir, desea len() de algo, derecho? Por ejemplo, a continuacin, podr escribir len(myList) y obtendr la longitud de myList. Pues bien, myList es un argumento que se pasa a la funcin len(). La funcin de len() est definida de tal manera que sabe qu hacer con lo que se pasa a la misma. Mismo como hicimos aqu. El nombre de "myValue" puede ser cualquier cosa, y que se utilizar slo dentro de la funcin. Es ms que un nombre que usted da al argumento de manera que pueda hacer algo con ella, pero tambin sirve para que la funcin sepa cuntos argumentos a esperar. Por ejemplo, si haces esto:
printsqm(45,34)
Habr un error. Nuestra funcin fue programada para recibir slo un argumento, pero recibi dos, 45 y 34. En lugar de ello podramos hacer algo como esto:
Def sum(val1,val2): total = val1 + val2 retorno total Sum(45,34) myTotal = sum(45,34)
Hicimos una funcin que recibe dos argumentos, les sumas y devuelve ese valor. Volviendo algo es muy til, porque podemos hacer algo con el resultado, tal como se almacena en la variable myTotal. Por supuesto, ya que estamos en el intrprete y todo se imprime, haciendo:
Sum(45,34)
se imprimir el resultado en la pantalla, pero fuera del intrprete, ya que existe el comando de impresin no ms dentro de la funcin, nada que aparecen en la pantalla. Tendra que hacer:
impresin sum(45,34)
Mdulos
Ahora que tenemos una buena idea de cmo funciona el Pitn, necesitaremos una ltima cosa: cmo trabajar con archivos y mdulos. Hasta ahora, escribimos python instrucciones lnea por lnea en el intrprete, derecho? Qu sucede si podramos escribir varias lneas juntos y tenerlos ejecutado todos a la vez? Sin duda sera practico para hacer las cosas ms complejas. Y podramos ahorrar nuestro trabajo demasiado. Pues bien, tambin es extremadamente fcil. Simplemente abra un editor de texto (como el Bloc de notas de windows) y escribir todos tus python lneas, del mismo modo como escribirlos en el intrprete, con muescas, etc.. A continuacin, guarde ese archivo en algn lugar, preferiblemente con una extensin de .py. Eso es todo, tiene un programa completo de python. Por supuesto, hay editores mucho mejores que el Bloc de notas, pero es slo para mostrarle que un programa de python es nada ms que un archivo de texto. Para hacer python ejecuta ese programa, hay cientos de maneras. En ventanas, simplemente pulse el botn derecho de su archivo, bralo con python y ejecutarlo. Pero tambin puede ejecutarla desde el intrprete de python por s mismo. Para ello, el intrprete debe saber donde est su programa .py. En FreeCAD, la forma ms sencilla es colocar su programa en un lugar que intrprete de python de FreeCAD sabe de forma predeterminada, tales como la carpeta bin del FreeCAD, o cualquiera de las carpetas mod. Supongamos que escribimos un archivo como esta:
Def sum(a,b): devolver un + b imprimir "cargado de test.py correctamente"
y guardamos como test.py en nuestro directorio FreeCAD/bin. Ahora, veamos iniciar FreeCAD y en la ventana de intrprete, escribir:
prueba de importacin
sin la extensin .py. Esto simplemente ejecutar el contenido del archivo, lnea por lnea, como si nos habamos escrito en el intrprete. Se crear la funcin suma, y el mensaje se imprimir. Hay una gran diferencia: el comando de importacin se realiza no slo para ejecutar programas escritos en los archivos,
como el nuestro, sino tambin para cargar las funciones en su interior, para que estn disponibles en el intrprete. Archivos que contienen funciones, como la nuestra, se denominan mdulos. Normalmente cuando escribimos una funcin sum() en el intrprete, ejecutarlo simplemente como ste:
Sum(14,45)
Como se hizo anteriormente. Cuando importa un mdulo que contiene nuestra funcin sum(), la sintaxis es un poco diferente. Hacemos:
Test.Sum(14,45)
Es decir, el mdulo se importa como un "contenedor", y todas sus funciones estn dentro. Esto es muy til, porque podemos importar un montn de mdulos y mantenerlo todo bien organizado. Por lo tanto, bsicamente, en todo el mundo ver something.somethingElse, con un entre puntos, lo que significa somethingElse est dentro de algo. Tambin podemos tirar de la parte de la prueba y importar nuestra funcin sum() directamente en el espacio principal intrprete, como este:
de importacin de prueba * Sum(12,54)
Bsicamente todos los mdulos se comportan como ese. Importar un mdulo y, a continuacin, puede utilizar sus funciones como ste: module.function(argument). Casi todos los mdulos de hacen: definir funciones, tipos de datos nuevos y clases que se pueden utilizar en el intrprete o en sus propios mdulos de python, porque nada le impide que importar mdulos dentro de su mdulo! Una ltima cosa sumamente til. Cmo sabemos lo que tenemos los mdulos, cules son las funciones dentro de y cmo utilizarlas (es decir, qu tipo de argumentos que necesitan)? Ya vimos python tiene una funcin de help(). Haciendo:
Help() mdulos
Nos dar una lista de todos los mdulos disponibles. Ahora podemos escribir q para salir de la ayuda interactiva y importar cualquiera de ellos. Incluso nos podemos examinar su contenido con el comando dir()
matemticas de importacin Dir(Math)
Vamos a ver todas las funciones contenidas en el mdulo de matemticas, as como material extrao llamado __doc__, __file__, __name__. El __doc__ es
extremadamente til, se trata de un texto de documentacin. Cada funcin de mdulos (decollete) tiene un __doc__ que explica cmo utilizarlo. Por ejemplo, vemos que hay una funcin de pecado en lado el mdulo de matemticas. Quieres saber cmo usarlo?
impresin math.sin.__doc__
y leer a Conceptos bsicos de secuencias de comandos de FreeCAD... Por supuesto, vimos aqu slo una parte muy pequea del mundo python. Hay muchos conceptos importantes que no mencionamos aqu. Hay dos python muy importantes documentos de referencia en la red:
la el
Si no est familiarizado con python, recomendamos que usted busque para tutoriales en internet y echar un vistazo rpido a su estructura. Python es un lenguaje muy fcil para aprender, sobre todo porque se puede ejecutar dentro de un intrprete, donde desde comandos simples para completar los programas se pueden ejecutar sobre la marcha, sin la necesidad de compilar nada. FreeCAD tiene un intrprete de python incorporada.
El intrprete
Desde el intrprete, puede acceder a todos los mdulos de sus sistema instalado python, as como los mdulos integrados de FreeCAD y todos los mdulos adicionales de FreeCAD instal posteriormente. La captura de pantalla siguiente muestra la pitn intrprete:
Desde el intrprete, puede ejecutar cdigo python y navegar a travs de las clases disponibles y la funcin. FreeCAD proporciona un explorador de clase muy til para la exploracin de su nuevo mundo FreeCAD: cuando se escribe el nombre de una clase conocida seguida por un punto (lo que significa que desea agregar algo de esa clase), se clase navegador abre una ventana, donde puede navegar entre las subclases disponibles y los mtodos. Cuando se selecciona algo, se muestra un texto de ayuda asociado (si existe
Por lo tanto, inicie aqu escribiendo aplics o Gui. a ver qu pasa. Otro modo ms genrico de python de explorar el contenido de los mdulos y las clases es utilizar el comando de impresin dir(). Por ejemplo, si escribe Imprimir dir() enumerar todos los mdulos cargados actualmente en FreeCAD. dir(App) de impresin le mostrar todo dentro del mdulo de la aplicacin, etc.. Otra caracterstica til del intrprete es la posibilidad de volver atrs en el historial de comandos y recuperar una lnea de cdigo ya escrito anteriormente. Para navegar en la historia de comando, utilice CTRL + arriba o CTRL + abajo. Haciendo clic derecho en la ventana de intrprete, usted tambin tiene varias otras opciones, tales como copia toda la historia (til para experimentar algo aqu y, a continuacin, realizar una secuencia de comandos completa de la misma) o inserta el nombre de archivo con la ruta de acceso completa.
Ayuda de Python
En el men de ayuda de FreeCAD, usted encontrar una entrada con la etiqueta "Python ayudar a", que se abrir una ventana del explorador que contiene una documentacin completa, generado en tiempo real de todos los mdulos de python disponibles para el intrprete de FreeCAD, incluyendo python y mdulos integrados de FreeCAD, mdulos de sistema instalado y mdulos adicionales de FreeCAD. La documentacin disponible all depende de cunto esfuerzo cada desarrollador de mdulo poner en documentar su cdigo, pero generalmente mdulo de python tienen la reputacin de ser bastante bien documentado. La ventana de FreeCAD debe permanecer abierta para este sistema de documentacin trabajar.
Mdulos integrados
Dado que FreeCAD est diseado para ejecutarse sin interfaz grfica de usuario, casi toda su funcionalidad est separada en dos grupos: funcionalidad principal, llamado APP y funcionalidad de Gui, llamado Gui. Por lo tanto, nuestros dos principales mdulos integrados de FreeCAD se llaman APP y Gui. Estos dos mdulos tambin pueden accederse desde secuencias de comandos de fuera del intrprete, por los respectivos nombres de FreeCAD y FreeCADGui.
En el mdulo de aplicacin, usted encontrar todo lo relacionado a la aplicacin en
s, como mtodos para la apertura o archivos de cierre y a los documentos, como la configuracin del documento activo o la lista de su contenido.
de la Gui, como los workbenches y sus barras de herramientas y, ms interesante, la representacin grfica de todos los contenidos de FreeCAD.
Listado de todo el contenido de los mdulos es tarea un poco contraproducente, ya que crecen muy rpido a lo largo de desarrollo de FreeCAD. Pero las dos exploracin herramientas proporcionadas (el explorador de clases y la ayuda de python) deberan proporcionarle, en cualquier momento, una documentacin completa y actualizada de estos mdulos.
myViewObject = Gui.ActiveDocument.getObject("ObjectName")
Introduccin
En primer lugar tiene que importar el mdulo de Mesh:
import Mesh
Despus de usted tiene acceso al mdulo de malla y la clase de malla que facilitar las funciones de la versin C++ Mesh-ncleo de FreeCAD.
Creacin y carga
Para crear un objeto de malla vaco slo utilice el constructor estndar:
mesh = Mesh.Mesh()
Qu formatos de archivo que se puede utilizar para crear una malla es notable aqu . O crearlo fuera de un conjunto de tringulos descrito por sus puntos de esquina:
planarMesh = [ # triangle 1 [-0.5000,-0.5000,0.0000],[0.5000,0.5000,0.0000],[0.5000,0.5000,0.0000], #triangle 2 [-0.5000,-0.5000,0.0000],[0.5000,-0.5000,0.0000], [0.5000,0.5000,0.0000], ] planarMeshObject = Mesh.Mesh(planarMesh)
El ncleo de la malla se encarga acerca de cmo crear una estructura de datos correcto topolgico por clasificacin puntos coincidentes y bordes juntos. Ms adelante se ver cmo puede probar y examinar los datos de la malla.
Modelado
Para crear geometras regulares que puede utilizar Python secuencia de comandos BuildRegularGeoms.py.
import BuildRegularGeoms
Esta secuencia de comandos proporciona mtodos para definir cuerpos de rotacin simple como elipsoides, esferas, cilindros, conos y toroides. Y tambin tiene un mtodo para crear un cubo simple. Para crear un toroide, por ejemplo, puede hacer lo siguiente:
t = BuildRegularGeoms.Toroid(8.0, thousands triangles m = Mesh.mesh(t) 2.0, 50) # list with several
Los dos primeros parmetros definen los radios del toroide y el tercer parmetro es un factor de sub-sampling para cuntos tringulos se crean. Cuanto mayor sea este valor la ms suave y cuanto menor sea el ms gruesa el cuerpo es. La clase de malla proporciona un conjunto de funciones booleanas que pueden utilizarse para fines de modelado. Proporciona la Unin, la interseccin y la diferencia de dos objetos de malla.
m1, m2 m3 = Mesh.mesh(m1) m3.unite(m2) m4 = Mesh.mesh(m1) m4.intersect(m2) m5 = Mesh.mesh(m1) m5.difference(m2) m6 = Mesh.mesh(m2) # are the input mesh objects # create a copy of m1 # union of m1 and m2, the result is stored in m3 # intersection of m1 and m2 # the difference of m1 and m2
m6.difference(m1) is different to m5
Por ltimo, un ejemplo completo que computa la interseccin entre una esfera y un cilindro que intersecta con la esfera.
import Mesh, BuildRegularGeoms sphere = Mesh.mesh( BuildRegularGeoms.Sphere(5.0, 50) ) cylinder = Mesh.mesh( BuildRegularGeoms.Cylinder(2.0, 10.0, True, 1.0, 50) ) diff = sphere diff.difference(cylinder) d = FreeCAD.newDocument() d.addObject("Mesh::Feature","Diff_Sphere_Cylinder").Mesh=diff d.recompute()
Introduccin
Nos aqu le explicar cmo controlar la Mdulo de parte directamente desde el intrprete de python FreeCAD, o desde cualquier secuencia de comandos externo. Asegrese de examinar el secuencias de comandos seccin y la Bsico de secuencias de comandos de FreeCAD pginas si necesita obtener ms informacin acerca de cmo funciona el pitn de secuencias de comandos en FreeCAD. Primero para utilizar la funcionalidad de mdulo de parte tiene que cargar el mdulo de parte en el intrprete: import Part
Diagrama de clase
Se trata de una visin UML acerca de las clases ms importantes del mdulo de parte de:
Geometra
Los objetos geomtric son el bloque de creacin de todos los objetos topolgicos:
GEOM Clase base de los objetos geomtricos LINE Una lnea recta en 3D, definida por el punto de partida y y punto de CIRCLE Crculo o segmento del crculo, definido por un punto central y el inicio y el
punto final
...... y pronto algunas ms;-)
Topologa
Los siguientes tipos de datos topolgicos estn disponibles:
Compuestos Un grupo de cualquier tipo de objeto topolgico. COMPSOLID A compuesto slido es un conjunto de slidos conectados por sus
o cerrado.
FACE En 2D es parte de un plano; en 3D es parte de una superficie. Su geometra
WIRE A conjunto de bordes conectados por sus vrtices. Puede ser un contorno
dimensin.
SHAPE Un trmino genrico que abarca todo lo anterior.
p=Vector(0,0,0) y d=Vector(0,0,1)
makePolygon(list)--crear un polgono de una lista de puntos makeSphere(radius,[p,d,angle1,angle2,angle3])--crear una esfera con un radio
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
vrtice es un punto creado en x = 1, y = 0, z = 0 dado un objeto de vrtice, usted puede encontrar su ubicacin como este:
>>> vertex.Point Vector (1, 0, 0) Cmo crear un borde?
Nota: No se puede crear un borde, pasando dos vrtices. Usted puede encontrar la longitud y el centro de un borde como este:
>>> edge.Length 10.0 >>> edge.CenterOfMass Vector (5, 0, 0) Cmo crear un cable?
Un alambre puede crearse desde una lista de los bordes o incluso una lista de hilos:
>>> >>> >>> >>> >>> >>> >>> >>> edge1 = Part.makeLine((0,0,0), (10,0,0)) edge2 = Part.makeLine((10,0,0), (10,10,0)) wire1 = Part.Wire([edge1,edge2]) edge3 = Part.makeLine((10,10,0), (0,10,0)) edge4 = Part.makeLine((0,10,0), (0,0,0)) wire2 = Part.Wire([edge3,edge4]) wire3 = Part.Wire([wire1,wire2]) wire3.Edges
[<Edge object at 016695F8>, <Edge object at 0197AED8>, <Edge object at 01828B20>, <Edge object at 0190A788>] >>> Part.show(wire3)
Slo los rostros creados a partir de cables cerrados ser vlidos. En este ejemplo, wire3 es un alambre cerrado pero wire2 no es un alambre cerrado (vase ms arriba)
>>> face = Part.Face(wire3) >>> face.Area 99.999999999999972 >>> face.CenterOfMass Vector (5, 5, 0) >>> face.Length 40.0 >>> face.isValid() True >>> sface = Part.Face(wire2) >>> face.isValid() False
crculo = Part.makeCircle(radius,[center,dir_normal,angle1,angle2])--crear un crculo con un radio determinado Por defecto, center=Vector(0,0,0), dir_normal=Vector(0,0,1), ngulo1 = 0 y ngulo2 = 360. Se puede crear simplemente como un crculo como esto:
>>> circle = Part.makeCircle(10) >>> circle.Curve Circle (Radius : 10, Position : (0, 0, 0), Direction : (0, 0, 1))
ccircle se crear a distancia 10 de origen en x y estar mirando hacia el eje x. Nota: makeCircle slo acepta Base.Vector() de posicin y normal, pero no de tuplas. Tambin puede crear parte del crculo dando el ngulo del comienzo y ngulo de final como:
>>> from math import pi >>> arc1 = Part.makeCircle(10, Base.Vector(0,0,0), Base.Vector(0,0,1), 0, 180) >>> arc2 = Part.makeCircle(10, Base.Vector(0,0,0), Base.Vector(0,0,1), 180, 360)
Arc1 y arc2 conjuntamente harn un crculo. Deben ser los ngulos siempre en grados, si tienes radianes simplemente conversin mediante la frmula: grados = radianes * 180/PI o utilizando el mdulo de matemticas de python (despus de hacer matemticas de importacin, por supuesto): grados = math.degrees(radians)
Cmo crear un arco a lo largo de puntos?
Lamentablemente no existe ninguna funcin de makeArc, pero tenemos la funcin Part.Arc para crear un arco a lo largo de tres puntos. Bsicamente puede suponerse como un arco unindose a punto de inicio y el punto final a lo largo del punto medio. Part.Arc crea un objeto de arco en que .toShape() tiene que ser llamado para obtener el objeto de borde, que generalmente es producida por makeLine o makeCircle
>>> arc Part.Arc(Base.Vector(0,0,0),Base.Vector(0,5,0),Base.Vector(5,5,0)) >>> arc <Arc object> >>> arc_edge = arc.toShape() =
Nota: Arco slo acepta Base.Vector() de puntos pero no de tuplas. arc_edge es lo que queremos que nos podemos mostrar utilizando Part.show(arc_edge). Si desea que una pequea porcin de un crculo como un arco, es posible tambin:
>>> from math import pi >>> circle = Part.Circle(Base.Vector(0,0,0),Base.Vector(0,0,1),10) >>> arc = Part.Arc(c,0,pi) Cmo crear un polgono o una lnea a lo largo de puntos?
Una lnea a lo largo de mltiples puntos no es nada, pero la creacin de un alambre con mltiples aristas. funcin makePolygon toma una lista de puntos y crea un alambre a lo largo de estos puntos:
>>> lshape_wire = Part.makePolygon([Base.Vector(0,5,0),Base.Vector(0,0,0),Base.Vector(5, 0,0)]) Cmo crear un plano?
Plano es una superficie plana, lo que significa una cara en 2D makePlane(length,width,[start_pnt,dir_normal])--crear un plano por defecto start_pnt=Vector(0,0,0) y dir_normal=Vector(0,0,1). dir_normal=Vector(0,0,1), se crear el eje z opuestas de plano. dir_normal=Vector(1,0,0) crear la cara de plano eje x:
>>> plane = Part.makePlane(2,2) >>> plane <Face object at 028AF990> >>> plane = Part.makePlane(2,2, Base.Vector(0,1,0)) >>> plane.BoundBox BoundBox (3, 0, 0, 5, 0, 2)
Base.Vector(3,0,0),
BoundBox es un paraleleppedo que encierra el plano con una diagonal, empezando en (3,0,0) y terminando en (5,0,2). Aqu el espesor de BoundBox en el eje y es cero. Nota: makePlane slo acepta Base.Vector() para start_pnt y dir_normal pero no de tuplas
Cmo crear una elipse?
Crea una elipse con radio mayor 2 y radio menor 1 con el centro en (0,0,0)
Part.Ellipse(Ellipse)
Crea una elipse centrada en el centro de punto, donde el plano de la elipse se define por el centro, S1 y S2, su eje principal se define por el centro y S1, su radio mayor es la distancia entre el centro y S1 y su radio menor es la distancia entre S2 y el eje principal.
Part.Ellipse(Center,MajorRadius,MinorRadius)
Crea una elipse con radios mayores y menores, MajorRadius y MinorRadius y localizado en el plano definido por el centro y la normal (0,0,1)
>>> eli = Part.Ellipse(Base.Vector(10,0,0),Base.Vector(0,5,0),Base.Vector(0,0,0) ) >>> Part.show(eli.toShape())
En el cdigo anterior hemos aprobado S1, S2 y centro. De forma similar a arco, Ellipse tambin crea un objeto elipse pero no edge, as que necesitamos convertirlo en arista a travs de toShape() para mostrar Nota: Arco slo acepta Base.Vector() de puntos pero no de tuplas
>>> eli = Part.Ellipse(Base.Vector(0,0,0),10,5) >>> Part.show(eli.toShape())
makeTorus(radius1,radius2,[pnt,dir,angle1,angle2,angle])--crear un toro con un dado de radios y ngulos. Por defecto puntos = vector (0,0,0), dir = vector (0,0,1), ngulo1 = 0, ngulo1 = 360 y ngulo = 360 considere la posibilidad de un toro como pequeo crculo barrer a lo largo de un gran crculo: radius1 es el radio de cirlce grande, radius2 es el radio de un crculo pequeo, puntos es el centro del Toro y dir es la direccin normal. ngulo1 y ngulo2 son los ngulos en radianes para el pequeo crculo, para crear un arco que el ltimo ngulo de parmetro es hacer una seccin de un toro:
>>> torus = Part.makeTorus(10, 2)
El cdigo anterior crear un toro con 20(radius 10) de dimetro y espesor 4 (cirlce pequeo radio 2)
>>> tor=Part.makeTorus(10,5,Base.Vector(0,0,0),Base.Vector(0,0,1),0,180)
El cdigo anterior, crear un toro de semi, slo el ltimo parmetro es cambiado, es decir, el ngulo y ngulos restantes son valores predeterminados. Dando el ngulo 180 crear un toro de 0 a 180, es decir, medio
Cmo hacer un cuadro o un paraleleppedo?
makeBox(length,width,height,[pnt,dir])--crear una casilla ubicada en puntos con las dimensiones (longitud, anchura y altura) Por defecto pnt=Vector(0,0,0) y dir=Vector(0,0,1)
>>> box = Part.makeBox(10,10,10) >>> len(box.Vertexes) 8 Cmo hacer una esfera?
makeSphere (radio, [puntos, dir, ngulo1, ngulo2, ngulo3])--crear una esfera con un radio determinado. Por defecto pnt=Vector(0,0,0), dir=Vector(0,0,1), ngulo1 =-90, ngulo2 = 90 y ngulo3 = 360. ngulo1 y ngulo2 son la vertical mnima y mxima de la esfera, ngulo3 es el dimetro de la esfera propia
>>> sphere = Part.makeSphere(10) >>> hemisphere Part.makeSphere(10,Base.Vector(0,0,0),Base.Vector(0,0,1),-90,90,180) Cmo hacer una bomba?
makeCylinder(radius,height,[pnt,dir,angle])--crear un cilindro con un radio determinado y altura Por defecto pnt=Vector(0,0,0),dir=Vector(0,0,1) y ngulo = 360
>>> cylinder = Part.makeCylinder(5,20) >>> partCylinder Part.makeCylinder(5,20,Base.Vector(20,0,0),Base.Vector(0,0,1),180)
makeCone(radius1,radius2,height,[pnt,dir,angle])--crear un cono con dado radios y altura Por pnt=Vector(0,0,0) de forma predeterminada, el dir=Vector(0,0,1) y el ngulo = 360
>>> cone = Part.makeCone(10,0,20) >>> semicone Part.makeCone(10,0,20,Base.Vector(20,0,0),Base.Vector(0,0,1),180)
Operaciones booleanas
Cmo cortar una forma de otros?
Cut(...)
Difference of this and a given topo shape. >>> cylinder Part.makeCylinder(3,10,Base.Vector(0,0,0),Base.Vector(1,0,0)) >>> sphere = Part.makeSphere(5,Base.Vector(5,0,0)) >>> diff = cylinder.cut(sphere) >>> diff.Solids [<Solid object at 018AB630>, <Solid object at 0D8CDE48>] >>> diff.ShapeType 'Compound' =
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)
FUSE(...)
Union of this and a given topo shape. >>> cylinder1 Part.makeCylinder(3,10,Base.Vector(0,0,0),Base.Vector(1,0,0)) =
>>> cylinder2 = Part.makeCylinder(3,10,Base.Vector(5,0,5),Base.Vector(0,0,1)) >>> fuse = cylinder1.fuse(cylinder2) >>> fuse.Solids [<Solid object at 0DA5B8A0>] Cmo a la seccin de un slido con dar forma?
Section(...)
Section of this with a given topo shape.
Playground:Section.PNG
Explorando formas
Fcilmente puede explorar la estructura de datos topolgicos:
import Part b = Part.makeBox(100,100,100) b.Wires w = b.Wires[0] w w.Wires w.Vertexes Part.show(w) w.Edges e = w.Edges[0] e.Vertexes v = e.Vertexes[0] v.Point
Escribiendo la lnea de arriba en el intrprete de python, obtendr una buena comprensin de la estructura de los objetos de la parte. Aqu nuestro comando makeBox() crea una forma slida. Este slido, como todos los de parte de slidos, contiene caras. Caras siempre contienen cables, que son listas de
aristas que bordean la cara. Cada cara tiene exactamente un alambre cerrado. En el cable, podemos mirar cada arista por separado y dentro de cada arista, podemos ver los vrtices. Bordes rectos tienen slo dos vrtices, obviamente. Parte vrtices son formas OCC, pero tienen un atributo de punto que devuelve un vector de FreeCAD agradable.
Ahora puede acceder a muchas de las propiedades del borde mediante el uso de la longitud como una posicin. Esto significa que si el borde es 100 mm durante mucho tiempo la posicin de inicio es 0 y la posicin final 100.
anEdge.tangentAt(0.0) # tangent direction at the beginning anEdge.valueAt(0.0) # Point at the beginning anEdge.valueAt(100.0) # Point at the end of the edge anEdge.derivative1At(50.0) # first derivative of the curve in middle anEdge.derivative2At(50.0) # second derivative of the curve in middle anEdge.derivative3At(50.0) # third derivative of the curve in middle anEdge.centerOfCurvatureAt(50) # center of the curvature for position anEdge.curvatureAt(50.0) # the curvature anEdge.normalAt(50) # normal vector at that position defined)
(if
Mediante la seleccin
Aqu vemos ahora cmo podemos utilizar la seleccin del usuario lo hizo en el visor. En primer lugar creamos un cuadro y lo muestra en el Visor
import Part Part.show(Part.makeBox(100,100,100)) Gui.SendMsgToActiveView("ViewFit")
Seleccione ahora algunas caras o bordes. Con esta secuencia de comandos puede recorrer en iteracin de todos los objetos seleccionados y sus elementos de sub:
for o in Gui.Selection.getSelectionEx(): print o.ObjectName for s in o.SubElementNames: print "name: ",s for s in o.SubObjects: print "object: ",s
Ejemplos
Creacin de topologa simple
Ahora crearemos una topologa construyendo fuera de la geometra ms simple. Como un estudio de caso utilizamos una parte como se ve en la imagen que consta de cuatro vrtices, dos crculos y dos lneas.
Creacin de geometra
En primer lugar tenemos que crear las distintas partes geomtricas de este hilo. Y tenemos que cuidar que los vrtices de las piezas geomtricas se encuentran en el mismo posicin. De lo contrario ms tarde no podamos conectar las piezas geomtricas con una topologa! Por lo que creamos en primer lugar los puntos:
from V1 = V2 = V3 = V4 = Arco FreeCAD import Base Base.Vector(0,10,0) Base.Vector(30,10,0) Base.Vector(30,-10,0) Base.Vector(0,-10,0)
Para crear un arco de crculo hacemos un ayudante punto y crear el arco de crculo a travs de tres puntos:
VC1 = Base.Vector(-10,0,0) C1 = Part.Arc(V1,VC1,V4) # and the second one VC2 = Base.Vector(40,0,0) C2 = Part.Arc(V2,VC2,V3) Lnea
El ltimo paso es colocar los elementos geomtricos de base juntos y hornear una forma topolgica:
S1 = Part.Shape([C1,C2,L1,L2]) Hacer un prisma
La botella OCC
Un ejemplo tpico se encuentra en la Pgina de inicio de OpenCasCade rpido es cmo construir una botella. Este es un buen ejercicio para FreeCAD demasiado. De hecho, usted puede seguir en nuestro siguiente ejemplo y la pgina de la OCC, simultneamente, entienda bien cmo se implementan las estructuras de la OCC en FreeCAD. La secuencia de comandos completa a continuacin tambin se incluye en la instalacin de FreeCAD (dentro de la carpeta de mod/Part) y puede ser llamado desde el intrprete de python escribiendo:
import Part import MakeBottle bottle = MakeBottle.makeBottle() Part.show(bottle) La secuencia de comandos completa
zMax = z faceToRemove = xp except: continue myBody = myBody.makeThickness([faceToRemove],-myThickness/50 , 1.e3) return myBody Explicacin detallada import Part, FreeCAD, math from FreeCAD import Base
Necesitamos, por supuesto, el mdulo de parte, sino tambin el mdulo de FreeCAD.Base, que contiene estructuras bsicas de FreeCAD como vectores y matrices.
def makeBottle(myWidth=50.0, myHeight=70.0, myThickness=30.0): aPnt1=Base.Vector(-myWidth/2.,0,0) aPnt2=Base.Vector(-myWidth/2.,-myThickness/4.,0) aPnt3=Base.Vector(0,-myThickness/2.,0) aPnt4=Base.Vector(myWidth/2.,-myThickness/4.,0) aPnt5=Base.Vector(myWidth/2.,0,0)
Aqu definimos nuestra funcin de makeBottle. Esta funcin puede ser llamada sin argumentos, como lo hicimos anteriormente, en los valores que caso predeterminado para anchura, altura, y se utilizar el espesor. A continuacin, definimos un par de puntos que se utilizar para la construccin de nuestro perfil base.
aArcOfCircle = Part.Arc(aPnt2,aPnt3,aPnt4) aSegment1=Part.Line(aPnt1,aPnt2) aSegment2=Part.Line(aPnt4,aPnt5)
Aqu definimos realmente la geometra: un arco, hecho de 3 puntos y dos de los segmentos de lnea, hecha de 2 puntos.
aEdge1=aSegment1.toShape() aEdge2=aArcOfCircle.toShape() aEdge3=aSegment2.toShape() aWire=Part.Wire([aEdge1,aEdge2,aEdge3])
Recuerde que la diferencia entre la geometra y las formas? Aqu construimos las formas fuera de nuestra geometra de construccin. 3 los bordes (bordes pueden ser rectos o curvos) y, a continuacin, un cable hecho de esos tres aristas.
aTrsf=Base.Matrix() aTrsf.rotateZ(math.pi) # rotate around the z-axis aMirroredWire=aWire.transformGeometry(aTrsf) myWireProfile=Part.Wire([aWire,aMirroredWire])
Hasta ahora hemos construido un perfil de slo la mitad. Es ms fcil que edificio todo el perfil del mismo modo, slo podemos espejo de lo que hicimos y pegue ambas partes juntos. Por lo que primero creamos una matriz. Una matriz es una manera muy comn para aplicar transformaciones a objetos en el mundo 3D, ya que puede contener en una estructura de todas las transformaciones bsicas que pueden sufrir los objetos 3D (mover, rotar y escalar). Aqu, despus de que creamos la matriz, nos reflejarlo, y creamos una copia de nuestro hilo con la matriz de transformacin aplicada. Ahora tenemos dos cables, y nos puede hacer un tercer cable fuera de ellos, ya que son de cables realmente listas de aristas.
myFaceProfile=Part.Face(myWireProfile) aPrismVec=Base.Vector(0,0,myHeight) myBody=myFaceProfile.extrude(aPrismVec) myBody=myBody.makeFillet(myThickness/12.0,myBody.Edges)
Ahora que tenemos un alambre cerrado, puede transformarse en una cara. Una vez que tenemos una cara, nos podemos extrusin. Al hacerlo, realmente hicimos un slido. A continuacin, aplicamos un filete poco agradable a nuestro objeto porque nos interesa un buen diseo, no nosotros?
neckLocation=Base.Vector(0,0,myHeight) neckNormal=Base.Vector(0,0,1) myNeckRadius = myThickness / 4. myNeckHeight = myHeight / 10 myNeck Part.makeCylinder(myNeckRadius,myNeckHeight,neckLocation,neckNormal)
Entonces, el cuerpo de nuestra botella est fabricado, todava tenemos que crear un cuello. Por lo tanto, hacemos un nuevo slido, con un cilindro.
myBody = myBody.fuse(myNeck)
La operacin de fusibles, que, en otras aplicaciones, a veces se llama a la Unin, es muy poderosa. Encargar de pegar lo que necesita para ser pegada y quitar partes que deben eliminarse.
return myBody
A continuacin, volvemos nuestra parte slida como resultado de nuestra funcin. Ese elemento slido, como cualquier otra forma parte, puede ser atribuido a un objeto en un documento de FreeCAD, con:
myObject FreeCAD.ActiveDocument.addObject("Part::Feature","myObject") myObject.Shape = bottle =
o, ms simple:
Part.show(bottle)
Cargar y guardar
Hay varias maneras de guardar su trabajo en el mdulo de parte. Por supuesto puede guardar el documento de FreeCAD, pero tambin puede guardar objetos de parte directamente a los formatos CAD comunes, tales como BREP, IGS, STEP y STL. Guardar una forma en un archivo es fcil. Hay disponibles de mtodos exportBrep(), exportIges(), exportStl() y exportStep() para todos los objetos de forma. Por lo tanto, haciendo:
import Part s = Part.makeBox(0,0,0,10,10,10) s.exportStep("test.stp")
Esto ahorra nuestro cuadro en un archivo STEP. Para cargar un archivo BREP, IGES o STEP, simplemente lo contrario:
import Part s = Part.Shape() s.read("test.stp")
Tenga en cuenta que importar o abrir archivos BREP, IGES o STEP tambin puede hacerse directamente desde el archivo - > Abrir o archivo - > men Importar. En este momento exportar es todava no es posible de esa manera, pero debera estar ah pronto.
< anterior: secuencias de comandos de malla siguiente: malla a la parte > ndice
A veces la triangulacin de ciertas caras ofrecidas por OpenCascade es bastante fea. Si la cara tiene un espacio rectangular de parmetro y no contiene ningn agujeros o otras curvas de recorte tambin puede crear una malla por cuenta propia:
import Mesh def makeMeshFromFace(u,v,face): (a,b,c,d)=face.ParameterRange pts=[] for j in range(v): for i in range(u): s=1.0/(u-1)*(i*b+(u-1-i)*a) t=1.0/(v-1)*(j*d+(v-1-j)*c) pts.append(face.valueAt(s,t)) mesh=Mesh.Mesh() for j in range(v-1): for i in range(u-1): mesh.addFacet(pts[u*j+i],pts[u*j+i+1],pts[u*(j+1)+i]) mesh.addFacet(pts[u*(j+1)+i],pts[u*j+i+1],pts[u*(j+1)+i+1]) return mesh
import Mesh,Part mesh = Mesh.createTorus() shape = Part.Shape() shape.makeShapeFromMesh(mesh.Topology,0.05) # the second arg is the tolerance for sewing solid = Part.makeSolid(shape) Part.show(solid)
El segundo mtodo ofrece la posibilidad de considerar facetas de malla coplanares cuando el ngulo entre ellas es en virtud de un determinado valor. Esto permite construir mucho las formas ms simples:
# let's assume our document contains one Mesh object import Mesh,Part,MeshPart faces = [] mesh = App.ActiveDocument.ActiveObject.Mesh segments = mesh.getPlanes(0.00001) # use rather strict tolerance here for i in segments: if len(i) > 0: # a segment can have inner holes wires = MeshPart.wireFromSegment(mesh, i) # we assume that the exterior boundary is that one with the biggest bounding box if len(wires) > 0: ext=None max_length=0 for i in wires: if i.BoundBox.DiagonalLength > max_length: max_length = i.BoundBox.DiagonalLength ext = i wires.remove(ext) # all interior wires mark a orientation, otherwise Part.Face fails for i in wires: i.reverse()
hole
and
must
reverse
their
# make sure that the exterior wires comes as first in the lsit wires.insert(0, ext) faces.append(Part.Face(wires)) shell=Part.Compound(faces) Part.show(shell) #solid = Part.Solid(Part.Shell(faces)) #Part.show(solid)
FreeCAD es bsicamente un collage de diferentes bibliotecas potentes, siendo los ms importantes openCascade , para la gestin y construccin de
geometra, Coin3d para mostrar la geometra, y Qt para poner todo esto en una interfaz grfica de usuario agradable. La geometra que aparece en las vistas 3D de FreeCAD son prestados por la biblioteca de Coin3D. Coin3D es una implementacin de la OpenInventor estndar. El software de openCascade tambin proporciona la misma funcionalidad, pero se decidi, en los inicios de FreeCAD, no para utilizar el Visor de openCascade integrada y ms bien cambiar al ms alto rendimiento coin3D software. OpenInventor es realmente un lenguaje de descripcin de la escena 3D. La escena que se describe en openInventor, a continuacin, se procesa en OpenGL en la pantalla. Coin3D se encarga de hacerlo, por lo que el programador no es necesario hacer frente a llamadas de openGL complejas, slo tiene que le proporcione cdigo vlido de OpenInventor. La gran ventaja es que openInventor es un estndar muy conocida y est bien documentado. Uno de los grandes trabajos que FreeCAD se hace por usted es bsicamente traducir informacin de geometra de openCascade en lengua openInventor. OpenInventor describe una escena 3D en forma de un scenegraph , como el siguiente:
de imagen de Mentor de inventor Un scenegraph openInventor describe todo lo que hace parte de una escena 3D, tales como la geometra, colores, materiales, luces, etc. y todo lo que organiza los datos en una estructura clara y cmoda. Todo se puede agrupar en subestructuras, lo que permite organizar el contenido de su escena bastante la manera que desee. Aqu hay un ejemplo de un archivo openInventor
#Inventor V2.0 ascii Separator { RotationXYZ { axis Z angle 0 } Transform { translation 0 0 0.5 } Separator {
Material { diffuseColor 0.05 0.05 0.05 } Transform { rotation 1 0 0 1.5708 scaleFactor 0.2 0.5 0.2 } Cylinder { } } }
Como puede ver, la estructura es muy simple. Utilice separadores para organizar los datos en bloques, un poco como sera organizar sus archivos en carpetas. Cada instruccin afecta a lo que viene a continuacin, por ejemplo los dos primeros elementos de nuestro separador de raz son una rotacin y una traduccin, ambos afectar el elemento siguiente, que es un separador. En ese separador, se define un material y transformacin otro. Por lo tanto, nuestro cilindro se vern afectado por ambas transformaciones, quien fue aplicada directamente y uno de los que se aplic a la separacin de su padre. Tambin contamos con muchos otros tipos de elementos para organizar nuestra escena, tales como grupos, switches o anotaciones. Podemos definir materiales muy complejos para nuestros objetos, con colores, texturas, modos de sombreado y transparencia. Tambin podemos definir incluso de movimiento, cmaras y luces. Incluso es posible incrustar piezas de secuencias de comandos en archivos de openInventor, para definir comportamientos ms complejos. Si ests interesado en aprender ms sobre openInventor, la cabeza directamente a su referencia ms famoso, el Mentor de inventor . En FreeCAD, normalmente, no necesitamos interactuar directamente con el scenegraph de openInventor. Todos los objetos en un documento de FreeCAD, siendo una malla, una forma de parte o cualquier otra cosa, obtiene automticamente convierte en cdigo de openInventor y insertado en el principal scenegraph que puede ver en una vista 3D. Ese scenegraph se actualiza continuamente cuando usted hacer modificaciones, aadir o eliminar objetos al documento. De hecho, cada objeto (en el espacio de la APP) tiene un proveedor de vista (un objeto correspondiente en el espacio de Gui), responsable de la emisin de cdigo openInventor.
Pero hay muchas ventajas para poder acceder directamente a la scenegraph. Por ejemplo, podemos cambiar temporalmente la aparicin de un objeto, o podemos aadir objetos a la escena que no tienen existencia real en el documento FreeCAD, tales como la geometra de construccin, ayudantes, sugerencias de grficas o herramientas tales como manipuladores o en pantalla informacin. FreeCAD s cuenta con varias herramientas para ver o modificar el cdigo de openInventor. Por ejemplo, el siguiente cdigo python mostrar la representacin openInventor de un objeto seleccionado:
obj = FreeCAD.ActiveDocument.ActiveObject viewprovider = obj.ViewObject print viewprovider.toString()
, Pero tambin contamos con un mdulo de python que permite el acceso completo a cualquier cosa administrado por Coin3D, tales como nuestro scenegraph FreeCAD. Por lo tanto, siga leyendo para Pivy .
Pivy es una biblioteca de enlace de python para Coin3d , usada por la biblioteca de procesamiento de 3D de FreeCAD. Cuando se importan en un intrprete de python ejecutndose, permite a dilogo directamente con cualquier ejecucin Coin3d scenegraphs , tales como las vistas 3D de FreeCAD, o incluso crear otros nuevos. Pivy se incluye en la instalacin estndar de FreeCAD. The coin library is divided into several pieces, coin itself, for manipulating scenegraphs and bindings for several GUI systems, such as windows or, like in our case, qt. Those modules are available to pivy too, depending if they are present on the system. The coin module is always present, and it is what we will use anyway, since we won't need to care about anchoring our 3D display in any interface, it is already done by FreeCAD itself. All we need to do is this:
from pivy import coin
print sg
Some of those nodes, such as SoSeparators or SoGroups, can have children themselves. The complete list of the available coin objects can be found in the official coin documentation. Probemos a aadir algo a nuestra scenegraph ahora. Agregaremos un cubo rojo agradable:
col = coin.SoBaseColor() col.rgb=(1,0,0) cub = coin.SoCube() myCustomNode = coin.SoSeparator() myCustomNode.addChild(col) myCustomNode.addChild(cub) sg.addChild(myCustomNode)
Ver? todo es an accesible y modificable sobre la marcha. Sin necesidad de volver a calcular o repintado de nada, moneda se encarga de todo. Puede aadir cosas a tu scenegraph, cambiar las propiedades, ocultar cosas, mostrar objetos temporales, cualquier cosa. Por supuesto, esto solo afecta a la visualizacin en la vista 3D. Esa pantalla obtiene recalculada por FreeCAD en el archivo abierto, y cuando un objeto debe reclculo de al. Por lo tanto, si cambia el aspecto de un objeto existente de FreeCAD, esos cambios se perdern si el objeto se obtiene recalculado o cuando se vuelve a abrir el archivo. Es una clave para trabajar con scenegraphs en las secuencias de comandos poder tener acceso a determinadas propiedades de los nodos que agreg cuando sea necesario. Por ejemplo, si queramos mover nuestro cubo, nos habra aadido un nodo de SoTranslation a nuestro nodo personalizado, y habra pareca como este:
col = coin.SoBaseColor() col.rgb=(1,0,0) trans = coin.SoTranslation() trans.translation.setValue([0,0,0]) cub = coin.SoCube()
Recuerde que, en un scenegraph de openInventor, el orden es importante. Un nodo afecta lo que viene a continuacin, por lo que se puede decir algo como: color rojo, cubo, color amarillo, esfera y obtendr un cubo rojo y una esfera amarilla. Si aadimos la traduccin ahora a nuestro nodo personalizado existente, sera venir despus del cubo y no lo afectan. Si nos hubiramos insertado al crearlo, como aqu arriba, podemos ahora hacer:
trans.translation.setValue([2,0,0])
Y nuestro cubo saltara 2 unidades a la derecha. Por ltimo, eliminando algo se hace con:
sg.removeChild(myCustomNode)
La devolucin de llamada debe iniciarse desde un objeto, porque ese objeto todava debe ejecutarse cuando se producir la devolucin de llamada. Vase tambin una lista completa de posibles eventos y sus parmetros, o el documentacin de moneda oficial .
Documentacin
Por desgracia pivy s mismo todava no tiene una documentacin adecuada, pero dado que es una traduccin exacta de la moneda, con seguridad puede utilizar la documentacin de la moneda como referencia y utilizar el estilo de python en lugar de c ++ estilo (por ejemplo SoFile::getClassTypeId() en pivy sera SoFile.getClassId()) PyQt es un mdulo de python que permite que las aplicaciones crear, acceder y modificar python Qt aplicaciones de . Usted puede utilizarlo por ejemplo para crear sus propios programas de Qt en python, o para obtener acceso y modificar la interfaz de una aplicacin que se ejecuta de qt, como FreeCAD. Utilizando el mdulo PyQt desde dentro de FreeCAD, usted tiene por lo tanto, un control total sobre su interfaz. Se puede por ejemplo:
Agregar sus propios paneles, widgets y barras de herramientas Agregar u ocultar elementos existentes de los paneles Cambio, redirigir o agregar las conexiones entre todos esos elementos
PyQt tiene una extensa Documentacin de la API , y hay muchos tutoriales en la red que le ensee cmo se obras. Si desea trabajar en la interfaz de FreeCAD, la primera cosa a hacer es crear una referencia a la ventana principal de FreeCAD:
import sys from PyQt4 import QtGui app = QtGui.qApp mw = app.activeWindow()
A continuacin, puede examinar por ejemplo a travs de todos los widgets de la interfaz:
for child in mw.children: print 'widget name = ', child.getObjectName(), ', widget type = ', child
Los widgets en una interfaz Qt generalmente estn anidados en widgets del "contenedores", por lo que los hijos de la ventana principal de nuestro propios pueden contener a otros nios. Dependiendo del tipo de widget, hay un montn
de cosas que puede hacer. Compruebe la documentacin de la API para ver lo que es posible. Agregar un nuevo widget, por ejemplo un dockWidget (que puede colocarse en uno de los laterales del FreeCAD) es fcil:
myWidget = QtGui.QDockWidget() mw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myWidget)
, Pero es un mtodo preferido crear un objeto de interfaz de usuario que har todo de la configuracin de tu widget a la vez. La gran ventaja es que puede ser un objeto de interfaz de usuario de tal cre grficamente con el programa de Qt Designer. Un objeto tpico generado por el diseador Qt es como esta:
class myWidget_Ui(object): def setupUi(self, myWidget): myWidget.setObjectName("my Nice New Widget") myWidget.resize(QtCore.QSize(QtCore.QRect(0,0,300,100).size()).expande dTo(myWidget.minimumSizeHint())) # sets size of the widget self.label = QtGui.QLabel(myWidget) # creates a label self.label.setGeometry(QtCore.QRect(50,50,200,24)) # sets its size self.label.setObjectName("label") # sets its name, so it can be found by name def retranslateUi(self, draftToolbar): # built-in QT function that manages translations of widgets myWidget.setWindowTitle(QtGui.QApplication.translate("myWidget", "My Widget", None, QtGui.QApplication.UnicodeUTF8)) self.label.setText(QtGui.QApplication.translate("myWidget", "Welcome to my new widget!", None, QtGui.QApplication.UnicodeUTF8))
Adems de los tipos de objeto estndar tales como anotaciones, mallas y partes de objetos, FreeCAD tambin ofrece la posibilidad de sorprendente para construir objetos 100% script python, llamados caractersticas de Python. Esos objetos se comportan exactamente como cualquier otro objeto de FreeCAD, puede ser guardados en un documento y abri en cualquier otra instalacin de FreeCAD, ya que el cdigo de python que define el objeto tambin se guarda en el documento. Caractersticas de Python siga la misma regla como todas las funciones de FreeCAD: estn separados en partes de la aplicacin y GUI. La parte de app, el objeto Document, define la geometra de nuestro objeto, mientras que su parte de GUI, el objeto de proveedor de la vista, define cmo se dibujarn el objeto en la pantalla. El objeto de proveedor de ver, como cualquier otra caracterstica de la FreeCAD, slo est disponible cuando se ejecuta FreeCAD en su propia interfaz grfica. Hay varias propiedades y mtodos disponibles para construir su objeto. Las propiedades deben ser de cualquiera de los tipos de propiedades predefinidos que ofrece el FreeCAD, y aparecer en la ventana de vista de la propiedad, por lo que pueden ser editados por el usuario. De esta forma, los objetos FeaturePython son verdaderamente y totalmente paramtricos. se pueden definir propiedades para el objeto y su ViewObject por separado.
Ejemplo bsico
En el siguiente ejemplo puede encontrarse en el src/Mod/TemplatePyMod/FeaturePython.py archivo, junto con varios otros ejemplos:
"Examples for a feature class and its view provider." import FreeCAD, FreeCADGui from pivy import coin class Box: def __init__(self, obj): "Add some custom properties to our box feature" obj.addProperty("App::PropertyLength","Length","Box","Length box").Length=1.0 of the
def onChanged(self, fp, prop): "Do something when a property has changed" FreeCAD.Console.PrintMessage("Change property: str(prop) + "\n")
"
def execute(self, fp): "Do something when doing a recomputation, this method is mandatory" FreeCAD.Console.PrintMessage("Recompute Python Box feature\n") class ViewProviderBox: def __init__(self, obj): "Set this object to the proxy object of the actual view provider" obj.addProperty("App::PropertyColor","Color","Box","Color box").Color=(1.0,0.0,0.0) obj.Proxy = self of the
def attach(self, obj): "Setup the scene sub-graph of the view provider, this method is mandatory" self.shaded = coin.SoGroup() self.wireframe = coin.SoGroup() self.scale = coin.SoScale() self.color = coin.SoBaseColor() data=coin.SoCube() self.shaded.addChild(self.scale) self.shaded.addChild(self.color) self.shaded.addChild(data) obj.addDisplayMode(self.shaded,"Shaded"); style=coin.SoDrawStyle() style.style = coin.SoDrawStyle.LINES self.wireframe.addChild(style) self.wireframe.addChild(self.scale) self.wireframe.addChild(self.color) self.wireframe.addChild(data) obj.addDisplayMode(self.wireframe,"Wireframe"); self.onChanged(obj,"Color") def updateData(self, fp, prop): "If a property of the handled feature has changed we have the chance to handle this here" # fp is the handled feature, prop is the name of the property that has changed l = fp.getPropertyByName("Length") w = fp.getPropertyByName("Width") h = fp.getPropertyByName("Height") self.scale.scaleFactor.setValue(l,w,h) pass
def getDisplayModes(self,obj): "Return a list of display modes." modes=[] modes.append("Shaded") modes.append("Wireframe") return modes def getDefaultDisplayMode(self): "Return the name of the default display mode. It must be defined in getDisplayModes." return "Shaded" def setDisplayMode(self,mode): "Map the display mode defined in attach with those defined in getDisplayModes. Since they have the same names nothing needs to be done. This method is optional" return mode def onChanged(self, vp, prop): "Here we can do something when a single property got changed" FreeCAD.Console.PrintMessage("Change property: str(prop) + "\n") if prop == "Color": c = vp.getPropertyByName("Color") self.color.rgb.setValue(c[0],c[1],c[2]) " +
def getIcon(self): "Return the icon in XMP format which will appear in the tree view. This method is optional and if not defined a default icon is shown." return """ /* XPM */ static const char * ViewProviderBox_xpm[] = { "16 16 6 1", " c None", ". c #141010", "+ c #615BD2", "@ c #C39D55", "# c #000000", "$ c #57C355", " ........", " ......++..+..", " .@@@@.++..++.", " .@@@@.++..++.", " .@@ .++++++.", " ..@@ .++..++.", "###@@@@ .++..++.", "##$.@@$#.++++++.", "#$#$.$$$........", "#$$####### ", "#$$#$$$$$# ",
def __getstate__(self): "When saving the document this object gets stored using Python's cPickle module. Since we have some un-pickable here -- the Coin stuff -- we must define this method to return a tuple of all pickable objects or None." return None def __setstate__(self,state): "When restoring the pickled object from document we have the chance to set some internals here. Since no data were pickled nothing needs to be done here." return None
Propiedades disponibles
Las propiedades son la verdadera creacin de piedras de objetos FeaturePython. A travs de ellos, el usuario podr interactuar y modificar su objeto. Despus de crear un nuevo objeto de FeaturePython en el documento (a=FreeCAD.ActiveDocument.addObject("App::FeaturePython","Box")), puede obtener una lista de las propiedades disponibles mediante la emisin de:
a.supportedProperties()
App::PropertyStringList App::PropertyLink App::PropertyLinkList App::PropertyMatrix App::PropertyVector App::PropertyVectorList App::PropertyPlacement App::PropertyPlacementLink App::PropertyColor App::PropertyColorList App::PropertyMaterial App::PropertyPath App::PropertyFile App::PropertyFileIncluded Part::PropertyPartShape Part::PropertyFilletContour Part::PropertyCircle
obj.addProperty("App::PropertyLength","Width","Octahedron","Width of the octahedron").Width=1.0 obj.addProperty("App::PropertyLength","Height","Octahedron", "Height of the octahedron").Height=1.0 obj.addProperty("Part::PropertyPartShape","Shape","Octahedron", of the octahedron") obj.Proxy = self "Shape
def execute(self, fp): # Define six vetices for the shape v1 = FreeCAD.Vector(0,0,0) v2 = FreeCAD.Vector(fp.Length,0,0) v3 = FreeCAD.Vector(0,fp.Width,0) v4 = FreeCAD.Vector(fp.Length,fp.Width,0) v5 = FreeCAD.Vector(fp.Length/2,fp.Width/2,fp.Height/2) v6 = FreeCAD.Vector(fp.Length/2,fp.Width/2,-fp.Height/2) # Make the wires/faces
f1 = self.make_face(v1,v2,v5) f2 = self.make_face(v2,v4,v5) f3 = self.make_face(v4,v3,v5) f4 = self.make_face(v3,v1,v5) f5 = self.make_face(v2,v1,v6) f6 = self.make_face(v4,v2,v6) f7 = self.make_face(v3,v4,v6) f8 = self.make_face(v1,v3,v6) shell=Part.makeShell([f1,f2,f3,f4,f5,f6,f7,f8]) solid=Part.makeSolid(shell) fp.Shape = solid # helper mehod to create the faces def make_face(self,v1,v2,v3): wire = Part.makePolygon([v1,v2,v3,v1]) face = Part.Face(wire) return face
A continuacin, contamos con el objeto de proveedor de vista, responsable para mostrar el objeto en la escena 3D:
class ViewProviderOctahedron: def __init__(self, obj): "Set this object to the proxy object of the actual view provider" obj.addProperty("App::PropertyColor","Color","Octahedron","Color the octahedron").Color=(1.0,0.0,0.0) obj.Proxy = self of
def attach(self, obj): "Setup the scene sub-graph of the view provider, this method is mandatory" self.shaded = coin.SoGroup() self.wireframe = coin.SoGroup() self.scale = coin.SoScale() self.color = coin.SoBaseColor() self.data=coin.SoCoordinate3() self.face=coin.SoIndexedLineSet() self.shaded.addChild(self.scale) self.shaded.addChild(self.color) self.shaded.addChild(self.data) self.shaded.addChild(self.face) obj.addDisplayMode(self.shaded,"Shaded"); style=coin.SoDrawStyle() style.style = coin.SoDrawStyle.LINES self.wireframe.addChild(style) self.wireframe.addChild(self.scale) self.wireframe.addChild(self.color) self.wireframe.addChild(self.data) self.wireframe.addChild(self.face)
obj.addDisplayMode(self.wireframe,"Wireframe"); self.onChanged(obj,"Color") def updateData(self, fp, prop): "If a property of the handled feature has changed we have the chance to handle this here" # fp is the handled feature, prop is the name of the property that has changed if prop == "Shape": s = fp.getPropertyByName("Shape") self.data.point.setNum(6) cnt=0 for i in s.Vertexes: self.data.point.set1Value(cnt,i.X,i.Y,i.Z) cnt=cnt+1 self.face.coordIndex.set1Value(0,0) self.face.coordIndex.set1Value(1,1) self.face.coordIndex.set1Value(2,2) self.face.coordIndex.set1Value(3,-1) self.face.coordIndex.set1Value(4,1) self.face.coordIndex.set1Value(5,3) self.face.coordIndex.set1Value(6,2) self.face.coordIndex.set1Value(7,-1) self.face.coordIndex.set1Value(8,3) self.face.coordIndex.set1Value(9,4) self.face.coordIndex.set1Value(10,2) self.face.coordIndex.set1Value(11,-1) self.face.coordIndex.set1Value(12,4) self.face.coordIndex.set1Value(13,0) self.face.coordIndex.set1Value(14,2) self.face.coordIndex.set1Value(15,-1) self.face.coordIndex.set1Value(16,1) self.face.coordIndex.set1Value(17,0) self.face.coordIndex.set1Value(18,5) self.face.coordIndex.set1Value(19,-1) self.face.coordIndex.set1Value(20,3) self.face.coordIndex.set1Value(21,1) self.face.coordIndex.set1Value(22,5) self.face.coordIndex.set1Value(23,-1) self.face.coordIndex.set1Value(24,4) self.face.coordIndex.set1Value(25,3) self.face.coordIndex.set1Value(26,5) self.face.coordIndex.set1Value(27,-1) self.face.coordIndex.set1Value(28,0) self.face.coordIndex.set1Value(29,4)
self.face.coordIndex.set1Value(30,5) self.face.coordIndex.set1Value(31,-1) def getDisplayModes(self,obj): "Return a list of display modes." modes=[] modes.append("Shaded") modes.append("Wireframe") return modes def getDefaultDisplayMode(self): "Return the name of the default display mode. It must be defined in getDisplayModes." return "Shaded" def setDisplayMode(self,mode): return mode def onChanged(self, vp, prop): "Here we can do something when a single property got changed" FreeCAD.Console.PrintMessage("Change property: " + str(prop) + "\n") if prop == "Color": c = vp.getPropertyByName("Color") self.color.rgb.setValue(c[0],c[1],c[2]) def getIcon(self): return """ /* XPM */ static const char * ViewProviderBox_xpm[] = { "16 16 6 1", " c None", ". c #141010", "+ c #615BD2", "@ c #C39D55", "# c #000000", "$ c #57C355", " ........", " ......++..+..", " .@@@@.++..++.", " .@@@@.++..++.", " .@@ .++++++.", " ..@@ .++..++.", "###@@@@ .++..++.", "##$.@@$#.++++++.", "#$#$.$$$........", "#$$####### ", "#$$#$$$$$# ", "#$$#$$$$$# ", "#$$#$$$$$# ", " #$#$$$$$# ", " ##$$$$$# ", " ####### "};
Por ltimo, una vez que nuestro objeto y su viewobject se definen, slo necesitamos a llamarlos:
FreeCAD.newDocument() a=FreeCAD.ActiveDocument.addObject("App::FeaturePython","Octahedron") Octahedron(a) ViewProviderOctahedron(a.ViewObject)
Simplemente, se crea un nodo de SoFCSelection, agregar los nodos de la geometra a la misma, luego que lo agregue a su nodo principal, en lugar de agregar los nodos de geometra directamente.
obj.addProperty("App::PropertyVector","p1","Line","Start point") obj.addProperty("App::PropertyVector","p2","Line","End point").p2=FreeCAD.Vector(1,0,0) obj.Proxy = self def execute(self, fp): "Print a short message when doing a recomputation, this method is mandatory" fp.Shape = Part.makeLine(fp.p1,fp.p2) a=FreeCAD.ActiveDocument.addObject("Part::FeaturePython","Line") Line(a) a.ViewObject.Proxy=0 # just set it to something different from None (this assignment is needed to run an internal notification)
FreeCAD tiene la habilidad increble para ser importables como un mdulo de python en otros programas o en una consola de python independiente, junto con todos sus mdulos y componentes. Incluso es posible importar la GUI de FreeCAD como mdulo de python--con algunas restricciones, sin embargo.
def import_fcstd(filename): try: import FreeCAD except ValueError: Blender.Draw.PupMenu('Error%t|FreeCAD library not found. Please check the FREECADPATH variable in the import script is correct') else: scene = Blender.Scene.GetCurrent() import Part doc = FreeCAD.open(filename) objects = doc.Objects for ob in objects: if ob.Type[:4] == 'Part': shape = ob.Shape if shape.Faces: mesh = Blender.Mesh.New()
rawdata = shape.tessellate(1) for v in rawdata[0]: mesh.verts.append((v.x,v.y,v.z)) for f in rawdata[1]: mesh.faces.append.append(f) scene.objects.new(mesh,ob.Name) Blender.Redraw() def main(): Blender.Window.FileSelector(import_fcstd, 'IMPORT FCSTD', Blender.sys.makename(ext='.fcstd')) # This lets you import the script without running it if __name__=='__main__': main()
La parte primera, importante es asegurarse de que python encontrar nuestra biblioteca de FreeCAD. Una vez que lo encuentra, todos los mdulos de FreeCAD tales como elemento, que vamos a usar tambin estar disponibles automticamente. Por lo que simplemente tomamos la variable sys.path, que es donde python busca mdulos, y acompaamos a la ruta de acceso de lib FreeCAD. Esta modificacin es slo temporal y se perder cuando te cerramos nuestro intrprete de python. Otra manera podra estar haciendo un vnculo a la biblioteca de FreeCAD en uno de la pitn rutas de acceso de bsqueda. Mantuvo la ruta de acceso en una constante (FREECADPATH), as que habr ms fcil para que otro usuario de la secuencia de comandos configurarlo a su propio sistema. Una vez que estamos seguros de que se cargue la biblioteca (el bloque try / excepto la secuencia), podemos ahora trabajar con FreeCAD, del mismo modo como nos hara dentro intrprete de python del propio FreeCAD. Abrimos el documento de FreeCAD que se pasa a nosotros por la funcin main(), y hacer una lista de sus objetos. Entonces, como hemos escogido slo a la atencin sobre la geometra de la pieza, verificamos si la propiedad Type de cada objeto contiene "Parte", entonces nos tesselate se. Los tesselation producen una lista de vrtices y una lista de caras definido por ndices de vrtices. Esto es perfecto, ya que es exactamente de la misma manera como licuadora define mallas. Por lo tanto, nuestra tarea es ridculamente simple, que solo aadimos el contenido de ambas listas a las caras de una malla de blender y verts. Cuando todo est hecho, nosotros slo repintar la pantalla, y eso es todo! Por supuesto, este script es muy simple (en realidad hice una ms avanzada aqu), puede que desee extender, por ejemplo importacin de malla objetos
demasiado o importacin de parte de la geometra que no tiene caras, o importar otros formatos de archivo que se puede leer FreeCAD. Tambin puede exportar la geometra a un documento de FreeCAD, que puede hacerse de la misma manera. Tambin puede que desee crear un cuadro de dilogo, por lo que el usuario puede elegir lo que debe importar, etc.... La belleza de todo esto en realidad reside en el hecho de que permita que FreeCAD hacer el suelo trabajar al presentar sus resultados en el programa de su eleccin.
Si la aplicacin host se basa en Qt esta solucin debe funcionar en todas las plataformas que soporta Qt. No obstante, el host debe vincular la misma versin de Qt que FreeCAD porque de lo contrario podra ejecutar en errores de tiempo de ejecucin inesperado. Para las aplicaciones no Qt, sin embargo, existen algunas limitaciones que debe tener en cuenta. Probablemente, esta solucin no funciona junto con todos los otros kits de herramientas. Para Windows funciona siempre y cuando la aplicacin host se basa directamente en Win32 o cualquier otro Kit de herramientas que utiliza internamente la API de Win32, como wxWidgets, MFC o WinForms. A fin de hacerlo funcionar bajo X 11 en el host de aplicacin debe vincular la biblioteca "Wittgenstein". Tenga en cuenta, para cualquier aplicacin de consola de que esta solucin por supuesto no funciona porque no hay ningn lazo de evento que se ejecuta.
Esta pgina contiene ejemplos, piezas, fragmentos de cdigo de python FreeCAD recogido de experiencias de los usuarios y los debates en los foros. Leer y utilizarlo como un punto de partida para sus propias secuencias de comandos...
'MenuText':
def open(filename): doc=App.newDocument() # here you do all what is needed with filename, read, classify data, create corresponding FreeCAD objects doc.recompute()
Para exportar el documento a algn tipo de fichero nuevo funciona del mismo modo, salvo que utilice:
FreeCAD.addExportType("Your new File Type (*.ext)","Export_Ext")
Adicin de un polgono
Un polgono es simplemente un conjunto de segmentos de lnea conectados (una polilnea en AutoCAD). No es necesario ser cerrado.
import Part,PartGui doc=App.activeDocument() n=list() # create a 3D vector, set its coordinates and add it to the list v=App.Vector(0,0,0) n.append(v) v=App.Vector(10,0,0) n.append(v) #... repeat for all nodes # Create a polygon object and set its nodes p=doc.addObject("Part::Polygon","Polygon") p.Nodes=n
doc.recompute()
# create a new empty mesh m = Mesh.Mesh() # build up box out of 12 facets m.addFacet(0.0,0.0,0.0, 0.0,0.0,1.0, 0.0,1.0,1.0) m.addFacet(0.0,0.0,0.0, 0.0,1.0,1.0, 0.0,1.0,0.0) m.addFacet(0.0,0.0,0.0, 1.0,0.0,0.0, 1.0,0.0,1.0) m.addFacet(0.0,0.0,0.0, 1.0,0.0,1.0, 0.0,0.0,1.0) m.addFacet(0.0,0.0,0.0, 0.0,1.0,0.0, 1.0,1.0,0.0) m.addFacet(0.0,0.0,0.0, 1.0,1.0,0.0, 1.0,0.0,0.0) m.addFacet(0.0,1.0,0.0, 0.0,1.0,1.0, 1.0,1.0,1.0) m.addFacet(0.0,1.0,0.0, 1.0,1.0,1.0, 1.0,1.0,0.0) m.addFacet(0.0,1.0,1.0, 0.0,0.0,1.0, 1.0,0.0,1.0) m.addFacet(0.0,1.0,1.0, 1.0,0.0,1.0, 1.0,1.0,1.0) m.addFacet(1.0,1.0,0.0, 1.0,1.0,1.0, 1.0,0.0,1.0) m.addFacet(1.0,1.0,0.0, 1.0,0.0,1.0, 1.0,0.0,0.0) # scale to a edge langth of 100 m.scale(100.0) # add the mesh to the active document me=doc.addObject("Mesh::Feature","Cube") me.Mesh=m
funciones de C++ globales o estticas. En Python adecuado vinculante algunos mtodos son proporcionados para hacer uso de esta tcnica desde dentro de cdigo Python.
App.newDocument() v=Gui.activeDocument().activeView() #This class logs any mouse button events. As the registered callback function fires twice for 'down' and #'up' events we need a boolean flag to handle this. class ViewObserver: def logPosition(self, info): down = (info["State"] == "DOWN") pos = info["Position"] if (down): FreeCAD.Console.PrintMessage("Clicked on position: ("+str(pos[0])+", "+str(pos[0])+")\n") o = ViewObserver() c = v.addEventCallback("SoMouseButtonEvent",o.logPosition)
Ahora, escoja en algn lugar en el rea en el visor 3D y observar los mensajes en la ventana de salida. Para finalizar la llamada justa de observacin
v.removeEventCallback("SoMouseButtonEvent",c)
La funcin de Python que se puede registrar con addEventCallback() espera un diccionario. Dependiendo del evento observado el diccionario puede contener diferentes claves. Para todos los eventos tiene las llaves:
Tipo--el nombre del tipo de evento, es decir, SoMouseEvent, SoLocation2Event... Tiempo--la hora actual como cadena Posicin--una tupla de dos nmeros enteros, la posicin del mouse ShiftDown--un valor booleano, true si Mays en caso contrario se presion false CtrlDown--un valor booleano, true si Ctrl se presion lo contrario es false AltDown--un valor booleano, true si Alt se presion lo contrario es false
Para todos los eventos de botn, es decir, teclado, ratn o spaceball eventos
Estado--A string 'UP' si el botn se fue arriba, 'Abajo' si era hacia abajo o
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()
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)
A continuacin, todo lo que necesita hacer es crear una referencia a la ventana de FreeCAD Qt, inserte un widget personalizado y "transformar" este widget en la suya con el cdigo de Ui acaba de hacer:
app = QtGui.qApp
FCmw = app.activeWindow() # the active qt window, = the freecad window since we are inside it myNewFreeCADWidget = QtGui.QDockWidget() # create a new dckwidget myNewFreeCADWidget.ui = myWidget_Ui() # load the Ui script myNewFreeCADWidget.ui.setupUi(myNewFreeCADWidget) # setup the ui FCmw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myNewFreeCADWidget) # add the widget to the main window
Esta pgina muestra cmo avanzada funcionalidad fcilmente puede ser construido en Python. En este ejercicio, construir una nueva herramienta que dibuja una lnea. Esta herramienta, a continuacin, puede vincularse a un comando de FreeCAD, y ese comando puede ser invocado por cualquier elemento de la interfaz, como un elemento de men o un botn de la barra de herramientas.
Explicacin detallada
import Part, FreeCADGui from pivy.coin import *
En Python, cuando desea utilizar las funciones de otro mdulo, necesita importarlo. En nuestro caso, necesitaremos las funciones de la Mdulo de parte , para la creacin de la lnea y desde el mdulo de Gui (FreeCADGui), para acceder a la vista 3D. Tambin necesitamos el contenido completo de la biblioteca de la moneda, por lo que podemos utilizar directamente toda moneda objetos como SoMouseButtonEvent, etc...
class line:
Aqu definimos nuestra clase principal. Por qu usamos una clase y no una funcin? La razn es que necesitamos que nuestra herramienta para permanecer "alive" mientras que estamos esperando para que el usuario haga clic en la pantalla. Una funcin termina cuando se ha hecho su tarea, pero un objeto (una clase define un objeto) permanece vivo hasta que sea destruida.
"this class will create a line after the user clicked 2 points on the screen"
En Python, cada clase o funcin puede tener una cadena de descripcin. Esto resulta especialmente til en FreeCAD, porque cuando llamaremos esa clase en el intrprete, la cadena de descripcin se mostrar como una informacin sobre herramientas.
def __init__(self):
Clases de Python siempre pueden contener una funcin __init__, que se ejecuta cuando se llama a la clase para crear un objeto. Por lo tanto, pondremos aqu todo lo que queremos que suceda cuando comienza a nuestra herramienta de la lnea.
self.view = FreeCADGui.ActiveDocument.ActiveView
En una clase, por lo general desea anexar self. antes de un nombre de variable, por lo tanto ser fcilmente accesible a todas las funciones dentro y fuera de esa clase. Aqu, utilizaremos self.view para tener acceso y manipular la vista 3D activa.
self.stack = []
Aqu creamos una lista vaca que va a contener los puntos 3D enviados por la funcin getpoint.
self.callback = self.view.addEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),sel f.getpoint)
Esta es la parte importante: debido a que es en realidad un coin3D escena de , el FreeCAD utiliza el mecanismo de devolucin de llamada de moneda, que permite a una funcin que se llamar cada vez que ocurre un determinado evento de la escena. En nuestro caso, estamos creando una devolucin de llamada para SoMouseButtonEvent eventos y nos enlazarlo a la funcin getpoint. Ahora, cada vez un botn del mouse est presionado o liberado, se ejecutar la funcin de getpoint. Tenga en cuenta que tambin es una alternativa a la addEventCallbackPivy() llamado addEventCallback() que prescinde de la utilizacin de pivy. Pero dado que pivy es una manera natural y muy eficiente para acceder a cualquier parte de la escena de la moneda, es mucho mejor usarlo tanto como usted puede!
def getpoint(self,event_cb):
Ahora definimos la funcin getpoint, que se ejecutar cuando se presiona un botn del mouse en una vista 3D. Esta funcin recibir un argumento, que llamamos event_cb. De este evento de devolucin de llamada podemos acceder el objeto de evento, que contiene varias piezas de informacin (info de modo aqu ).
if event.getState() == SoMouseButtonEvent.DOWN:
La funcin getpoint se llamar cuando se presiona un botn del mouse o se lanz. Pero queremos elegir un punto 3D slo cuando se presiona (de lo contrario tendramos dos puntos 3D muy cercano a cada uno de los otros). Por lo tanto nos debemos comprobar aqu.
pos = event.getPosition()
Esta funcin nos da un vector de FreeCAD (x, y, z) que contiene el punto 3D que se encuentra en el plano focal, justo por debajo de nuestro cursor del ratn. Si ests en la cmara vista, imaginar un rayo procedentes de la cmara, pasando el cursor del ratn y golpear el plano focal. Es nuestro punto de 3D. Si estamos en vista ortogonal, el rayo es paralelo a la direccin de la vista.
self.stack.append(point)
Aqu utilizamos la funcin Line() de la Mdulo de parte en la que crea una lnea de dos vectores de FreeCAD. Todo lo que crear y modificar dentro del mdulo de parte, permanece en el mdulo de parte. Por lo tanto, hasta ahora, hemos creado un elemento de lnea. No est obligada a cualquier objeto de nuestro documento activo, por lo que no aparece nada en la pantalla.
shape = l.toShape()
El documento de FreeCAD slo puede aceptar formas desde el mdulo de parte. Las formas son el tipo ms genrico del mdulo parte. Por lo tanto, debemos convertir nuestra lnea a una forma antes de agregarlo al documento.
Part.show(shape)
El mdulo de parte tiene una funcin muy til show() que crea un nuevo objeto en el documento y se enlaza una forma. Nos podramos tambin han creado un nuevo objeto en el documento de la primera, a continuacin, enlazada la forma manualmente.
self.view.removeEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(), self.callback)
Ya terminamos con nuestra lnea, Let's quite el mecanismo de devolucin de llamada, que consume preciosos ciclos de CPU.
Si ningn mensaje de error aparece, significa que nuestro script de ejercicio se ha cargado. Ahora nos podemos comprobar su contenido con:
dir(exercise)
El comando dir() es un comando de python incorporada que enumera el contenido de un mdulo. Podemos ver que nuestra clase line() est all, a la espera de nosotros. Ahora vamos a probarlo:
exercise.line()
A continuacin, haga clic dos veces en la vista 3D, y bingo, aqu es nuestra lnea! Volver a hacerlo, slo tiene que escribir exercise.line() una vez ms y una vez ms y de nuevo... Se siente gran, no?
Por ahora, debera ya entiendes el script anterior por usted mismo, creo que: crea una nueva clase que llamamos MyWorkbench, le damos un ttulo (MenuText) y definimos una funcin Initialize() que se ejecutar cuando se carga el workbench en FreeCAD. En esa funcin, cargar en el contenido de nuestro archivo de ejercicio y anexar los comandos de FreeCAD que se encuentra en el interior a una lista de comandos. A continuacin, hacemos una llamada "Mis Scripts" de la barra de herramientas y asignamos a nuestra lista de comandos a ella. En la actualidad, por supuesto, tenemos slo una herramienta, por lo que nuestra lista de comandos contiene un nico elemento. A continuacin, una vez que nuestro banco est listo, nos agregarlo a la interfaz principal. Pero esto todava no funcionar, porque un comando de FreeCAD debe tener el formato de una cierta manera para trabajar. Por lo tanto ser necesario
transformar un poco nuestra herramienta de line(). Nuestro nuevo script exercise.py tendr ahora este aspecto:
import FreeCADGui, Part from pivy.coin import * class line: "this class will create a line after the user clicked 2 points on the screen" def Activated(self): self.view = FreeCADGui.ActiveDocument.ActiveView self.stack = [] self.callback = self.view.addEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),sel f.getpoint) def getpoint(self,event_cb): event = event_cb.getEvent() if event.getState() == SoMouseButtonEvent.DOWN: pos = event.getPosition() point = self.view.getPoint(pos[0],pos[1]) self.stack.append(point) if len(self.stack) == 2: l = Part.Line(self.stack[0],self.stack[1]) shape = l.toShape() Part.show(shape) self.view.removeEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(), self.callback) def GetResources(self): return {'Pixmap' : 'path_to_an_icon/line_icon.png', 'MenuText': 'Line', 'ToolTip': 'Creates a line by clicking 2 points on the screen'} FreeCADGui.addCommand('line', line())
Lo que hicimos aqu es transformar nuestra funcin de __init__() en una funcin de Activated(), porque cuando se ejecutan los comandos FreeCAD, ejecutar automticamente la funcin de Activated(). Tambin hemos aadido una funcin de GetResources(), que informa a FreeCAD donde puede encontrar un icono de la herramienta, y lo que ser el nombre y la informacin sobre herramientas de nuestra herramienta. Cualquier imagen jpg, png o svg funcionar como un icono, puede ser de cualquier tamao, pero es mejor utilizar un tamao de que est cerca el aspecto final, como 16 x 16, 24 x 24 o 32 x 32. A continuacin, aadimos la clase de line() como un comando de FreeCAD oficial con el mtodo addCommand(). Eso es todo, ahora slo necesitamos reiniciar FreeCAD y vamos a tener una agradable workbench nuevo con nuestra nueva herramienta de la lnea!
desnuda, el usuario puede estar un poco perdido cuando lo utilice. Sowe podra aadir algunos comentarios, dicindole que lo que debe hacer a continuacin. Por ejemplo, podra emitir mensajes a la consola de FreeCAD. Echar un vistazo en el mdulo de FreeCAD.Console
Agregar una posibilidad para escribir el 3D puntos de coordenadas manualmente.
del ratn, qu sucede si tambin haramos algo cuando se mueve el ratn, como mostrar coordenadas actuales?
Asigne un nombre al objeto creado
En esta pgina nos mostrar cmo crear un cuadro de dilogo de Qt simple con Qt Designer , La herramienta oficial de qt para disear interfaces, a continuacin, convertirlo en el cdigo de python, a continuacin, utilizarlo dentro de FreeCAD. Supongo en el ejemplo que usted sabe cmo editar y ejecutar python scripts ya, y que se pueden hacer cosas sencillas en una ventana de terminal, como navegar, etc.. Tambin debe tener, por supuesto, pyqt instalado.
delante de la pantalla, detener la accin de la ventana principal, forzando al usuario a responder al cuadro de dilogo, mientras que un cuadro de dilogo no
modal no parar de trabajar en la ventana principal. En algunos casos, el primero es mejor, en otros casos no.
Identificacin de lo que se necesita y lo que es opcional: asegrese de que el
usuario sabe lo que l debe do. Etiquetar todo con descripcin adecuada, utilizar la informacin sobre herramientas, etc.
Comandos de separating de de parmetros: esto se suele hace con botones y
campos de entrada de texto. El usuario sabe que si hace clic en un botn producir una accin mientras que cambiar un valor dentro de un campo de texto va a cambiar un parmetro en algn lugar. Hoy en da, sin embargo, los usuarios generalmente saben bien lo que es un botn, lo que es un campo de entrada, etc.. El toolkit de interfaz que estamos utilizando, Qt, es un kit de herramientas de Estado-of-the-art, y no tenemos que preocuparnos mucho acerca de hacer las cosas claras, ya que ellos ya ser muy claros por s mismos.
Por lo tanto, ahora que hemos definido bien lo que haremos, es hora de abrir el diseador qt. Vamos disear un dilogo muy simple, como esto:
, A continuacin, utilizaremos este cuadro de dilogo en FreeCAD para producir un plano rectangular agradable. Puede que encuentre no muy til para producir aviones rectangulares agradables, pero va a ser fcil cambiar ms tarde para hacer las cosas ms complejas. Cuando lo abre, Qt Designer se ve as:
Es muy simple de usar. En la barra izquierda tiene elementos que se pueden arrastrar en el widget. En el lado derecho tiene paneles de propiedades muestra todos los tipos de propiedades editables de elementos seleccionados. Por lo tanto, comenzar con la creacin de un nuevo widget. Seleccione "Dilogo sin botones", ya que no queremos que los botones de aceptar y cancelar de forma predeterminada. A continuacin, arrastre en el widget 3 etiquetas, uno para el ttulo, uno para la escritura de "Altura" y otro para escribir "Ancho". Las etiquetas son simples los textos que aparecen en el widget, slo para informar al usuario. Si selecciona una etiqueta, en el lado derecho aparecern varias propiedades que se pueden cambiar si lo desea, como estilo de fuente, altura, etc.. A continuacin, agregue 2 LineEdits, que son campos de texto que el usuario puede rellenar, uno para la altura y otro para el ancho. Aqu tambin podemos editar propiedades. Por ejemplo, por qu no establecer un valor predeterminado? Por ejemplo 1.00 para cada uno. De esta forma, cuando el usuario ver el cuadro de dilogo, ambos valores se rellenar ya y si l est satisfecho l puede directamente pulse el botn, se ahorra tiempo valioso. A continuacin, agregue un PushButton, que es el botn que el usuario tendr que presionar despus de que llen los 2 campos. Nota que he escogido aqu controles muy simples, pero Qt tiene muchas ms opciones, por ejemplo se podra utilizar Spinboxes en lugar de LineEdits, etc.... Eche un vistazo de lo que est disponible, seguramente tendr otras ideas. Es sobre todo lo que necesitamos hacer en el diseador de Qt. Una ltima cosa, sin embargo, Let's renombrar todos nuestros elementos con nombres
En algunos sistemas, el programa se llama pyuic4 en lugar de pyuic. Simplemente esto convertir el archivo .ui en una secuencia de comandos python. Si abrimos el archivo mywidget.py, sus contenidos son muy fciles de entender:
from PyQt4 import QtCore, QtGui class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(187, 178) self.title = QtGui.QLabel(Dialog) self.title.setGeometry(QtCore.QRect(10, 10, 271, 16))
self.title.setObjectName("title") self.label_width = QtGui.QLabel(Dialog) ... self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8)) self.title.setText(QtGui.QApplication.translate("Dialog", "Plane-O-Matic", None, QtGui.QApplication.UnicodeUTF8)) ...
Como ves tiene una estructura muy simple: se crea una clase denominada Ui_Dialog, que almacena los elementos de la interfaz de nuestro widget. Que la clase tiene dos mtodos, uno para la configuracin del widget y uno para la traduccin de su contenido, es parte del mecanismo general de Qt para traducir los elementos de la interfaz. El mtodo de instalacin simplemente crea, uno por uno, los widgets como hemos definido en el diseador de Qt y establece sus opciones como hemos decidido anteriormente. A continuacin, toda la interfaz obtiene traducida, y por ltimo, conctese a las ranuras (hablaremos acerca de que ms tarde). Ahora podemos crear un nuevo widget y utilizar esta clase para crear su interfaz. Ya podemos ver nuestro widget en accin, poniendo nuestro archivo de mywidget.py en un lugar donde FreeCAD se encuentran (en el directorio bin de FreeCAD, o en cualquiera de los subdirectorios MOD) y, en el intrprete de python FreeCAD, nmero de:
from PyQt4 import QtGui import mywidget d = QtGui.QWidget() d.ui = mywidget.Ui_Dialog() d.ui.setupUi(d) d.show()
Y nuestro dilogo aparecer! Tenga en cuenta que todava est trabajando nuestro intrprete de python, contamos con un cuadro de dilogo no modal. Por lo tanto, para cerrarlo, podemos (aparte de hacer clic en su icono de cerrar, por supuesto) tema:
d.hide()
Bsicamente, funciona como este: los elementos de tus widgets (en la terminologa de Qt, dichos elementos son propios widgets) puede enviar seales. Esas seales difieren segn el tipo de widget. Por ejemplo, un botn puede enviar una seal cuando se est presionado y cuando se publique. Esas seales pueden estar conectadas a las ranuras, que pueden ser una funcionalidad especial de otros widgets (por ejemplo un cuadro de dilogo tiene una ranura "Cerrar" a los que puede conectar la seal desde un botn de cierre), o pueden ser funciones personalizadas. La Documentacin de referencia de PyQt enumera todos los widgets qt, lo que pueden hacer, lo que las seales pueden enviar, etc... Lo que haremos aqu, es crear una nueva funcin que crear un plano basado en altura y anchura y conectar esa funcin a la seal presionada emitida por nuestro botn de "Crear!". Por lo tanto, comencemos con la importacin de nuestros mdulos de FreeCAD, poniendo la siguiente lnea en la parte superior de la secuencia de comandos, donde importamos ya QtCore y QtGui:
import FreeCAD, Part
A continuacin, tenemos que informar a Qt para conectar el botn con la funcin, colocando la siguiente lnea justo antes de QtCore.QMetaObject.connectSlotsByName(Dialog):
QtCore.QObject.connect(self.create,QtCore.SIGNAL("pressed()"),self.cre atePlane)
Esto, como ves, conecta la seal de pressed() de nuestro objeto de crear (el botn de "Crear!"), con una ranura llamada createPlane, que acaba de definir.
Eso es todo! Ahora bien, como un toque final, podemos aadir una pequea funcin para crear el cuadro de dilogo, ser ms fcil llamar. Fuera de la clase Ui_Dialog, vamos a agregar este cdigo:
class plane(): d = QtGui.QWidget() d.ui = Ui_Dialog() d.ui.setupUi(d) d.show()
Que es Folks todos... Ahora puede probar todo tipo de cosas, como por ejemplo insertar tu widget en la FreeCAD interfaz (vase la fragmentos de cdigo pgina), o haciendo mucho ms avanzadas herramientas personalizadas, mediante el uso de otros elementos en el widget de.
self.height.setGeometry(QtCore.QRect(60, 80, 111, 26)) self.height.setObjectName("height") self.create = QtGui.QPushButton(Dialog) self.create.setGeometry(QtCore.QRect(50, 140, 83, 26)) self.create.setObjectName("create") self.retranslateUi(Dialog) QtCore.QObject.connect(self.create,QtCore.SIGNAL("pressed()"),self.cre atePlane) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8)) self.title.setText(QtGui.QApplication.translate("Dialog", "Plane-O-Matic", None, QtGui.QApplication.UnicodeUTF8)) self.label_width.setText(QtGui.QApplication.translate("Dialog", "Width", None, QtGui.QApplication.UnicodeUTF8)) self.label_height.setText(QtGui.QApplication.translate("Dialog", "Height", None, QtGui.QApplication.UnicodeUTF8)) self.create.setText(QtGui.QApplication.translate("Dialog", "Create!", None, QtGui.QApplication.UnicodeUTF8)) def createPlane(self): try: # first we check if valid numbers have been entered w = float(self.width.text()) h = float(self.height.text()) except ValueError: print "Error! Width and Height values must be numbers!" else: # create a face from 4 points p1 = FreeCAD.Vector(0,0,0) p2 = FreeCAD.Vector(w,0,0) p3 = FreeCAD.Vector(w,h,0) p4 = FreeCAD.Vector(0,h,0) pointslist = [p1,p2,p3,p4,p1] mywire = Part.makePolygon(pointslist) myface = Part.Face(mywire) Part.show(myface) class plane(): d = QtGui.QWidget() d.ui = Ui_Dialog() d.ui.setupUi(d) d.show()
valid
Traducciones disponibles:
Desarrollo FreeCAD
de
aplicaciones
para
Licencias usadas
Aqu los tres licencias en virtud del cual se publica FreeCAD:
Licencia pblica general (GPL2 +) Para las secuencias de comandos de Python construir los archivos binarios, como se afirma en los archivos .py en src/herramientas Menor General Public Licence (LGPL2 +)
Para los ncleo libs como se indica en los ficheros .h y .cpp en src/APP src/Gui src/base y la mayora mdulos en src/mod y para el ejecutable como se indica en los ficheros .h y .cpp en src/principal Licencia de publicacin abierta Para la documentacin sobre http://Free-CAD.sourceforge.NET/ como no marcado de forma diferente por el autor
Intentamos utilizar solo LGPL tipo de licencias para las bibliotecas del sistema vinculado de ncleo (vea Bibliotecas de terceros ) con una excepcin:
la licencia de Coin3D ( www.coin3d.org ).
Ver del FreeCAD archivo copyright Debian para obtener ms detalles acerca de las licencias utilizadas en FreeCAD
Los usuarios privados pueden utilizar FreeCAD de forma gratuita y puede hacer bsicamente todo lo que quieren hacer con ella....
Usuarios profesionales
Puede utilizar FreeCAD libremente, para cualquier tipo de trabajo privado o profesional. Pueden personalizar la aplicacin que lo deseen. Pueden escribir extensiones de cdigo fuente abierto o cerrado en FreeCAD. Siempre son maestros de sus datos, no se ven obligados a actualizar FreeCAD, cambiar su uso de FreeCAD. Utilizando FreeCAD no ligarlos a cualquier tipo de contrato u obligacin.
Desarrolladores de cdigo fuente abiertos
Puede utilizar FreeCAD como las bases para los mdulos de extensin propia para propsitos especiales. Pueden elegir la GPL o la LGPL para permitir el uso de su trabajo en software propietario o no.
Desarrolladores profesionales
Los desarrolladores profesionales pueden utilizar FreeCAD como las bases para sus propios mdulos de extensin para fines especiales y no estn obligados a hacer sus mdulos open source. Pueden usar todos los mdulos que utilizan la LGPL. Se les permite distribuir FreeCAD junto con su software propietario. Recibirn el apoyo de los autores como es no una una forma calle. Si desea vender su mdulo necesita una licencia de Coin3D, de lo contrario se ve obligado por esta biblioteca para que sea open source.
Informar de fallos
Recientemente la plataforma de sourceforge hizo el mantis bug tracker aplicacin disponible para proyectos y FreeCAD es ahora utilizando activamente, en lugar del antiguo incorporada bug tracker. La direccin de nuestro bug tracker es: http://sourceforge.NET/Apps/mantisbt/Free-CAD/main_page.php Si usted piensa que usted podra ha encontrado un bug, eres Bienvenido a informar de ello. Pero antes de informar sobre un bug, por favor, compruebe los siguientes elementos:
Make asegrese de que el fallo es realmente un error, es decir, algo que debera
estar trabajando y que no est funcionando. Si no est seguro, dont dude en explicar su problema en el foro y pregunta qu do.
Antes de presentar cualquier cosa, leer el preguntas ms frecuentes , hace una
bsqueda en el foro y asegrese de que el mismo error no ha reportado antes, realizando una bsqueda en el bug tracker.
Describe como claramente como sea posible el problema, y cmo pueden
intentar ejecutar un backtrace de depuracin: desde una terminal ejecutar gdb freecad (suponiendo que est instalado el paquete gdb), a continuacin, dentro de gdb, escriba Ejecutar . FreeCAD, a continuacin, se ejecutar. Despus de que el accidente ocurre, escriba bt , para obtener el backtrace completo. Incluir ese backtrace en su informe de fallo.
Solicitar funciones
Si desea algo que aparecen en FreeCAD que an no se ha implementado, no es un error sino una solicitud de funcin. Tambin puede enviar en el mismo tracker (archivo, como caracterstica solicitar en lugar de errores), pero tenga en cuenta que no son garantiza que su deseo ser cumplida.
Envo de parches
En caso de que usted ha programado una correccin de errores, una extensin o algo que puede ser de uso pblico en FreeCAD, crear un parche utilizando la herramienta diff de Subversion y lo presentar en el mismo tracker (archivo como parche).
Dnde se encuentran?
FreeCAD el proyecto tiene su propio pgina de resumen de Tracker . Encontrars la informacin general sobre las distintas secciones del Rastreador.
Bugs
Si usted piensa que usted podra ha encontrado un bug, vaya a la Seccin de bugs del tracker y elija "cualquiera" para Estado de ver todos los de solicitud de error jams presentada. La bsqueda por palabra clave le permite encontrar bug tracker entradas para un problema similar. Si no puede encontrar una
entrada mayor acerca de su problema, usted debe presentar una nueva entrada en la misma pgina.
Solicitudes de funcin
Si se echa en falta una caracterstica en FreeCAD que usted piense como bombardeos absolutamente necesario para convertirse en el mundos mejores software de CAD, usted podra encontrar el Solicitud de funcin helpfull de la seccin.
Solicitudes de asistencia
Si no obtiene alrededor de compilacin de FreeCAD y el Compilar en Windows o Compile On Unix seccin no le otorga una sugerencia, o intentarlo de puerto a un nuevo entorno o estn programando nuevos mdulos o extensiones para FreeCAD y necesita alguna asistencia a continuacin, la Las solicitudes de asistencia seccin es el lugar que desee ir a.
Parches de nuevos
En caso de que usted ha programado una correccin de errores, una extensin o algo que puede ser de uso pblico en FreeCAD, crear un parche utilizando Subversion y de archivo en el seccin de parches .
Requisitos previos
Lo que necesita es principalmente el compilador. En Windows, usamos el compilador de 8 M de $ VisualStudio con el service pack ms alto. Aunque es probablemente posible utilizar gcc Cygwin o MingW no ha probado ni portado hasta ahora. Nosotros tambin hemos portado a utilizar VC8 Express Edition. Necesita descargar el SDK de la plataforma de Windows para obtener, por ejemplo, la Windows.h. Tambin necesita todos los Bibliotecas de terceros para compilar correctamente FreeCAD. Si utiliza los compiladores de $ M que desea ms probable es que descargar el LibPack de FreeCAD que le proporciona todos los libs necesarios para construir FreeCAD en Windows.
El conmutador de aenderezar
Desde la versin 0.9 utilizamos el sistema de compilacin de aenderezar para generar los archivos de compilacin y ganar para varios compiladores. Ya no entregamos .vcproj archivos. Si quieres ex versiones de generacin de FreeCAD (0,8 y anterior) ver "Building versiones anteriores" ms adelante en este artculo. Nos cambiaron porque se convirti en ms y ms dolorosa mantener archivos de proyecto para 30 + construccin metas y compiladores de x. aenderezar nos da la posibilidad de apoyar IDEs alternativos, como Code:: Blocks, Qt Creator y Eclipse CDT el compilador principal que usamos es todava Express de M $ VC9, sin embargo. Pero tenemos planes para el futuro de un proceso de generacin de Windows sin el software propietario del compilador.
Configurar el proceso de generacin
El primer paso para construir FreeCAD con aenderezar es para configurar el entorno. Bsicamente hay dos formas para ir:
Utilizando el LibPack Instalar todos necesita libs y dejar que aenderezar encontrarlos
En el primer caso slo necesita dar a aenderezar la ruta de acceso a la LibPack y el resto debe hacerse de forma automtica y ver una
pantalla de tal
Ver la ruta de LibPack que se inserta en el FREECAD_LIBPACK_DIR variable. A partir de que todos incluye y rutas de acceso se establecen. Slo necesita presionar la generar obtener generados el botn y los archivos del proyecto. Si cambia la FREECAD_LIBPACK_USE opciones de desactivar la configuracin intenta encontrar cada biblioteca necesaria en su sistema. Dependiendo de las libs que funciona ms o menos. As que tienes a menudo definir algunos trazados a mano. aenderezar le mostrar lo que no se encuentra y deben especificarse.
Opciones para el proceso de creacin de
El sistema de compilacin de aenderezar nos da mucha ms flexibilidad durante el proceso de generacin. Eso significa que podemos encender y apagar algunas caractersticas o mdulos. Es de una manera como la compilacin del kernel de Linux. Tienes mucho switches para determinar el proceso de generacin.
Aqu es la descripcin de estos modificadores. Ms probable es que cambiar mucho en el futuro porque queremos aumentar la flexibilidad de generacin mucho ms.
Tabla de vnculos Nombre de la variable Descripcin El uso de FreeCAD o apagarlos De forma predeterminad a la LibPack de En Win32 sobre encenderlos y otherwishe off
FREECAD_LIBPACK_USE
FREECAD_LIBPACK_DIR
Directorio donde se encuentraDir de fuente de el LibPack FreeCAD Construir FreeCAD con todos los mdulos relacionados conSOBRE la Gui Construir el mdulo de CAM, APAGADO experimental!
FREECAD_BUILD_GUI
FREECAD_BUILD_CAM
Crear los archivos de proyecto FREECAD_BUILD_INSTALLER para el instalador deAPAGADO Windows. Crear los archivos de proyecto FREECAD_BUILD_DOXYGEN_ para la documentacin deAPAGADO DOCU cdigo fuente. El encendido de cosas FREECAD_MAINTAINERS_BUI necesitan slo cuando hacesAPAGADO LD una compilacin de versin.
generacin de lnea de comandos
set LIB= rem Register VS Build programms call "C:\Program Files 9.0\VC\vcvarsall.bat"
(x86)\Microsoft
Visual
Studio
rem Set Standard include paths set INCLUDE=%INCLUDE%;%FrameworkSDKDir%\include set INCLUDE=%INCLUDE%;C:\Program SDKs\Windows\v6.0A\Include
Files\Microsoft
rem Set lib Pathes set LIB=%LIB%;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib set LIB=%LIB%;%PROGRAMFILES%\Microsoft Visual Studio\VC98\Lib rem Start the Visuall Studio build process "C:\Program Files (x86)\Microsoft 9.0\VC\vcpackages\vcbuild.exe" FreeCAD_0.9_build\FreeCAD_trunk.sln" /useenv
Para hacerlo ms fcil obtener FreeCAD compilado, proporcionamos una coleccin de todas las bibliotecas necesarias. Se llama la LibPack . Usted puede encontrar en el pgina de descarga de en sourceforge. Es necesario establecer las siguientes variables de entorno:
FREECADLIB = "D:\Wherever\LIBPACK" QTDIR = "% FREECADLIB %"
Aadir "% FREECADLIB%\bin" y "% FREECADLIB%\dll" para el sistema PATH variable. Tenga en cuenta que tienes que sustituir "% FREECADLIB %" con el nombre de ruta de acceso, ya que Windows hace variables de entorno de reemplazar a no recursivamente. Directorio de instalacin de Visual Studio Algunos ruta de bsqueda de Visual Studio que deba establecerse. Para cambiarlos, utilice el men ToolsOptionsDirectory
Incluye
%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
de
instalacin
binario
de
TortoiseSVN,
generalmente
"C:\Programm Files\TortoiseSVN\bin", esto es necesario para una distribucin construir cuando SubWVRev.exe se utiliza para extraer el nmero de versin de Subversion.
Python es necesario Durante la compilacin se ejecutan algunas secuencias de comandos de Python. As que el intrprete de Python tiene que funcionar en el sistema operativo. Utilice un cuadro de mando para comprobarlo. Si no est instalada correctamente la biblioteca de Python obtendr un mensaje de error como no se puede encontrar en python.exe. Si utiliza la LibPack tambin puede utilizar el python.exe en el directorio bin.
Especial para VC8 Al generar el proyecto con VC8, usted tiene que cambiar la informacin de enlace para la biblioteca de WildMagic, puesto que necesita una versin diferente para VC6 y VC8. Ambas versiones se suministran en LIBPACK/dll. En las propiedades del proyecto para AppMesh cambiar el nombre de la biblioteca de la wm.dll a la versin VC8. Tenga cuidado de cambiarlo en Debug y configuracin de Release.
Compilar
Despus de que cumplen todos los requisitos previos la compilacin Ojal - es slo un clic de ratn en VC;-)
Despus de compilar
Para obtener FreeCAD activo y funcionando desde el entorno de compilador necesita copiar algunos archivos de la LibPack a la bin carpeta donde est instalado el FreeCAD.exe despus de una generacin correcta:
Python.exe y python_d.exe de LIBPACK/bin python25.dll y python25_d.dll de LIBPACK/bin python25.ZIP de LIBPACK/bin hacer una copia de Python25.zip y cambiarle el nombre a Python25_d.zip QtCore4.dll de LIBPACK/bin QtGui4.dll de LIBPACK/bin boost_signals-vc80-mt-1_34_1.dll de LIBPACK/bin boost_program_options-vc80-mt-1_34_1.dll de LIBPACK/bin Xerces-c_2_8.dll de LIBPACK/bin zlib1.dll de LIBPACK/bin coin2.dll de LIBPACK/bin soqt1.dll de LIBPACK/bin QtOpenGL4.dll de LIBPACK/bin QtNetwork4.dll de LIBPACK/bin QtSvg4.dll de LIBPACK/bin QtXml4.dll de LIBPACK/bin
Cuando se utiliza un LibPack con una versin de Python mayor de 2.5 tiene que copiar los archivos de ms de dos:
Si no lo consigues ejecutarlo debido a un error de Python es muy probable que uno de los zlib*.pyd faltan los archivos.
Material adicional
Si encuentro para construir la fuente cdigo documentacin que necesita DoxyGen . Para crear un paquete de intstaller necesita WIX . Durante la compilacin se ejecutan algunas secuencias de comandos de Python. Por lo tanto, el intrprete de Python tiene para que funcione correctamente. Para obtener ms detalles tambin echar un vistazo a README.Linux en sus fuentes. En primer lugar debe construir el plugin de Qt que proporciona todos los widgets personalizados de FreeCAD que necesitamos para el diseador Qt. Las fuentes se encuentran bajo
//src/Tools/plugins/widget//.
En recientes distribuciones de linux, FreeCAD es generalmente ms fciles de construir, ya que todas las dependencias son prestadas normalmente por el administrador de paquetes. Bsicamente, slo tiene que necesita obtener el cdigo fuente de FreeCAD y, a continuacin, instale las dependencias que se enumeran a continuacin, y emitir:
./autogen.sh && ./configure && make
o
./cmake . && make
para obtener FreeCAD construido, dependiendo de lo que construir el sistema que prefiere utilizar ( autotools o aenderezar ). A continuacin, encontrar explicaciones detalladas del todo el proceso y particularidades que puedan surgir. Antes de que usted demasiado empantanarse en detalles, tambin hay un shellscript que puede utilizar para seguir a lo largo. Si encuentras algo malo o aqu abajo, por favor, nos ayudan a corregir ella.
Obtencin de la fuente
Antes de que se puede compilar FreeCAD, debe obtener el cdigo fuente. Instalar primero subversin . A continuacin, desde el directorio de su eleccin (por ejemplo, su directorio de usuario), do:
svn co freecad https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk
This will perform an anonymous checkout of the current development version in a new directory called "freecad". Alternatively you can download a source tarball but they could be already quite old so it's probably better to always get the latest sources via subversion. Note, though, that the subversion version is the FreeCAD version currently being worked on, and it might contain bugs or even fail to compile.
Prerequisites
To compile FreeCAD under Linux you have to install all libraries mentioned in Third Party Libraries first. You also need the GNU gcc compiler version equal or above 3.0.0. g++ is also needed because FreeCAD is completely written in C+ +. Both gcc and g++ are included in the build-essential package listed below. During the compilation some Python scripts get executed. So the Python interpreter has to work properly. Para evitar cualquier problema de vinculador durante el proceso de compilacin que sera una buena idea que las rutas de acceso de la biblioteca ya sea en su LD_LIBRARY_PATH variable o, en su ld.so.conf archivo. Esto ocurre normalmente ya en recientes distribuciones. Para obtener ms detalles, tienen tambin un vistazo a README.Linux en sus fuentes.
Distribuciones Debian/Ubuntu y ms recientes
En los sistemas basados en Debian es bastante fcil obtener todas necesarias las dependencias instaladas. La mayora de las bibliotecas estn disponibles a
travs del administrador de paquetes apt-get o sinptica. A continuacin figuran todos los packgages que necesita instalar. Sobre otras distribuciones, los nombres del paquete pueden variar, pero normalmente usted podr encontrar todos ellos demasiado:
build-essential python libcoin60-dev libsoqt4-dev libxerces-c2-dev (or libxerces28-dev depending on your system) libboost-dev libboost-date-time-dev libboost-filesystem-dev libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev libboost-serialization-dev libboost-signals-dev libboost-regex-dev libqt4-dev qt4-dev-tools python2.5-dev (or higher version if available) libopencascade-dev
Para instalar simplemente todas estas bibliotecas en un solo paso, solo copiar y pegar el texto siguiente en una terminal (slo para sistemas basados en debian/ubuntu) como root:
aptitude install build-essential python libcoin60-dev libsoqt4-dev libxerces-c2-dev libboost-dev libboost-date-time-dev libboost-filesystem-dev libboostgraph-dev libboost-iostreams-dev libboost-program-options-dev libboost-serialization-dev libboostsignals-dev libboost-regex-dev libqt4-dev qt4-dev-tools python2.5-dev libopencascade-dev
Para construir & instalar FreeCADon Fedora 13, se necesitan unas cuantas sugerencias y trucos:
Instalar un montn de paquetes necesarios, ms estn disponibles desde los
repositorios de Fedora 13
Descargar y generar xerces
"SoQtSpaceball.h" de pivy/interfaces/soqt.i comentarios fuera de esas dos lneas permiten la generacin & instalar al trabajo.
Configurar Freecad. Necesario sealar a unas pocas cosas:. /configure--con-Qt-
soqt se establece en "-LNONE" que hizo libtool barf. Mi solucin alguien fue modificar /usr/lib/Coin2/conf/soqt-default.cfg para que el ldflags son ""en lugar de"LNONE". Despus de esto - > xito!
make install Distribuciones ms antiguas y no convencionales
Distribuciones antiguas, sin embargo puede que no encuentre las siguientes bibliotecas:
OpenCASCADE
No todas las distribuciones de Linux tienen un paquete de OpenCASCADE oficial en sus repositorios. Usted tiene que comprobar usted mismo para su distribucin, si hay alguno disponible. Por lo menos desde Debian Lenny y Ubuntu Intrepid sobre un .deb oficial paquete se ofrece. Para mayores Debian o Ubuntu paquetes de versiones obtendr no oficial de aqu . Para construir su propio .deb privada paquetes siguen estos pasos:
wget http://lyre.mit.edu/~powell/opencascade/opencascade_6.2.0.orig.tar.gz wget http://lyre.mit.edu/~powell/opencascade/opencascade_6.2.0-7.dsc wget http://lyre.mit.edu/~powell/opencascade/opencascade_6.2.07.diff.gz dpkg-source -x opencascade_6.2.0-7.dsc # Install OCC build-deps sudo apt-get install build-essential devscripts debhelper autoconf automake libtool bison libx11-dev tcl8.4-dev tk8.4-dev libgl1-mesa-dev libglu1-mesa-dev java-gcj-compat-dev libxmu-dev #Build Opencascade packages. This takes hours and requires # at least 8 GB of free disk space cd opencascade-6.2.0 ; debuild # Install the resulting library debs sudo dpkg -i libopencascade6.2-0_6.2.0-7_i386.deb libopencascade6.2-dev_6.2.0-7_i386.deb
Instalar el paquete normalmente, tenga en cuenta que el instalador es un programa de java que requiere la edicin de tiempo de ejecucin de java oficial de Sun (nombre de paquete: Sol-java6-jre), no el open-source java (gij) que se incluye con Ubuntu. Instalarlo si es necesario:
sudo apt-get remove gij sudo apt-get install sun-java6-jre
Tenga cuidado, si utiliza java gij con otras cosas como un complemento del navegador, no funcionar ya. Si el instalador no funciona, intente:
java -cp path_to_file_setup.jar <-Dtemp.dir=path_to_tmp_directory> run
Una vez que est instalado el paquete, vaya al directorio "ros" dentro del dir opencascade y hacer
./configure --with-tcl=/usr/lib/tcl8.4 --with-tk=/usr/lib/tk8.4
Tardar mucho tiempo, tal vez varias horas. Cuando haya terminado, slo tiene que instalar haciendo
sudo make install
Los archivos de biblioteca se copiarn en /usr/local/lib que est muy bien, porque all se va encontrar automticamente por cualquier programa. Si lo prefiere, tambin puede hacer
sudo checkinstall
que hagan lo mismo como hacer instalar pero cree una entrada en su sistema de gestin de paquetes, por lo que fcilmente puede desinstalar ms tarde. Ahora limpiar los archivos de compilacin temporal enorme haciendo
make clean
Posible error 1: si est utilizando la versin 6.2 de OCC, es probable que el compilador se detendr justo despus del comienzo de la operacin de "hacer". Si sucede, edite el script "configure", busque el CXXFLAGS = "$ CXXFLAGS" Declaracin y reemplazarlo por CXXFLAGS = "$ CXXFLAGS - ffriend inyeccin - fpermissive". A continuacin, siga el paso de configuracin una vez ms. Posible error 2: posiblemente varios mdulos (WOKSH, WOKLibs, TKWOKTcl, TKViewerTest y TKDraw) se quejarn de que ellos no pudieron encontrar los encabezados de tcl/tk. En ese caso, ya que la opcin no est disponible en el script de configuracin, tendr que editar manualmente el archivo makefile de cada uno de estos mdulos: go en adm y ganar y en cada una de las carpetas
de mdulos de mala. Editar el fichero Makefile y localice las lneas CSF_TclLibs_INCLUDES = - I/usr/include y CSF_TclTkLibs_INCLUDES = I/usr/include y agregue /tcl8.4 y /tk8.4 a l, por lo que leen: CSF_TclLibs_INCLUDES =-I/usr/include/tcl8.4 and CSF_TclTkLibs_INCLUDES =-I/usr/include/tk8.4
SoQt
La biblioteca de SoQt debe compilarse contra Qt4, que es el caso de las distribuciones ms recientes. Pero en el momento de escribir este artculo hubo slo paquetes de SoQt4 para Debian propia disponible pero no para todas las versiones de Ubuntu. Para obtener los paquetes construidos realice los pasos siguientes:
wget http://ftp.de.debian.org/debian/pool/main/s/soqt/soqt_1.4.1.orig.tar.g z wget http://ftp.de.debian.org/debian/pool/main/s/soqt/soqt_1.4.1-6.dsc wget http://ftp.de.debian.org/debian/pool/main/s/soqt/soqt_1.4.16.diff.gz dpkg-source -x soqt_1.4.1-6.dsc sudo apt-get install doxygen devscripts fakeroot debhelper libqt3-mtdev qt3-dev-tools libqt4-opengl-dev cd soqt-1.4.1 debuild sudo dpkg -i libsoqt4-20_1.4.1-6_i386.deb libsoqt4-dev_1.4.16_i386.deb libsoqt-dev-common_1.4.1-6_i386.deb
Pivy no es necesaria para construir FreeCAD o para ejecutarlo, pero es necesario para que el mdulo de redaccin 2D trabajar. Si no vas a usar ese mdulo, no necesita pivy. En el momento de redactar este informe, Pivy es muy nuevo y no podra haber hecho su camino a su repositorio de la distribucin. Si no puede encontrar Pivy en el repositorio de paquetes de su distribucin, puede capturar paquetes de debian/ubuntu en la pgina de descarga de FreeCAD: http://sourceforge.NET/Projects/Free-CAD/Files/FreeCAD%20Linux/ o compilar pivy: Instrucciones de compilacin de Pivy
Compilar FreeCAD
Si tienes las fuentes con la subversin, a continuacin, debe ser el primer paso
./autogen.sh
crea el script de configuracin y mucho ms. Para el proceso de generacin propia proporcionamos un script de configuracin. Slo tiene que escribir
./configure
Para obtener todo configurado. Si desea que una visin general de todas las opciones que puede especificar, puede escribir
./configure --help.
Normalmente necesita ninguno de ellos - a menos que tenga uno de sus bibliotecas instalados en un directorio realmente raro. Despus de que haya finalizado la configuracin, es tan simple como la compilacin FreeCAD
make
Si por favor cualquier error se produce durante la construccin de fuentes, compruebe esta pgina y el archivo README.Linux, entonces usted podra saltar a la Bug Tracker en SourceForge, elija los para el Estado y haga clic en el examinar botn para ver informes anteriores sobre problemas de compilacin. Despus de haber construido FreeCAD correctamente, hacer
make install
Se instalar en una carpeta de FreeCAD en la carpeta de inicio, as que no necesita privilegios de root. En lugar de make install, que tambin puede hacer
checkinstall
De esta manera que se instalar FreeCAD por su sistema de gestin de paquetes, por lo tanto puede desinstalarlo fcilmente ms tarde. Pero dado que todos de instalacin de FreeCAD se encuentran en un nico directorio, simplemente quitando el directorio de FreeCAD es una forma vlida para desinstalar demasiado.
El aenderezar forma
aenderezar es un sistema de compilacin ms reciente que tiene la gran ventaja de ser comn para los sistemas de destino diferentes (Linux, Windows, MacOSX, etc.). FreeCAD est cambiando progresivamente al sistema de aenderezar, y ya puede generar FreeCAD de esa manera. Suponiendo que aenderezar est instalado en su sistema, cambie a su carpeta de origen FreeCAD y la cuestin:
cmake .
Para tener FreeCAD construido. Una instalacin adecuada de todo el sistema de FreeCAD todava no puede hacerse con aenderezar, pero puede ejecutar FreeCAD mediante la emisin de
,/bin/FreeCAD Partes opcionales
Si desea desarrollar Qt cosas para FreeCAD, necesitar el plugin de Qt Designer que proporciona todos los widgets personalizados de FreeCAD. Vete a
freecad/src/Tools/plugins/widget
se crear la libFreeCAD_widgets.so de la biblioteca. Dar a conocer esta biblioteca a Qt Designer tiene que copiar el archivo a
$QTDIR/plugin/designer
Solucin de problemas
Nota para los sistemas de 64 bits
Al crear FreeCAD para 64 bits all es un problema conocido con el paquete OpenCASCADE de 64 bits. Para obtener FreeCAD que se est ejecutando
correctamente, puede que tenga que ejecutar el. / configure secuencias de comandos con el adicional definir conjunto de _OCC64:
./configure CXXFLAGS="-D_OCC64"
Para sistemas basados en Debian esta solucin no es necesaria cuando se utiliza el paquete precompilado porque all est fabricado para establecer internamente este define que el paquete de OpenCASCADE. Ahora slo necesita compilar FreeCAD de la misma manera como se describi anteriormente.
Macros de automake
El script de configuracin de FreeCAD hace uso de varias macros de automake que a veces no se instalan con sus paquetes: bnv_have_qt.m4, coin.m4 y gts.m4. Si es necesario (error mientras configura), google para ellos y le ser encontrarlas fcilmente. Son slo simples secuencias de comandos que necesita para colocar en la carpeta /usr/share/aclocal.
used
for
checking
if
packages
are
standard-
Para crear un paquete abierto una consola, simplemente vaya al directorio FreeCAD y llamada
debuild
Una vez que el paquete se construye, usted puede utilizar lintian para comprobar si el paquete contiene errores
lintian your-fresh-new-freecad-package.deb (replace by the name of the package you just created)
Si tiene una secuencia de comandos para su distro preferida, por favor, mndelo! Incorporar en este artculo.
Ubuntu 9.10 - Karmic Koala / Ubuntu 10.04 LTS - Lucid Lynx sudo apt-get install build-essential python libcoin60-dev libsoqt4-dev \ libxerces-c2-dev libboost-dev libboost-date-time-dev libboostfilesystem-dev \ libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev \ libboost-serialization-dev libboost-signals-dev libboost-regex-dev \ libqt4-dev qt4-dev-tools python2.6-dev libopencascade-dev libsoqt4-dev \ libode-dev subversion cmake libeigen2-dev libsimage-dev python-qt4 \ libtool autotools-dev automake bison flex # checkout the latest source svn co https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk freecad # go to source dir cd freecad # build configuration cmake . # build FreeCAD make # test FreeCAD cd bin ./FreeCAD -t 0 Ubuntu 9.04 - Jaunty Jackalope # get the needed tools and libs sudo apt-get install build-essential python libcoin40-dev libsoqt4-dev \ libxerces-c2-dev libboost-dev libboost-date-time-dev libboostfilesystem-dev \ libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev \ libboost-serialization-dev libboost-signals-dev libboost-regex-dev \ libqt4-dev qt4-dev-tools python2.6-dev \ libsimage-dev libopencascade-dev \ libsoqt4-dev libode0-dev subversion cmake libeigen2-dev python-pivy \ libtool autotools-dev automake # checkout the latest source svn co https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk freecad # go to source dir
cd freecad # build configuration cmake . # build FreeCAD make # test FreeCAD cd bin ./FreeCAD -t 0 11.2 De OpenSuse
# install needed packages for development sudo zypper install gcc cmake subversion OpenCASCADE-devel \ libXerces-c-devel python-devel libqt4-devel python-qt4 \ Coin-devel SoQt-devel boost-devel libode-devel libQtWebKit-devel \ libeigen2-devel # get the source svn co https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk freecad # go to source dir cd freecad # build configuration cmake . # build FreeCAD nice make # test FreeCAD cd bin ./FreeCAD -t 0 OpenSuse 11.1 # additional repository (for OpenCascade) sudo zypper -p http://packman.unixheads.com/suse/11.1/ # install needed packages for development sudo zypper install gcc cmake subversion OpenCASCADE-devel \ libXerces-c-devel python-devel libqt4-devel python-qt4 \ Coin-devel SoQt-devel boost-devel libode-devel libQtWebKit-devel \ libeigen2-devel # get the source
svn co freecad
https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk
# go to source dir cd freecad # build configuration cmake . # build FreeCAD nice make # test FreeCAD cd bin ./FreeCAD -t 0 Squeeze Debian # get the needed tools and libs sudo apt-get install build-essential python libcoin60-dev libsoqt4-dev \ libxerces-c2-dev libboost-dev libboost-date-time-dev libboostfilesystem-dev \ libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev \ libboost-serialization-dev libboost-signals-dev libboost-regex-dev \ libqt4-dev qt4-dev-tools python2.5-dev \ libsimage-dev libopencascade-dev \ libsoqt4-dev libode-dev subversion cmake libeigen2-dev python-pivy \ libtool autotools-dev automake # checkout the latest source svn co https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk freecad # go to source dir cd freecad # build configuration cmake . # build FreeCAD make # test FreeCAD cd bin ./FreeCAD -t 0
FreeCAD de compilar en un Mac no es muy diferente de los pasos en Linux u otras variantes de UNIX. El mayor reto es conseguir realmente todas las dependencias instaladas. En las secciones siguientes, me (lhagan) se detalla
los pasos exactos que tuve que ir a travs de conseguir esta aplicacin para compilar en Leopard y Snow Leopard utilizando un Mac Intel (PowerPC debe ser factible, pero requiere volver a compilar algunas bibliotecas binarios que todava no he llegado a). Por lo que yo s, soy el nico para construir con xito el FreeCAD en un Mac recientemente, por favor, puesto en el foro de discusin si estos pasos funcionan para usted, por el ayudar a Foro si no es as, o editar esta pgina si encuentra errores.
Esto pondr el origen de la FreeCAD y los archivos relacionados en su carpeta de inicio (~/freecad/). Ubicacin no es importante que si sera ms bien colocarlo en otro lugar, slo necesita acceso completo a los archivos.
Si o no acaba de instalar MacPorts, probablemente querr asegurarse de que est actualizado. Ejecutar:
sudo port selfupdate
Ahora que MacPorts est instalado y actualizado, puede iniciar la instalacin de algunos de los paquetes requeridos de FreeCAD:
Oda xercesc impulso GTS OpenCV
El siguiente comando ser compilacin e instalacin todas las bibliotecas necesarias. Si MacPorts produce errores, puede que desee intente instalar de uno en uno.
sudo port install ode xercesc boost gts opencv
El leopardo de nieve, opencv no construir actualmente. Usted puede, sin embargo, continuar sin opencv.
Obtenga la versin de "Marco slo" a menos que se planea desarrollar usando Qt (es mucho ms pequeo). FreeCAD compila en OS X Leopard con Qt 4.5. Se instala en /Library/Frameworks y/usr/bin.
Http://www.coin3d.org/lib/coin/releases/ de la moneda
Instale Coin.pkg Y CoinTools.pkg. FreeCAD compila en OS X Leopard con moneda 3.1.0. Se instala en /Library/Frameworks.
SoQt http://dl.getdropbox.com/u/103808/FreeCAD/SoQt-1.4.1.dmg
Instale SoQt.pkg Y SoQtTools.pkg. Por alguna razn, no se proporciona el marco de la SoQt como un binario oficial. Para su comodidad, yo estoy proporcionando la anterior versin compilada. Si desea compilar su propio, descargue la ltima fuente de http://www.coin3d.org/lib/soqt/releases y siga las instrucciones en README.MACOSX. FreeCAD compila en OS X Leopard con SoQt 1.4.1. Se instala en /Library/Frameworks.
OpenCASCADE
http://dl.getdropbox.com/u/103808/FreeCAD/OpenCASCADE_i 386_6.3.0_20091128.dmg La por encima de la OCC 6.3.0 distribucin binaria es una versin modificada de la proporcionada por los mantenedores de PythonOCC http://www.pythonocc.org/. Puede utilizar la versin de PythonOCC, sin embargo, se necesitan cambios a los archivos de .la en orden para el FreeCAD proceso para vincular adecuadamente a ella de construccin y tendrs que descargar el origen de la OCC por separado. He no todava correctamente construido OpenCASCADE yo mismo, pero sera igual que eventualmente--
esto sera clave para brindar una distribucin de PowerPC (si es incluso posible). Si te OpenCASCADE para construir en OS X, djeme saber cmo. Se instala en /usr/local/lib/OCC y /usr/local/include/OCC. ACTUALIZADA de 2009-11-28 con correcciones para Snow Leopard. Si ha instalado OCC anteriores a esta fecha, se recomienda que usted elimina los archivos antiguos e instala manualmente el nuevo paquete.
sudo rm -r /usr/local/lib/OCC sudo rm -r /usr/local/include/OCC
Compilar
Ahora configurar, compilar e instalar utilizando los siguientes comandos desde dentro de la carpeta raz del FreeCAD de FreeCAD. Si pone su paquete de FreeCAD.app en algn lugar distinto de /aplicaciones (o no est usando el paquete), cambie la lnea 'PREFIX' en consecuencia.
./autogen.sh PREFIX=/Applications/FreeCAD.app/Contents
./configure --with-xercesc-lib=/opt/local/lib --with-xercescinclude=/opt/local/include --with-boost-lib=/opt/local/lib \ --with-boost-include=/opt/local/include --with-qt4-bin=/usr/bin --with-qt4-framework=/Library/Frameworks \ --with-occ-lib=/usr/local/lib/OCC --with-occinclude=/usr/local/include/OCC --with-coin=/Library/Frameworks \ --with-soqt=/Library/Frameworks --prefix=$PREFIX --bindir=$PREFIX/MacOS --libdir=$PREFIX/Frameworks/FreeCAD \ --includedir=$PREFIX/Resources/include --datarootdir=$PREFIX/Resources/share make LDFLAGS=-Wl,-headerpad_max_install_names make install
Ejecutar
Si todo ha ido correctamente, haga doble clic en el paquete de .app debe iniciar FreeCAD. Si tienes cualquier problema, los detalles del post sobre la ayudar a Foro .
Visin general
Estas son las bibliotecas que no cambian en el proyecto de FreeCAD. Se utilizan bsicamente sin cambios como una biblioteca de vnculos dinmicos (*.so o *.dll). Si hay un cambio necesario o se necesita una clase contenedora, a continuacin, el cdigo de la envoltura o el cdigo de la Biblioteca ha cambiado necesario mover para el paquete de base de FreeCAD. Las bibliotecas utilizadas son: Tener en cuenta usando LibPack en lugar de descarga e instalacin de todas las cosas en su propia.
Enlaces
Tabla de vnculos Nombre de lib Python Versin necesaria > = 2.5. x Vnculo para obtenerlo http://www.Python.org/ http://www.opencascade.org http://www.qtsoftware.com http://www.coin3d.org
ODA SoQt
http://www.ode.org http://www.coin3d.org
Xerces-C+ > = 2.7 < 3.0 http://XML.Apache.org/Xerces-c/ + GTS Zlib Impulso Eigen2 > = 0.7 > = 1.x.x > = 1.33.x > = 2.0.5 http://GTS.sourceforge.NET/ http://www.zlib.NET/ http://www.boost.org/ http://eigen.tuxfamily.org/index.php? title=Main_Page
Detalles
Python
Versin: 2.5 o superior Licencia: Licencia de Python 2.5 Puede utilizar la fuente o binario de http://www.Python.org/ o utilizar alternetivly ActiveState Python desde http://www.activestate.com/ aunque es un poco difcil obtener los libs de depuracin de ActiveState. Descripcin Python es el lenguaje principal de secuencias de comandos y se utiliza en toda la aplicacin. Por ejemplo:
Implementar scripts de prueba para realizar pruebas en: prdidas de memoria garantizar presenta funcionalidad despus de los cambios Contabilizar cheques de generacin pruebas de cobertura de la prueba Grabacin de macros y macro Implementar lgica de la aplicacin para los paquetes estndar Aplicacin de workbenches todo Dinmico de carga de los paquetes Aplicacin de normas para el diseo (ingeniera de conocimiento) Haciendo algunas cosas de Internet fancy como grupos de trabajo y PDM. Y as sucesivamente...
Especialmente la carga de paquete dinmico de Python se utiliza para cargar en la funcionalidad adicional de tiempo de ejecucin y workbenches necesarios
para las tareas reales. Para un vistazo a Python vea: www.python.org por qu Python puede pedir. Hay algunas razones: hasta ahora he utilizado diferentes lenguajes de scripting en mi vida profesional:
Perl Tcl/Tk VB Java
Python es ms OO a continuacin, Perl y Tcl, el cdigo no es un desastre como en Perl y VB. Java no es un lenguaje de secuencia de comandos en el primer lugar y disco duro (o imposible) para incrustar. Python est bien documentada y fciles de integrar y extender. Es tambin bien probado y tiene un fuerte respaldo a celebrar en la comunidad de cdigo abierto. Crditos Va a Guido van Rossum y un montn de gente hizo Python sea un xito!
OpenCasCade
Versin: 5.2 o superior Licencia: OCTPL OCC es un ncleo de CAD completo. Originalmente, est desarrollado por Datavision de Matra en Francia para el Strim (Styler) y aplicaciones de Quantum de Euclides y ms tarde hizo Open Source. Es una biblioteca realmente enorme y hace que sea una aplicacin de CAD libre posible en primer lugar, proporcionando algunos paquetes que seran difcil o imposible de aplicar en un proyecto de cdigo abierto:
Un ncleo de geometra compatible con completado de STEP Un modelo de datos topolgicos y las funciones todos necesarias para trabajar en
restore, externo de vinculacin de documentos, el nuevo clculo de la historia de diseo (modelado paramtrico) y una instalacin para cargar dinmicamente de nuevos tipos de datos como un paquete de extensin
Qt
Versin: 4.1. x o superior Licencia: V2.0/v3.0 de la GPL o comercial (desde la versin 4.5 en tambin LPGL v2.1) No creo que necesario que diga mucho acerca de Qt. Es uno de los kits de herramientas de GUI ms utilizadas en proyectos de cdigo abierto. Para m, el punto ms importante para usar Qt es el diseador de Qt y la posibilidad de cargar los cuadros de dilogo todo como un recurso (XML) e incorporar widgets especializados. En una aplicacin de CAX la interaccin con el usuario y cuadros de dilogo son por lejos la mayor parte del cdigo y un diseador de buen dilogo es muy importante para ampliar fcilmente FreeCAD con nueva funcionalidad. Ms informacin y una muy buena documentacin en lnea que encontrar en http://www.qtsoftware.com .
Coin3D
Versin: 2.0 o mayor Licencia: V2.0 GPL o comercial Moneda es una biblioteca de grficos 3D de alto nivel con una interfaz de programacin de aplicaciones de C++. Moneda utiliza estructuras de datos de scenegraph para representar grficos en tiempo real adecuado para la mayora todo tipo de aplicaciones de visualizacin cientfica y de ingeniera. Moneda es porttil en una amplia gama de plataformas: cualquier UNIX / Linux / * BSD plataforma, todos de Microsoft de Windows, sistema operativo y Mac OS X. Moneda se basa en la biblioteca estndar de la industria de procesamiento del modo inmediato de OpenGL y agrega abstracciones para nivel superiores primitivas, proporciona interactividad 3D, inmensamente aumenta la productividad y comodidad de programador y contiene muchas caractersticas de optimizacin del complejo para el procesamiento rpido que son transparentes para el programador de la aplicacin. Moneda se basa en la API abierta de inventor de SGI. Inventor abierto, para quienes no estn familiarizados con ella, desde hace mucho tiempo se ha convertido en la biblioteca de grficos estndar de facto para la visualizacin en 3D y software de simulacin visual en la comunidad cientfica y de ingeniera. Se ha demostrado que vale durante un perodo de ms de 10 aos, su
madurez que contribuyen a su xito como un gran bloque de creacin en miles de aplicaciones de ingeniera a gran escala alrededor del mundo. Vamos a utilizar OpenInventor como visor 3D en FreeCAD debido a que el Visor de OpenCasCade (AIS y Graphics3D) tiene las limitaciones de serios y los cuellos de botella de rendimiento, especialmente cuando va en representacin de ingeniera a gran escala. Otras cosas como texturas o procesamiento volumtrica no son realmente compatibles y as sucesivamente.... Desde la versin 2.0 Coin utiliza un modelo de licencia diferente. No es ms largo LGPL. Utilizan GPL para una licencia comercial para cdigo cerrado y de cdigo abierto. Esto significa que si desea vender su trabajo basado en FreeCAD (mdulos de extensin), deber adquirir una licencia de monedas!
ODE (Open motor dinmico)
Versin: 0.10.0 o superior Licencia: LGPL v2.1 o posterior o BSD ODE es de cdigo abierto, biblioteca de alto rendimiento para simular dinmica de cuerpo rgido. Aparece completamente, estable, maduro y plataforma independiente con una API de C y C++ fcil de usar. Se ha avanzado tipos conjuntos y integrado de deteccin de colisiones con la friccin. ODE es til para la simulacin de vehculos, objetos en entornos de realidad virtual y criaturas virtuales. Actualmente se utiliza en muchos juegos de ordenador, 3D, herramientas de simulacin y herramientas de autora. Crditos Russell Smith es el principal autor de ODE.
SoQt
Versin: 1.2.0 o superior Licencia: V2.0 GPL o comercial SoQt es el inventor vinculante para el Kit de herramientas de Gui de Qt. Por desgracia, no es ms largo LGPL por lo que tenemos que quitarlo de la base de cdigo de FreeCAD y vincularlo como una biblioteca. Tiene el mismo modelo de licencia como moneda. Y tienes que compilarlo con su versin de Qt.
Xerces-C++
Versin: 2.7.0 o superior Licencia: Versin de licencia de software de Apache 2.0 Xerces-C++ es un analizador XML validar escrito en un subconjunto porttil de C++. Xerces-C++ facilita la tarea de dar a su aplicacin la capacidad para leer y escribir datos XML. Se proporciona una biblioteca compartida para analizar, generando, manipular y validar documentos XML. Xerces-C++ es fiel a la recomendacin XML 1.0 y muchos de los estndares asociados (vase caractersticas ms abajo). El analizador proporciona alto rendimiento, modularidad y escalabilidad. Cdigo fuente, muestras y documentacin de la API se proporcionan con el analizador. Para la portabilidad, ha tenido cuidado para hacer un uso mnimo de plantillas, no RTTI y uso mnimo de #ifdefs. El analizador se utiliza para guardar y restaurar parmetros en FreeCAD.
GTS
Versin: 0.7 Licencia: V2.0 LGPL o posterior GTS las siglas de la biblioteca de superficies trianguladas de GNU. Es un Open Source Free Software Library pretende proporcionar un conjunto de funciones tiles para hacer frente a las superficies 3D con la de tringulos interconectadas. El cdigo fuente est disponible de forma gratuita bajo la licencia LGPL de software libre. Realmente no es necesario compilar FreeCAD. Puede cambiar en el uso con un interruptor proprocessor en FCConfig.h.
Zlib
Versin: 1.x.x Licencia: zlib License zlib est diseado para ser una libre, para fines generales, legalmente no comprometido--es decir, no cubiertos por ninguna patente--biblioteca de compresin sin prdida de datos para su uso en prcticamente cualquier equipo hardware y sistema operativo. El formato de datos de zlib es en s mismo porttil a travs de plataformas. A diferencia del mtodo de compresin LZW utilizado en Unix Compress (1) y en el formato de imagen GIF, el mtodo de compresin que se utiliza actualmente en zlib esencialmente nunca expande
los datos. (LZW puede duplicar o triplicar el tamao del archivo en casos extremos). la huella de la memoria de zlib tambin es independiente de los datos de entrada y puede ser reducida, si es necesario, algunos sin costo en compresin.
Impulso
Versin: 1.33.x Licencia: Licencia de software de impulso - versin 1.0 Las bibliotecas de C++ de Boost son una coleccin de las bibliotecas de peerreviewed y de cdigo abierto que amplan la funcionalidad de C++. Las bibliotecas tienen licencia bajo la licencia de software de Boost, diseado para permitir a Boost ser usado con ambos proyectos de cdigo abierto y cerrado. Muchos de los fundadores del Boost estn en el Comit de estndar de C++ y varias bibliotecas de Boost han sido aceptadas para su incorporacin a la tcnica 1 informe de C ++ 0 x. Las bibliotecas estn encaminadas a una amplia gama de usuarios de C++ y dominios de aplicacin. Van desde bibliotecas de propsito generales como SmartPtr, para OS abstracciones como sistema de archivos, bibliotecas, principalmente dirigidas a otros desarrolladores de biblioteca y avanzadas de C++ los usuarios, como la MPL. A fin de garantizar la eficacia y la flexibilidad, Boost hace un amplio uso de plantillas. Impulso ha sido una fuente de trabajo extenso e investigacin en programacin genrica y metaprogramacin en C++. Ver: http://www.boost.org/ para detalles.
LibPack
LibPack es un conveniente paquete con todas las bibliotecas anteriores empaquetados juntos. Est actualmente disponible para la plataforma de Windows en el Descargar pgina! Si est trabajando bajo Linux no necesita un LibPack, en lugar de debe hacer uso de los repositorios de paquetes de tu distribucin de Linux.
FreeCADLibs7.x Changelog Utilizando QT 4.5. x y 3.1.x de monedas Eigen plantilla lib para robot aadido SMESH experimental
Pgina de herramienta
Para el desarrollo de cada software graves necesita herramientas. Aqu hay una lista de herramientas que utilizamos para desarrollar FreeCAD:
Las Qt es un Estado de la tcnica, la herramienta de diseo de interfaz de usuario de plataforma independend. Est contenido en el LibPack de FreeCAD, pero tambin puede descargarse en www.trolltech.com .
InkScape
Programa de dibujo de vector de gran . Adhers para el estndar SVG y se utiliza para dibujar iconos e imgenes. Obtenerlo en www.inkscape.org .
Doxygen
Una herramienta muy buena y estable para generar documentacin de origen de los archivos .h y .cpp.
The Gimp
No mucho que decir sobre el programa de manipulacin de imagen de GNU. Adems puede manejar archivos .xpm que es una forma muy conveniente para manejar iconos en programas de QT. XPM interes es C-cdigo que puede ser compilado en un programa. Obtener el GIMP aqu: www.gimp.org
Herramientas de Windows
Express Visual Studio 8
A pesar de que VC8 para el desarrollo de C++ no es realmente un paso adelante desde el 6 de VisualStudio (OMI un gran paso atrs), su un sistema libre desarrollo en Windows. Para aplicaciones Win32 nativas que necesita descargar el PlatformSDK de M $. Por lo que la edicin Express es difcil de encontrar. Pero se puede intentar este enlace
CamStudio
Es una herramienta de cdigo abierto para grabar podcasts (Webcasts). Su una muy buena herramienta para crear tutoriales por grabarlas. Su medida no tan aburrido como escribir documentacin. Ver CamStudio.org para detalles.
Tortuga SVN
Esta es una herramienta muy grande. Hace uso de Subversion (nuestro sistema de control de versin en sf.net) un verdadero placer. Usted puede a travs de la integracin del explorador, administrar revisiones, compruebe en Diffs, resolver fcilmente Confilcts, hacer ramas y as sucesivamente.... El cuadro de dilogo de confirmacin en s mismo es una obra de arte. Se le da una visin general sobre los archivos cambiados y permite colocarlos en la confirmacin o no. Facilita la Junte los cambios a las unidades lgicas y darles un mensaje de confirmacin clara. Encontrar ToroiseSVN en TortoiseSVN.Tigris.org .
StarUML
Un completo programa de Open Source de UML. Tiene un montn de caractersticas de las grandes, incluyendo el cdigo fuente de C++ engeniering inversa.... Descargar aqu: staruml.sourceforge.net
Herramientas en Linux
TODO Esta pgina muestra las diferentes maneras para iniciar FreeCAD y las caractersticas ms importantes de configuracin.
Configuration: -l [ --write-log ] arg -t [ --run-test ] arg -M [ --module-path ] arg -P [ --python-path ] arg --response-file arg
write a log file test level additional module paths additional python paths can be specified with '@name', too
o:
FreeCAD --response-file=ResponseFile.txt
Opciones ocultas
Hay un par de opciones no visible para el usuario. Estas opciones son, por ejemplo, los parmetros de X-Window analizados por el sistema de Windows:
-Mostrar la pantalla, define la visualizacin de X (el valor predeterminado es $
DISPLAY).
-geometra geometra, establece la geometra de cliente de la primera ventana que
se muestra.
fuente de -fn o - de la fuente, define la fuente de la aplicacin. La fuente debe
-ttulo ttulo, establece el ttulo de la aplicacin. -visual TrueColor, las fuerzas de la aplicacin para que utilice un visual TrueColor
pantalla de 8 bits, si la aplicacin es mediante la especificacin de color de QApplication::ManyColor. Si el recuento es 216 entonces un 6 x 6 x 6 color cubo se utiliza (es decir, 6 niveles de rojo, 6 de color verde y 6 de azul); para otros valores, un cubo aproximadamente proporcional a un 2 x 3 x 1 cubo se utiliza.
-cmap, hace que la aplicacin instalar un mapa de colores privada en una pantalla
de 8 bits.
desde la lnea de comandos. En modo de la consola, no se mostrar ninguna interfaz de usuario y, a continuacin, se le presentar un prompt del intrprete de python. Desde ese indicador de python, que tiene la misma funcionalidad como el intrprete de python que se ejecuta dentro de la interfaz grfica de usuario de FreeCAD y el acceso normal a todos los mdulos y plugins de FreeCAD, salvo el mdulo de FreeCADGui. Tenga en cuenta que los mdulos que dependen de la FreeCADGui tambin pueden no estar disponibles.
import
sys
sys.path.append("path/to/FreeCAD/lib")
change
this
by
Una vez cargada la FreeCAD, corresponde a usted para hacerla a interactuar con la aplicacin host de ninguna manera que se pueda imaginar!
El conjunto de configuracin
En cada FreeCAD de inicio examina sus alrededores y los parmetros de lnea de comandos. Acumula un conjunto de configuracin que mantiene la esencia de la informacin de tiempo de ejecucin. Ms tarde, esta informacin se utiliza para determinar el lugar dnde guardar los datos de usuario o los archivos de registro. Tambin es muy importante para post postmortem analiza. Por lo tanto, est guardado en el archivo de registro.
Ruta de acceso donde FreeCAD almacena C:\Documents and UserAppData los datosSettings\nombre /Home/username/.FreeCAD relacionad Data\FreeCAD os de usuario de la aplicacin.
Archivo donde FreeCAD almacena C:\Documents and / UserParamet los datosSettings\nombre Home/username/.FreeCAD/User er relacionad Data\FreeCAD\user.c .cfg os defg usuario de la aplicacin.
SystemPara meter
Archivo donde FreeCAD C:\Documents and / almacena Settings\nombre Home/username/.FreeCAD/Syst los datosData\FreeCAD\syste em.cfg relacionad m.cfg os de aplicacin.
Ruta de C:\Documents and UserHomePa inicio del Settings\username\ / home/nombre de usuario th usuario My documentos actual
En el ejemplo se
LoggingFile
LoggingFileName
C:\Documents and Nombre del archivo donde seSettings\nombre coloca el registro Data\FreeCAD\FreeCAD.lo g
RunMode
Esto indica cmo funcionar el"Cmd" bucle principal. "Script" significa que se llama a la secuencia de comandos determinado y, a continuacin, salir. "Cmd" ejecuta el intrprete de lnea de comandos. "Interno" se ejecuta una secuencia de comandos interno. "Gui" entra en el bucle de eventos de Gui. "Mdulo" carga un mdulo de
python determinado.
FileName
Significado RunMode
depende
de
la
ScriptFileName
Significado RunMode
depende
de
la
Detallado
"" o "estricto"
OpenFileCount
Contiene las rutas de acceso de AdditionalModuleP mdulo adicionales dadas en la"extraModules /" aths lnea de cmd
Ejemplo M $
Ejemplo (Linux)
Posix
Ruta donde est / c:/archivos/FreeCAD_ AppHomePath instalado User/local/FreeCAD_0 0.7 de programa FreeCAD .7
PythonSearchP Contiene una ath lista de rutas de acceso que python busca los mdulos. Esto es al inicio puede
Algunas bibliotecas necesitan llamar a sistema de variables de entorno. A veces, cuando hay un problema con una instalacin de FreeCAD, es porque algunos variable de entorno est ausente o establecer errneamente. Por lo tanto, algunas variables importantes obtener duplicados en la configuracin y guardados en el archivo de registro. Python relacionados con las variables de entorno:
PYTHONPATH PYTHONHOME TCL_LIBRARY TCLLIBPATH
de
Sinopsis
En el ejemplo se
BuildRevision
Nmero de revisin de repositorio SVN de la 356 src en la construccin. Generados por SVN
URL
del
https://FreeCAD.SVN.sourceforge.NET/svnroot/Fr ee-CAD/trunk/src
BuildScrClean
BuildScrMixed
Origen no mezclada
Configuracin de estas entradas estn relacionadas con el mecanismo de creacin de marca de FreeCAD. Consulte Marca para ms detalles.
Entradas de configuracin de usuario
En se
el
ejemplo
/EXENAME
Nombre del archivo ejecutable de generacin. Puede buzo de FreeCAD si seFreeCAD.exe utiliza un main.cpp diferentes.
ExeVersion
AppIcon
ConsoleBanner
SplashPicture
para
la"FreeCADSplashe r"
SplashAlignment
"#000000"
StartWorkbench
de
la
HiddenDockWind Lista de dockwindows (separados por un"Editor ow punto y coma) que estar deshabilitado propiedad"
de
Se puede utilizar para simplificar algunas tareas frecuentes en la construccin, la distribucin y la extensin FreeCAD.
Uso
Con Python correctamente instalado, fcbt puede ser invocado por el comando
python fbct.py
Muestra un men, donde puede seleccionar la tarea que desea utilizar para:
FreeCAD Build Tool Usage: fcbt <command name> [command parameter] possible commands are: - DistSrc (DS) Build a source Distr. of the current source tree - DistBin (DB) Build a binary Distr. of the current source tree - DistSetup (DI) Build a Setup Distr. of the current source tree - DistSetup (DUI) Build a User Setup Distr. of the current source tree - DistAll (DA) Run all three above modules - BuildDoc (BD) Create the documentation (source docs) - NextBuildNumber (NBN) Increase the Build Number of this Version - CreateModule (CM) Insert a new FreeCAD Module in the module directory For help on the modules type: fcbt <command name> ?
En la entrada promt escriba el comando abreviado que desea llamar. Por ejemplo, escriba "CM" para creacin de un mdulo .
DistSrc
El comando "DS" crea una distribucin de cdigo fuente del rbol de cdigo fuente actual.
DistBin
El comando "DB" crea una distribucin binaria del rbol de cdigo fuente actual.
DistSetup
El comando "DI" crea una distribucin de configuracin del rbol de cdigo fuente actual.
DistSetup
El comando "DUI" crea una distribucin de configuracin de usuario del rbol de cdigo fuente actual.
DistAll
El comando "DA" ejecuta "DS", "DB" y "DI" en la secuencia.
BuildDoc
El comando "BD" crea la documentacin del software mediante la ejecucin de Doxygen que debe estar instalado.
NextBuildNumber
El comando "NBN" incrementa el nmero de compilacin para crear una nueva versin de lanzamiento de FreeCAD.
CreateModule
El comando "CM" crea un nuevo mdulo de aplicacin .
Creacin de un nuevo mdulo de aplicacin en FreeCAD es bastante simple. En la FreeCAD rbol de desarrollo existe la Herramienta de generacin de FreeCAD ( fcbt ) que hace las cosas ms importantes para usted. Es un Python secuencia de comandos se encuentra bajo
trunk/src/Tools/fcbt.py
Cuando se instalan correctamente su intrprete de python puede ejecutar la secuencia de comandos desde la lnea de comandos
python fcbt.py
- CreateModule directory
(CM)
Ahora se pide para especificar un nombre para su nuevo mdulo. Permite llamarlo TestMod por ejemplo:
Please enter a name for your application: TestMod
Despus de presionar entrar en fcbt comienza a copiar todos los archivos necesarios para el mdulo en una nueva carpeta en
trunk/src/Mod/TestMod/
A continuacin, todos los archivos se modifican con su nuevo nombre del mdulo. Ahora lo nico que necesita hacer es agregar los dos nuevos proyectos de "appTestMod" y "appTestModGui" a su espacio de trabajo (en Windows) o a sus objetivos de archivo make (unix). Thats se!
Probar primero
Antes de ir a travs del dolor fuera de depuracin del uso del marco de prueba para comprobar si las pruebas estndar funcionen correctamente. Si no quiz es una instalacin rota.
lnea de comandos
El de depuracin de FreeCAD es apoyado por unos pocos mecanismos internos. La versin de lnea de comandos de FreeCAD proporciona opciones para la depuracin de soporte:
-v Con la "v" opcin FreeCAD da un resultado ms detallado. -l Con la "l" opcin FreeCAD escribe informacin adicional en un archivo de registro.
Introduccin
FreeCAD viene con un amplio marco de prueba. Las bases de la pruebas en un conjunto de secuencias de comandos de Python que se encuentran en el mdulo de prueba. Este artculo se describe el Marca de FreeCAD. La marca significa para iniciar su propia aplicacin en base de FreeCAD. Puede ser slo su propio ejecutable o salpicadura pantalla hasta un completo programa refundido. Sobre la base de la arquitectura flexible de FreeCAD es fcil de utilizar como base para su propio programa de propsito especial.
General
La mayor parte de la marca se realiza en el MainCmd.cpp o MainGui.cpp . Estos proyectos de generan los archivos ejecutables de FreeCAD. Para hacer su propia marca simplemente copie el projets principal o MainGui y dar el ejecutable de un nombre propio, por ejemplo, FooApp.exe. Los ajustes ms importantes para un nuevo aspecto pueden hacerse en un lugar en la funcin main(). Aqu es la seccin de cdigo que controla la marca:
int main( int argc, char ** argv ) { // Name and Version of the Application App::Application::Config()["ExeName"] = "FooApp.exe"; App::Application::Config()["ExeVersion"] = "0.7"; // set the banner (for loging and console) App::Application::Config()["ConsoleBanner"] = sBanner; App::Application::Config()["AppIcon"] = "FCIcon"; App::Application::Config()["SplashPicture"] = "FooAppSplasher"; App::Application::Config()["StartWorkbench"] = "Part design"; App::Application::Config()["HiddenDockWindow"] = "Property editor"; App::Application::Config()["SplashAlignment" ] = "Bottom|Left"; App::Application::Config()["SplashTextColor" ] = "#000000"; // black // Inits the Application App::Application::Config()["RunMode"] = "Gui"; App::Application::init(argc,argv); Gui::BitmapFactory().addXPM("FooAppSplasher", splash_screen); Gui::Application::initApplication(); Gui::Application::runApplication(); App::Application::destruct(); ( const char** )
return 0; }
La primera entrada de configuracin define el nombre del programa. Esto es, no el nombre del archivo ejecutable, que se puede cambiar por cambiar el nombre o por la configuracin del compilador, pero el nombre que se muestra en la barra de tareas de windows o en la lista de programas de sistemas Unix. Lneas de la siguiente definen las entradas de configuracin de su aplicacin de FooApp. Una descripcin de la configuracin y sus entradas que encontrar en Start up y configuracin .
Imgenes
Todos los recursos de imagen se compilan en FreeCAD. Esto reduce la carga retrasada y mantiene la instalacin compacta. Las imgenes se incluyen en formato XPM que es bsicamente un formato de texto que utiliza la sintaxis de C. Puede dibujar bsicamente este imgenes con un editor de texto, pero es ms cmodo crear las imgenes con su programa de grficos favorito y convertirlo posteriormente en formato XPM. Programa de imagen de la GNU Gimp puede guardar archivo XPM. Para la conversin, puede utilizar el ImageConv herramienta de que se incluye con freecad. Lo puede encontrar en
/trunk/src/Tools/ImageTools/ImageConv
Se puede no slo convertir imgenes pero tambin automticamente se actualizarn la BmpFactoryIcons.cpp archivo, donde se registran las imgenes. El uso tpico es tan simple como el siguiente ejemplo:
ImageConv -i InputImage.png -o OutputImage.xpm
Esto convierte el archivo InputImage.png en formato XPM y escribe el resultado en el archivo OutputImage.xpm . La lnea:
Gui::BitmapFactory().addXPM("FooAppSplasher", splash_screen); ( const char** )
Iconos
El icono de la aplicacin principal FCIcon que aparece en la ventana de ttulos y otros lugares se define en
/trunk/src/Gui/Icons/images.cpp
Reemplazarlo con su icono de favorito, vuelva a compilar freecad y se lleva a cabo el siguiente paso para crear su propia marca. Hay muchos otros iconos en este archivo que podra cambiar a su gusto. Si usted necesita agregar nuevos iconos, tienes que registrarlo en
/trunk/src/Gui/Icons/BmpFactoryIcons.cpp
Que aparece la imagen de fondo, cuando no hay ninguna ventana de documento est abierta. Como la pantalla de bienvenida que se ha definido en developers.h en la seccin comenzando con:
static const char* const background[]={
Debe elegir una imagen de bajo contraste para el fondo. De lo contrario podra irritar al usuario. Localizacin es, en general, el proceso de proporcionar un software con una interfaz de usuario de lengua mltiples. En FreeCAD se puede establecer el idioma de la interfaz de usuario bajo EditPreferencesApplication . Utiliza FreeCAD Qt para habilitar el soporte de mltiples idiomas. En sistemas Unix/Linux, FreeCAD utiliza los ajustes actuales de la configuracin regional del sistema por defecto.
Cmo traducir
Ir a la Pgina del proyecto de traduccin de FreeCAD en Crowdin ;
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
continuacin
Comprobar que un .ts de archivo con el cdigo de idioma no existe ("fr"
cdigo fuente de freecad por lo que stas beneficien otros usuarios demasiado.
Archivos de traduccin disponibles GUI principal de FreeCAD Workbench completa Dibujo Workbench
Proyecto Workbench Invertir la ingeniera Workbench FEM Workbench Robot Workbench Imagen Workbench El programa de esbozo Workbench Workbench de malla Prueba Workbench Los puntos de Workbench Logicial Workbench Parte Workbench PartDesign Workbench Ensamblado Workbench MeshPart Workbench
Configuracin de proyecto
Para iniciar la localizacin de su proyecto de ir a la GUIparte del mdulo de usted y tipo sobre la lnea de comandos:
qmake -project
Esto analiza el directorio de proyecto para los archivos que contienen cadenas de texto y crea un archivo de proyecto como en el siguiente ejemplo:
###################################################################### # Automatically generated by qmake (1.06c) Do 2. Nov 14:44:21 2006 ###################################################################### TEMPLATE = app DEPENDPATH += .\Icons INCLUDEPATH += . # Input HEADERS += ViewProvider.h Workbench.h SOURCES += AppMyModGui.cpp \ Command.cpp \ ViewProvider.cpp \ Workbench.cpp TRANSLATIONS += MyMod_de.ts
Puede agregar manualmente archivos aqu. La seccin traducciones contiene una lista de archivos con la traduccin para cada idioma. En el ejemplo anterior MyMod_de.ts es la traduccin alemana. Ahora que necesita para ejecutar lupdate para extraer todos los literales de cadena en su GUI. Ejecutando lupdate despus de que los cambios en el cdigo fuente es siempre segura ya que nunca elimina cadenas de los archivos de las traducciones. Slo agrega nuevas cadenas. Ahora necesita agregar el .ts -archivos al proyecto VisualStudio. Especifique la costumbre siguiente construir un mtodo para ellos:
python ..\..\..\Tools\qembed.py "$(InputDir)\$(InputName).ts" "$(InputDir)\$(InputName).h" "$(InputName)"
Nota: Escriba esto en una lnea de comandos, el salto de lnea es slo para propsitos de diseo. Mediante la compilacin de la .ts -archivo del ejemplo anterior, un archivo de encabezado MyMod_de.h se crea. El mejor lugar para incluir esta es en app <Modul> Gui.cpp. En nuestro ejemplo sera AppMyModGui.cpp . Hay que agregar la lnea
new Gui::LanguageProducer("Deutsch", <Modul>_de_h_len); <Modul>_de_h_data,
Para facilitar la localizacin de los archivos de py puede utilizar la herramienta "pylupdate4", que acepta uno o ms archivos de py. Con la opcin -ts usted puede preparar o actualizar uno o ms archivos de .ts. Por ejemplo a preparar un archivo .ts francs simplemente entrar en la lnea de comandos:
pylupdate4 *.py -ts YourModule_fr.ts
la herramienta de pylupdate ser analizar los archivos .py para funciones translate() o tr() y crear un archivo de YourModule_fr.ts. Ese archivo puede el ser traducidos con QLinguist y un archivo de YourModule_fr.qm producidos a partir de QLinguist o con el comando
lrelease YourModule_fr.ts
Cuidado con el que la herramienta de pylupdate4 no es muy buena en reconociendo las funciones de translate(), que necesitan para ser formateado muy especficamente (vase los archivos del mdulo de proyecto para obtener ejemplos). Dentro de su archivo, a continuacin, puede configurar un traductor como este (despus de cargar su QApplication pero antes de crear cualquier widget de qt):
translator = QtCore.QTranslator() translator.load("YourModule_"+languages[ln]) QtGui.QApplication.installTranslator(translator)
Opcionalmente, tambin puede crear el archivo XML Draft.qrc con este contenido:
<RCC> <qresource prefix="/translations" > <file>Draft_fr.qm</file> </qresource> </RCC>
y la ejecucin de pyrcc4 Draft.qrc -o qrc_Draft.py crea un gran Python que contiene todos los recursos. BTW este enfoque tambin trabaja para poner los archivos de icono en el archivo de un recurso
Traducir la wiki
Este wiki es hosting mucho del contenido. Material ms actualizado e interesante se reunieron en el manual . As que el primer paso es comprobar si ya se ha iniciado la traduccin manual para su idioma (busque en la barra lateral izquierda, bajo "manual"). Si no, la cabeza para el foro y decir que desea iniciar una nueva traduccin, vamos a crear la configuracin bsica para el idioma que desee trabajar en. Usted debe, a continuacin obtener permiso de edicin wiki .
Si su idioma ya est en la lista, consulte las pginas que faltan todava una traduccin (que se mostrarn en rojo). La tcnica es simple: entrar en una pgina de Roja y copiar y pegar el contenido de la pgina correspondiente de ingls y empezar a traducir. No olvide incluir todas las etiquetas y las plantillas de la pgina original de ingls. Algunas de esas plantillas tendr un equivalente en el idioma (por ejemplo, existe una plantilla de Docnav francs llamada Docnav/fr). Mirar otras pginas ya traducidas para ver cmo lo hicieron. A continuacin, una vez que usted traduce una pgina, debe agregar a la pgina original ingls un vnculo para su traduccin, para que los lectores sepan que existe una versin traducida, utilizando la plantilla {{idiomas}}. Vistazo de cmo otros traductores lo hizo para hacer lo mismo. Y si no est seguro, la cabeza a los foros y pedir a personas que compruebe lo que hiciste y te indicar si es justo o no.
Tres plantillas se utilizan comnmente en las pginas del manual. Estas 3 plantillas han versiones localizadas (plantilla: Docnav / fr, plantilla: fr, etc....)
Plantilla: Docnav : es la barra de navegacin en la parte inferior de las pginas, que
al lector que existe una traduccin. La versin localizada a cambio debe colocarse en la pgina traducida, un vnculo a la pgina original de ingls.
Plantilla: en : hay uno de ellos para cada idioma. Deben colocarse dentro de la
plantilla de la lengua.
La pgina sobre FreeCAD/fr es la pgina con contenido La pgina propos de FreeCAD contiene este cdigo: #REDIRECT [[About FreeCAD/fr]] Pgina en the acerca de FreeCAD/fr, el cdigo de Docnav tendr este aspecto: {{docnav/fr|Bienvenue sur l'aide en ligne|Fonctionnalits}}
La pgina "Bienvenue sur Aide en ligne" redirige a la pgina inicial de la ayuda en lnea/fr y en la pgina "Fonctionnalits" se redirige a la funcin de lista/fr. Si no est seguro de cmo proceder, no dude en pedir ayuda en el foro . El intrprete de python dentro de FreeCAD se puede extender fcilmente mediante la adicin de nuevos mdulos para la instalacin de su sistema de python. Esos mdulos se detecta automticamente y se utilizarn por FreeCAD. Todos los mdulos de pyhton pueden utilizarse desde dentro de FreeCAD, pero varios de ellos, enumerados a continuacin, tienen una importancia especial porque permiten python acceso de programas completo a la funcionalidad central de FreeCAD. Ejemplos de utilizacin de los mdulos de pueden encontrarse tambin en la fragmentos de cdigo pgina. Nota : de los siguientes mdulos, Pivy es ahora plenamente integrados en cualquier paquete de instalacin de FreeCAD, y PyQt4 tambin est integrada en el paquete de instalacin de Windows.
PyQt4
pgina Web: http://www.riverbankcomputing.co.uk/pyqt PyQt (versin 4) es una biblioteca de enlaces de python que permiten acceder, crear o modificar los programas Qt interfaces. Desde la interfaz de FreeCAD est construida con Qt, instalacin de PyQt4 en el sistema permiten python programas dentro de FreeCAD para acceder a toda la interfaz, modificar sus partes, crear nuevos widgets o recopilar informacin de partes de la interfaz. PyQt est liberado bajo un sistema de licencias mltiples, el mismo sistema que utilizado por Qt . Para reanudar, es una versin comercial y una versin gratuita de la GPL. Si desea utilizarlo para hacer programas comerciales (cdigo cerrado), deber adquirir la licencia comercial, de lo contrario, simplemente se puede instalar y utilizar libremente la versin de la GPL.
Instalacin
Antes de instalar PyQt4, obviamente necesita un entorno de python instalado y funcionando.
Linux La forma ms sencilla de instalar PyQt4 es a travs de gestor de paquetes su distribucin. En los sistemas de Debian/Ubuntu, el nombre del paquete generalmente python-Qt mientras que en sistemas basados en RPM denomina pyqt4 . Las dependencias necesarias (Qt y SIP) va ser atendidas forma automtica. Windows El programa puede descargarse de aqu . Necesitar instalar las bibliotecas QT y SIP antes de instalar pyqt4 (a ser documentados). de es se de
Uso
Una vez que est instalado, puede comprobar que todo funciona escribiendo en la consola de python de FreeCAD:
import PyQt4
Ahora puede empezar a explorar la interfaz con el comando dir(). Puede agregar nuevos elementos, como un widget personalizado, con comandos como:
FreeCADWindow.addDockWidget(QtCore.Qt.RghtDockWidgetArea,my_custom_wid get)
Documentacin
Ms tutoriales de pyQt4 (incluyendo cmo construir interfaces con Qt Designer para utilizar con python): http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/HTML/Classes.html -la referencia de la API de PyQt4 oficial http://www.rkblog.RK.edu.pl/w/p/Introduction-pyqt4/ -una introduccin sencilla http://www.zetcode.com/tutorials/pyqt4/ - tutorial muy completo de fondo
Pivy
pgina Web: http://pivy.coin3d.org/ Pivy es un moneda enlaces de biblioteca para python, oficialmente apoyado por moneda. Moneda de s mismo es un kit de herramientas para la construccin
de aplicaciones 3D en OpenGL. Es el Kit de herramientas que FreeCAD se utiliza para dibujar su escena 3d en la pantalla. Instalacin de Pivy en el sistema permitir python programas para acceder a la scenegraph FreeCAD, dibujar objetos nuevos en la escena y utilizar la amplia gama de herramientas de monedas disponibles para las operaciones de dibujo. Moneda se basa en el lenguaje de descripcin de escena abierto de inventor. Pivy es utilizado por el mdulo de redaccin 2D de FreeCAD (y tambin por el mdulo completo), por lo que es necesario si desea utilizar cualquier herramienta de esos mdulos. Es importante saber que FreeCAD slo utiliza moneda para la representacin de objetos en la pantalla, que est separada de la definicin de objetos. Esto significa pivy no ser capaz de modificar los objetos existentes, ni para crear objetos de FreeCAD vlidos. Pero puede ser utilizado para dibujar todo tipo de cosas temporales en pantalla, tales como eje, cuadrculas, manipuladores, geometra de construccin, etc.... Pivy, as como monedas, es liberado bajo una licencia GPL.
Instalacin
Ubuntu & de Debian
Iniciar con Debian Squeeze y Ubuntu Lucid, pivy estar disponible directamente desde los repositorios oficiales, ahorrndonos muy complicado. En el nterin, puede o bien disponibles de descarga uno de los paquetes que hicimos (para debian y ubuntu karmic) en el Descargar las pginas, o compilarlo usted mismo. La mejor manera para compilar pivy fcilmente es agarrar el paquete de fuente de debian para pivy y hacer un paquete con debuild. Es el mismo cdigo fuente desde el sitio oficial de pivy, pero la gente de debian hizo varias adiciones de fijacin de errores. Tambin compila fino sobre ubuntu karmic: http://packages.debian.org/squeeze/python-pivy (Descargar la. orig.gz y el. diff.gz de archivo, a continuacin, descomprima ambos y, a continuacin, aplicar la .diff al origen: vaya a la carpeta de origen pivy sin comprimir y aplique el parche .diff:
patch -p1 < ../pivy_0.5.0~svn765-2.diff
a continuacin
debuild
para que pivy correctamente integrado en un paquete instalable oficial. A continuacin, slo tiene que instalar el paquete con gdebi.
Primero hay que obtener las fuentes ms recientes desde el repositorio del proyecto:
svn co https://svn.coin3d.org/repos/Pivy/trunk Pivy
a continuacin, necesita una herramienta llamada SWIG para generar el cdigo de C++ para los enlaces de Python. Se recomienda utilizar la versin 1.3.25 de SWIG, no es la versin ms reciente, porque en este momento pivy slo funcionar correctamente con 1.3.25. Descargar un 1.3.25 tarball fuente de http://www.swig.org . A continuacin, desembalarlo y desde una lnea de comandos do (como root):
./configure make make install (or checkinstall if you use it)
Tarda unos pocos segundos para construir. Despus de vaya a las fuentes de pivy y la llamada
python setup.py build
que crea los archivos de origen. Se puede ejecutar en un error del compilador donde un 'const char *' no puede convertirse en un 'char *'. Para corregir que slo necesita escribir un 'const' antes en las lneas adecuadas. Hay seis lneas para corregir. Despus de eso, instalar mediante la emisin de (como root):
python setup.py install (or checkinstall python setup.py install)
Suponiendo que ests utilizando Visual Studio 2005 o posterior debe abrir un smbolo del sistema con ' Visual Studio 2005 smbolo ' en el men Herramientas. Si el intrprete de Python todava no est en la ruta del sistema
set PATH=path_to_python_2.5;%PATH%
Para obtener trabajo de pivy debe obtener las fuentes ms recientes desde el repositorio del proyecto:
svn co https://svn.coin3d.org/repos/Pivy/trunk Pivy
a continuacin, necesita una herramienta llamada SWIG para generar el cdigo de C++ para los enlaces de Python. Se recomienda utilizar la versin 1.3.25 de SWIG, no es la versin ms reciente, porque en este momento pivy slo funcionar correctamente con 1.3.25. Descargar los archivos binarios para 1.3.25 de http://www.swig.org . A continuacin, desembalarlo y desde la lnea de comandos agregarlo a la ruta del sistema
set PATH=path_to_swig_1.3.25;%PATH%
En Windows, el archivo de configuracin de pivy espera SoWin en lugar de SoQt como predeterminado. No encuentro una forma obvia para construir con SoQt, por lo que he modificado el archivo setup.py directamente. En la lnea 200 simplemente elimine la parte ' sowin': ('gui._sowin', 'sowin-config', 'pivy.gui'.) (no retire el parntesis de cierre). Despus de vaya a las fuentes de pivy y la llamada
python setup.py build
que crea los archivos de origen. Se puede ejecutar en varios archivos de encabezado no se encontr un error de compilacin. En este caso ajustar la variable INCLUDE.
set INCLUDE=%INCLUDE%;path_to_coin_include_dir
y si los encabezados de SoQt no estn en el mismo lugar que los encabezados de monedas tambin
set INCLUDE=%INCLUDE%;path_to_soqt_include_dir
Si est utilizando el Express Edition de Visual Studio puede obtener un pitn excepcin de keyerror. En este caso, usted tiene que modificar algunas cosas en msvccompiler.py situado en su instalacin de python. Ir a la lnea 122 y reemplace la lnea
vsbase = r"Software\Microsoft\VisualStudio\%0.1f" % version
con
vsbase = r"Software\Microsoft\VCExpress\%0.1f" % version
A continuacin, vuelva a intentarlo una vez ms. Si obtiene un segundo error como
error: Python was built with Visual Studio 2003;...
con
self.set_macro("FrameworkSDKDir", net, "sdkinstallrootv2.0")
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.
las
variables
de
entorno
Ahora, se puede ejecutar en un error del compilador donde un 'const char *' no puede convertirse en un 'char *'. Para corregir que slo necesita escribir un 'const' antes en las lneas adecuadas. Hay seis lneas para corregir. Despus de que copiar el directorio de pivy generado a un lugar donde se encontrar en el intrprete de python en FreeCAD.
Uso
Tener Pivy acceder a la FreeCAD scenegraph haga lo siguiente:
from pivy import coin App.newDocument() # Open a document and a view view = Gui.ActiveDocument.ActiveView FCSceneGraph = view.getSceneGraph() # returns a pivy Python object that holds a SoSeparator, the main "container" of the Coin scenegraph FCSceneGraph.addChild(coin.SoCube()) # add a box to scene
Documentacin
Lamentablemente la documentacin acerca de pivy est todava casi inexistant en la red. Pero puede encontrar documentacin de Coin tiles, ya que pivy simplemente traducir las funciones de la moneda, los nodos y los mtodos en python, todo lo mantiene el mismo nombre y las propiedades, teniendo en cuenta la diferencia de sintaxis entre C y python: http://doc.coin3d.org/Coin/Classes.html - Coin3D referencia de la API http://wwwEvasion.imag.fr/~Francois.Faure/doc/inventorMentor/sgi_html/index.html - El Inventor Mentor - la "Biblia" de lenguaje de descripcin de escena de inventor. Tambin puede buscar en el archivo Draft.py en la carpeta FreeCAD Mod/proyecto, ya que hace gran uso de pivy.
Crditos
Aqu una visin general que las personas o las empresas contribuyen a FreeCAD. Los crditos para las bibliotecas utilizadas ver Bibliotecas de terceros .
Desarrollador
Desarrollador principal
Slo los desarrolladores de plomo son capaces de cometer el cdigo en el repositorio SVN. Actualmente son:
Jrgen Riegel Werner Mayer
Empresas
Empresas que don el cdigo o Developer:
Imetric 3D