Suffit de demander ...papyblaise wrote: ↑Fri May 26, 2023 3:40 pm chiper pour chipotage il me faut une ligne avec PartDesign
Code: Select all
import FreeCAD as App
import FreeCADGui as Gui
import PartDesign
import math
def create_circular_flange():
# Paramètres
diametre_exterieur = 120.0
epaisseur = 20.0
diametre_alesage = 80.0
diametre_passages_vis = 14.5
nombre_passages_vis = 6
rayon_cercle_passages_vis = 50.0
# Création d'un nouveau document PartDesign
doc = App.newDocument("BrideCirculaire")
Gui.activeDocument().activeView().viewAxonometric()
# Création du corps principal
corps_principal = doc.addObject('PartDesign::Body', 'CorpsPrincipal')
# Création du plan de base
plan_base = doc.addObject('PartDesign::Plane', 'PlanBase')
plan_base.Visibility = False
plan_base.Length = 1000.0 # Valeur arbitraire pour la taille du plan
corps_principal.addObject(plan_base)
# Création du sketch du disque extérieur
sketch_exterieur = doc.addObject('Sketcher::SketchObject', 'SketchExterieur')
sketch_exterieur.Support = (plan_base, ['Face'])
# Dessin du cercle extérieur
cercle_exterieur = sketch_exterieur.addGeometry(Part.Circle(App.Vector(0, 0, 0), App.Vector(0, 0, 1), diametre_exterieur / 2.0))
# Ajout du chanfrein sur le cercle extérieur
sketch_exterieur.addConstraint(Sketcher.Constraint('Diameter', 0, diametre_exterieur))
# Création du pad du disque extérieur
pad_exterieur = doc.addObject('PartDesign::Pad', 'PadExterieur')
pad_exterieur.Profile = sketch_exterieur
pad_exterieur.Length = epaisseur
pad_exterieur.Reversed = 1
# Création du sketch de l'alesage central
sketch_alesage = doc.addObject('Sketcher::SketchObject', 'SketchAlesage')
sketch_alesage.Support = (plan_base, ['Face'])
# Dessin du cercle de l'alesage central
cercle_alesage = sketch_alesage.addGeometry(Part.Circle(App.Vector(0, 0, 0), App.Vector(0, 0, 1), diametre_alesage / 2.0))
# Ajout du chanfrein sur le cercle de l'alesage central
sketch_alesage.addConstraint(Sketcher.Constraint('Diameter', 0, diametre_alesage))
# Création du pocket de l'alesage central
pocket_alesage = doc.addObject('PartDesign::Pocket', 'PocketAlesage')
pocket_alesage.Profile = sketch_alesage
pocket_alesage.Length = epaisseur
# Création des passages de vis
# Création du sketch du passage de vis
sketch_passage_vis = doc.addObject('Sketcher::SketchObject', 'SketchPassageVis')
sketch_passage_vis.Support = (plan_base, ['Face'])
# Dessin du cercle du passage de vis
cercle_passage_vis = sketch_passage_vis.addGeometry(Part.Circle(App.Vector(rayon_cercle_passages_vis, 0, 0), App.Vector(0, 0, 1), diametre_passages_vis / 2.0))
# Ajout du chanfrein sur le cercle du passage de vis
sketch_passage_vis.addConstraint(Sketcher.Constraint('Diameter', 0, diametre_passages_vis))
# Création du pocket du passage de vis
pocket_passage_vis = doc.addObject('PartDesign::Pocket', 'PocketPassageVis')
pocket_passage_vis.Profile = sketch_passage_vis
pocket_passage_vis.Length = epaisseur
# Création de la répétition circulaire des passages de vis
polar_pattern = doc.addObject('PartDesign::PolarPattern', 'PolarPattern')
polar_pattern.Originals = pocket_passage_vis
polar_pattern.Axis = (doc.getObject('SketchPassageVis'),['N_Axis'])
polar_pattern.Angle = 360.0
polar_pattern.Occurrences = nombre_passages_vis
# Union des différentes parties
corps_principal.addObject(pad_exterieur)
corps_principal.addObject(pocket_alesage)
corps_principal.addObject(pocket_passage_vis)
corps_principal.addObject(polar_pattern)
doc.recompute()
# Exécution de la macro
create_circular_flange()
En continuant de jouer on doit pouvoir faire mieux mais on a déjà gagné des fonctions.