ChatGPT pour générer une macro

Forum destiné aux questions et discussions en français
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
User avatar
Cuq
Posts: 145
Joined: Tue Jul 06, 2021 10:07 am

Re: ChatGPT pour générer une macro

Post by Cuq »

papyblaise wrote: Fri May 26, 2023 3:40 pm chiper pour chipotage il me faut une ligne avec PartDesign
Suffit de demander ...
ChatGpt4.PNG
ChatGpt4.PNG (7.29 KiB) Viewed 1048 times

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()

Note : j'ai fait un peu de nettoyage manuel en virant les recompute inutiles.. Mais sinon all Crédit: ChatGpt

En continuant de jouer on doit pouvoir faire mieux mais on a déjà gagné des fonctions.
ChatGpt410.PNG
ChatGpt410.PNG (54.3 KiB) Viewed 1048 times
User avatar
Vincent B
Veteran
Posts: 4713
Joined: Sun Apr 05, 2015 9:02 am
Location: La Rochelle, France

Re: ChatGPT pour générer une macro

Post by Vincent B »

j'y ai demandé "s'il te plait dessine moi un mouton", il m'a pondu ça. :lol:
Attachments
Capture.JPG
Capture.JPG (28.94 KiB) Viewed 1004 times
User avatar
flachyjoe
Veteran
Posts: 1869
Joined: Sat Mar 31, 2012 12:00 pm
Location: Limoges, France

Re: ChatGPT pour générer une macro

Post by flachyjoe »

Cuq wrote: Fri May 26, 2023 3:26 pm Là par contre ChatGPT a été très bon en 2 fois
Quelle version de ChatGPT utilises-tu ? J'ai tenté ta phrase avec la version gratuite il y a toujours des erreurs après 5 retours. :?
- Flachy Joe -
Image
User avatar
papyblaise
Veteran
Posts: 7868
Joined: Thu Jun 13, 2019 4:28 pm
Location: France

Re: ChatGPT pour générer une macro

Post by papyblaise »

tu te rends compte de l'empreinte carbone .... ton truc à dejà fais des milliers de fois le tour de la terre , après tu auras des écolos qui vont te verser du goudron et des plumes sur notre Fc :!:
@Vincent B t'as oublié de lui dire "à 5 pattes" :lol:
User avatar
flachyjoe
Veteran
Posts: 1869
Joined: Sat Mar 31, 2012 12:00 pm
Location: Limoges, France

Re: ChatGPT pour générer une macro

Post by flachyjoe »

@papyblaise
Si au cours de ta carrière tu avais pu avoir une pièce fonctionnelle dessinée en 5min et passer les X heures suivante à t'occuper de ton jardin, tu crois pas que ton empreinte carbone aurait été meilleure ? ;)
C'est là qu'on peut sortir "Ok boomer !" il me semble :D
- Flachy Joe -
Image
User avatar
papyblaise
Veteran
Posts: 7868
Joined: Thu Jun 13, 2019 4:28 pm
Location: France

Re: ChatGPT pour générer une macro

Post by papyblaise »

Désolé auprés de la communauté , je n'avais pas percuté que c'est une consultation de la fameuse nouvelle appli qui a défrayé l'actu les jours derniers
ça me fait juste flipper , maintenant que j'ai compris
User avatar
Cuq
Posts: 145
Joined: Tue Jul 06, 2021 10:07 am

Re: ChatGPT pour générer une macro

Post by Cuq »

flachyjoe wrote: Fri May 26, 2023 7:45 pm Quelle version de ChatGPT utilises-tu ? J'ai tenté ta phrase avec la version gratuite il y a toujours des erreurs après 5 retours. :?
C est la version Gratuite aussi. Mais c est pas étonnant, les réponses sont personnalisées en fonction des échanges précédents, et comme là on avait déjà fait les exercices précédents le retour était directe. Sur le premier cas le code devait être modifié plusieurs fois pour fonctionner. Alors que dans ma deuxième demande l'ensemble des petites choses qui ne fonctionnaient pas avait déjà été correctement codé.
Sur le premier exemple j'avais déjà eu une erreur similaire sur les lignes, dans le deuxième comme la construction était basée sur des cercles sont premier jet n'était pas bon.

Bref tout ça aussi pour dire que comme pour tout la force de la solution va aussi dépendre de sa bonne utilisation et compréhension.
User avatar
Vincent B
Veteran
Posts: 4713
Joined: Sun Apr 05, 2015 9:02 am
Location: La Rochelle, France

Re: ChatGPT pour générer une macro

Post by Vincent B »

Cuq wrote: Fri May 26, 2023 3:26 pm Voilà il vous reste à remplacer 12 par 14,5 ou à lui demander de le faire :)
N'importe quel dessinateur en bureau d'étude ne va pas donner diamètre 12 pour du M12. Si ChatGPT ne sait que pomper bêtement des données, il n'y aura jamais de conception, que de la copie. Ce qui me conforte dans l'idée que ce n'est qu'un automate, pas une intelligence.
User avatar
flachyjoe
Veteran
Posts: 1869
Joined: Sat Mar 31, 2012 12:00 pm
Location: Limoges, France

Re: ChatGPT pour générer une macro

Post by flachyjoe »

Vincent B wrote: Sat May 27, 2023 7:53 am Ce qui me conforte dans l'idée que ce n'est qu'un automate, pas une intelligence.
D'après ce que j'ai compris le système génère les mots les uns après les autres, en fonction d'un très grand nombre de paramètres d'entrée et de ce qu'il a déjà généré (les mots et les messages précédents). Il n'y aucune "vue" d'ensemble de la réponse et elle se construit au fur et à mesure. :shock:

Par exemple au moment où ça génère les variables du script, ça n'a pas "prévu" de les utiliser. C'est juste que pour l'algo un script doit commencer par des déclarations de variable. Ensuite les fonctions doivent utiliser des variables et comme ça en a généré précédemment ça les utilise.
- Flachy Joe -
Image
User avatar
Cuq
Posts: 145
Joined: Tue Jul 06, 2021 10:07 am

Re: ChatGPT pour générer une macro

Post by Cuq »

Note : il existe déjà un plugin FreeCad GPT4 : https://github.com/revhappy/GPT4FreeCAD

Cependant comme il est basé sur GPT4 , il nécessite donc l'accès payant. Donc je n'ai pas testé si quelqu'un a des retours, je suis toujours preneur par curiosité.
Post Reply