Scripted Parts: Ball Bearing - Part 2/fr

Introduction
Ce tutoriel se veut une introduction pour les débutants à la création de pièces avec des scripts python dans FreeCAD.

Ce tutoriel explique comment construire un roulement à billes, avec un flux de travail, qui consiste à créer des esquisses et à les faire pivoter.

Le code produira un nouveau document FreeCAD avec 12 formes (anneau intérieur, anneau extérieur et 10 billes / sphères).

Cela ressemblera à ceci :



Workflow ou flux de travail
Le flux de travail est plus ou moins identique à la façon dont vous créeriez la pièce dans l'atelier Part Design

Juste quelques petites differences.


 * Créer un nouveau document vide et en faire le document actif
 * Dessinez la forme de base de l'anneau extérieur composé de quatre lignes droites et de quatre arcs
 * Reliez les lignes et les arcs et transformez les en un seul contour
 * Transformer le contour en face
 * Faites pivoter la face pour obtenir une forme volumique
 * Dessinez un cercle
 * Transformer le cercle en contour
 * Transformer le contour en face
 * Faire pivoter la face et appliquer une coupe booléenne pour obtenir une rainure dans la bague extérieure
 * Dessinez la forme de base de la bague intérieure composée de quatre lignes droites et de quatre arcs
 * Connectez les lignes et les arcs et transformez les en un seul contour
 * Transformer le contour en face
 * Faites pivoter la face pour obtenir une forme volumique
 * Dessinez un cercle
 * Transformer le cercle en contour
 * Transformer le contour en face
 * Faire pivoter la face et appliquer une coupe booléenne pour obtenir une rainure dans la bague intérieure
 * Insérer des billes avec le même flux de travail que dans la partie 1 (plus d'efficacité)
 * Définir la vue sur axonométrique
 * Zoomez pour une vue d'ensemble

Concevoir la rainure
Dessiner un arc nécessite trois points ou un angle de départ et un angle de fin.

Dans sketcher (l'esquisseur), nous pourrions utiliser des contraintes pour définir le point de départ et le point final de l'arc.

Comme nous ne pouvons pas faire cela dans les scripts, nous dessinons un rectangle arrondi et le faisons pivoter pour obtenir une "forme d'anneau" de base.

Ensuite, nous dessinons un cercle et le faisons tourner pour obtenir la géométrie de la rainure.

Ensuite, nous appliquons une coupe booléenne aux deux figures de révolution et nous avons la forme complète de l'anneau intérieur / extérieur.

Insérez les billes
Le flux de travail approprié basé sur sketcher (l'esquisseur) pour insérer les billes serait :


 * Tracez un arc (demi-cercle) dont le centre est identique à l'origine et tracez un segment fermant le côté "ouvert" de l'arc
 * Convertissez les deux éléments en un contour, transformez le en face, tournez autour de l'axe z pour obtenir une forme de boule
 * Utilisez la commande "translate" (traduire) pour déplacer la bille dans la bonne position
 * Répétez les étapes ci-dessus neuf fois, en utilisant la fonction mathématique pour créer et positionner les autres billes
 * Cette opération répétitive peut être programmée avec une boucle

Maintenant, ce n'est pas efficace, insérer des primitives et les positionner est plus facile et plus rapide dans ce cas.

Nous utilisons donc la même méthode que dans "Objets scriptés "Part" : Roulement à billes - Partie 1".

Liens
Objets créés par script : La page wiki expliquant les bases du langage de script

Scripts pour création topologique : Un tutoriel qui couvre les bases de la création de scripts

Objets scriptés "Part" : Roulement à billes - Partie 1 : Le faire avec des esquisses

Bearings from scripted sketches : Base utilisée pour ce tutoriel, grâce à JMG ...

import Part import math from FreeCAD import Base R1=15.0 R2=25.0 R3=30.0 R4=40.0 TH=15.0 NBall=10 RBall=5.0 RR=1 CBall=((R3-R2)/2)+R2 PBall=TH/2 App.newDocument("Unnamed") App.setActiveDocument("Unnamed") L1o=Part.makeLine((R4,0,TH-RR),(R4,0,RR)) L2o=Part.makeLine((R4-RR,0,0),(R3+RR,0,0)) L3o=Part.makeLine((R3,0,RR),(R3,0,TH-RR)) L4o=Part.makeLine((R3+RR,0,TH),(R4-RR,0,TH)) A1o=Part.makeCircle(RR,Base.Vector(R4-RR,0,RR),Base.Vector(0,1,0),0,90) A2o=Part.makeCircle(RR,Base.Vector(R3+RR,0,RR),Base.Vector(0,1,0),90,180) A3o=Part.makeCircle(RR,Base.Vector(R3+RR,0,TH-RR),Base.Vector(0,1,0),180,270) A4o=Part.makeCircle(RR,Base.Vector(R4-RR,0,TH-RR),Base.Vector(0,1,0),270,360) OR=Part.Wire([L1o,A1o,L2o,A2o,L3o,A3o,L4o,A4o]) OR=Part.Face(OR) OR=OR.revolve(Base.Vector(0,0,1),Base.Vector(0,0,360)) C1=Part.makeCircle(RBall,Base.Vector(R2+(R3-R2)/2,0,TH/2),Base.Vector(0,1,0),0,360) GRo=Part.Wire([C1]) GRo=Part.Face(GRo) GRo=GRo.revolve(Base.Vector(0,0,1),Base.Vector(0,0,360)) OR=OR.cut(GRo) Part.show(OR) L1i=Part.makeLine((R2,0,TH-RR),(R2,0,RR)) L2i=Part.makeLine((R2-RR,0,0),(R1+RR,0,0)) L3i=Part.makeLine((R1,0,RR),(R1,0,TH-RR)) L4i=Part.makeLine((R1+RR,0,TH),(R2-RR,0,TH)) A1i=Part.makeCircle(RR,Base.Vector(R2-RR,0,RR),Base.Vector(0,1,0),0,90) A2i=Part.makeCircle(RR,Base.Vector(R1+RR,0,RR),Base.Vector(0,1,0),90,180) A3i=Part.makeCircle(RR,Base.Vector(R1+RR,0,TH-RR),Base.Vector(0,1,0),180,270) A4i=Part.makeCircle(RR,Base.Vector(R2-RR,0,TH-RR),Base.Vector(0,1,0),270,360) IR=Part.Wire([L1i,A1i,L2i,A2i,L3i,A3i,L4i,A4i]) IR=Part.Face(IR) IR=IR.revolve(Base.Vector(0,0,1),Base.Vector(0,0,360)) C2=Part.makeCircle(RBall,Base.Vector(R2+(R3-R2)/2,0,TH/2),Base.Vector(0,1,0),0,360) GRi=Part.Wire([C2]) GRi=Part.Face(GRi) GRi=GRi.revolve(Base.Vector(0,0,1),Base.Vector(0,0,360)) IR=IR.cut(GRi) Part.show(IR) for i in range(NBall): Ball=Part.makeSphere(RBall) Alpha=(i*2*math.pi)/NBall BV=(CBall*math.cos(Alpha),CBall*math.sin(Alpha),TH/2) Ball.translate(BV) Part.show(Ball) App.ActiveDocument.recompute Gui.ActiveDocument.ActiveView.viewAxometric Gui.SendMsgToActiveView("ViewFit")
 * 1) Ball-bearing script
 * 2) 11.08.2016 by r-frank (BPLRFE/LearnFreeCAD on Youtube)
 * 3) based on ball bearing script by JMG
 * 4) (http://linuxforanengineer.blogspot.de/2013/12/bearings-from-scripted-sketches.html)
 * 5) needed for doing boolean operations
 * 1) needed for doing boolean operations
 * 1) needed for calculating the positions of the balls
 * 1) needed for translation and rotation of objects
 * 1) VALUES#
 * 2) (radius of shaft/inner radius of inner ring)
 * 1) (radius of shaft/inner radius of inner ring)
 * 1) (outer radius of inner ring)
 * 1) (inner radius of outer ring)
 * 1) (outer radius of outer ring)
 * 1) (thickness of bearing)
 * 1) (number of balls)
 * 1) (radius of ball)
 * 1) (rounding radius for fillets)
 * 1) first coordinate of center of ball
 * 1) second coordinate of center of ball
 * 1) Create new document
 * 1) Create new document
 * 1) Lines for basic shape of outer ring
 * 1) Lines for basic shape of outer ring
 * 1) Corner rounding for basic shape of outer ring
 * 1) Connect Lines and arcs to make wire and upgrade to face, revolve and apply cut to obtain groove
 * 1) Lines for basic shape of inner ring
 * 1) Lines for basic shape of inner ring
 * 1) Corner rounding for basic shape of inner ring
 * 1) Connect Lines and arcs to make wire and upgrade to face, revolve and apply cut to obtain groove
 * 1) Balls#
 * 1) Balls#
 * 1) Make it pretty#
 * 1) Make it pretty#