Professional Documents
Culture Documents
la interfaz FreeCAD
FreeCAD es una completa aplicación con interfaz gráfica. FreeCAD cuenta con una
completa interfaz gráfica de usuario basada en el famoso Qtmarco, con un visor 3D basado
en Open Inventor, permitiendo rápido renderizado de escenas 3D y una representación
gráfica de la escena muy accesible.
Estructura de documento
Interfaz de usuario
Paramétrico formas primitivas como la caja, la esfera, el cono del cilindro o un toro.
Instalación
Instalar en Windows
La forma más fácil de instalar FreeCAD en Windows es utilizar el instalador. Esta página
describe el uso y las características delinstalador de Microsoft para conocer las opciones de
instalación más.
Instalación sencilla
instalador FreeCAD se entrega en. MSI (Windows Installer) en formato.
Puede descargar la última versión. Msi de la FreeCAD página de descarga oficial. Después de
descargar el archivo, haga doble clic sobre él para iniciar el proceso de instalación.
Instalación de la línea de comandos
Con el msiexec.exe utilidad de línea de comandos, funciones adicionales están disponibles,
como no-instalación interactiva y la instalación administrativa.
Instalación no interactiva
/ Qn - No interfaz
/ Qb - Interfaz básica - sólo un pequeño diálogo de progreso
/ Qb! - Al igual que / qb, pero ocultar el botón Cancelar
/ Qr - Reducción de la interfaz - mostrar todos los cuadros de diálogo que no requieren
la interacción del usuario (saltar todos los cuadros de diálogo modales)
/ Qn + - Me gusta / qn, pero muestran "Completado" diálogo al final
/ Qb + - Me gusta / qb, pero muestran "Completado" diálogo al final
Objetivo de la guía
TARGETDIR = R: \ FreeCAD25
Agregar
ALLUSERS = 1
instala el propio intérprete y los registros de las extensiones, pero no instalar nada más.
Desinstalación
Con
FreeCAD se puede desinstalar. No es necesario contar con el archivo MSI disponibles para la
desinstalación, como alternativa, el paquete o código de producto también puede ser
especificado. Usted puede encontrar el código de producto al observar las propiedades del
acceso directo Desinstalar FreeCAD que se instala en el menú de inicio.
instalación administrativa
Con
sería posible, en principio, a "anunciar" FreeCAD a una máquina (con / ju a un usuario). Esto
haría que los iconos que aparecen en el menú de inicio, y las extensiones para ser registrada,
sin el software en realidad se está instalando. El primer uso de una característica haría que
cuentan para su instalación.
El instalador FreeCAD actualmente soporta sólo el anuncio de las entradas del menú de inicio,
pero no hay anuncio de accesos directos.
Instalación automática de un grupo de máquinas
Con la directiva de grupo de Windows, es posible instalar automáticamente FreeCAD un grupo
de una de las máquinas. Para ello, siga estos pasos:
1. Inicie sesión en el controlador de dominio
2. Copie el archivo MSI en una carpeta que se comparte con acceso permitido a todos los
equipos de destino.
3. Abra el complemento MMC de "usuarios de Active Directory y equipos"
4. Navegue hasta el grupo de equipos que necesitan FreeCAD
5. Abra Propiedades
6. Abrir directivas de grupo
7. Añadir una nueva política, y editarlo
8. En Configuración del equipo / Instalación de software, seleccione Nuevo / Paquete
9. Seleccione el archivo MSI a través de la ruta de red
10. Opcionalmente, seleccione la que desea la FreeCAD ser desinstalado si el equipo sale
del ámbito de aplicación de la política.
la propagación del Grupo de política general, toma algún tiempo - para implementar el paquete
de forma fiable, todos los equipos debe ser reiniciado.
Instalación en Linux usando Crossover Office
Puede instalar la versión para Windows de FreeCAD en un sistema Linux utilizando CXOffice
5.0.1. Ejecutar msiexec de la línea de comandos CXOffice, suponiendo que el paquete de
instalación se coloca en el "software" de la guía que se asigna a la unidad de letra "Y":
Instalación en Mac
FreeCAD se puede instalar en Mac OS X en un solo paso utilizando el instalador. Esta página
describe el uso y características de la instalación FreeCAD. También incluye las instrucciones
de desinstalación.
Instalación sencilla
El instalador FreeCAD se ofrece como un paquete de Installer (. Mpkg) incluido en un archivo
de imagen de disco.
Puede descargar la última instalación de la descarga la página. Después de descargar el
archivo, simplemente montar la imagen de disco, a continuación, ejecute la instalación
FreeCAD paquete.
El instalador le presentará una instalación Personalizar la pantalla que lista los paquetes que
serán instalados. Si usted sabe que usted ya tiene alguno de estos paquetes, se puede anular
la selección utilizando las casillas de verificación. Si no está seguro, deje todos los elementos
seleccionados.
Desinstalación
En este momento no es un desinstalador de FreeCAD. Para eliminar completamente FreeCAD
y todos los componentes instalados, arrastre los siguientes archivos y carpetas a la Papelera:
En / Aplicaciones:
FreeCAD
en / Library / Frameworks /
SoQt.framework
Inventor.framework
Entonces, desde el terminal, ejecute:
sudo / Developer / Herramientas / sudo rm-qt.py desinstalar-R / usr / local / lib / sudo rm
OCC-R / usr / local / include / OCC
Eso es todo. Finalmente, FreeCAD estará disponible como un paquete de aplicaciones de auto-
contenida para toda esta molestia desaparece.
Descubrir FreeCAD
Prefacio
FreeCAD es un sistema CAD / CAE de aplicaciones de modelado paramétrico. Todavía está en
fase inicial de desarrollo, así que no espere ser capaz de utilizarlo para producir un trabajo
ya. Pero, si eres curioso acerca de lo que FreeCAD Aspecto del producto y las características
que se están desarrollando, le invitamos a descargarlo y darle una oportunidad. Por el
momento, mucha funcionalidad ya está presente, pero no la interfaz de usuario mucho se ha
creado para él. Esto significa que si usted sabe un poco de python, que ya será capaz de
producir y modificar la geometría compleja con relativa facilidad. Si no, probablemente
encontrará que FreeCAD todavía tiene pocos para ofrecer a usted. Pero, sea paciente, se
espera que esto cambie pronto.
Y si después de la prueba tiene comentarios, ideas u opiniones, por favor, comparta con
nosotros en el foro de discusión FreeCAD!
Instalación
En primer lugar (si no se hace ya) descargar e instalar FreeCAD. Véase la descarga página
para obtener información acerca de las versiones y actualizaciones. Hay paquetes listos para
instalar Windows (. Msi), Ubuntu y Debian (. Deb) openSUSE (. Rpm) y Mac OSX.
Explorando FreeCAD
La interfaz FreeCAD al iniciarlo por primera vez. Ver más imágenes aquí.
Coloque en la hoja: Escribe los objetos seleccionados a una hoja de dibujo SVG
Objetos de dibujo
Estas son herramientas para la creación de objetos.
Hilos (punto de varias líneas): Dibuja una línea hecha de segmentos de varias
líneas
Arco: Dibuja un segmento de arco desde el centro, radio, ángulo inicial y final del
ángulo
La creación de piezas en 3D
Primitivos
Estas son herramientas para la creación de objetos primitivos.
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
Insertar información ver: Inserta el ver los datos (posición de la cámara, etc) a la
POV-Ray proyecto actual
Secuencias de comandos
Y, por último, una de las características más potentes de FreeCAD es la secuencia de
comandos medio ambiente. Desde la pitón consola integrada (o de cualquier secuencia de
comandos Python externo), puede acceder a casi cualquier parte del FreeCAD, crear o
modificar la geometría, modificar la representación de los objetos en la escena 3D o acceder y
modificar la interfaz FreeCAD.secuencias de comandos de Python también pueden ser
utilizados en las macros, que proporcionan un método sencillo para crear comandos
personalizados.
Selección de objetos
Los objetos se pueden seleccionar con un clic con el botón izquierdo del ratón o haciendo clic
en el objeto en la vista 3D o mediante la selección en la vista de árbol. También hay
una preselección mecanismo que pone de relieve los objetos y muestra información acerca de
ellos antes de la selección con sólo pasar el mouse sobre él. Si no le gusta que la conducta o si
tiene una máquina lenta, puede cambiar de preselección en las preferencias.
Manipulación de objetos
La manipulación de objetos es común a todos los bancos de trabajo. Los gestos del ratón
siguientes se pueden utilizar para controlar la posición del objeto y el punto de vista.
Seleccione
Pulse el botón izquierdo del ratón sobre un objeto que desea seleccionar.
Zoom
Utilice el + o - las llaves de la rueda del ratón para acercar y alejar.
Pan
Haga clic en el botón central del ratón y mover el objeto.
Gire
Primero haga clic con el botón central del ratón, mantenga y haga clic en el botón
izquierdo del ratón en cualquier parte visible de un objeto y arrastrarlo en la dirección
deseada. Esto funciona como hacer girar una pelota que gira alrededor de su centro. Si
se suelta el botón antes de dejar su petición, el objeto sigue girando, si esta opción
está activada.
Centro de Marco de la rotación
Un doble clic con el botón central del ratón en cualquier parte de un objeto establece el
nuevo centro de rotación y zoom sobre este punto.
Manipulación de objetos
FreeCAD ofrece manipuladores que se pueden utilizar para modificar un objeto o su aspecto
visual. Un ejemplo sencillo es el plano de corte que se puede activar con el recorte → Ver
plano de menú. Después de la activación del objeto plano de corte aparece y muestra siete
manipuladores obvio como cajitas: Uno en cada extremo de sus tres ejes de coordenadas y
otra en el centro del plano eje normal. Hay otros cuatro que no son tan obvios: el propio avión y
la parte fina de los tres objetos eje.
Escala
Para escalar el objeto, haga clic con el botón izquierdo del ratón sobre los
manipuladores recuadro al final de los ejes y tire de ellos hacia atrás y
adelante. Dependiendo del objeto a los manipuladores trabajar independientemente o
de forma sincrónica.
Fuera del plano de desplazamiento
Para cambiar el objeto a lo largo de su vector normal, tire de la caja larga en el centro
de un eje con el botón izquierdo del ratón.Para el plano de corte no es sólo un
manipulador a lo largo del vector normal.
En el plano de cambio
Para mover el centro del plano de recorte, haga clic en el objeto de avión y tire de él
hasta la posición deseada.
Rotación
Al hacer clic en la parte fina de los ejes del manipulador pone en modo de rotación.
<Anterior: Primeros pasos
siguiente: Documento> estructura
Índice
Traducciones disponibles:
El documento FreeCAD
Un documento FreeCAD contiene todos los objetos de la escena. Puede contener grupos y
objetos elaborados con cualquier banco de trabajo. Por lo tanto, puede cambiar entre los
bancos de trabajo, y siguen trabajando en el mismo documento. El documento es lo que se
guarda en el disco al guardar su trabajo. También puede abrir varios documentos al mismo
tiempo en FreeCAD, y abrir varias vistas del mismo documento.
Dentro del documento, los objetos se pueden mover en grupos, y tener un nombre
único.Administración de grupos, objetos y nombres de objeto que se realiza principalmente
desde el punto de vista de árbol. También se puede hacer, por supuesto, como todo en
FreeCAD, desde el intérprete de Python. En la vista de árbol, se pueden crear grupos, los
objetos se mueven a los grupos, eliminar objetos o grupos, haciendo clic derecho en la vista en
árbol o en un objeto, los objetos de cambiar el nombre haciendo doble clic en sus nombres, o
posiblemente otras operaciones, en función de la mesa de trabajo actual.
Los objetos dentro de un documento FreeCAD puede ser de diferentes tipos. Cada mesa de
trabajo puede crear sus propios tipos de objetos, por ejemplo, el banco de trabajo de malla crea
objetos de malla, el Workbench Partecrear objetos de la parte, el Proyecto de
Workbench también crea objetos de la parte, etc
Si hay al menos un documento abierto en FreeCAD, siempre hay uno y sólo un documento
activo. Ese es el documento que aparece en la vista 3D actual, el documento que están
trabajando actualmente.
Piense en ello como dos espacios, donde los objetos se definen. Sus parámetros constructivos
(es un cubo? Un cono? Qué tamaño?) Se almacenan en el documento de solicitud, mientras
que su representación gráfica (es dibujado con líneas negro? Con rostros azules?) Se
almacenan en el documento Ver. ¿Por qué es eso? Debido a FreeCAD también puede ser
utilizado sin interfaz gráfica, por ejemplo dentro de otros programas, y todavía deben ser
capaces de manipular nuestros objetos, incluso si no se dibuja en la pantalla.
Otra cosa que está contenida en el documento Ver puntos de vista en 3D. Un documento
puede tener varias vistas abiertas, para que pueda inspeccionar el documento desde varios
puntos de vista al mismo tiempo. Tal vez le gustaría ver una vista superior y una vista frontal de
su trabajo al mismo tiempo? A continuación, tendrá dos vistas del mismo documento, ambos
almacenados en el documento Ver. Crear nuevos puntos de vista u opiniones cerca se puede
hacer desde el menú Ver o haciendo clic derecho en una ficha de vista.
Secuencias de comandos
Los documentos pueden crearse fácilmente, acceder y modificar desde el intérprete de
Python. Por ejemplo:
FreeCAD.ActiveDocument
FreeCAD.ActiveDocument.Blob
FreeCADGui.ActiveDocument
FreeCADGui.ActiveDocument.Blob
¿Podría acceder a la representación gráfica (ver) una parte de nuestro objeto Blob
FreeCADGui.ActiveDocument.ActiveView
Personalización de la interfaz
Desde la interfaz FreeCAD se basa en la moderna Qt toolkit, que tiene un estado-de-la
organización de arte. Widgets, menús, barras de herramientas y otras herramientas se pueden
modificar, mover, compartida entre los bancos de trabajo, métodos abreviados de teclado se
puede establecer, modificar y macros se pueden grabar y reproducir. La ventana de
personalización se puede acceder desde Herramientas -> Personalizar menú:
Los comandos de la ficha le permite ver todos los comandos disponibles FreeCAD,
organizado por su categoría.
En el teclado, puedes ver las combinaciones de teclas asociadas a cada comando FreeCAD, y
si lo desea, modificar o asignar nuevo acceso directo a cualquier comando. Aquí es donde
puede venir si se utiliza una mesa de trabajo particular, a menudo, y me gustaría acelerar su
uso mediante el teclado.
Las barras de herramientas y barras de Herramientas etiquetas permiten modificar las
barras de herramientas existentes, o crear sus propias barras de herramientas personalizadas.
Las macros ficha le permite administrar su guarda macros.
Propiedades juegan un papel muy importante en FreeCAD, ya que es desde el principio los
hizo trabajar con objetos paramétricos, que son objetos definidos sólo por sus propiedades.
Personalizada guión objetos en FreeCAD pueden tener propiedades de los siguientes tipos:
Boolean flotador FloatConstraint ángulo FloatList Distancia entero IntegerConstraint
Porcentaje Enumeración IntegerList cadena StringList Vincular LinkList matriz de vectores
VectorList colocación PlacementLink color colorlist Material Ruta del Archivo FileIncluded
Círculo FilletContour PartShape
El banco de trabajo trazado de rayos para trabajar con trazado de rayos (rendering).
En el campo de la ingeniería, sin embargo, las mallas presentan una gran limitación: Son
objetos muy tonto, sólo compuesto de puntos, líneas y caras. Ellos sólo se hacen de las
superficies, y no tienen información de masas, por lo que no se comportan como sólidos. En
una malla no hay forma automática saber si un punto está dentro o fuera del objeto. Esto
significa que todas las operaciones sólida basada, como sumas o restas, son siempre un poco
difícil de realizar en las mallas, y los errores de regresar a menudo.
En FreeCAD, ya que es una aplicación de ingeniería, que, obviamente, prefieren trabajar con
tipos más inteligentes de los objetos 3D, que pueden transportar más información, como la
masa, el comportamiento de sólidos, o incluso parámetros personalizados. El módulo de
acoplamiento fue creada para servir como banco de pruebas, pero ser capaz de leer, manipular
y convertir mallas también es muy importante para FreeCAD. Muy a menudo, en su flujo de
trabajo, recibirá los datos 3D en formato de malla. Tendrá que manejar esos datos, analizarlos
para detectar los errores u otros problemas que les impiden convertir a objetos más inteligente,
y, por último, convertir a los objetos más inteligente, a cargo de la parte del módulo.
Analizar la curvatura, se enfrenta, y comprobar si hay una malla puede ser con seguridad
convertirse en un sólido
import Raytracing,RaytracingGui
OutFile = open('C:/Documents and
Settings/jriegel/Desktop/test.pov','w')
OutFile.write(open(App.getResourceDir()+'Mod/Raytracing/Templates/Proj
ectStd.pov').read())
OutFile.write(RaytracingGui.povViewCamera())
OutFile.write(Raytracing.getPartAsPovray('Box',App.activeDocument().Bo
x.Shape,0.800000,0.800000,0.800000))
OutFile.close()
del OutFile
Links
About POV-Ray:
http://www.spiritone.com/~english/cyclopedia/
http://www.povray.org/
http://en.wikipedia.org/wiki/POV-Ray
About other open-source renderers (for future implementation):
http://www.yafaray.org/
http://www.luxrender.net/
El Banco de imágenes
El módulo de imagen administra diferentes tipos de imágenes de mapa de bits
y le permite abrirlos en FreeCAD. En la actualidad, los módulos permite abrir
los formatos de archivo .bmp, .jpg, .png y .xpm en una ventana independiente
del visor. También es una herramienta que le permite capturar una imagen
desde una webcam.
El workbench de proyecto
El proyecto de módulo es un módulo de trabajo en progreso y bastante
experimental realizado para agregar la funcionalidad básica de dibujo 2d a
FreeCAD. Está escrito totalmente en python y también sirve para mostrar hasta
qué punto se puede extender FreeCAD totalmente en python, sin siquiera tocar
el código fuente.
Tutorial
Para obtener una explicación detallada, lea la Tutorial de proyecto (en curso), o
lee la sección quickstart para ponerse rápidamente en rieles.
Inicio rápido
No todos los comandos de dibujo funcionan bien en 3D en este momento. Por
lo tanto, la mejor cosa a hacer es poner a usted mismo en la vista 2D
ortográfica antes de empezar a dibujar. Para ello, abra o cree un nuevo
documento y, a continuación, pulse el O clave (o en la vista de menú - > vista
ortográfica) para cambiar al modo ortográfica. A continuación, pulse el 2 clave
(o en la vista de menú - > vistas estándar - > arriba) para ponerlo en vista
superior. Ahora, está listo para dibujar. También puede configurar freecad
(menú Editar - > Preferencias) para siempre iniciar en modo ortográfica.
Todos los comandos de proyecto más o menos siguen las mismas reglas:
herramientas de dibujo se le pedirá que elija puntos en la pantalla o introduzca
coordenadas numéricas, mientras que las herramientas de modificación le
pedirá que seleccione un objeto para trabajar en primer lugar, en caso de que
no hay ningún objeto seleccionado. En casi todos los comandos, presionando
el CTRL clave te permitirá ajustar a puntos existentes, Mayús limitará su
movimiento horizontalmente, verically o en relación con un segmento existente
y en algunas herramientas ALT le dará opciones adicionales tales como la
creación de un nuevo objeto en lugar de la transformación de uno ya existente.
La ESC clave siempre cancelará el comando activa.
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.
Herramientas de redacción
Estas herramientas permiten configurar su entorno de trabajo o producir
genéricas de las operaciones.
Comportamientos comunes
El ajuste : Permite colocar puntos de nuevos en lugares especiales sobre los
objetos existentes
Restricción de : Permite colocar puntos de nuevos horizontal o verticalmente
en relación con los puntos anteriores
Trabajar con coordenadas manuales : Permite introducir las coordenadas
manuales en lugar de hacer clic en la pantalla
Copiar: todas herramientas de modificación pueden modificar los objetos
seleccionados o crear una copia modificada de ellos. Presionar ALT
mientras utiliza la herramienta hará una copia
Modo de construcción : Permite poner geometría aparte del resto, para
conmutador fácil encendido y apagado
Todos los objetos recién creados adoptar el proyecto actual color y ancho
El proyecto módulo también tiene su Preferencias pantalla
API
Ver la API de proyecto página para obtener una descripción completa de las
funciones de proyecto que se pueden utilizar en secuencias de comandos y
macros
Introducción a Python
Este es un tutorial corto realizado para quién es totalmente nuevo para python.
Python es un código abierto, multiplataforma lenguaje de programación. Python
tiene varias características que lo hacen muy diferente de otros lenguajes de
programación común y muy accesible a los nuevos usuarios como usted:
Ha sido diseñado especialmente para ser fácil de leer por los seres humanos, y por
lo tanto es muy fácil de aprender y comprender.
Se interpreta, es decir, a diferencia de compilado de lenguajes como C, su
programa no es necesario ser compilado antes de que se ejecute. El código que
escriba puede ser inmediatamente ejecutado, línea por línea, si así lo desea. Esto
hace extremadamente fácil para aprender y para encontrar errores en el código,
porque usted ir despacio, paso a paso.
Puede incrustarse en otros programas que se utiliza como lenguaje de scripting.
FreeCAD tiene un intérprete de python incrustado, por lo que se puede escribir en
python código en FreeCAD, en la que se manipulan piezas de FreeCAD, por
ejemplo, para crear la geometría. Esto es extremadamente potente, porque en
lugar de simplemente hacer clic en un botón con la etiqueta "crear la esfera", que
un programador ha colocado allí para usted, usted tiene la libertad para crear
fácilmente su propia herramienta para crear exactamente la geometría desee.
Es extensible, fácilmente puede conectar nuevos módulos en su instalación de
python y ampliar su funcionalidad. Por ejemplo, tiene módulos que permiten python
leer y escribir imágenes jpg, para comunicarse con twitter, para planificar las tareas
que debe realizar su sistema operativo, etc.
Por lo tanto, las manos! Tenga en cuenta que lo que vendrá siguiente es una
introducción muy simple, de ninguna manera un tutorial completo. Pero mi
esperanza es que después de obtendrá suficiente fundamentos para explorar
más profunda en los mecanismos de FreeCAD.
El intérprete
Por lo general, al escribir programas informáticos, usted simplemente abra un
editor de texto o su entorno de programación especial que se encuentra en
caso de mayoría un editor de texto con varias herramientas alrededor de ella,
escribe su programa, a continuación, compilarlo y ejecútelo. La mayoría del
tiempo usted cometió errores al escribir, por lo que su programa no funcionará
y obtendrá un mensaje de error que indica lo que salió mal. A continuación, vas
a volver a su editor de texto, corregir los errores, ejecutar una vez más, y así
sucesivamente hasta que el programa funciona bien.
print "hello"
Imprimir es una palabra clave especial de python que significa, obviamente, para
imprimir algo en la pantalla. Cuando pulsa Intro, se ejecuta la operación, y se imprime
el mensaje "hello". Si comete un error, por ejemplo vamos escribir:
print hello
Python nos dirá que no sabe exactamente qué Hola es. Los "personajes
especificar que el contenido es una cadena, que es simplemente, en jerga de
programación, un fragmento de texto. sin el ", el comando de impresión creía
Hola no era un trozo de texto pero una palabra clave de python especiales. Lo
importante es que usted obtenga notificada inmediatamente que ha cometido
un error. Pulsando la flecha hacia arriba (o, en el intérprete de FreeCAD, CTRL
+ Flecha arriba), usted puede ir realizar copia de seguridad en el último
comando que usted escribió y corregirlo.
help
o, por ejemplo, supongamos que no entendemos lo que salió mal con nuestro
comando de impresión Hola anterior, queremos información específica sobre el
comando "print":
Help("Print")
Usted obtendrá una descripción larga y completa de todo lo que puede hacer el
comando de impresión.
Ahora nos dominan totalmente nuestro intérprete, podemos empezar con cosas
graves.
Variables
Por supuesto, impresión "hello" no es muy interesante. Impresión de cosas que
no saber antes de, o dejar que python a encontrar para usted es más
interesante. Es donde entra en juego el concepto de variable. Una variable es
simplemente un valor que almacena bajo un nombre. Por ejemplo, escriba esto:
a = "hello"
imprimir una
Supongo que usted entiende lo que ha ocurrido, "salvó" la cadena "hello" bajo
el nombre de una. Ahora, una ya no es un nombre desconocido! Podemos
usarlo en cualquier lugar, por ejemplo en el comando de impresión. Podemos
utilizar cualquier nombre que queremos que sólo respetando las reglas simples,
como no usar espacios ni signos de puntuación. Por ejemplo, muy bien
podríamos escribir:
Hola = "mi propia versión de Hola"
Hola impresión
¿Ver? Ahora Hola ya no es una palabra no definida. ¿Qué pasa si, por el
terrible mala suerte, hemos escogido un nombre que ya existe en python?
Digamos que queremos almacenar nuestra cadena bajo el nombre de "print":
imprimir = "hello"
Python es muy inteligente y nos dirá que esto no es posible. Tiene algunas
palabras de clave "reservados" que no se puede modificar. Pero nuestras
propias variables pueden modificarse en cualquier momento, eso es,
exactamente, por qué se les llama variables, el contenido puede variar. Por
ejemplo:
myVariable = "hello"
imprimir myVariable
myVariable = "good bye"
imprimir myVariable
Esto nos dará un error, varA es una cadena y varB es un tipo int, y python no
sabe qué hacer. Pero podemos obligar a python para convertir entre los tipos:
varA = "hello"
varB = 123
imprimir varA + str(varB)
Ahora ambos son cadenas, funciona la operación! Tenga en cuenta que nos
"stringified" varB en el momento de la impresión, pero no cambiamos varB por
sí mismo. Si hemos querido convertir varB permanentemente en una cadena,
necesitamos hacer esto:
varB = str(varB)
También podemos usar int() y float() para convertir a int y float si queremos:
varA = "123"
impresión int(varA)
impresión float(varA)
Usted debe haber notado que, en esta sección, hemos utilizado el comando de
impresión de varias maneras. Hemos impreso variables, sumas, varias cosas,
separadas por comas y incluso el resultado de otros comandos de python,
como type(). Tal vez usted también vio que haciendo estos dos comandos:
Type(varA)
impresión type(varA)
Usted debe también han visto que la mayoría de los comandos de python (o
palabras clave) ya sabemos tienen paréntesis solía decirles sobre qué
contenido debe trabajar el comando: type(), int(), str(). Única excepción es el
comando de impresión, que en realidad no es una excepción, también funciona
normalmente como esta: print("hello"), pero, ya que se utiliza a menudo, los
programadores de python hecho una versión simplificada.
Listas
Otro tipo de datos interesantes es listas. Una lista es simplemente una lista de
otros datos. La misma manera que definimos una cadena de texto mediante el
uso de "", definimos listas mediante el uso de []:
myList = [1,2,3]
Type(myList)
myOtherList = ["Bart", "Frank", "Bob"]
myMixedList = ["Hola", 345, 34.567]
Verá que puede contener cualquier tipo de datos. Las listas son muy útiles
porque se pueden agrupar las variables. A continuación, puede hacer todo tipo
de cosas en que los grupos, por ejemplo contarlos:
Len(myOtherList)
Por lo general todo lo que puede hacer con listas también puede hacerse con
cadenas.
Nos itera (programación jerga otra vez!) a través de nuestra lista con la "para...
en..." comando e hizo algo con cada uno de los elementos. Tenga en cuenta la
sintaxis especial: la de comando termina con: que indica que lo que viene
después va a ser un bloque de uno de los comandos más. Inmediatamente
después de introducir la línea de comandos que terminan con:, el símbolo
cambiará a... que significa python sabe que un: - línea terminó ha ocurrido y lo
que vendrá el próximo formarán parte de ella.
Sangría es cool porque si realiza grandes (por ejemplo utilizar fichas en lugar
de espacios, porque es más grande), cuando se escribe un gran programa
tendrá una visión clara de lo que se ejecuta dentro de lo que. Vamos a ver que
muchos otros comandos que para-en pueden haber sangría bloques de código
demasiado.
Para-en comandos pueden utilizarse para muchas cosas que hay que hacer
más de una vez. Por ejemplo, se puede combinar con el comando range():
serie = range(1,11)
total = 0
imprimir "suma"
número de serie:
imprimir el número
total = total + número
imprimir "----"
imprimir total
Verá que el comando de range() también tiene esa extraña particularidad que
comienza con 0 (si no se especifica el número inicial) y que su último número
uno será menor que el número final que especifique. Es decir, por supuesto,
así que funciona bien con otros comandos de python. Por ejemplo:
alldaltons = ["Joe", "William", "Jack", "Averell"]
total = len(alldaltons)
para n en range(total):
imprimir alldaltons [n]
Por supuesto esto será siempre la primera frase de la impresión, pero intente
reemplazar la segunda línea por:
Si "Lucky" en alldaltons:
printsqm(45)
Hicimos una función que recibe dos argumentos, les sumas y devuelve ese
valor. Volviendo algo es muy útil, porque podemos hacer algo con el resultado,
tal como se almacena en la variable myTotal. Por supuesto, ya que estamos en
el intérprete y todo se imprime, haciendo:
Sum(45,34)
se imprimirá el resultado en la pantalla, pero fuera del intérprete, ya que existe
el comando de impresión no más dentro de la función, nada que aparecen en la
pantalla. Tendría que hacer:
impresión sum(45,34)
de tener algo impreso. Obtenga más información acerca de las funciones aquí .
Módulos
Ahora que tenemos una buena idea de cómo funciona el Pitón, necesitaremos
una última cosa: cómo trabajar con archivos y módulos.
sin la extensión .py. Esto simplemente ejecutará el contenido del archivo, línea
por línea, como si nos habíamos escrito en el intérprete. Se creará la función
suma, y el mensaje se imprimirá. Hay una gran diferencia: el comando de
importación se realiza no sólo para ejecutar programas escritos en los archivos,
como el nuestro, sino también para cargar las funciones en su interior, para que
estén disponibles en el intérprete. Archivos que contienen funciones, como la
nuestra, se denominan módulos.
Una última cosa sumamente útil. ¿Cómo sabemos lo que tenemos los módulos,
¿cuáles son las funciones dentro de y cómo utilizarlas (es decir, qué tipo de
argumentos que necesitan)? Ya vimos python tiene una función de help().
Haciendo:
Help()
módulos
Nos dará una lista de todos los módulos disponibles. Ahora podemos escribir q
para salir de la ayuda interactiva y importar cualquiera de ellos. Incluso nos
podemos examinar su contenido con el comando dir()
matemáticas de importación
Dir(Math)
Desde el intérprete, puede ejecutar código python y navegar a través de las clases
disponibles y la función. FreeCAD proporciona un explorador de clase muy útil para la
exploración de su nuevo mundo FreeCAD: cuando se escribe el nombre de una clase
conocida seguida por un punto (lo que significa que desea agregar algo de esa clase),
se clase navegador abre una ventana, donde puede navegar entre las subclases
disponibles y los métodos. Cuando se selecciona algo, se muestra un texto de ayuda
asociado (si existe
Por lo tanto, inicie aquí escribiendo aplics o Gui. a ver qué pasa. Otro modo
más genérico de python de explorar el contenido de los módulos y las clases es
utilizar el comando de impresión dir(). Por ejemplo, si escribe Imprimir dir()
enumerará todos los módulos cargados actualmente en FreeCAD. dir(App) de
impresión le mostrará todo dentro del módulo de la aplicación, etc..
Módulos integrados
Dado que FreeCAD está diseñado para ejecutarse sin interfaz gráfica de
usuario, casi toda su funcionalidad está separada en dos grupos: funcionalidad
principal, llamado APP y funcionalidad de Gui, llamado Gui. Por lo tanto,
nuestros dos principales módulos integrados de FreeCAD se llaman APP y Gui.
Estos dos módulos también pueden accederse desde secuencias de comandos
de fuera del intérprete, por los respectivos nombres de FreeCAD y
FreeCADGui.
Esta forma de hacerlo permite una muy amplia gama de usos, como tener
algoritmos sólo funcionan en la parte definitoria de funciones, sin necesidad de
preocuparse por cualquier parte visual, o incluso redirigir el contenido del
documento a aplicaciones no gráficos, tales como listas, hojas de cálculo o
análisis de elementos.
Introducción
En primer lugar tiene que importar el módulo de Mesh:
import Mesh
Más adelante se verá cómo puede probar y examinar los datos de la malla.
Modelado
Para crear geometrías regulares que puede utilizar Python secuencia de
comandos BuildRegularGeoms.py.
import BuildRegularGeoms
Los dos primeros parámetros definen los radios del toroide y el tercer
parámetro es un factor de sub-sampling para cuántos triángulos se crean.
Cuanto mayor sea este valor la más suave y cuanto menor sea el más gruesa
el cuerpo es. La clase de malla proporciona un conjunto de funciones
booleanas que pueden utilizarse para fines de modelado. Proporciona la Unión,
la intersección y la diferencia de dos objetos de malla.
m1, m2 # are the input mesh objects
m3 = Mesh.mesh(m1) # create a copy of m1
m3.unite(m2) # union of m1 and m2, the result is stored in m3
m4 = Mesh.mesh(m1)
m4.intersect(m2) # intersection of m1 and m2
m5 = Mesh.mesh(m1)
m5.difference(m2) # the difference of m1 and m2
m6 = Mesh.mesh(m2)
m6.difference(m1) # the difference of m2 and m1, usually the result
is different to m5
Por último, un ejemplo completo que computa la intersección entre una esfera y
un cilindro que intersecta con la esfera.
import Mesh, BuildRegularGeoms
sphere = Mesh.mesh( BuildRegularGeoms.Sphere(5.0, 50) )
cylinder = Mesh.mesh( BuildRegularGeoms.Cylinder(2.0, 10.0, True, 1.0,
50) )
diff = sphere
diff.difference(cylinder)
d = FreeCAD.newDocument()
d.addObject("Mesh::Feature","Diff_Sphere_Cylinder").Mesh=diff
d.recompute()
Examinar y pruebas
Escribir sus propios algoritmos
Exportar
Incluso puede escribir la malla a un módulo de python:
m.write("D:/Develop/Projekte/FreeCAD/FreeCAD_0.7/Mod/Mesh/SavedMesh.py
")
import SavedMesh
m2 = Mesh.mesh(SavedMesh.faces)
Cosas relacionadas con la Gui
Probabilidades y extremos
Una extensa, debería relacionados difíciles de usar, fuente de malla con
secuencias de comandos son las secuencias de comandos de prueba de
unidad del módulo de malla. En esta unidad se llaman a métodos literalmente
todas las pruebas y todas las propiedades o atributos son ajustados. Así que si
eres lo suficientemente audaz, eche un vistazo el módulo de prueba de la
unidad .
Introducción
Nos aquí le explicará cómo controlar la Módulo de parte directamente desde el
intérprete de python FreeCAD, o desde cualquier secuencia de comandos
externo. Asegúrese de examinar el secuencias de comandos sección y la
Básico de secuencias de comandos de FreeCAD páginas si necesita obtener
más información acerca de cómo funciona el pitón de secuencias de comandos
en FreeCAD.
Primero para utilizar la funcionalidad de módulo de parte tiene que cargar el
módulo de parte en el intérprete: import Part
Diagrama de clase
Se trata de una visión UML acerca de las clases más importantes del módulo
de parte de:
Geometría
Los objetos geomtric son el bloque de creación de todos los objetos
topológicos:
>>> vertex.Point
Vector (1, 0, 0)
>>> edge.Length
10.0
>>> edge.CenterOfMass
Vector (5, 0, 0)
Un alambre puede crearse desde una lista de los bordes o incluso una lista de
hilos:
>>> wire3.Length
40.0
>>> wire3.CenterOfMass
Vector (5, 5, 0)
>>> wire3.isClosed()
True
>>> wire2.isClosed()
False
Sólo los rostros creados a partir de cables cerrados será válidos. En este
ejemplo, wire3 es un alambre cerrado pero wire2 no es un alambre cerrado
(véase más arriba)
círculo = Part.makeCircle(radius,[center,dir_normal,angle1,angle2])--crear un
círculo con un radio determinado
Arc1 y arc2 conjuntamente harán un círculo. Deben ser los ángulos siempre en
grados, si tienes radianes simplemente conversión mediante la fórmula: grados
= radianes * 180/PI o utilizando el módulo de matemáticas de python (después
de hacer matemáticas de importación, por supuesto): grados =
math.degrees(radians)
¿Cómo crear un arco a lo largo de puntos?
>>> 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()
>>> lshape_wire =
Part.makePolygon([Base.Vector(0,5,0),Base.Vector(0,0,0),Base.Vector(5,
0,0)])
Crea una elipse con radio mayor 2 y radio menor 1 con el centro en (0,0,0)
Part.Ellipse(Ellipse)
>>> eli =
Part.Ellipse(Base.Vector(10,0,0),Base.Vector(0,5,0),Base.Vector(0,0,0)
)
>>> Part.show(eli.toShape())
>>>
tor=Part.makeTorus(10,5,Base.Vector(0,0,0),Base.Vector(0,0,1),0,360,18
0)
Operaciones booleanas
¿Cómo cortar una forma de otros?
Cut(...)
Difference of this and a given topo shape.
>>> cylinder =
Part.makeCylinder(3,10,Base.Vector(0,0,0),Base.Vector(1,0,0))
>>> sphere = Part.makeSphere(5,Base.Vector(5,0,0))
>>> diff = cylinder.cut(sphere)
>>> diff.Solids
[<Solid object at 018AB630>, <Solid object at 0D8CDE48>]
>>> diff.ShapeType
'Compound'
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>]
Section(...)
Section of this with 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))
>>> section = cylinder1.section(cylinder2)
>>> section.Wires
[]
>>> section.Edges
[<Edge object at 0D87CFE8>, <Edge object at 019564F8>, <Edge object at
0D998458>,
<Edge object at 0D86DE18>, <Edge object at 0D9B8E80>, <Edge object
at 012A3640>,
<Edge object at 0D8F4BB0>]
Playground:Section.PNG
Explorando formas
Fácilmente puede explorar la estructura de datos topológicos:
import 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
Ahora puede acceder a muchas de las propiedades del borde mediante el uso
de la longitud como una posición. Esto significa que si el borde es 100 mm
durante mucho tiempo la posición de inicio es 0 y la posición final 100.
anEdge.tangentAt(0.0) # tangent direction at the 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 the
middle
anEdge.derivative2At(50.0) # second derivative of the curve in the
middle
anEdge.derivative3At(50.0) # third derivative of the curve in the
middle
anEdge.centerOfCurvatureAt(50) # center of the curvature for that
position
anEdge.curvatureAt(50.0) # the curvature
anEdge.normalAt(50) # normal vector at that position (if
defined)
Mediante la selección
Aquí vemos ahora cómo podemos utilizar la selección del usuario lo hizo en el
visor. En primer lugar creamos un cuadro y lo muestra en el Visor
import Part
Part.show(Part.makeBox(100,100,100))
Gui.SendMsgToActiveView("ViewFit")
En primer lugar tenemos que crear las distintas partes geométricas de este hilo.
Y tenemos que cuidar que los vértices de las piezas geométricas se encuentran
en el mismo posición. De lo contrario más tarde no podamos conectar las
piezas geométricas con una topología!
aArcOfCircle = Part.Arc(aPnt2,aPnt3,aPnt4)
aSegment1=Part.Line(aPnt1,aPnt2)
aSegment2=Part.Line(aPnt4,aPnt5)
aEdge1=aSegment1.toShape()
aEdge2=aArcOfCircle.toShape()
aEdge3=aSegment2.toShape()
aWire=Part.Wire([aEdge1,aEdge2,aEdge3])
aTrsf=Base.Matrix()
aTrsf.rotateZ(math.pi) # rotate around the z-axis
aMirroredWire=aWire.transformGeometry(aTrsf)
myWireProfile=Part.Wire([aWire,aMirroredWire])
myFaceProfile=Part.Face(myWireProfile)
aPrismVec=Base.Vector(0,0,myHeight)
myBody=myFaceProfile.extrude(aPrismVec)
myBody=myBody.makeFillet(myThickness/12.0,myBody.Edges)
neckLocation=Base.Vector(0,0,myHeight)
neckNormal=Base.Vector(0,0,1)
myNeckRadius = myThickness / 4.
myNeckHeight = myHeight / 10
myNeck =
Part.makeCylinder(myNeckRadius,myNeckHeight,neckLocation,neckNormal)
myBody = myBody.fuse(myNeck)
faceToRemove = 0
zMax = -1.0
for xp in myBody.Faces:
try:
surf = xp.Surface
if type(surf) == Part.Plane:
z = surf.Position.z
if z > zMax:
zMax = z
faceToRemove = xp
except:
continue
return myBody
Explicación detallada
import Part, FreeCAD, math
from FreeCAD import Base
Aquí definimos nuestra función de makeBottle. Esta función puede ser llamada
sin argumentos, como lo hicimos anteriormente, en los valores que caso
predeterminado para anchura, altura, y se utilizará el espesor. A continuación,
definimos un par de puntos que se utilizará para la construcción de nuestro
perfil base.
aArcOfCircle = Part.Arc(aPnt2,aPnt3,aPnt4)
aSegment1=Part.Line(aPnt1,aPnt2)
aSegment2=Part.Line(aPnt4,aPnt5)
Hasta ahora hemos construido un perfil de sólo la mitad. Es más fácil que
edificio todo el perfil del mismo modo, sólo podemos espejo de lo que hicimos y
pegue ambas partes juntos. Por lo que primero creamos una matriz. Una matriz
es una manera muy común para aplicar transformaciones a objetos en el
mundo 3D, ya que puede contener en una estructura de todas las
transformaciones básicas que pueden sufrir los objetos 3D (mover, rotar y
escalar). Aquí, después de que creamos la matriz, nos reflejarlo, y creamos una
copia de nuestro hilo con la matriz de transformación aplicada. Ahora tenemos
dos cables, y nos puede hacer un tercer cable fuera de ellos, ya que son de
cables realmente listas de aristas.
myFaceProfile=Part.Face(myWireProfile)
aPrismVec=Base.Vector(0,0,myHeight)
myBody=myFaceProfile.extrude(aPrismVec)
myBody=myBody.makeFillet(myThickness/12.0,myBody.Edges)
Ahora que tenemos un alambre cerrado, puede transformarse en una cara. Una
vez que tenemos una cara, nos podemos extrusión. Al hacerlo, realmente
hicimos un sólido. ¿A continuación, aplicamos un filete poco agradable a
nuestro objeto porque nos interesa un buen diseño, no nosotros?
neckLocation=Base.Vector(0,0,myHeight)
neckNormal=Base.Vector(0,0,1)
myNeckRadius = myThickness / 4.
myNeckHeight = myHeight / 10
myNeck =
Part.makeCylinder(myNeckRadius,myNeckHeight,neckLocation,neckNormal)
o, más simple:
Part.show(bottle)
Cargar y guardar
Hay varias maneras de guardar su trabajo en el módulo de parte. Por supuesto
puede guardar el documento de FreeCAD, pero también puede guardar objetos
de parte directamente a los formatos CAD comunes, tales como BREP, IGS,
STEP y STL.
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 también
puede hacerse directamente desde el archivo - > Abrir o archivo - > menú
Importar. En este momento exportar es todavía no es posible de esa manera,
pero debería estar ahí pronto.
< anterior: secuencias de comandos de malla
Índice
mesh=Mesh.Mesh()
for j in range(v-1):
for i in range(u-1):
mesh.addFacet(pts[u*j+i],pts[u*j+i+1],pts[u*(j+1)+i])
mesh.addFacet(pts[u*(j+1)+i],pts[u*j+i+1],pts[u*(j+1)+i+1])
return mesh
Conversión de mallas a objetos de parte
Conversión de mallas a parte de objetos es una operación sumamente
importante en el trabajo de CAD, porque muy a menudo reciben datos 3D en
formato de malla de otras personas o van desde otras aplicaciones. Mallas son
muy prácticos representar la geometría de forma libre y grandes escenas
visuales, ya que es muy ligero, pero para CAD preferimos generalmente
objetos de nivel superiores que llevan mucha más información, tales como la
idea de sólido, o caras de curvas en lugar de triángulos.
for i in segments:
if len(i) > 0:
# a segment can have inner holes
wires = MeshPart.wireFromSegment(mesh, i)
# we assume that the exterior boundary is that one with the
biggest bounding box
if len(wires) > 0:
ext=None
max_length=0
for i in wires:
if i.BoundBox.DiagonalLength > max_length:
max_length = i.BoundBox.DiagonalLength
ext = i
wires.remove(ext)
# all interior wires mark a hole and must reverse their
orientation, otherwise Part.Face fails
for i in wires:
i.reverse()
# make sure that the exterior wires comes as first in the lsit
wires.insert(0, ext)
faces.append(Part.Face(wires))
shell=Part.Compound(faces)
Part.show(shell)
#solid = Part.Solid(Part.Shell(faces))
#Part.show(solid)
FreeCAD es básicamente un collage de diferentes bibliotecas potentes, siendo
los más importantes openCascade , para la gestión y construcción de
geometría, Coin3d para mostrar la geometría, y Qt para poner todo esto en una
interfaz gráfica de usuario agradable.
Uno de los grandes trabajos que FreeCAD se hace por usted es básicamente
traducir información de geometría de openCascade en lengua openInventor.
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 {
}
}
}
The coin library is divided into several pieces, coin itself, for manipulating
scenegraphs and bindings for several GUI systems, such as windows or, like in
our case, qt. Those modules are available to pivy too, depending if they are
present on the system. The coin module is always present, and it is what we will
use anyway, since we won't need to care about anchoring our 3D display in any
interface, it is already done by FreeCAD itself. All we need to do is this:
from pivy import coin
Accessing and modifying the scenegraph
We saw in the Scenegraph page how a typical Coin scene is organized.
Everything that appears in a FreeCAD 3D view is a coin scenegraph, organized
the same way. We have one root node, and all objects on the screen are its
children.
FreeCAD has an easy way to access the root node of a 3D view scenegraph:
sg = FreeCADGui.ActiveDocument.ActiveView.getScenegraph()
print sg
self.view.removeEventCallbackSWIG(SoMouseButtonEvent.getClassTypeId(),
self.callback)
ButtonTest()
Documentación
Por desgracia pivy sí mismo todavía no tiene una documentación adecuada,
pero dado que es una traducción exacta de la moneda, con seguridad puede
utilizar la documentación de la moneda como referencia y utilizar el estilo de
python en lugar de c ++ estilo (por ejemplo SoFile::getClassTypeId() en pivy
sería SoFile.getClassId())
PyQt es un módulo de python que permite que las aplicaciones crear, acceder
y modificar python Qt aplicaciones de . Usted puede utilizarlo por ejemplo para
crear sus propios programas de Qt en python, o para obtener acceso y
modificar la interfaz de una aplicación que se ejecuta de qt, como FreeCAD.
Utilizando el módulo PyQt desde dentro de FreeCAD, usted tiene por lo tanto,
un control total sobre su interfaz. Se puede por ejemplo:
myWidget.resize(QtCore.QSize(QtCore.QRect(0,0,300,100).size()).expande
dTo(myWidget.minimumSizeHint())) # sets size of the widget
Ejemplo básico
En el siguiente ejemplo puede encontrarse en el
src/Mod/TemplatePyMod/FeaturePython.py archivo, junto con varios otros
ejemplos:
"Examples for a feature class and its view provider."
class Box:
def __init__(self, obj):
"Add some custom properties to our box feature"
obj.addProperty("App::PropertyLength","Length","Box","Length of the
box").Length=1.0
obj.addProperty("App::PropertyLength","Width","Box","Width of the
box").Width=1.0
obj.addProperty("App::PropertyLength","Height","Box",
"Height of the box").Height=1.0
obj.Proxy = self
class ViewProviderBox:
def __init__(self, obj):
"Set this object to the proxy object of the actual view
provider"
obj.addProperty("App::PropertyColor","Color","Box","Color of the
box").Color=(1.0,0.0,0.0)
obj.Proxy = self
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 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 getIcon(self):
"Return the icon in XMP format which will appear in the
tree view. This method is
optional and if not defined a default icon is shown."
return """
/* XPM */
static const char * ViewProviderBox_xpm[] = {
"16 16 6 1",
" c None",
". c #141010",
"+ c #615BD2",
"@ c #C39D55",
"# c #000000",
"$ c #57C355",
" ........",
" ......++..+..",
" .@@@@.++..++.",
" .@@@@.++..++.",
" .@@ .++++++.",
" ..@@ .++..++.",
"###@@@@ .++..++.",
"##$.@@$#.++++++.",
"#$#$.$$$........",
"#$$####### ",
"#$$#$$$$$# ",
"#$$#$$$$$# ",
"#$$#$$$$$# ",
" #$#$$$$$# ",
" ##$$$$$# ",
" ####### "};
"""
def __getstate__(self):
"When saving the document this object gets stored using
Python's cPickle module.
Since we have some un-pickable here -- the Coin stuff
-- we must define this method
to return a tuple of all pickable objects or None."
return None
def __setstate__(self,state):
"When restoring the pickled object from document we
have the chance to set some internals here.
Since no data were pickled nothing needs to be done
here."
return None
def makeBox():
FreeCAD.newDocument()
a=FreeCAD.ActiveDocument.addObject("App::FeaturePython","Box")
Box(a)
ViewProviderBox(a.ViewObject)
Propiedades disponibles
Las propiedades son la verdadera creación de piedras de objetos
FeaturePython. A través de ellos, el usuario podrá interactuar y modificar su
objeto. Después de crear un nuevo objeto de FeaturePython en el documento
(a=FreeCAD.ActiveDocument.addObject("App::FeaturePython","Box")), puede
obtener una lista de las propiedades disponibles mediante la emisión de:
a.supportedProperties()
class Octahedron:
def __init__(self, obj):
"Add some custom properties to our box feature"
obj.addProperty("App::PropertyLength","Length","Octahedron","Length of
the octahedron").Length=1.0
obj.addProperty("App::PropertyLength","Width","Octahedron","Width of
the octahedron").Width=1.0
obj.addProperty("App::PropertyLength","Height","Octahedron",
"Height of the octahedron").Height=1.0
obj.addProperty("Part::PropertyPartShape","Shape","Octahedron", "Shape
of the octahedron")
obj.Proxy = self
obj.addProperty("App::PropertyColor","Color","Octahedron","Color of
the octahedron").Color=(1.0,0.0,0.0)
obj.Proxy = self
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")
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 getIcon(self):
return """
/* XPM */
static const char * ViewProviderBox_xpm[] = {
"16 16 6 1",
" c None",
". c #141010",
"+ c #615BD2",
"@ c #C39D55",
"# c #000000",
"$ c #57C355",
" ........",
" ......++..+..",
" .@@@@.++..++.",
" .@@@@.++..++.",
" .@@ .++++++.",
" ..@@ .++..++.",
"###@@@@ .++..++.",
"##$.@@$#.++++++.",
"#$#$.$$$........",
"#$$####### ",
"#$$#$$$$$# ",
"#$$#$$$$$# ",
"#$$#$$$$$# ",
" #$#$$$$$# ",
" ##$$$$$# ",
" ####### "};
"""
def __getstate__(self):
return None
def __setstate__(self,state):
return None
Por último, una vez que nuestro objeto y su viewobject se definen, sólo
necesitamos a llamarlos:
FreeCAD.newDocument()
a=FreeCAD.ActiveDocument.addObject("App::FeaturePython","Octahedron")
Octahedron(a)
ViewProviderOctahedron(a.ViewObject)
Hacer los objetos seleccionables
Si desea realizar su objeto seleccionable, o al menos una parte del mismo,
haciendo clic en él en el área de visualización, debe incluir su geometría de
moneda dentro de un nodo de SoFCSelection. Si el objeto tiene una
representación compleja, con widgets, anotaciones, etc., puede incluir sólo una
parte del mismo en un SoFCSelection. Todo lo que es un SoFCSelection se
analiza constantemente por FreeCAD para detectar la selección y preselección,
así que tiene sentido tratar de no sobrecargar el con análisis innecesarios. Esto
es lo que haría para incluir un self.face en el ejemplo anterior:
selectionNode = coin.SoType.fromName("SoFCSelection").createInstance()
selectionNode.documentName.setValue(FreeCAD.ActiveDocument.Name)
selectionNode.objectName.setValue(obj.Object.Name) # here obj is the
ViewObject, we need its associated App Object
selectionNode.subElementName.setValue("Face")
selectNode.addChild(self.face)
...
self.shaded.addChild(selectionNode)
self.wireframe.addChild(selectionNode)
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)
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'))
Una vez que estamos seguros de que se cargue la biblioteca (el bloque try /
excepto la secuencia), podemos ahora trabajar con FreeCAD, del mismo modo
como nos haría dentro intérprete de python del propio FreeCAD. Abrimos el
documento de FreeCAD que se pasa a nosotros por la función main(), y hacer
una lista de sus objetos. Entonces, como hemos escogido sólo a la atención
sobre la geometría de la pieza, verificamos si la propiedad Type de cada objeto
contiene "Parte", entonces nos tesselate se.
Los tesselation producen una lista de vértices y una lista de caras definido por
índices de vértices. Esto es perfecto, ya que es exactamente de la misma
manera como licuadora define mallas. Por lo tanto, nuestra tarea es
ridículamente simple, que solo añadimos el contenido de ambas listas a las
caras de una malla de blender y verts. Cuando todo está hecho, nosotros sólo
repintar la pantalla, y eso es todo!
Por supuesto, este script es muy simple (en realidad hice una más avanzada
aquí), puede que desee extender, por ejemplo importación de malla objetos
demasiado o importación de parte de la geometría que no tiene caras, o
importar otros formatos de archivo que se puede leer FreeCAD. También
puede exportar la geometría a un documento de FreeCAD, que puede hacerse
de la misma manera. También puede que desee crear un cuadro de diálogo,
por lo que el usuario puede elegir lo que debe importar, etc.... La belleza de
todo esto en realidad reside en el hecho de que permita que FreeCAD hacer el
suelo trabajar al presentar sus resultados en el programa de su elección.
Uso de FreeCAD con la interfaz gráfica de usuario
Desde la versión 4.2 sobre Qt tiene la capacidad de intrigante para incrustar
dependientes de la GUI de Qt plugins en las aplicaciones de host no Qt y
compartir el bucle de eventos del host.
El código de python todo para lograr que tiene sólo dos líneas
import FreeCADGui
FreeCADGui.showMainWindow()
Para las aplicaciones no Qt, sin embargo, existen algunas limitaciones que
debe tener en cuenta. Probablemente, esta solución no funciona junto con
todos los otros kits de herramientas. Para Windows funciona siempre y cuando
la aplicación host se basa directamente en Win32 o cualquier otro Kit de
herramientas que utiliza internamente la API de Win32, como wxWidgets, MFC
o WinForms. A fin de hacerlo funcionar bajo X 11 en el host de aplicación debe
vincular la biblioteca "Wittgenstein".
Tenga en cuenta, para cualquier aplicación de consola de que esta solución por
supuesto no funciona porque no hay ningún lazo de evento que se ejecuta.
Gui.addWorkbench(ScriptWorkbench())
Un archivo de módulo típico
Este es un ejemplo de un archivo de módulo principal, que contiene todo lo que
hace de su módulo. Es el archivo de Scripts.py invocado por el ejemplo
anterior. Aquí puede tener todos los comandos personalizados.
import FreeCAD, FreeCADGui
class ScriptCmd:
def Activated(self):
# Here your write what your ScriptCmd does...
FreeCAD.Console.PrintMessage('Hello, World!')
def GetResources(self):
return {'Pixmap' : 'path_to_an_icon/myicon.png', 'MenuText':
'Short text', 'ToolTip': 'More detailed text'}
FreeCADGui.addCommand('Script_Cmd', ScriptCmd())
Importar un nuevo tipo de fichero
Es fácil hacer un importador para un nuevo tipo de fichero en FreeCAD.
FreeCAD no considerar la posibilidad de que importar datos en un documento
abierto, sino que simplemente puede directamente abrir el nuevo tipo de
fichero. Por lo tanto lo que tienes que hacer es agregar la nueva extensión de
archivo a la lista de FreeCAD de extensiones conocidas y escribir el código que
leerá el archivo y crear los objetos FreeCAD que desea:
Para exportar el documento a algún tipo de fichero nuevo funciona del mismo
modo, salvo que utilice:
FreeCAD.addExportType("Your new File Type (*.ext)","Export_Ext")
Agregar una línea
Una línea simplemente tiene 2 puntos.
import Part,PartGui
doc=App.activeDocument()
# add a line element to the document and set its points
l=Part.Line()
l.StartPoint=(0.0,0.0,0.0)
l.EndPoint=(1.0,1.0,1.0)
doc.addObject("Part::Feature","Line").Shape=l.toShape()
doc.recompute()
Adición de un polígono
Un polígono es simplemente un conjunto de segmentos de línea conectados
(una polilínea en AutoCAD). No es necesario ser cerrado.
import Part,PartGui
doc=App.activeDocument()
n=list()
# create a 3D vector, set its coordinates and add it to the list
v=App.Vector(0,0,0)
n.append(v)
v=App.Vector(10,0,0)
n.append(v)
#... repeat for all nodes
# Create a polygon object and set its nodes
p=doc.addObject("Part::Polygon","Polygon")
p.Nodes=n
doc.recompute()
Adición y eliminación de un objeto a un grupo
doc=App.activeDocument()
grp=doc.addObject("App::DocumentObjectGroup", "Group")
lin=doc.addObject("Part::Feature", "Line")
grp.addObject(lin) # adds the lin object to the group grp
grp.removeObject(lin) # removes the lin object from the group grp
#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)
Estado--A string 'UP' si el botón se fue arriba, 'Abajo' si era hacia abajo o
'Desconocido' para todos los demás casos
SG.removeChild(no)
Adición de widgets personalizados a la interfaz
Puede crear widgets personalizados con el diseñador de Qt, transformarlas en
una secuencia de comandos python y, a continuación, cargarlos en la interfaz
de FreeCAD con PyQt4.
myWidget.resize(QtCore.QSize(QtCore.QRect(0,0,300,100).size()).expande
dTo(myWidget.minimumSizeHint())) # sets size of the widget
self.view.removeEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),
self.callback)
Explicación detallada
import Part, FreeCADGui
from pivy.coin import *
Aquí definimos nuestra clase principal. ¿Por qué usamos una clase y no una
función? La razón es que necesitamos que nuestra herramienta para
permanecer "alive" mientras que estamos esperando para que el usuario haga
clic en la pantalla. Una función termina cuando se ha hecho su tarea, pero un
objeto (una clase define un objeto) permanece vivo hasta que sea destruida.
"this class will create a line after the user clicked 2 points on the
screen"
En Python, cada clase o función puede tener una cadena de descripción. Esto
resulta especialmente útil en FreeCAD, porque cuando llamaremos esa clase
en el intérprete, la cadena de descripción se mostrará como una información
sobre herramientas.
def __init__(self):
Aquí creamos una lista vacía que va a contener los puntos 3D enviados por la
función getpoint.
self.callback =
self.view.addEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),sel
f.getpoint)
Esta es la parte importante: debido a que es en realidad un coin3D escena de , el
FreeCAD utiliza el mecanismo de devolución de llamada de moneda, que
permite a una función que se llamará cada vez que ocurre un determinado
evento de la escena. En nuestro caso, estamos creando una devolución de
llamada para SoMouseButtonEvent eventos y nos enlazarlo a la función
getpoint. Ahora, cada vez un botón del mouse está presionado o liberado, se
ejecutará la función de getpoint.
El módulo de parte tiene una función muy útil show() que crea un nuevo objeto
en el documento y se enlaza una forma. Nos podríamos también han creado un
nuevo objeto en el documento de la primera, a continuación, enlazada la forma
manualmente.
self.view.removeEventCallbackPivy(SoMouseButtonEvent.getClassTypeId(),
self.callback)
A continuación, haga clic dos veces en la vista 3D, y bingo, aquí es nuestra
línea! Volver a hacerlo, sólo tiene que escribir exercise.line() una vez más y una
vez más y de nuevo... ¿Se siente gran, no?
Por ahora, debería ya entiendes el script anterior por usted mismo, creo que:
crea una nueva clase que llamamos MyWorkbench, le damos un título
(MenuText) y definimos una función Initialize() que se ejecutará cuando se
carga el workbench en FreeCAD. En esa función, cargar en el contenido de
nuestro archivo de ejercicio y anexar los comandos de FreeCAD que se
encuentra en el interior a una lista de comandos. A continuación, hacemos una
llamada "Mis Scripts" de la barra de herramientas y asignamos a nuestra lista
de comandos a ella. En la actualidad, por supuesto, tenemos sólo una
herramienta, por lo que nuestra lista de comandos contiene un único elemento.
A continuación, una vez que nuestro banco está listo, nos agregarlo a la
interfaz principal.
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())
Eso es todo, ahora sólo necesitamos reiniciar FreeCAD y vamos a tener una
agradable workbench nuevo con nuestra nueva herramienta de la línea!
¿Así que quieres más?
Si te gustó este ejercicio, ¿por qué no intentar mejorar esta pequeña
herramienta? Hay muchas cosas que pueden hacer, como por ejemplo:
Agregar comentarios de los usuarios: hasta ahora hicimos una herramienta muy
desnuda, el usuario puede estar un poco perdido cuando lo utilice. Sowe podría
añadir algunos comentarios, diciéndole que lo que debe hacer a continuación. Por
ejemplo, podría emitir mensajes a la consola de FreeCAD. Echar un vistazo en el
módulo de FreeCAD.Console
Agregar una posibilidad para escribir el 3D puntos de coordenadas manualmente.
Mirar la función de input() de python, por ejemplo
Agregar la posibilidad de añadir más de 2 puntos
Agregar eventos para otras cosas: ahora comprobamos sólo para eventos de botón
del ratón, qué sucede si también haríamos algo cuando se mueve el ratón, como
mostrar coordenadas actuales?
Asigne un nombre al objeto creado
Por lo tanto, ahora que hemos definido bien lo que haremos, es hora de abrir el
diseñador qt. Vamos diseñar un diálogo muy simple, como esto:
Nota que he escogido aquí controles muy simples, pero Qt tiene muchas más
opciones, por ejemplo se podría utilizar Spinboxes en lugar de LineEdits, etc....
Eche un vistazo de lo que está disponible, seguramente tendrá otras ideas.
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)
Como ves tiene una estructura muy simple: se crea una clase denominada
Ui_Dialog, que almacena los elementos de la interfaz de nuestro widget. Que la
clase tiene dos métodos, uno para la configuración del widget y uno para la
traducción de su contenido, es parte del mecanismo general de Qt para traducir
los elementos de la interfaz. El método de instalación simplemente crea, uno
por uno, los widgets como hemos definido en el diseñador de Qt y establece
sus opciones como hemos decidido anteriormente. A continuación, toda la
interfaz obtiene traducida, y por último, conéctese a las ranuras (hablaremos
acerca de que más tarde).
Ahora podemos crear un nuevo widget y utilizar esta clase para crear su
interfaz. Ya podemos ver nuestro widget en acción, poniendo nuestro archivo
de mywidget.py en un lugar donde FreeCAD se encuentran (en el directorio bin
de FreeCAD, o en cualquiera de los subdirectorios MOD) y, en el intérprete de
python FreeCAD, número de:
from PyQt4 import QtGui
import mywidget
d = QtGui.QWidget()
d.ui = mywidget.Ui_Dialog()
d.ui.setupUi(d)
d.show()
Lo que haremos aquí, es crear una nueva función que creará un plano basado
en altura y anchura y conectar esa función a la señal presionada emitida por
nuestro botón de "Crear!". Por lo tanto, comencemos con la importación de
nuestros módulos de FreeCAD, poniendo la siguiente línea en la parte superior
de la secuencia de comandos, donde importamos ya QtCore y QtGui:
import FreeCAD, Part
Esto, como ves, conecta la señal de pressed() de nuestro objeto de crear (el
botón de "Crear!"), con una ranura llamada createPlane, que acaba de definir.
Eso es todo! Ahora bien, como un toque final, podemos añadir una pequeña
función para crear el cuadro de diálogo, será más fácil llamar. Fuera de la clase
Ui_Dialog, vamos a agregar este código:
class plane():
d = QtGui.QWidget()
d.ui = Ui_Dialog()
d.ui.setupUi(d)
d.show()
Que es Folks todos... Ahora puede probar todo tipo de cosas, como por
ejemplo insertar tu widget en la FreeCAD interfaz (véase la fragmentos de
código página), o haciendo mucho más avanzadas herramientas
personalizadas, mediante el uso de otros elementos en el widget de.
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(187, 178)
self.title = QtGui.QLabel(Dialog)
self.title.setGeometry(QtCore.QRect(10, 10, 271, 16))
self.title.setObjectName("title")
self.label_width = QtGui.QLabel(Dialog)
self.label_width.setGeometry(QtCore.QRect(10, 50, 57, 16))
self.label_width.setObjectName("label_width")
self.label_height = QtGui.QLabel(Dialog)
self.label_height.setGeometry(QtCore.QRect(10, 90, 57, 16))
self.label_height.setObjectName("label_height")
self.width = QtGui.QLineEdit(Dialog)
self.width.setGeometry(QtCore.QRect(60, 40, 111, 26))
self.width.setObjectName("width")
self.height = QtGui.QLineEdit(Dialog)
self.height.setGeometry(QtCore.QRect(60, 80, 111, 26))
self.height.setObjectName("height")
self.create = QtGui.QPushButton(Dialog)
self.create.setGeometry(QtCore.QRect(50, 140, 83, 26))
self.create.setObjectName("create")
self.retranslateUi(Dialog)
QtCore.QObject.connect(self.create,QtCore.SIGNAL("pressed()"),self.cre
atePlane)
QtCore.QMetaObject.connectSlotsByName(Dialog)
self.label_height.setText(QtGui.QApplication.translate("Dialog",
"Height", None, QtGui.QApplication.UnicodeUTF8))
self.create.setText(QtGui.QApplication.translate("Dialog",
"Create!", None, QtGui.QApplication.UnicodeUTF8))
def createPlane(self):
try:
# first we check if valid numbers have been entered
w = float(self.width.text())
h = float(self.height.text())
except ValueError:
print "Error! Width and Height values must be valid
numbers!"
else:
# create a face from 4 points
p1 = FreeCAD.Vector(0,0,0)
p2 = FreeCAD.Vector(w,0,0)
p3 = FreeCAD.Vector(w,h,0)
p4 = FreeCAD.Vector(0,h,0)
pointslist = [p1,p2,p3,p4,p1]
mywire = Part.makePolygon(pointslist)
myface = Part.Face(mywire)
Part.show(myface)
class plane():
d = QtGui.QWidget()
d.ui = Ui_Dialog()
d.ui.setupUi(d)
d.show()
Traducciones disponibles:
opté por la LGPL y el GPL para el proyecto y yo sabemos los pro y contras
sobre la LGPL y la voluntad de dan algunas de las razones de esa decisión.
FreeCAD es una mezcla de una biblioteca y una aplicación, por lo que la GPL
sería un poco fuerte para ello. Impediría escribir módulos comerciales para
FreeCAD porque impediría la vinculación con los libs base de FreeCAD.
¿Usted puede solicitar por ello comercial módulos en absoluto? Por lo tanto,
Linux es buen ejemplo. ¿Linux sería tan exitoso cuando la biblioteca de C de
GNU sería GPL y por lo tanto, evitar la vinculación contra aplicaciones no GPL?
Y aunque me encanta la libertad de Linux, también quiero ser capaz de utilizar
el controlador de gráfico 3D NVIDIA muy bueno. Comprendo y aceptar la razón
que NVIDIA no va a regalar el código del controlador. Todos trabajamos para
las empresas y la necesidad de pago o al menos de alimentos. Por lo que para
mí, una coexistencia de código abierto y el software de código cerrado no es
malo, cuando obedece las reglas de la LGPL. Me gustaría ver a alguien que
escribe un procesador de importación y exportación de Catia para FreeCAD y
distribuirlo gratuitamente o por algún dinero. No me gusta para obligarle a
regalar más de lo que quiere. No sería bueno ni para él ni para FreeCAD.
Sin embargo, esta decisión es hecha sólo para el núcleo del sistema de
FreeCAD. Cada escritor de un módulo de aplicación podrá hacer su propia
decisión.
Licencias usadas
Aquí los tres licencias en virtud del cual se publica FreeCAD:
Licencia pública general (GPL2 +)
Para las secuencias de comandos de Python construir los archivos binarios,
como se afirma en los archivos .py en src/herramientas
Menor General Public Licence (LGPL2 +)
Para los núcleo libs como se indica en los ficheros .h y .cpp en src/APP src/Gui
src/base y la mayoría módulos en src/mod y para el ejecutable como se indica en los
ficheros .h y .cpp en src/principal
Licencia de publicación abierta
Para la documentación sobre http://Free-CAD.sourceforge.NET/ como no marcado de
forma diferente por el autor
Intentamos utilizar solo LGPL tipo de licencias para las bibliotecas del sistema
vinculado de núcleo (vea Bibliotecas de terceros ) con una excepción:
Ver del FreeCAD archivo copyright Debian para obtener más detalles acerca de
las licencias utilizadas en FreeCAD
Impacto de las licencias
Usuarios privados
Los usuarios privados pueden utilizar FreeCAD de forma gratuita y puede hacer
básicamente todo lo que quieren hacer con ella....
Usuarios profesionales
Puede utilizar FreeCAD como las bases para los módulos de extensión propia
para propósitos especiales. Pueden elegir la GPL o la LGPL para permitir el
uso de su trabajo en software propietario o no.
Desarrolladores profesionales
Informar de fallos
Recientemente la plataforma de sourceforge hizo el mantis bug tracker
aplicación disponible para proyectos y FreeCAD es ahora utilizando
activamente, en lugar del antiguo incorporada bug tracker. La dirección de
nuestro bug tracker es:
http://sourceforge.NET/Apps/mantisbt/Free-CAD/main_page.php
Make asegúrese de que el fallo es realmente un error, es decir, algo que debería
estar trabajando y que no está funcionando. Si no está seguro, dont dude en
explicar su problema en el foro y pregunta qué do.
Antes de presentar cualquier cosa, leer el preguntas más frecuentes , hace una
búsqueda en el foro y asegúrese de que el mismo error no ha reportado antes,
realizando una búsqueda en el bug tracker.
Describe como claramente como sea posible el problema, y cómo pueden
reproducirse. Si no podemos verificar el fallo, no podríamos ser capaces de fijar
ella.
Unirse a la siguiente información: el sistema operativo, si es de 32 o 64 bits y la
versión de FreeCAD está en ejecución.
Por favor presentar un informe por separado para cada error.
Si estás en un sistema linux y su fallo provoca un accidente en FreeCAD, puede
intentar ejecutar un backtrace de depuración: desde una terminal ejecutar gdb
freecad (suponiendo que está instalado el paquete gdb), a continuación, dentro de
gdb, escriba Ejecutar . FreeCAD, a continuación, se ejecutará. Después de que el
accidente ocurre, escriba bt , para obtener el backtrace completo. Incluir ese
backtrace en su informe de fallo.
Solicitar funciones
Si desea algo que aparecen en FreeCAD que aún no se ha implementado, no
es un error sino una solicitud de función. También puede enviar en el mismo
tracker (archivo, como característica solicitar en lugar de errores), pero tenga
en cuenta que no son garantiza que su deseo será cumplida.
Envío de parches
En caso de que usted ha programado una corrección de errores, una extensión
o algo que puede ser de uso público en FreeCAD, crear un parche utilizando la
herramienta diff de Subversion y lo presentará en el mismo tracker (archivo
como parche).
Bugs
Si usted piensa que usted podría ha encontrado un bug, vaya a la Sección de
bugs del tracker y elija "cualquiera" para Estado de ver todos los de solicitud de
error jamás presentada. La búsqueda por palabra clave le permite encontrar
bug tracker entradas para un problema similar. Si no puede encontrar una
entrada mayor acerca de su problema, usted debe presentar una nueva
entrada en la misma página.
Solicitudes de función
Si se echa en falta una característica en FreeCAD que usted piense como
bombardeos absolutamente necesario para convertirse en el mundos mejores
software de CAD, usted podría encontrar el Solicitud de función helpfull de la
sección.
Solicitudes de asistencia
Si no obtiene alrededor de compilación de FreeCAD y el Compilar en Windows
o Compile On Unix sección no le otorga una sugerencia, o intentarlo de puerto
a un nuevo entorno o están programando nuevos módulos o extensiones para
FreeCAD y necesita alguna asistencia a continuación, la Las solicitudes de
asistencia sección es el lugar que desee ir a.
Parches de nuevos
En caso de que usted ha programado una corrección de errores, una extensión
o algo que puede ser de uso público en FreeCAD, crear un parche utilizando
Subversion y de archivo en el sección de parches .
Utilizando el LibPack
Instalar todos necesita libs y dejar que aenderezar encontrarlos
De forma
Nombre de la variable Descripción
predeterminada
set PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
set INCLUDE=
set LIB=
FREECADLIB = "D:\Wherever\LIBPACK"
QTDIR = "% FREECADLIB %"
Incluye
%FREECADLIB%\include
%FREECADLIB%\include\Python
%FREECADLIB%\include\boost
%FREECADLIB%\include\xercesc
%FREECADLIB%\include\OpenCascade
%FREECADLIB%\include\OpenCV
%FREECADLIB%\include\Coin
%FREECADLIB%\include\SoQt
%FREECADLIB%\include\QT
%FREECADLIB%\include\QT\Qt3Support
%FREECADLIB%\include\QT\QtCore
%FREECADLIB%\include\QT\QtGui
%FREECADLIB%\include\QT\QtNetwork
%FREECADLIB%\include\QT\QtOpenGL
%FREECADLIB%\include\QT\QtSvg
%FREECADLIB%\include\QT\QtUiTools
%FREECADLIB%\include\QT\QtXml
%FREECADLIB%\include\Gts
%FREECADLIB%\include\zlib
Libs
%FREECADLIB%\lib
Ejecutables
%FREECADLIB%\bin
Directorio de instalación binario de TortoiseSVN, generalmente
"C:\Programm Files\TortoiseSVN\bin", esto es necesario para una
distribución construir cuando SubWVRev.exe se utiliza para extraer el
número de versión de Subversion.
Python es necesario
Durante la compilación se ejecutan algunas secuencias de comandos
de Python. Así que el intérprete de Python tiene que funcionar en el
sistema operativo. Utilice un cuadro de mando para comprobarlo. Si
no está instalada correctamente la biblioteca de Python obtendrá un
mensaje de error como no se puede encontrar en python.exe. Si utiliza
la LibPack también puede utilizar el python.exe en el directorio bin.
Especial para VC8
Al generar el proyecto con VC8, usted tiene que cambiar la
información de enlace para la biblioteca de WildMagic, puesto que
necesita una versión diferente para VC6 y VC8. Ambas versiones se
suministran en LIBPACK/dll. En las propiedades del proyecto para
AppMesh cambiar el nombre de la biblioteca de la wm.dll a la versión
VC8. Tenga cuidado de cambiarlo en Debug y configuración de
Release.
Compilar
Para instalar simplemente todas estas bibliotecas en un solo paso, solo copiar
y pegar el texto siguiente en una terminal (sólo para sistemas basados en
debian/ubuntu) como root:
aptitude install build-essential python libcoin60-dev libsoqt4-dev
libxerces-c2-dev
libboost-dev libboost-date-time-dev libboost-filesystem-dev libboost-
graph-dev libboost-iostreams-dev
libboost-program-options-dev libboost-serialization-dev libboost-
signals-dev libboost-regex-dev
libqt4-dev qt4-dev-tools python2.5-dev libopencascade-dev
Para construir & instalar FreeCADon Fedora 13, se necesitan unas cuantas
sugerencias y trucos:
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
que hagan lo mismo como hacer instalar pero cree una entrada en su sistema
de gestión de paquetes, por lo que fácilmente puede desinstalar más tarde.
Ahora limpiar los archivos de compilación temporal enorme haciendo
make clean
http://sourceforge.NET/Projects/Free-CAD/Files/FreeCAD%20Linux/
o compilar pivy:
La forma de autotools
Si tienes las fuentes con la subversión, a continuación, debe ser el primer paso
./autogen.sh
Para obtener todo configurado. Si desea que una visión general de todas las
opciones que puede especificar, puede escribir
./configure --help.
Una vez que el paquete se construye, usted puede utilizar lintian para
comprobar si el paquete contiene errores
lintian your-fresh-new-freecad-package.deb (replace by the name of the
package you just created)
Secuencias de comandos de generación automática
Aquí es todo lo que usted necesita para una generación completa de FreeCAD.
Es un enfoque de una secuencia de comandos y funciona en una fresca distro
instalada. Los comandos le pedirá la contraseña de root (para la instalación de
paquetes) y en algún momento a reconocer una huella digital de un repositorio
de servidor o https-subversión de repositorio externo. Este secuencias de
comandos deben ejecutarse en versiones de 32 y 64 bits. Están escritas para
versión distinta, pero también es probables que se ejecutan en una versión
posterior, con o sin cambios de menor importancia.
Si tiene una secuencia de comandos para su distro preferida, por favor,
mándelo! Incorporará en este artículo.
Ubuntu 9.10 - Karmic Koala / Ubuntu 10.04 LTS - Lucid Lynx
sudo apt-get install build-essential python libcoin60-dev libsoqt4-dev
\
libxerces-c2-dev libboost-dev libboost-date-time-dev libboost-
filesystem-dev \
libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev
\
libboost-serialization-dev libboost-signals-dev libboost-regex-dev \
libqt4-dev qt4-dev-tools python2.6-dev libopencascade-dev libsoqt4-dev
\
libode-dev subversion cmake libeigen2-dev libsimage-dev python-qt4 \
libtool autotools-dev automake bison flex
# 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 libboost-
filesystem-dev \
libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev
\
libboost-serialization-dev libboost-signals-dev libboost-regex-dev \
libqt4-dev qt4-dev-tools python2.6-dev \
libsimage-dev libopencascade-dev \
libsoqt4-dev libode0-dev subversion cmake libeigen2-dev python-pivy \
libtool autotools-dev automake
# go to source dir
cd freecad
# build configuration
cmake .
# build FreeCAD
make
# test FreeCAD
cd bin
./FreeCAD -t 0
11.2 De OpenSuse
# 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/
# 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 libboost-
filesystem-dev \
libboost-graph-dev libboost-iostreams-dev libboost-program-options-dev
\
libboost-serialization-dev libboost-signals-dev libboost-regex-dev \
libqt4-dev qt4-dev-tools python2.5-dev \
libsimage-dev libopencascade-dev \
libsoqt4-dev libode-dev subversion cmake libeigen2-dev python-pivy \
libtool autotools-dev automake
# go to source dir
cd freecad
# build configuration
cmake .
# build FreeCAD
make
# test FreeCAD
cd bin
./FreeCAD -t 0
http://www.MacPorts.org/Install.php
Oda
xercesc
impulso
GTS
OpenCV
El siguiente comando será compilación e instalación todas las bibliotecas
necesarias. Si MacPorts produce errores, puede que desee intente instalar
de uno en uno.
sudo port install ode xercesc boost gts opencv
Qt http://qt.nokia.com/downloads
Obtenga la versión de "Marco sólo" a menos que se planea desarrollar usando
Qt (es mucho más pequeño). FreeCAD compila en OS X Leopard con Qt 4.5.
Se instala en /Library/Frameworks y/usr/bin.
Http://www.coin3d.org/lib/coin/releases/ de la moneda
Instale Coin.pkg Y CoinTools.pkg. FreeCAD compila en OS X Leopard con
moneda 3.1.0. Se instala en /Library/Frameworks.
SoQt http://dl.getdropbox.com/u/103808/FreeCAD/SoQt-1.4.1.dmg
Instale SoQt.pkg Y SoQtTools.pkg. Por alguna razón, no se proporciona el
marco de la SoQt como un binario oficial. Para su comodidad, yo estoy
proporcionando la anterior versión compilada. Si desea compilar su propio,
descargue la última fuente de http://www.coin3d.org/lib/soqt/releases y siga las
instrucciones en README.MACOSX. FreeCAD compila en OS X Leopard con
SoQt 1.4.1. Se instala en /Library/Frameworks.
OpenCASCADE
http://dl.getdropbox.com/u/103808/FreeCAD/OpenCASCADE_i
386_6.3.0_20091128.dmg
La por encima de la OCC 6.3.0 distribución binaria es una versión modificada
de la proporcionada por los mantenedores de PythonOCC
http://www.pythonocc.org/. Puede utilizar la versión de PythonOCC, sin
embargo, se necesitan cambios a los archivos de .la en orden para el FreeCAD
proceso para vincular adecuadamente a ella de construcción y tendrás que
descargar el origen de la OCC por separado. He no todavía correctamente
construido OpenCASCADE yo mismo, pero sería igual que eventualmente--
esto sería clave para brindar una distribución de PowerPC (si es incluso
posible). Si te OpenCASCADE para construir en OS X, déjeme saber cómo. Se
instala en /usr/local/lib/OCC y /usr/local/include/OCC.
ACTUALIZADA de 2009-11-28 con correcciones para Snow Leopard. Si ha
instalado OCC anteriores a esta fecha, se recomienda que usted elimina
los archivos antiguos e instala manualmente el nuevo paquete.
sudo rm -r /usr/local/lib/OCC
sudo rm -r /usr/local/include/OCC
Descargar y 'instalar' a la plantilla de
FreeCAD.app
El archivo siguiente contiene la plantilla de una
paquete de aplicación para FreeCAD. Esto no es
estrictamente necesario, pero hace que trabajar con
FreeCAD más conveniente que la configuración
predeterminada de la instalación. Mina se encuentra
en la carpeta /aplicaciones, pero usted debe poder
ponerlo en cualquier lugar que desee--sólo recuerda
que el paquete no se puede mover, después de que
FreeCAD está cumplido y instalado (sin algunas
modificaciones adicionales). Running hacer usando
la configuración por debajo de la voluntad de la
instalación instalar en este paquete.
http://DL.getdropbox.com/u/103808/FreeCAD/FreeCAD_bundle_template_2009
1128.tar.gz
ACTUALIZADA de 2009-11-28 con el nuevo icono de la aplicación de FreeCAD
Compilar
Ahora configurar, compilar e instalar
utilizando los siguientes comandos desde
dentro de la carpeta raíz del FreeCAD de
FreeCAD. Si pone su paquete de
FreeCAD.app en algún lugar distinto de
/aplicaciones (o no está usando el
paquete), cambie la línea 'PREFIX' en
consecuencia.
./autogen.sh
PREFIX=/Applications/FreeCAD.app/Contents
./configure --with-xercesc-lib=/opt/local/lib --with-xercesc-
include=/opt/local/include --with-boost-lib=/opt/local/lib \
--with-boost-include=/opt/local/include --with-qt4-bin=/usr/bin --
with-qt4-framework=/Library/Frameworks \
--with-occ-lib=/usr/local/lib/OCC --with-occ-
include=/usr/local/include/OCC --with-coin=/Library/Frameworks \
--with-soqt=/Library/Frameworks --prefix=$PREFIX --
bindir=$PREFIX/MacOS --libdir=$PREFIX/Frameworks/FreeCAD \
--includedir=$PREFIX/Resources/include --
datarootdir=$PREFIX/Resources/share
make LDFLAGS=-Wl,-headerpad_max_install_names
make install
Visión general
Estas son las bibliotecas que no cambian en el proyecto de FreeCAD. Se
utilizan básicamente sin cambios como una biblioteca de vínculos dinámicos
(*.so o *.dll). Si hay un cambio necesario o se necesita una clase contenedora,
a continuación, el código de la envoltura o el código de la Biblioteca ha
cambiado necesario mover para el paquete de base de FreeCAD. Las
bibliotecas utilizadas son:
Detalles
Python
Perl
Tcl/Tk
VB
Java
Licencia: OCTPL
No creo que necesario que diga mucho acerca de Qt. Es uno de los kits de
herramientas de GUI más utilizadas en proyectos de código abierto. Para mí, el
punto más importante para usar Qt es el diseñador de Qt y la posibilidad de
cargar los cuadros de diálogo todo como un recurso (XML) e incorporar widgets
especializados. En una aplicación de CAX la interacción con el usuario y
cuadros de diálogo son por lejos la mayor parte del código y un diseñador de
buen diálogo es muy importante para ampliar fácilmente FreeCAD con nueva
funcionalidad. Más información y una muy buena documentación en línea que
encontrará en http://www.qtsoftware.com .
Coin3D
SoQt
Versión: 0.7
Versión: 1.x.x
zlib está diseñado para ser una libre, para fines generales, legalmente no
comprometido--es decir, no cubiertos por ninguna patente--biblioteca de
compresión sin pérdida de datos para su uso en prácticamente cualquier
equipo hardware y sistema operativo. El formato de datos de zlib es en sí
mismo portátil a través de plataformas. A diferencia del método de compresión
LZW utilizado en Unix Compress (1) y en el formato de imagen GIF, el método
de compresión que se utiliza actualmente en zlib esencialmente nunca expande
los datos. (LZW puede duplicar o triplicar el tamaño del archivo en casos
extremos). la huella de la memoria de zlib también es independiente de los
datos de entrada y puede ser reducida, si es necesario, algunos sin costo en
compresión.
Impulso
Versión: 1.33.x
Las bibliotecas de C++ de Boost son una colección de las bibliotecas de peer-
reviewed y de código abierto que amplían la funcionalidad de C++. Las
bibliotecas tienen licencia bajo la licencia de software de Boost, diseñado para
permitir a Boost ser usado con ambos proyectos de código abierto y cerrado.
Muchos de los fundadores del Boost están en el Comité de estándar de C++ y
varias bibliotecas de Boost han sido aceptadas para su incorporación a la
técnica 1 informe de C ++ 0 x.
Herramientas en Linux
TODO
Esta página muestra las diferentes maneras para iniciar FreeCAD y las
características más importantes de configuración.
Configuration:
-l [ --write-log ] arg write a log file
-t [ --run-test ] arg test level
-M [ --module-path ] arg additional module paths
-P [ --python-path ] arg additional python paths
--response-file arg can be specified with '@name', too
Archivos de respuesta y config
FreeCAD algunas de estas opciones puede leer un archivo de configuración.
Este archivo debe estar en la ruta de acceso de bin y debe tener el nombre
FreeCAD.cfg. Tenga en cuenta que las opciones especificadas en la línea de
comandos reemplazan el archivo config!
o:
FreeCAD --response-file=ResponseFile.txt
Opciones ocultas
Hay un par de opciones no visible para el usuario. Estas opciones son, por
ejemplo, los parámetros de X-Window analizados por el sistema de Windows:
El conjunto de configuración
En cada FreeCAD de inicio examina sus alrededores y los parámetros de línea
de comandos. Acumula un conjunto de configuración que mantiene la
esencia de la información de tiempo de ejecución. Más tarde, esta información
se utiliza para determinar el lugar dónde guardar los datos de usuario o los
archivos de registro. También es muy importante para post postmortem analiza.
Por lo tanto, está guardado en el archivo de registro.
Información relacionada con el usuario
Nombre de var
Sinopsis Ejemplo M $ Ejemplo Posix (Linux)
config
Ruta de
acceso
donde
FreeCAD
C:\Documents and
almacena
UserAppData Settings\nombre /Home/username/.FreeCAD
los datos
Data\FreeCAD
relacionado
s de usuario
de la
aplicación.
Archivo
donde
FreeCAD
almacena C:\Documents and
UserParameter los datos Settings\nombre /Home/username/.FreeCAD/User.cfg
relacionado Data\FreeCAD\user.cfg
s de usuario
de la
aplicación.
Archivo
donde
FreeCAD C:\Documents and
SystemParamet almacena Settings\nombre /Home/username/.FreeCAD/System.
er los datos Data\FreeCAD\system.c cfg
relacionado fg
s de
aplicación.
Ruta de
C:\Documents and
inicio del
UserHomePath Settings\username\My / home/nombre de usuario
usuario
documentos
actual
C:\Documents and
Nombre del archivo donde se coloca
LoggingFileName Settings\nombre
el registro
Data\FreeCAD\FreeCAD.log
Nombre de var
Sinopsis Ejemplo M $ Ejemplo Posix (Linux)
config
PYTHONPATH
PYTHONHOME
TCL_LIBRARY
TCLLIBPATH
CSF_MDTVFontDirectory
CSF_MDTVTexturesDirectory
CSF_UnitsDefinition
CSF_UnitsLexicon
CSF_StandardDefaults
CSF_PluginDefaults
CSF_LANGUAGE
CSF_SHMessage
CSF_XCAFDefaults
CSF_GraphicShr
CSF_IGESDefaults
CSF_STEPDefaults
PATH
Generar información relacionada
La siguiente tabla muestra las tetera informaciones acerca de la versión de
compilación. La mayoría de ella proviene desde el repositorio de Subversion.
Esto es necesario para reconstruir exactamente una versión!
Nombre de var
Sinopsis En el ejemplo se
config
Número de revisión de
repositorio SVN de la src en
BuildRevision 356
la construcción. Generados
por SVN
Intervalo de cambios de
BuildRevisionRange 123-356
diferentes
https://Free-
Dirección URL del
BuildRepositoryURL CAD.SVN.sourceforge.NET/svnroot/Free-
repositorio
CAD/trunk/src
Fecha de la revisión de
BuildRevisionDate 2007/02/03 22:21:18
arriba
Sinopsis En el ejemplo se
Nombre de var
config
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
Probar primero
Antes de ir a través del dolor fuera de depuración del uso del marco de prueba
para comprobar si las pruebas estándar funcionen correctamente. Si no quizá
es una instalación rota.
línea de comandos
El de depuración de FreeCAD es apoyado por unos pocos mecanismos
internos. La versión de línea de comandos de FreeCAD proporciona opciones
para la depuración de soporte:
-v
Con la "v" opción FreeCAD da un resultado más detallado.
-l
Con la "l" opción FreeCAD escribe información adicional en un archivo de
registro.
Introducción
FreeCAD viene con un amplio marco de prueba. Las bases de la
pruebas en un conjunto de secuencias de comandos de Python que
se encuentran en el módulo de prueba.
Gui::Application::initApplication();
Gui::Application::runApplication();
App::Application::destruct();
return 0;
}
La línea:
Gui::BitmapFactory().addXPM("FooAppSplasher", ( const char** )
splash_screen);
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 sección traducciones contiene
una lista de archivos con la traducción para cada idioma. En el ejemplo anterior
MyMod_de.ts es la traducción alemana.
Ahora que necesita para ejecutar lupdate para extraer todos los literales de
cadena en su GUI. Ejecutando lupdate después de que los cambios en el
código fuente es siempre segura ya que nunca elimina cadenas de los archivos
de las traducciones. Sólo agrega nuevas cadenas.
Ahora necesita agregar el .ts -archivos al proyecto VisualStudio. Especifique la
costumbre siguiente construir un método para ellos:
python ..\..\..\Tools\qembed.py "$(InputDir)\$(InputName).ts"
"$(InputDir)\$(InputName).h" "$(InputName)"
Nota: Escriba esto en una línea de comandos, el salto de línea es sólo para
propósitos de diseño.
Mediante la compilación de la .ts -archivo del ejemplo anterior, un archivo de
encabezado MyMod_de.h se crea. El mejor lugar para incluir esta es en app
<Modul> Gui.cpp. En nuestro ejemplo sería AppMyModGui.cpp . Hay que
agregar la línea
new Gui::LanguageProducer("Deutsch", <Modul>_de_h_data,
<Modul>_de_h_len);
Traducir la wiki
Este wiki es hosting mucho del contenido. Material más actualizado e
interesante se reunieron en el manual . Así que el primer paso es comprobar si
ya se ha iniciado la traducción manual para su idioma (busque en la barra
lateral izquierda, bajo "manual"). Si no, la cabeza para el foro y decir que desea
iniciar una nueva traducción, vamos a crear la configuración básica para el
idioma que desee trabajar en.
A continuación, una vez que usted traduce una página, debe agregar a la
página original inglés un vínculo para su traducción, para que los lectores
sepan que existe una versión traducida, utilizando la plantilla {{idiomas}}.
Vistazo de cómo otros traductores lo hizo para hacer lo mismo.
PyQt4
página Web: http://www.riverbankcomputing.co.uk/pyqt
Linux
Windows
http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/HTML/Classes.html -la
referencia de la API de PyQt4 oficial
Pivy
página Web: http://pivy.coin3d.org/
Iniciar con Debian Squeeze y Ubuntu Lucid, pivy estará disponible directamente
desde los repositorios oficiales, ahorrándonos muy complicado. En el ínterin,
puede o bien disponibles de descarga uno de los paquetes que hicimos (para
debian y ubuntu karmic) en el Descargar las páginas, o compilarlo usted
mismo.
a continuación
debuild
Primero hay que obtener las fuentes más recientes desde el repositorio del
proyecto:
svn co https://svn.coin3d.org/repos/Pivy/trunk Pivy
que crea los archivos de origen. Se puede ejecutar en un error del compilador
donde un 'const char *' no puede convertirse en un 'char *'. Para corregir que
sólo necesita escribir un 'const' antes en las líneas adecuadas. Hay seis líneas
para corregir. Después de eso, instalar mediante la emisión de (como root):
python setup.py install (or checkinstall python setup.py install)
Suponiendo que estás utilizando Visual Studio 2005 o posterior debe abrir un
símbolo del sistema con ' Visual Studio 2005 símbolo ' en el menú
Herramientas. Si el intérprete de Python todavía no está en la ruta del sistema
set PATH=path_to_python_2.5;%PATH%
Para obtener trabajo de pivy debe obtener las fuentes más recientes desde el
repositorio del proyecto:
svn co https://svn.coin3d.org/repos/Pivy/trunk Pivy
con
vsbase = r"Software\Microsoft\VCExpress\%0.1f" % version
con
self.set_macro("FrameworkSDKDir", net, "sdkinstallrootv2.0")
http://www-
Evasion.imag.fr/~Francois.Faure/doc/inventorMentor/sgi_html/index.html - El
Inventor Mentor - la "Biblia" de lenguaje de descripción de escena de inventor.
Créditos
Aquí una visión general que las personas o las empresas contribuyen a
FreeCAD. Los créditos para las bibliotecas utilizadas ver Bibliotecas de terceros
.
Desarrollador
Desarrollador principal
Jürgen Riegel
Werner Mayer
Más tarde allí pueden ser responsabilidades sobre la base del módulo.
Desarrolladores
Imetric 3D