Topological data scripting/fr

Introduction
Ici, nous vous expliquerons comment contrôler le Module Part directement à partir de l'interpréteur FreeCAD Python, ou à partir de n'importe quel script externe. Les principes de base des scripts de données topologiques sont décrits dans le Module Part expliquant les concepts. Assurez-vous de parcourir la section Script et les pages bases pour script dans Freecad si vous avez besoin de plus d'informations sur le fonctionnement des scripts Python dans FreeCAD. Si vous êtes nouveau sur Python, c'est une bonne idée de lire d'abord l'Introduction à Python.

Voir aussi

 * Part Ecrire un script
 * OpenCASCADE

Diagramme de classe
Voici un aperçu du Langage de Modélisation Unifié (UML) de la classe la plus importante du module Part :

Géométrie
Les objets géométriques sont les éléments constitutifs de tous les objets topologiques :
 * Geom Classe de base des objets géométriques.
 * Ligne Une ligne droite en 3D, définie par le point de départ et le point d'arrivée.
 * Cercle Cercle ou arc de cercle, défini par un centre, un point de départ et d'arrivée.
 * Etc...

Topologie
Les types de données topologiques suivants sont disponibles :
 * Composé Un groupe de tout type d'objets topologiques.
 * Compsolid Un solide composite est un ensemble de solides reliés par leurs faces. Il étend les notions de FORME FILAIRE et de COQUE aux solides.
 * Solide Une partie de l'espace limité par des coques. C'est en trois dimensions.
 * Coque Un ensemble de faces reliées par leurs arrêtes. Une coque peut être ouverte ou fermée.
 * Face En 2D, elle fait partie d'un plan ; en 3D elle fait partie d'une surface. Sa géométrie est contrainte (rognée) par des contours. C'est bidimensionnel.
 * Forme filaire Un ensemble d'arêtes reliées par leurs sommets. Il peut s'agir d'un contour ouvert ou fermé selon que les bords sont liés ou non.
 * Arête Un élément topologique correspondant à une courbe restreinte. Une arête est généralement limitée par des sommets. Elle a une dimension.
 * Sommet Un élément topologique correspondant à un point. Il a une dimension nulle.
 * Forme Terme générique couvrant tout ce qui précède.

Exemple rapide : Création topologique simple


Nous allons maintenant créer une topologie, en la construisant à partir d'une géométrie plus simple. Comme étude de cas, nous utiliserons une ensemble comme illustré ci-dessus, qui se compose de quatre sommets, deux arcs et deux lignes.

Création de la géométrie
Nous créons d'abord les parties géométriques distinctes de ce fil. S'assurer que les éléments qui doivent être connectées ultérieurement partagent les mêmes sommets.

Donc, nous créons d'abord les sommets :

Arc


Pour chaque arc, nous avons besoin d'un point de repère :

Ligne


Les segments de ligne peuvent être créés à partir de deux points :

Relier le tout
La dernière étape consiste à assembler les éléments géométriques de base et façonner une forme topologique :

Construire un prisme
Maintenant, extrudez la forme filaire dans une direction et créez une forme 3D véritable :

Création de formes basiques
Vous pouvez facilement créer des objets topologiques de base avec les méthodes du module Part (atelier pièce) :

Quelques méthodes disponibles : Voir la page de l'API Part pour une liste complète des méthodes disponibles du module Part.
 * Crée une boîte située en p et pointant dans la direction d avec les dimensions longueur, largeur et hauteur.
 * Dessine un cercle avec un rayon donné.
 * Crée un cône avec rayons1, rayon2 et hauteur donnés.
 * Crée un cylindre avec un rayon et une hauteur donnés.
 * Trace un segment à partir de deux points.
 * Crée un plan avec la longueur et la largeur.
 * Crée un polygone à partir d'une liste de points.
 * Crée une sphère avec un rayon donné.
 * Crée un tore avec les rayons donnés.

Importer les modules nécessaires
Nous devons d'abord importer le module Part, pour pouvoir utiliser son contenu en Python. Nous importerons également le module Base depuis l'intérieur du module FreeCAD :

Création d'un vecteur
Les vecteurs constituent l'une des informations les plus importantes, lors de la construction des formes géométriques. Ils contiennent généralement trois nombres (mais pas systématiquement) : les coordonnées cartésiennes X, Y et Z. Vous créer un vecteur comme ceci :

Nous venons de créer un vecteur aux coordonnées X=3, Y=2, Z=0. Dans le module Part, les vecteurs sont utilisés partout. Part shapes utilise également un autre type de représentation ponctuelle appelée sommet, qui est simplement un conteneur pour un vecteur. Vous accédez au vecteur d'un sommet comme ceci :

Création d'une arête
Une arête n'est rien d'autre qu'un segment avec deux sommets :

Remarque : Vous pouvez également créer une arête en passant deux vecteurs :

Vous pouvez trouver la longueur et le centre d'une arête comme ceci :

Mise en forme à l'écran
Jusqu'à présent, nous avons créé un objet filaire, mais il n'apparaît nulle part à l'écran. En effet, la scène FreeCAD 3D affiche uniquement ce que vous lui demandez d'afficher. Pour ce faire, nous utilisons cette simple méthode :

La fonction show crée un objet dans notre document FreeCAD et lui assigne notre forme "filaire". Utilisez-la chaque fois qu'il est temps d'afficher votre création à l'écran.

Création d'un contour (ou forme filaire)
Un contour est une polyligne, à arêtes multiples et peut être créé à partir d'une liste d'arêtes ou même une liste de contours (ou de formes filaires) :

affichera les 4 bords qui composent notre forme filaire. D'autres informations utiles peuvent être facilement récupérées :

Création d'une face
Seules les faces créées à partir de formes filaires fermées seront valides. Dans cet exemple, wire3 est un contour fermé mais wire2 ne l'est pas (voir ci-dessus) :

Seules les faces auront une superficie, mais pas les contours et les arêtes.

Création d'un cercle
Un cercle peut être créé comme ceci :

Si vous voulez le créer à une certaine position et avec une certaine direction :

ccircle sera créé à une distance de 10 de l'origine X et sera orienté vers l'extérieur le long de l'axe X. Remarque : accepte uniquement  pour la position et les paramètres habituels et pas les tuples (n-uplet). Vous pouvez également créer des parties du cercle, en donnant un angle de départ et de fin :

Les angles doivent être renseignés en degrés. Si vous avez des radians, convertissez-les simplement en utilisant la formule : ou en utilisant le module  de Python :

Création d'un arc avec des points (repères)
Malheureusement, il n'y a pas de fonction, mais nous avons la fonction pour créer un arc de cercle passant par trois points. Il crée un objet arc, joignant le point de départ au point d'arrivée, en passant par le point médian. La fonction de l'objet arc, doit être appelée pour obtenir un objet filaire, comme lorsque vous utilisez  au lieu de.

accepte uniquement pour les points et pas les tuples. Vous pouvez également obtenir un arc, en utilisant une partie d'un cercle :

Les arcs sont des arêtes valides comme les segments, ils peuvent donc également être utilisés dans les contours (ou forme filaire).

Création de polygones
Un polygone est simplement une forme filaire, avec plusieurs bords droits. La fonction prend une liste de points et crée un contour, passant à travers ces points :

Création de courbes de Bézier
Les courbes de Bézier sont utilisées, pour modéliser des courbes lisses à l'aide d'une série de points de contrôle et de poids facultatifs. La fonction ci-dessous crée un, à partir d'une série de points. Remarque : lors de "l'obtention" et du "réglage" d'un seul pôle ou poids, les indices commencent à 1, pas à 0.

Création d'un plan
Un plan est une surface rectangulaire plate. La méthode utilisée pour le créer est. Par défaut start_pnt = Vector(0, 0, 0) et dir_normal = Vector(0, 0, 1). L'utilisation de dir_normal = Vector(0, 0, 1) créera le plan orienté dans la direction positive de l'axe Z, tandis que dir_normal = Vector(1, 0, 0) créera le plan orienté dans la direction positive de l'axe X :

est un cuboïde entourant le plan avec une diagonale commençant à (3, 0, 0) et se terminant en (5, 0, 2). Ici, l'épaisseur du le long de l'axe Y est nulle, puisque notre forme est totalement plate.

Remarque : accepte uniquement  pour start_pnt et dir_normal et pas les tuples.

Création d'une ellipse
Il existe plusieurs façons de créer une ellipse :

Crée une ellipse avec un grand rayon de 2 et un petit rayon de 1 avec le centre à (0, 0, 0).

Crée une copie de l'ellipse donnée.

Crée une ellipse centrée sur le point Centre, où le plan de l'ellipse est défini par Center, S1 et S2, son grand axe est défini par Center et S1, son grand rayon est la distance entre Center et S1 et son petit rayon est la distance entre S2 et le grand axe.

Crée une ellipse avec un grand rayon MajorRadius et un petit rayon MinorRadius, situé dans le plan défini par le Centre et la normale (0, 0, 1).

Dans le code ci-dessus, nous avons passé S1, S2 et le centre. De même que l', l' crée un objet ellipse et non une arête, nous devons donc le convertir en arête en utilisant pour l'affichage.

Remarque : n'accepte que  pour les points et pas les tuples.

Pour construire l'Ellipse ci-dessus, nous avons entré les coordonnées centrales, le Grand rayon et le Petit rayon.

Création d'un tore
Utilisation de. Par défaut pnt = Vector (0, 0, 0), dir = Vector (0, 0, 1), angle1 = 0, angle2 = 360 et angle = 360. Considérez un tore comme un petit cercle balayant un grand cercle. Radius1 est le rayon du grand cercle, radius2 est le rayon du petit cercle, pnt est le centre du tore et dir est la direction normale. Angle1 et angle2 sont des angles en degrés pour le petit cercle; le dernier paramètre d'angle est la section du tore :

Le code ci-dessus créera un tore avec un diamètre de 20 (rayon de 10) et une épaisseur de 4 (rayon du petite cercle 2).

Le code ci-dessus créera une portion du tore.

Le code ci-dessus créera un semi-tore ; seul le dernier paramètre est modifié, c'est-à-dire que les angles restants sont des valeurs par défaut. Attribuer l'angle 180 créera le tore de 0 à 180, c'est-à-dire un demi tore.

Création d'un pavé ou d'un cuboïde
Utilisez. Par défaut pnt = Vector(0, 0, 0) et dir = Vector(0, 0, 1).

Création d'une sphère
Utilisation de. Par défaut pnt = Vector(0, 0, 0), dir = Vector(0, 0, 1), angle1 = -90, angle2 = 90 et angle3 = 360. Angle1 et angle2 correspondent au minimum et au maximum vertical de la sphère, angle3 est le diamètre de la sphère.

Création d'un cylindre
Nous utiliserons. Par défaut, pnt = Vector(0, 0, 0), dir = Vector(0, 0, 1) et angle = 360.

Création d'un cône
Nous utiliserons. Par défaut, pnt = Vector(0, 0, 0), dir = Vector(0, 0, 1) et angle = 360.

Modification d'une forme
Il y a plusieurs manières de modifier des formes. Certaines sont de simples opérations de transformation telles que le déplacement ou la rotation de formes, d'autres sont plus complexes telles que fusion et soustraction d'une forme à une autre.

Transformer une forme
La transformation est l'action de déplacer une forme d'un endroit à un autre. Toute forme (arête, face, cube, etc ...) peut être transformée de la même manière :

Cette commande va déplacer notre forme "myShape" de 2 unités dans la direction X.

Rotation d'une forme
Pour faire pivoter une forme, vous devez spécifier le centre de rotation, l'axe et l'angle de rotation :

Cette opération va faire pivoter notre forme de 180 degrés sur l'axe z.

Transformations génériques avec matrices
Une matrice est un moyen très simple de mémoriser les transformations dans le mode 3D. Dans une seule matrice, vous pouvez définir les valeurs de transformation, rotation et mise à l'échelle à appliquer à un objet. Par exemple :

PS: les matrices de FreeCAD travaillent en radians. En outre presque toutes les opérations matricielles qui travaillent avec un vecteur peuvent aussi avoir 3 nombres de sorte que ces 2 lignes effectuent le même travail :

Lorsque notre matrice est paramétrée, nous pouvons l'appliquer à notre forme. FreeCAD fournit nous fournit 2 méthodes : et. La différence est que, avec la première, vous ne verez pas de différence (voir Mettre à l'échelle une forme ci-dessous). Donc, nous pouvons opérer notre transformation comme ceci :

ou

Mettre à l'échelle une forme
La mise à l'échelle d'une forme est une opération plus dangereuse car, contrairement à la traduction ou rotation, mise à l'échelle non uniforme (avec des valeurs différentes pour X, Y et Z) peut modifier la structure de la forme. Par exemple, mettre à l'échelle un cercle avec une valeur plus élevée horizontalement que verticalement le transformera en un ellipse, qui se comporte mathématiquement très différemment. Pour la mise à l'échelle, nous ne peut pas utiliser, nous devons utiliser :

Soustraction
Soustraire une forme d'une autre est appelé, dans le jargon de FreeCAD "cut" (coupe) et se fait de cette manière :

Intersection
De la même manière, l'intersection entre 2 formes est appelé "common" (commun) et se fait de cette manière :

Fusion
L'union est appelé "fuse" (fusion) et fonctionne de la même manière :

Section
Une "section" est l'intersection entre une forme solide et une forme plane. Elle renvoie une courbe d'intersection, une courbe composée d'arêtes.

Extrusion
L'extrusion est une action de "pousser" une forme plane dans une certaine direction et résultant en un corps solide. Pensez à un cercle devenant un tube en le "poussant" :

Si votre cercle est vide, vous obtiendrez un tube vide. Si votre cercle est un disque avec une face pleine, vous obtiendrez un cylindre solide :

Exploration de formes
Vous pouvez facilement explorer la structure de ses données topologique :

En tapant les lignes ci-dessus dans l'interpréteur Python, vous gagnerez une bonne compréhension de la structure des objets Part. Ici, notre commande créé une forme solide. Ce solide, comme tous les solides de pièce, contient des faces. Les faces contiennent toujours des fils, qui sont des listes d'arêtes qui bordent la face. Chaque face a au moins un fil fermé (il peut en avoir plus si la face a un trou). Dans le fil, nous pouvons regarder chaque bord séparément et à l'intérieur de chaque bord, nous pouvons voir les sommets. Les arêtes droites n'ont que deux sommets, évidemment.

Analyse des arêtes (Edge)
Dans le cas d'un bord (ou arête), qui est une courbe arbitraire, il est fort probable que vous voulez faire une discrétisation. Dans FreeCAD, les bords sont paramétrés par leurs longueurs. Cela signifie, que vous pouvez suivre une arête/courbe par sa longueur :

Maintenant, vous pouvez accéder à un grand nombre de propriétés de l'arête en utilisant sa longueur comme une position. C'est à dire que, si l'arête (ou bord) a une longueur de 100 mm la position de départ est 0 et sa position extrême est 100.

Utilisation de la sélection
Ici, nous allons voir comment nous pouvons utiliser la fonction de sélection, quand l'utilisateur a fait une sélection dans la visionneuse. Tout d'abord, nous créons une boîte (box) et nous l'affichons dans la fenêtre de vue.

Sélectionnez maintenant des faces ou arêtes. Avec ce script, vous pouvez parcourir tous les objets sélectionnés et visionner leurs sous-éléments :

Sélectionnez quelques bords et ce script va calculer la longueur :

Exemple : la bouteille OCC
Un exemple typique trouvé sur le site Web OpenCasCade Technology est de savoir comment construire une bouteille. C'est aussi un bon exercice pour FreeCAD. En fait, si vous suivez notre exemple ci-dessous et la page OCC simultanément, vous verrez à quel point les structures OCC sont bien implémentées dans FreeCAD. Le script est inclus dans l'installation de FreeCAD (dans le dossier ) et peut être appelé à partir de l'interpréteur Python en tapant :

Le script
Pour les besoins de ce tutoriel, nous considérerons une version réduite du script. Dans cette version, le flacon ne sera pas évidé et le goulot du flacon ne sera pas fileté.

Explications détaillées
Nous aurons bien sûr besoin du module mais aussi du module, qui contient des structures FreeCAD de base comme des vecteurs et des matrices.

Ici, nous définissons notre fonction. Cette fonction peut être appelée sans argument, comme nous l'avons fait ci-dessus, les valeurs par défaut, de largeur, hauteur et épaisseur seront utilisés. Ensuite, nous définissons une paire de points qui seront utilisés pour la construction de notre profil de base.

Ici, nous définissons la géométrie : un arc, composé de trois points et deux segments de ligne, composés de deux points.

Vous vous souvenez de la différence entre la géométrie et les formes ? Nous allons construire les formes de notre forme géométrique. Trois bords (bords ou arêtes peuvent être des segments de droites ou des courbes) puis nous raccordons tous les sommets.

Jusqu'à présent, nous n'avons construit qu'un demi-profil. Au lieu de construire tout le profil de la même manière, nous pouvons simplement refléter ce que nous avons fait et coller les deux moitiés ensemble. Nous créons d'abord une matrice. Une matrice est un moyen très courant d'appliquer des transformations aux objets du monde 3D, car il peut contenir dans une seule structure tous les les transformations que les objets 3D peuvent subir (déplacement, rotation et échelle). Après avoir créé la matrice, nous la reflétons, puis nous créons une copie de notre fil et lui appliquer la matrice de transformation. Nous avons maintenant deux fils, et nous pouvons en faire un troisième fil, car les fils sont en fait des listes d'arêtes.

Maintenant, nous avons un contour fermé, il peut être transformé en une face. Une fois que nous avons une face, nous pouvons l'extruder. Une fois fait, nous avons un solide. Puis, nous appliquons un filet à notre objet car nous voulons lui donner un aspect "design", n'est-ce pas ?

À ce stade, le corps de notre bouteille est fabriqué mais nous devons encore créer un goulot. On fait un nouveau solide avec un cylindre.

L'opération de fusion est très puissante. Elle se charge de coller ce qui doit l'être et de retirer les pièces qui doivent l'être.

Puis, nous revenons à notre bouteille (Part solid), qui est le résultat de notre fonction.

Enfin, nous appelons la fonction pour créer la pièce puis la rendons visible.

Exemple : cube percé
Ici un exemple complet de construction d'un cube percé.

La construction se fait face par face. Quand le cube est terminé, il est évidé d'un cylindre traversant.

Chargement et sauvegarde
Il existe plusieurs façons de sauvegarder votre travail. Vous pouvez bien sûr enregistrer votre document FreeCAD, mais vous pouvez également enregistrer des objets Part directement dans des formats CAO courants, tels que BREP, IGS, STEP et STL.

L'enregistrement d'une forme (un projet) dans un fichier est facile, il y a les fonctions, , et  qui sont des méthodes disponibles pour toutes les formes d'objets. Donc, en faisant :

enregistrera notre boîte dans un fichier STEP. Pour charger un fichier BREP, IGES ou STEP :

Pour convertir un fichier STEP en fichier IGS :