utiliser freecad apres openscad.

Forum destiné aux questions et discussions en français
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Post Reply
myf
Posts: 97
Joined: Thu Mar 19, 2015 4:13 pm

utiliser freecad apres openscad.

Post by myf »

Bonjour,

J'utilise openscad et découvre freecad. Les fonctions de freecad sont infiniment plus vastes que celles d'openscad, et cela me donne envie de l'approfondir. Constuire un objet avec openscad consiste à définir des fonctions dans un éditeur de texte pour élaborer des objets de plus en plus complexes et paramétrés par des variables. Remettre en cause une forme ou une cote consiste à modifier la fonction correspondante, en un seul endroit du fichier.

J'ai a peu près réussi à utiliser du Python dans freecad pour définir des objets avec leurs paramètres et garder cette notion de programme qui décrit un objet, mais est-il possible après avoir modifié un tel objet en cliquant dessus de retrouver un code Python humainement lisible qui décrive cet objet et les attributs à chaque niveau de l'arborescence?

Par exemple j'ai écrit une fonction openscad qui crée un tube carré creux sur mesure à partir de plaques : tube (longueur, largeur, epaisseur). Je place deux tubes cote à cote par des commandes union(){tube (100,30,3) ; translate ([0,100,0]) tube (100,30,3) ;} ;
Avec freecad dois-je construire l'arborescence du tube à partir de ces plaques, et dupliquer ce début d'arborescence au bon niveau pour placer un deuxième tube dans mon objet ? ou cela peut-il se faire en script Python ?

Avec freecad je réussis à modifier la base du tube en détruisant tout ce qui a été conçu par dessus, alors qu'avec openscad je change un morceau de la fonction tube et garde tout le reste du fichier intact qui continue de décrire le même objet. Est-ce propre à l'approche 100% arborescente de Freecad ou ai-je loupé quelque chose ?

Bien cordialement.

F. qui ne trouve pas trop jusqu'à quel point freecad et openscad sont de la même famille.
User avatar
NormandC
Veteran
Posts: 18589
Joined: Sat Feb 06, 2010 9:52 pm
Location: Québec, Canada

Re: utiliser freecad apres openscad.

Post by NormandC »

Salut,

Bienvenue sur le forum. :)

< Attention, très long post ci-dessous! :? >

Je suis une quiche en python, je ne comprends rien à la programmation, j'ai une formation de concepteur. Mais je te dirais que l'aspect programmation est la seule chose que FreeCAD et OpenSCAD ont en commun.

À la base, FreeCAD comme tout logiciel de conception assistée par ordinateur (CAO, ou CAD en anglais) -- OpenSCAD et ses dérivés sont l'exception -- est conçu pour être utilisé via une interface graphique et des outils offrant une interaction dynamique. L'interface python est là pour permettre d'étendre facilement les fonctionnalités du logiciel, puisque python est un langage interprété ne nécessitant pas de compilation. C'est ce qui a permis l'existence de nombreux modules externes pouvant être facilement greffés à FreeCAD.

C'est ce qui fait aussi que ça prend beaucoup plus de lignes de code sous FreeCAD pour modéliser le même objet que sous OpenSCAD, car le langage d'OpenSCAD est spécifiquement conçu pour la création d'objets, donc réduit à sa plus simple expression.

Bien sûr on peut modéliser par script sous FreeCAD, mais je t'avoue que je n'en comprendrai jamais l'intérêt! Pour moi, et comme pour la plupart des concepteurs, la conception est quelque chose de foncièrement visuel (à la base j'ai appris à dessiner, puis à transposer en 3 dimensions). Pour moi la modélisation s'apparente à la sculpture, pas à la saisie d'interminables, indigestes et abstraites lignes de code. ;)

Évidemment, libre à chacun d'utiliser FreeCAD comme il l'entend! C'est ce qui fait sa force, les nombreuses façons de l'utiliser. Je trouve quand même les scripts et macros python utiles pour compléter l'interface graphique quand elle n'offre pas encore certaines fonctions, ou pour automatiser certaines tâches.

Pour revenir à une comparaison FreeCAD vs. OpenSCAD:
  • FreeCAD est un modeleur solide par représentation frontière (boundary representation, ou B-Rep) permettant de créer des modèles propres à tout type de fabrication, y compris industrielle. Ça n'est pas le cas d'OpenSCAD, qui utilise la bibliothèque CGAL pour créer les géométries. OpenSCAD ne permet d'exporter que le format *.csg (FreeCAD est le seul à pouvoir l'ouvrir, si OpenSCAD est installé) et *.stl, un format de prototypage rapide impropre à tout autre procédé de fabrication.
  • FreeCAD est basé sur un moteur de modélisation géométrique avancé, OpenCasCade (appelé ici OCC ou OCE pour la version communauté -- OCC est français par ailleurs) qui permet la création de formes extrêmement complexes. CGAL est beaucoup plus limité.
myf wrote:Avec freecad dois-je construire l'arborescence du tube à partir de ces plaques, et dupliquer ce début d'arborescence au bon niveau pour placer un deuxième tube dans mon objet ? ou cela peut-il se faire en script Python ?
Les possibilités sont presques illimitées. :D FreeCAD permet la modélisation CSG comme OpenSCAD, mais aussi la génération de solides (extrusion, révolution, balayage ou lissage) à partir de profils 2D. Ces profils peuvent être créés à partir de primitives de l'atelier Part, ou encore depuis l'atelier Draft, ou encore via des esquisses contraintes avec le Sketcher. Tout ça via la GUI ou par python.

Voici un exemple de modèle que j'ai réalisé il y a longtemps à partir d'esquisses et de fonctions de l'atelier PartDesign, la vidéo montre comment j'édite le modèle graphiquement en temps réel: https://youtu.be/ia0R5vIrcXA
Il n'y a absolument aucune ligne de code dans ce modèle, que des fonctions éditables dans l'interface graphique. Take that, OpenSCAD! :ugeek: ;)
Malheureusement, avec les changements apportés depuis à FreeCAD, ce modèle n'est plus éditable.
myf wrote:Avec freecad je réussis à modifier la base du tube en détruisant tout ce qui a été conçu par dessus, alors qu'avec openscad je change un morceau de la fonction tube et garde tout le reste du fichier intact qui continue de décrire le même objet. Est-ce propre à l'approche 100% arborescente de Freecad ou ai-je loupé quelque chose ?
En fait si j'ai bien compris, je crois que c'est simplement que tu ne créé pas des objets paramétriques. http://www.freecadweb.org/wiki/index.ph ... objects/fr

@+

Normand
Last edited by NormandC on Tue Mar 08, 2016 6:23 am, edited 1 time in total.
User avatar
NormandC
Veteran
Posts: 18589
Joined: Sat Feb 06, 2010 9:52 pm
Location: Québec, Canada

Re: utiliser freecad apres openscad.

Post by NormandC »

myf wrote:Par exemple j'ai écrit une fonction openscad qui crée un tube carré creux sur mesure à partir de plaques : tube (longueur, largeur, epaisseur). Je place deux tubes cote à cote par des commandes union(){tube (100,30,3) ; translate ([0,100,0]) tube (100,30,3) ;} ;
Quand je dis que dès que c'est abstrait, je décroche :D j'ai du mal à visualiser. :oops:

Quand tu parles de tubes côte à côte, est-ce que tu veux dire deux tubes carrés creux qui partagent une face coïncidente? Donc chacun des tubes carrés créés par la soustraction d'un cube plus petit avec un cube plus grand?

Il y a tellement de façon d'obtenir ce résultat dans FreeCAD!
User avatar
NormandC
Veteran
Posts: 18589
Joined: Sat Feb 06, 2010 9:52 pm
Location: Québec, Canada

Re: utiliser freecad apres openscad.

Post by NormandC »

C'est encore moi. ;)

Ce fichier montre un petit aperçu des façons de construire ton modèle. Tout a été réalisé avec les outils de l'interface graphique.

J'ai classé chaque méthode sous un groupe distinct (les dossiers dans l'arborescence). Il suffit de sélectionner un groupe et d'appuyer sur la barre d'espace pour rendre son contenu visible/invisible dans la vue 3D. Tout est éditable.

J'attire ton attention sur le groupe « Répétitions - Draft ». L'objet « Extrude » du groupe « Extrusion - Part & Draft » a été dupliqué à l'aide de l'outil Clone de l'atelier Draft. Draft Clone/fr Ensuite j'ai créé une répétition avec l'outil « Réseau » de l'atelier Draft (Draft Array en anglais, réseau est une traduction vraiment bizarre :? ).

La particularité de cet objet Array, c'est que j'ai tiré profit de la fonctionnalité Expressions/fr introduite dans la version de développement 0.16 (il faut donc avoir une v0.16 sous la main). J'ai établi la propriété "Interval X" comme étant égale à la longueur ("Length") de l'objet Rectangle qui a servi à créer l'objet Extrude. La formule est "Rectangle.Length". Donc, si on change la propriété Length de l'objet Draft "Rectangle", la distance de décalage s'ajuste automatiquement.

Et ça n'est qu'un petit aperçu, on peut aussi lier des formules aux cellules d'une feuille de calcul de l'atelier Spreadsheet... (je n'ai pas encore exploré la chose)

Vraiment, je me demande quel est l'intérêt de plancher sur du code! :ugeek: :D

P.S. J'ai montré une utilisation de l'outil Draft Array ici: viewtopic.php?f=3&t=14572&start=10#p116745
Attachments
démo_pour_myf_normandc1.fcstd
(30.78 KiB) Downloaded 79 times
Post Reply