Assembly project/fr

Voici, le détail du projet de module Assembly (Assemblage) dans le cadre de la feuille de route du développement

Buts et principes
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

Résultats
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.

Modèle multiple


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 :


 * Fin de chargement -seulement besoin de ressources telles que les graphiques et de la mémoire vive pour le projet, sur lequel vous travaillez.
 * ingénierie concourante-permet à beaucoup de personnes de travailler sur le même projet.
 *  Contrôle de Version-mieux contrôler les différents aspects de la conception, et bien d'autres choses encore....

Un multi projet pourrait ressembler à ceci :

Gestion du projet
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.
 * 1. Le mode simple, est un document qui réunit tous les assemblages et pièces dans un seul document. Si un projet est ouvert ou créé, FreeCAD est en mode projet.


 * 2. Le mode projet, la position du fichier .FCPrj sur le disque est définit dans un répertoire racine.

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.

Droits d'auteurs
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:
 * BY = Attribution only
 * BY-ND = Attribution-NoDerivatives
 * BY-NC-ND = Attribution-NonCommercial- NoDerivatives
 * BY-NC = Attribution-NonCommercial
 * BY-NC-SA = Attribution-NonCommercial- ShareAlike
 * BY-SA = Attribution-ShareAlike
 * PD = Dedicated to or marked as being in the public domain via one of our public domain tools, or other public domain work; adaptations of works in the public domain may be built upon and licensed by the creator under any license terms desired

Additionally an URL link to the full license document (in case of custom licenses)

ISO 10303
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 :
 * ISO 10303 sur Wikipedia
 * WikiStep.org avec beaucoup d'informations de base, mais surtout sur STEP-NC
 * La structure de base dans STEP
 * Certains exemples sur STEP
 * ISO 10303-11 sur le modeling language (EXPRESS)
 * A Wikipedia article sur product modeling
 * Overview of Part 41 -- Principes fondamentaux de la description du produit et du soutien
 * Overview of Part 44 (edition 2) -- Produit, Structure, Configuration
 * petits exemples AP 214 fichiers

Assemblages et contraintes
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...

Cinématique
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.

Contrôle des mises à jour
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 :
 * Git est très complexe ; Fusion des ramifications et de marquage le long d'un chemin de développement non linéaire, sans parler de fusion avec des référentiels distants (push, pull) mettra beaucoup de complexité dans cette affaire. Le cacher à l'utilisateur sera une tâche ardue.
 * Git permet la fusion aux gestionnaires et Diff pour certains types de fichiers ; Nous avons besoin d'un gestionnaire pour .fcstd. Ce gestionnaire doit examiner deux documents FreeCAD les inspecte et fusionne les différences dans les objets, les caractéristiques et paramètres. Cela aussi n'est pas facile !

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...

Organisation
Ici certaines tâches de développement nécessaires à une conception pour un assemblage convenable :

Infrastructure
l'ensemble demande des changements dans le système de base, et la couche de l'infrastructure de FreeCAD.

Multi modèle
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).

Part-Arbres
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.

Interface unifiée Drag/Drop/Copy/Paste
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.

Ressources externes
Manipulation des liens "dopés" (à partir de navigateurs internes ou externes). Moyens de chargement de ressources sur les connexions potentiellements lentes (http).

Matériel
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

Modèles d'objets
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...

STEP check loop
Implementing a first STEP importer for more then geometry and color to check if the object model holds for a wider usage.

Solveur d'assemblage de constraintes
Définir l'interface d'un solveur d'assemblage de contraintes très similaire à l'interface du solveur d'esquisse.

Interface de simulation physique
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).

Actions suivantes

 * Modeles d'objets
 * wait for the 0.12 release branch happened

Tutorial

 * Assembly Basic Tutorial