Voici, le détail du projet module Assembly (Assemblage) dans le cadre du Development roadmap
Il s'agit d'un projet de développement logiciel visant à mettre en place un assemblage, et, des capacités de création de produits. C'est une implémentation de certaines caractéristiques de base sur les modules CAD de FreeCAD, Part and Assembly.
Les étapes de développement sont planifiées et suivies avec un numéro, pour obtenir un journal des changements bien documenté : Issue tracker
Le but du projet est de permettre aux utilisateurs de FreeCAD d'accomplir une conception comme celle-ci :
elle sera obtenue à l'aide d'un assemblage avec tous les différents types de pièces et contraintes, et, de rester aussi proche que possible de la spécification ISO 10303 pour permettre l'échange facile de données.
Un autre objectif, est d'utiliser ODE pour la cinématique.
Une caractéristique clé de conception du monde réel, est la capacité de fractionner une conception en morceaux maniables. Il est impossible de travailler sur tous les aspects de la conception en même temps ou séparément. C'est vrai pour les formes géométriques et aussi, pour les tâches d'ingénierie comme FEM ou CAM.
Il faut que FreeCAD aie la possibilité de fractionner les modèles.
Cela ouvre quelques possibilités :
Un multi projet pourrait ressembler à ceci :
Multi modèle, signifie, beaucoup de fichiers appartenant à un seul projet, probablement dans un répertoire commun.
Un fichier de projet, et, un navigateur de projet peuvent être utiles pour organiser les fichiers. Il peut également enregistrer des informations supplémentaires sur le projet ou un site Web du projet.
Deux modes, le mode Simple et le mode Projet.
Tous les fichiers dans le répertoire ci-dessous sont définis avec les chemins d'accès relatifs à la racine.
Une vue supplémentaire sur le côté gauche concerne le ProjectExplorer qui montre l’historique des fichiers manipulés.
Le répertoire racine est également utilisé en tant que root pour, un SVN sand box, ce qui permet de contrôler, la version du fichier et le partager facilement.
Les références externes, (vers un chemin à l'extérieur de la racine, un partage de serveur ou une ressource web) seront manipulés et montrés de manière indépendantes dans le ProjectExplorer (un pseudo chemin pour chaque serveur de fichiers ou serveur web).
Cela permet d'obtenir un aperçu rapide, sur les références externes et les réacheminer.
Le droit d'auteur des modèles 3D est maintenant un champ intéressant. Les modèles 3D relèvent du droit d'auteur.
Le droit d'auteur appartient au créateur du projet 3D. IL est seulement possible de protéger la forme géométrique, qui est représentée par le modèle, par un brevet ou un brevet de conception (US).
Mais les brevets couvrent uniquement la création d'une forme physique pour gagner de l'argent. À titre d'exemple, le brevet de conception de souris Microsoft.
Nous ne devons donc pas oublier le créateur (titulaire du droit d'auteur) et tout type de licence pour chaque modèle/produit/fichier de conception.
Pour la licence, j'utiliserais les licences de type Créative Commons.
Abbreviation Keys for CC licenses:
Additional a URL link to the full license document (in case of custom licenses)
La norme ISO 10303 (STEP) est très importante dans ce domaine. C'est le seul bon standard, largement diffusé et reconnu sur la définition des structures de produits que je connaisse.
Ici, certains liens avec des info :
Un rôle important dans la construction de gros projets prendre les contraintes de l'assemblage, qui formulent certaines règles sur la manière d'assembler les pièces d'un produit. Principalement, ce sont Fix, FaceToFace, Angle, Offset et certains type d'instanciation du modèle.
Si les pièces changent, un solveur spécialisé de contraintes a besoin de les suivre.
Ce solveur est fondamentalement différent du solveur de Sketch. Je pense que nous devons avoir une approche graphique basée sur lui...
Une autre étape serait d'utiliser ODE, ou librairies similaires, pour assembler les pièces et les contraintes permettant de faire une simulation cinématique du système mécanique. Cela permettrait de visualiser le système mécanique en situation de fonctionnement et de vérifier d'éventuelles collisions.
Un point important est le contrôle de version et de développement distribué. Avec la conception de multi modèle, nous sommes capables de fractionnez des projets en petits morceaux et pouvons distribuer le travail à plusieurs équipes.
Pour un développeur de logiciels « distribuer » et « Version » sont familiers, alors pourquoi ne pas utiliser un CVL.
Une bonne comparaison est ici.
Puisque nous traitons de gros volumes de données, qui ne peuvent pas être facilement comparable, nous sommes limités à ceux qui utilisent le modèle persistant.
Tout système d'archivage aura de graves problèmes avec nos données (testés personnellement avec les fichiers Mercurial et Catia).
Après séparation entre les commerciaux et le non libre, restent essentiellement le Git et le SVN.
Faire le travail à l'aide de Git, nous laisse avec deux alternatives :
Mais, l'utilisation de git ouvre beaucoup de possibilités, nous pourrions même rêver d'un système PLM de première classe...
Ici certaines tâches de développement nécessaires à une conception pour un assemblage convenable :
l'ensemble demande des changements dans le système de base, et la couche de l'infrastructure de FreeCAD.
Le multi-modèle est prévu depuis le début de la conception de FreeCAD. Nous avons donc une interface multi documents, et, nous pouvons charger un nombre illimité de documents.
Mais, nous avons besoin particulièrement de mettre à jour la visionneuse 3D, et de gérer plusieurs documents dans plusieurs vues (Part-Trees).
La composition de l'assemblage des pièces et des sous-ensembles est le flux principal du travail, les outils de groupage (stack) des pièces dans un arbre doivent être mis en oeuvre.
Contrairement à un DocumentObjectGroup, le groupe de l'assemblage doit faire face à la visibilité et le positionnement des "enfants".
Le mieux est de faire l'empilage ViewProvider l'un sur l'autre. Pour cela nous avons besoin d'une sorte d'interface ClaimChildren() pour les ViewProviders.
Une interface permet un contrôle total ViewProvider et regroupe les opérations glisser/déplacer/copier/coller dans l'arbre ou dans la vue 3D.
Manipulation des liens "dopés" (à partir de navigateurs internes ou externes). Moyens de chargement de ressources sur les connexions potentiellements lentes (http).
Décrire le matériel et ses propriétés est un sujet essentiell d'un système de CAO/DAO. Les matériau possèdent beaucoup de propriétés et de noms, fortement dépendants de leurs utilisation. Par exemple FEM et génie mécanique, ont des manières et normes différentes pour décrire le matériel.
Pour la désignation du matériel, une page spéciale est ouverte : Matériel
Arbre de classe pour le traitement avec les concepts nécessaires. Références, interfaces, documents, liens, vues, composés, contraintes, configurations et beaucoup plus...
Implementing a first STEP importer for more then geometry and color to check if the object model holds for a wider usage.
Définir l'interface d'un solveur d'assemblage de contraintes très similaire à l'interface du solveur d'esquisse.
Interface permettant à un logiciel de simulation physique (externe) (multi), de prendre le contrôle de la position des parties de l'assemblage.
Cela permettrait d'utiliser le "bullet" ou "ODE" à faire des tests de cinématiques et DMU (Digital Mock-Up).