Aquí está la planificación del proyecto para el módulo de Ensamblaje como parte del Mapa de desarrollo
Este es un proyecto de desarrollo de software cuya intención es implementar capacidades para la creación de ensamblajes y productos. Trata de la implementación de algunas características principales en los módulos de CAD de FeeCAD, Piezas y Ensamblaje.
Los pasos del desarrollo se planifican aquí y se siguen en el sistema de gestión de incidencias para conseguir un histórico de cambios bien definido: Sistema de gestión de incidencias
La intención del proyecto es permitir a FreeCAD lograr una tarea de diseño como está:
Esto se logrará utilizando el Ensamblaje para poner todos los diferentes tipos de piezas juntas con restricciones y permanecer lo más cerca que se pueda de la especificación ISO 10303 para permitir un intercambio de modelos sencillo.
Otro objetivo es utilizar ODE para la cinemática.
Una característica importante para los diseños del mundo real es la habilidad de dividir un diseño en partes más manejables. Es imposible trabajar en todos los aspectos de un diseño al mismo tiempo o por separado. Esto es cierto para la geometría y también para las tareas de ingeniería como CAE o CAM. Por eso FreeCAD necesita la posibilidad de dividir los modelos. Esto abre algunas posibilidades:
Un diseño de modelo múltiple podría parecerse a este:
Modelo múltiple significa un montón de archivos que pertenecen a un proyecto, normalmente bajo un directorio común. Un archivo de proyecto y un explorador de proyecto (project browser) pueden ayudar a organizar los archivos. También pueden guardar información adicional sobre el proyecto o una website del proyecto.
1. Dos modos, el modo "Simple" y el modo "Proyecto". "Simple" significa que sólo hay un documento, y todos los ensamblajes y piezas van en ese documento. Si se crea o abre un Proyecto, FreeCAD está en modo "Proyecto".
2. Proyectos. La posición del archivo FCPrj en el disco define un directorio raíz. Todos los archivos contenidos en este directorio están definidos con rutas relativas al directorio raíz. Una vista adicional a la izquierda contendrá el ProjectExplorer que mostrará el árbol de directorios con los archivos manejados.
Este directorio raíz se utiliza también como raíz para un entorno de pruebas SVN, que permitirá después facilitar el compartir y el control de versiones.
Las referencias externas (a un directorio fuera del directorio raíz, un servidor compartido o un recurso web) se manejarán y mostrarán de forma separada en el ProjectExplorer (un pseudo directorio para cada archivo de servidor o servidor web). Esto hace posible conseguir un rápido resumen sobre las referencias externas y redefinir sus rutas.
Ahora los derechos de autor de los modelos de 3D son un campo interesante. Los modelos 3D realmente tienen derechos de autor. Los derechos de autor son del creador del modelo. Sólo es posible proteger la forma, que es representada por el modelo, por una patente o una patente de diseño (EE.UU). Pero las patentes cubren sólo la creación de una pieza física para ganar dinero. Como ejemplo el Patente del diseño del ratón de Microsoft.
De modo que tenemos que recordar al creador (titular de los derechos de autor) y cualquier clase de licencia para cada modelo/producto/archivo de un diseño. Para la licencia yo utilizaría las licencias de tipo de CC. http://creativecommons.org/
Claves abreviadas para licencias CC:
Añadir un enlace URL al documento de licencia completo (en caso de licencias de clientes)
La ISO 10303 (STEP) es muy importante en este campo. Es la única definición de estructuras de producto que conozco que está bien estandarizada y ampliamente discutida y reconocida.
Aquí algunos vínculos con información:
Una función importante en la construcción de modelos grandes y productos son las restricciones de ensamblaje, que formulan ciertas reglas sobre como se ensamblan las piezas en un producto. Las restricciones más relevantes son del tipo: Fijo, Cara a cara, Ángulo, Equidistancia y algún tipo de patrón de repetición (para producir múltiples instancias). Estas restricciones necesitan un solucionador especializado que las actualice cuando se produzcan cambios en las piezas. Este solucionador es fundamentalmente diferente al solucionador de croquis. Creo que tenemos que ir hacia un acercamiento basado en gráficos en este...
Un paso más sería utilizar ODE para poner las restricciones de piezas y ensamblajes juntas para hacer una simulación de la cinemática de las máquinas. Eso permitiría comprobar si existen colisiones y explorar las condiciones de un sistema mecánico.
Un importante punto es el control de versión y desarrollo distribuido. Con diseño multi modelo podremos dividir los diseños en piezas menores y podemos distribuir el trabajo entre un equipo. A un desarrollador de software "distribuido" y "Versión" le sonará familiar, así que por que no utilizar un DVCS. Una buena comparación está aquí.
Ya que manejamos datos grandes, y datos que no pueden diferenciarse fácilmente, estamos limitados a aquellos que utilizan el modelo de captura persistente. Cualquier sistema de almacenamiento diferente nos dará problemas con los datos (probado personalmente con archivos de Mercurial y Catia). Después de separar los comerciales y no-libres, básicamente sólo quedan Git y SVN .
Utilizando Git para la tarea nos deja a nosotros con dos grandes fronteras:
Pero utilizando Git podrían abrirse un montón de posibilidades incluso podríamos soñar con un sistema PLM de primera clase...
Aquí están algunas tareas de desarrollo necesarias para un diseño decente de Ensamblaje/Productos:
El ensamblaje demandará algunos cambios en e sistema base y capa de infraestructura de FreeCAD.
Los modelos múltiples estaban en mente desde el principio del diseño de FreeCAD. Por tanto tenemos una interfaz de múltiples documentos y podemos cargar ilimitados documentos. Pero necesitamos promocionar especialmente el visor 3D para manejar el mostrar más de un documento en su vista (Part-Trees).
La combinación de piezas y subensamblajes es la actividad principal durante los ensamblajes. Por ello, hay que tener herramientas adecuadas para agrupar ordenadamente las piezas en una estructura de arbol. Esas herramientas hay que implementarlas. A diferencia de un DocumentObjectGroup el grupo de Ensamblaje tiene que manejar visibilidad y ubicación de sus hijos. Mejor hacerlo por apilado ViewProvider en cada otro. Eso necesita un tipo de ClaimChildren() interfaz para el ViewProviders.
El interfaz debe ser adecuado para facilitar que tanto desde ViewProvider como desde los diversos entornos se tenga un control total sobre las operaciones de Arrastrar/Soltar/Copiar/Pegar y además sea operativo tanto en la vista en árbol como en la vista 3D.
Manejar enlaces (de navegadores internos o externos). Significa recursos cargando sobre (potencialmente) conexiones lentas (http).
La descripción del material y sus propiedades es una parte vital de un sistema CAD/CAE. Un material tiene un montón de propiedades y nombres altamente dependientes del campo en el que se utilizan. Por ejemplo, FEM y la ingeniería mecánica tienen diferentes entornos y estándares para describir el material.
Para la descripción del material se ha creado un artículo específico: Material
Una Clase árbol para manejar conceptos necesarios. Referencias, interfaces, enlaces de documentos, vistas, compuestos, restricciones, configuraciones, y mucho más...
Implementing a first STEP importer for more then geometry and color to check if the object model holds for a wider usage.
Definir un interfaz para un Solucionador de restricciones de ensamblaje, muy similar al interfaz del solucionador del Croquizador.
Interfaz para permitir a un software de simulación (multi)física (externo) tomar el control sobre el posicionamiento de las Piezas en el Ensamblaje. Esto podría permitir utilizar "bullet" o "ODE" para hacer los test de cinemática y DMU.