Salut,
gdo35 wrote:Le python n'ayant plus de secrets pour moi
Content pour toi. Après 3 ans d'efforts occasionnels, le python reste du chinois pour moi. Je n'ai définitivement pas le cerveau d'un programmeur. C'est trop abstrait pour moi. Ça me fait marrer que python soit un « langage orienté objet » : je regrette mais pour moi, un objet doit être tangible.
Bref je n'utilise plus ce script depuis qu'il est possible de réaliser un pas de vis à l'aide des outils de l'interface graphique. En effet, l'outil Balayage (Sweep) de l'atelier Part fonctionne sur le même principe, et peut même utiliser plusieurs sections plutôt qu'une seule.
Pour l'hélice, on peut la créer via l'outil « Créer des primitives » de la barre d'outil Part (et qui se retrouve aussi dans le menu Pièce). Le principe est donc de balayer une section sur une trajectoire qui est l'hélice.
Et, contrairement à ce script, l'objet généré est paramétrique.
gdo35 wrote:Est-ce que l'on peut dire que ça revient à créer une esquisse et que la fonction Wire crée une contrainte coïncidente entre les sommets de chaque ligne ?
Non. II y a une distinction à faire entre les éléments de construction de base inhérents au noyau géométrique sous-jacent à FreeCAD, et les éléments de haut niveau créés à l'aide de FreeCAD.
Qu'est-ce qu'un noyau géométrique ? Il s'agit d'une bibliothèque logicielle qui gère la création de formes volumiques complexes via plusieurs outils avancés, les opérations booléennes, etc. FreeCAD utilise Open CASCADE. Open CASCADE (OCC) est plus qu'un noyau géométrique, c'est aussi un framework applicatif pour créer des applications 3D, mais FreeCAD n'utilise que le composant « noyau géométrique ». OCC par ailleurs utilise la représentation frontière, ou boundary representation en anglais, B-Rep.
http://fr.wikipedia.org/wiki/B-Rep
Tous les logiciels de CAO 3D solide utilisent un noyau géométrique, et il n'en existe que quelques un dans le monde. Ces bibliothèques logicielles sont extrêmement complexes, c'est pourquoi de nombreux logiciels se contentent de payer les droits d'utilisation d'un noyau géométrique plutôt que de tenter d'en programmer un de zéro (notamment SolidWorks). Sans OCC qui est publié sous licence Open Source, l'existence de FreeCAD ne serait pas possible.
Dans la topologie des éléments de base d'OCC, la hiérarchie est la suivante :
sommet (point)
arête (edge), rejoignant 2 sommets
fil (wire), un groupe d'arêtes
un fil fermé forme une
face
un ensemble de faces forme une
coque (shell)
une coque formant un volume fermé permet de créer un
solide.
Il y a aussi les composés (compounds), qui sont des groupes de coques ou de solides.
Ces éléments de construction sont dit de base car générés par le noyau, et ils n'offrent pas la possibilité d'être édités. Le script python cité plus haut fait appel à ces éléments de base via l'interface python. Le Wire n'a aucun besoin d'une contrainte coïncidente, il suffit que les sommets des lignes partagent les mêmes coordonnées dans l'espace (bref qu'ils se touchent).
Par comparaison, une esquisse dessinée depuis l'atelier Sketcher (ou Part Design, qui intègre les outils du Sketcher) génère des éléments de plus haut niveau, car des paramètres leur sont attribués. Une esquisse est paramétrique dans le sens où on peut l'éditer et modifier ses paramètres. Bien sûr, au final c'est la même forme qui est générée : les éléments de l'esquisse sont « traduits » à l'interne en éléments de base (wire) pour créer le solide. Mais contrairement au Wire, on peut modifier l'esquisse par la suite.
gdo35 wrote:Dans cette partie du code, pourquoi refaire appel à la fonction WIre ? Je ne vois pas ce qu'il y a à relier dans l'helix créé ?
Après je ne comprends pas trop ce que fait la fonction makePipeShell sachant que la doc que j'ai trouvé n'a pas le même prototype
Aucune idée pour l'explication détaillée du libellé de la commande, comme je l'ai dit je suis une quiche en python. Mais tel que dit plus haut, makePipeShell prend l'objet "section" (qui est un Wire) et le balaie le long de la trajectoire "helix" pour créer une forme tridimensionnelle. Le paramètre makesolid permet de créer un solide, sinon une coque est crée, ouverte aux deux extrémités.
D'ailleurs l'hélice n'est qu'un exemple de trajectoire, on peut utiliser d'autres types de chemins, avec l'aide de wmayer j'avais colligé ce script plus généraliste :
https://sourceforge.net/apps/mediawiki/ ... d_Sweep/fr
Pour isFrenet, c'est un réglage de OCC, même les devs de FreeCAD n'en connaissent pas la nature exacte. Tu peux voir un exemple dans ce billet (en anglais) de l'ancien gestionnaire de projet d'OCC :
http://opencascade.blogspot.ca/2009/10/ ... part2.html
OCC étant produit par une société française, j'ai émis l'hypothèse que "isFrenet" (« est Frenet ») fait référence au mathématicien
Jean Frédéric Frenet, sans en avoir confirmation. Faudrait demander à quelqu'un chez OCC !