Atelier Assembly

From FreeCAD Documentation
Revision as of 15:07, 2 November 2024 by FuzzyBot (talk | contribs) (Updating to match new version of source page)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Icône de l'atelier Assembly

Introduction

introduit dans la version 1.0

L' atelier Assembly est le nouvel atelier d'assemblage intégré de FreeCAD. Il utilise le solveur open-source d'Ondsel.

Outils

Assemblage

  • Assemblage : crée un assemblage de base dans le document en cours ou un sous-assemblage dans un assemblage actif préexistant.
  • Vue éclatée : crée un conteneur de vues éclatées dans l'assemblage actif qui contient une ou plusieurs vues éclatées.
  • Nomenclature : crée une nomenclature à partir d'un sous-ensemble sélectionné ou du document.

Liaisons

  • Bascule du blocage : fixe la position et l'orientation d'une forme par rapport au système de coordonnées de l'assemblage auquel elle appartient.
  • Liaison fixe : crée une liaison bloquant deux pièces d'assemblage l'une contre l'autre, empêchant tout mouvement ou rotation, mais peut également être utilisé pour définir d'autres types de liaisons.
  • Liaison pivot : crée une liaison articulée, permettant la rotation autour d'un seul axe entre deux parties sélectionnées.
  • Liaison pivot glissant : crée une liaison pivot glissant entre deux pièces sélectionnées, permettant une rotation autour d'un seul axe et un mouvement le long du même axe.
  • Liaison glissière : crée une liaison glissière entre deux pièces sélectionnées, permettant un mouvement linéaire le long d'un seul axe tout en limitant la rotation.
  • Liaison bille : crée une liaison bille entre deux pièces sélectionnées en un seul point, permettant une rotation libre autour du point tout en gardant les deux pièces connectées en ce point.
  • Liaison distance : crée une liaison distance entre deux pièces sélectionnées, fixant la distance entre les deux pièces.
  • Liaison parallèle : crée une liaison parallèle entre deux pièces sélectionnées, en mettant en parallèle les axes Z des systèmes de coordonnées sélectionnés.
  • Liaison perpendiculaire : crée une liaison perpendiculaire entre deux pièces sélectionnées, en mettant perpendiculaire les axes Z des systèmes de coordonnées sélectionnés.
  • Liaison d'angle : crée une liaison d'angle entre deux pièces sélectionnées, fixant l'angle entre les axes Z des systèmes de coordonnées sélectionnés.
  • Liaison crémaillère : crée une liaison à crémaillère qui couple la translation d'une partie d'une liaison glissière et la rotation d'une partie d'une liaison pivot.
  • Liaison hélicoïdale : crée une liaison hélicoïdale qui couple la translation d'une partie d'une liaison glissière et la rotation d'une partie d'une liaison pivot.
  • Liaison engrenage/courroie :
  • Liaison engrenage : crée une liaison par engrenage qui couple la rotation de deux parties de deux liaisons pivots différentes.
  • Liaison courroie : crée une liaison par courroie qui couple la rotation de deux parties de deux liaisons pivots différentes.

Préférences

Exemple d'une manivelle et une tige coulissante

Cet exemple est temporaire et pourra être supprimé lorsque des descriptions/tutoriels appropriés seront disponibles.

Assemblage d'une manivelle et d'une tige coulissante

L'assemblage à créer se compose de quatre parties : une base, une tige coulissante, une manivelle et une bielle. Elles sont reliées par quatre articulations.

Pièces assemblées : la base (ambre), la tige coulissante (bleu clair), la manivelle (rouge), la bielle (vert)

Préparer des pièces

Dans cet exemple, toutes les pièces et l'assemblage sont créés dans un seul document.

Les géométries cylindriques des objets sont soit parallèles, soit perpendiculaires. Le reste des formes n'est pas pertinent pour cet exemple, à moins qu'il n'y ait des collisions. En gardant cela à l'esprit, vous pouvez modéliser vos propres objets ou les créer à l'aide du code Python ci-dessous. Le code créera un nouveau document avec les quatre objets (plus simples que dans les images). Il suffit de copier-coller les lignes suivantes dans la console Python :

import FreeCAD as App
import FreeCADGui as Gui
import Part

doc = App.newDocument()

box1 = Part.makeBox(140, 40, 7, App.Vector(0, -20, 0))
cyl1 = Part.makeCylinder(4, 8, App.Vector(120, 0, 7))
box2 = Part.makeBox(20, 12, 10, App.Vector(5, -6, 7))
cyl2 = Part.makeCylinder(6, 20, App.Vector(25, 0, 17), App.Vector(-1, 0, 0))
cyl3 = Part.makeCylinder(4, 20, App.Vector(25, 0, 17), App.Vector(-1, 0, 0))
shape = box1.fuse([cyl1, box2, cyl2]).removeSplitter().cut(cyl3)
base = doc.addObject("Part::Feature", "Base")
base.Shape = shape

box1 = Part.makeBox(4, 12, 12, App.Vector(-12, -6, 0))
box2 = Part.makeBox(14, 12, 4, App.Vector(-8, -6, 0))
cyl1 = Part.makeCylinder(4, 8, App.Vector(0, 0, 4))
cyl2 = Part.makeCylinder(4, 88, App.Vector(-12, 0, 6),App.Vector(-1, 0, 0))
shape = box1.fuse([box2, cyl1, cyl2]).removeSplitter()
slider_rod = doc.addObject("Part::Feature", "SliderRod")
slider_rod.Shape = shape
slider_rod.Placement.Base = App.Vector(100, -40, 0)

cyl1 = Part.makeCylinder(7.5, 4)
box1 = Part.makeBox(15, 30, 4, App.Vector(-7.5, 0, 0))
cyl2 = Part.makeCylinder(7.5, 4, App.Vector(0, 30, 0))
cyl3 = Part.makeCylinder(4, 6, App.Vector(0, 30, 4))
cyl4 = Part.makeCylinder(4, 4)
shape = cyl1.fuse([box1, cyl2]).removeSplitter().fuse(cyl3).cut(cyl4)
crank = doc.addObject("Part::Feature", "Crank")
crank.Shape = shape
crank.Placement.Base = App.Vector(125, -70, 0)

cyl1 = Part.makeCylinder(6, 4)
box1 = Part.makeBox(50, 12, 4, App.Vector(0, -6, 0))
cyl2 = Part.makeCylinder(6, 4, App.Vector(50, 0, 0))
cyl3 = Part.makeCylinder(4, 4)
cyl4 = Part.makeCylinder(4, 4, App.Vector(50, 0, 0))
shape = cyl1.fuse([box1, cyl2]).removeSplitter().cut(cyl3.fuse(cyl4))
connecting_rod = doc.addObject("Part::Feature", "ConnectingRod")
connecting_rod.Shape = shape
connecting_rod.Placement.Base = App.Vector(25, -70, 0)

mat = base.ViewObject.ShapeAppearance[0]
mat.DiffuseColor = (0.80, 0.60, 0.15, 0.0)
base.ViewObject.ShapeAppearance = (mat,)

mat = slider_rod.ViewObject.ShapeAppearance[0]
mat.DiffuseColor = (0.55, 0.70, 0.70, 0.0)
slider_rod.ViewObject.ShapeAppearance = (mat,)

mat = crank.ViewObject.ShapeAppearance[0]
mat.DiffuseColor = (0.70, 0.30, 0.20, 0.0)
crank.ViewObject.ShapeAppearance = (mat,)

mat = connecting_rod.ViewObject.ShapeAppearance[0]
mat.DiffuseColor = (0.55, 0.70, 0.0, 0.0)
connecting_rod.ViewObject.ShapeAppearance = (mat,)

doc.recompute()
view = Gui.ActiveDocument.ActiveView
view.viewIsometric()
view.fitAll()

Ajouter un assemblage

La commande Assemblage permet d'ajouter un assemblage au document.

Arborescence des pièces et des assemblages

Déplacer les pièces dans l'assemblage

Dans la vue en arborescence, glissez et déposez les pièces sur l'objet Assemblage. Elles peuvent maintenant être traitées par le solveur de l'assemblage.

Les pièces sont maintenant dans le conteneur d'assemblage

Fixer une pièce

Pour maintenir l'assemblage dans la position souhaitée, la base doit être verrouillée ou fixée (en anglais grounded). Sélectionnez la base dans la vue en arborescence ou dans la vue 3D et utilisez la commande Activer/désactiver le blocage. Cette commande fixe la position de la base par rapport au système de coordonnées local (LCS) du conteneur Assembly. Un objet GroundedJoint est ajouté au conteneur Joints.

Développez le conteneur Joints pour trouver l'objet GroundedJoint

Alternative : insérer un lien

Au lieu des deux étapes mentionnées ci-dessus, il est également possible d'utiliser la commande Insérer un composant pour placer des objets à l'intérieur d'un assemblage. Le premier objet devient automatiquement la partie fixée. Il faut donc commencer par l'objet Base. La commande crée des liens et les objets d'origine reste en dehors de l'assemblage. Pour éviter toute confusion, il est conseillé de les rendre invisibles.

Appliquer des liaisons

Une liaison relie exactement deux éléments de pièces différentes. Ils peuvent être sélectionnés avant que la commande de la liaison souhaitée ne soit lancée (tout nombre d'éléments sélectionnés autre que deux entraîne une sélection vide).
Les éléments définissent la position et l'orientation d'un LCS représenté par un cercle rempli sur le plan local XY et trois lignes le long des axes locaux X (rouge), Y (vert) et Z (bleu).

  • Une liaison pivot entre la base et la manivelle

Éléments sélectionnés + Créer une liaison pivot → manivelle réarrangée

Déplacez la manivelle à l'aide du bouton gauche de la souris. Seule une rotation autour du pivot doit être possible.

  • Une liaison glissière glissant entre la base et la tige coulissante

Éléments sélectionnés + Créer une liaison glissière → tige coulissante réarrangée

Déplacez la tige coulissante à l'aide du bouton gauche de la souris. Seul un déplacement le long de sa ligne centrale devrait être possible.

  • Une liaison pivot entre la manivelle et la bielle

Éléments sélectionnés + Créer une liaison pivot → bielle réarrangée

Déplacez la bielle à l'aide du bouton gauche de la souris. Seule une rotation autour du pivot doit être possible.

S'il y a plusieurs joints dans une ligne, nous devons aider le solveur à trouver une solution raisonnable.
Si nécessaire, cliquez et faites glisser les pièces vers une position plus facile à calculer.

  • Une liaison pivot glissant entre la bielle et la tige coulissante

Éléments sélectionnés + Créer une liaison pivot glissant → assemblage terminé

Dans l'assemblage terminé, utilisez le pointeur de la souris pour faire glisser les pièces en fonction des liaisons utilisées.

Remarque

L'axe de la tige coulissante est orienté de manière redondante. Son axe central est parallèle à l'axe de la base par l'intermédiaire de la chaîne cinématique allant de la base à la manivelle et à la bielle, c'est-à-dire que son axe Z local ne peut pivoter autour d'aucun axe X ou Y. L'articulation du coulisseau empêche également la rotation de son axe Z autour de deux axes locaux. L'articulation coulissante empêche également la rotation de son axe Z autour de deux axes locaux, ce qui se traduit par deux degrés de liberté contraints de manière redondante. Une articulation cylindrique à la place de l'articulation coulissante ne bloquerait qu'une rotation, ce qui se traduirait par un seul degré de liberté contraint de manière redondante.

Contrôler la manivelle

Pour contrôler la disposition de l'assemblage par l'angle entre la base et la manivelle, nous devons remplacer l'articulation à rotule entre les deux par une articulation fixe. Pour contrôler la position de l'assemblage par l'angle entre la base et la manivelle, nous devons transformer la liaison pivot en liaison fixe. Pour ce faire, double-cliquez sur l'objet Pivot dans l'arborescence. Dans la fenêtre de dialogue, changez la valeur Pivot en Fixe et modifiez la valeur de la rotation comme vous le souhaitez (le mouvement doit suivre l'action de la molette de la souris).

Remarquez qu'un changement de type de liaison modifie l'étiquette de la liaison mais pas son nom. Dans ce cas, l'étiquette est remplacée par "Fixed".

Pour animer l'assemblage, nous pouvons modifier la rotation (Offset1.Angle) de la liaison fixe avec du code Python. Il suffit de copier-coller les lignes suivantes dans la console Python :

import math
import FreeCAD as App
import FreeCADGui as Gui

actuator = App.ActiveDocument.getObjectsByLabel("Fixed")[0]

for angle in range(0, 361, 10):
    # A full rotation of the Crank in steps of 10°
    actuator.Offset1.Rotation.Angle = math.radians(angle)
    App.ActiveDocument.recompute()
    Gui.updateGui()

La fin de l'intervalle doit être supérieure à 360 pour que cet angle soit également considéré comme un résultat valide.

Exemple d'un joint de Cardan

Cet exemple est temporaire et pourra être supprimé lorsque des descriptions/tutoriels appropriés seront disponibles.

Assemblage d'un joint de Cardan

Dans cet exemple, un joint de Cardan est créé.

L'assemblage se compose de trois éléments solides : deux fourches identiques et une croix. Deux éléments non solides supplémentaires, Axle1 et Axle2, représentant les arbres coudés, sont également nécessaires. Les arbres et les éléments solides sont reliés par plusieurs liaisons.

Préparer des pièces

Dans cet exemple, toutes les pièces et l'assemblage sont créés dans un seul document.

Le code Python ci-dessous créera un nouveau document avec quatre objets (seulement 1 fourche). Il suffit de copier-coller les lignes suivantes dans la console Python :

import math
import FreeCAD as App
import FreeCADGui as Gui
import Part

doc = App.newDocument()

axle1 = doc.addObject("Part::Line", "Axle1")
axle1.X2 = -80
axle1.Y2 = 0
axle1.Z2 = 0

axle2 = doc.addObject("Part::Line", "Axle2")
axle2.X2 = 80
axle2.Y2 = 0
axle2.Z2 = 0
axle2.Placement.Rotation.Angle = math.radians(20)

sph1 = Part.makeSphere(50, App.Vector(0, 0, 0), App.Vector(-1, 0, 0), 0, 90, 360)
box1 = Part.makeBox(50, 40, 80, App.Vector(-50, -20, -40))
cyl1 = Part.makeCylinder(20, 80, App.Vector(0, 0, -40))
cyl2 = Part.makeCylinder(20, 80, App.Vector(0, 0, 0), App.Vector(-1, 0, 0))
cyl3 = Part.makeCylinder(30, 60, App.Vector(0, -30, 0), App.Vector(0, 1, 0))
box2 = Part.makeBox(30, 60, 60, App.Vector(0, -30, -30))
cyl4 = Part.makeCylinder(15, 80, App.Vector(0, 0, -40))
cyl5 = Part.makeCylinder(15, 80, App.Vector(0, 0, 0), App.Vector(-1, 0, 0))
shape = sph1.common(box1).fuse([cyl1, cyl2]).cut(cyl3.fuse([box2, cyl4, cyl5]))
fork = doc.addObject("Part::Feature", "Fork")
fork.Shape = shape.removeSplitter()
fork.Placement.Base = App.Vector(0, 100, 0)

cyl1 = Part.makeCylinder(15, 80, App.Vector(0, 0, -40))
cyl2 = Part.makeCylinder(15, 80, App.Vector(0, -40, 0), App.Vector(0, 1, 0))
shape = cyl1.fuse([cyl2])
cross = doc.addObject("Part::Feature", "Cross")
cross.Shape = shape.removeSplitter()
cross.Placement.Base = App.Vector(70, 100, 0)

mat = fork.ViewObject.ShapeAppearance[0]
mat.DiffuseColor = (0.80, 0.60, 0.15, 0.0)
fork.ViewObject.ShapeAppearance = (mat,)

mat = cross.ViewObject.ShapeAppearance[0]
mat.DiffuseColor = (0.55, 0.70, 0.70, 0.0)
cross.ViewObject.ShapeAppearance = (mat,)

doc.recompute()
view = Gui.ActiveDocument.ActiveView
view.viewIsometric()
view.fitAll()

Changer l'angle des arbres

L'angle entre les arbres est fixé à 20°. Si l'angle doit être modifié, Axle2 est sélectionné et sa propriété Placement.Angle est ajustée. Cette propriété doit être modifiée avant que Axle2 ne soit déplacé dans l'assemblage.

Attention : les pièces peuvent entrer en collision si l'angle est trop grand.

Ajouter un assemblage

La commande Assemblage permet d'ajouter un assemblage au document.

Déplacer les arbres dans l'assemblage

Dans la vue en arborescence, glisser-déposer les arbres sur l'objet Assembly.

Bloquer les arbres

Sélectionnez les deux arbres dans l'arborescence et utilisez l'outil Bascule du blocage.

Déplacer les pièces dans l'assemblage

Pour les autres objets, nous utiliserons l'outil Insérer un composant :

  1. Lancez l'outil.
  2. Dans la fenêtre de dialogue qui s'ouvre, cliquez une fois sur l'objet Cross et deux fois sur l'objet Fork.
  3. Appuyez sur le bouton OK.
  4. Rendre invisible les objets extérieurs à l'assemblage.
  5. Si les objets à l'intérieur de l'assemblage se chevauchent trop, vous pouvez les faire glisser vers une nouvelle position.

Appliquer des liaisons

  • Une liaison pivot entre Axle1 et Fork001

Éléments sélectionnés + Créer une liaison pivot → + Décalage de +40mm ou -40mm → Fork001 réarrangé

Si vous lancez d'abord l'outil, puis sélectionnez les éléments, vous pouvez cliquer à proximité du bonne extrémité d'Axle1 pour éviter d'avoir à saisir un décalage.

  • Une liaison pivot glissant entre Fork001 et Cross001

Éléments sélectionnés + Créer une liaison pivot glissant → Cross001 réarrangé

  • Une liaison pivot glissant entre Axle2 et Fork002

Éléments sélectionnés + Créer une liaison pivot glissant → Fork002 réarrangé

Si nécessaire, inversez la direction de la liaison en utilisant le bouton dans le panneau des tâches.

  • Une liaison pivot glissant entre Cross001 et Fork002

Éléments sélectionnés + Créer une liaison pivot glissant → Cross001 et Fork002 réarrangés

Actionner le joint de Cardan

Le joint de Cardan peut être actionné en déplaçant Fork001 avec la souris gauche.

Si vous voulez vérifier la situation à des angles de rotation distincts, procédez comme suit :

  1. Changez la liaison pivot glissant entre Axle1 et Fork001 en une liaison fixe.
  2. Sélectionnez la propriété Offset1.Angle de la liaison fixe et faites tourner la molette de la souris.
  3. Le joint de Cardan peut être positionné à n'importe quel angle.