Outils pour utilisateurs

Outils du site


issue127:freecad

In this series, we will be examining the world of FreeCAD, an open-source CAD modelling application that is still in Beta, but has been gaining acceptance in recent years. Naturally, it is readily available in the Ubuntu repositories. In the previous (seventh) article on using FreeCAD, we concentrated on the mesh as a complex primitive object that allows us to create forms and volumes, either from scanned data or by using simple programing techniques. In this part, we will use this technique in combination with other, more standard FreeCAD tools, to build a 3D representation of a modern building with a lattice roof structure.

Dans cette série, nous examinerons le monde de FreeCAD, une application Open Source de modélisation par CAO qui est encore en bêta, mais qui a reçu un bon accueil ces dernières années. Naturellement, elle est facilement disponible dans les dépôts d'Ubuntu. Dans l'article précédent (le septième) sur l'utilisation de FreeCAD, nous nous sommes concentrés sur le maillage en tant qu'objet primitive complexe, qui nous permet de créer des formes et des volumes, soit à partir de données numérisées, soit par des techniques de programmation simples.

Dans cette partie, nous utiliserons cette technique en combinaison avec d'autres outils FreeCAD plus ordinaires pour construire une représentation 3D d'un immeuble moderne avec une structure de toit en treillis.

Architectural meshes Some of the inspiration for this article comes from buildings such as the Esplanade Theatres on the Bay, Singapore (DP Architects), and the Rhike Park music theatre in Tbilisi, Georgia (Studio Fuksas). In all cases, a lattice arrangement has been used for the exterior of the building. From an architectural standpoint, this technique has at least two salient points: • On the one hand, the lattice can support a large proportion of its own weight, which allows the architect to cover a large area without using internal supports such as columns. This is perfect for large open spaces such as concert halls or sports venues, or even the open concourses inside airport buildings, such as Hong Kong International Airport at Chek Lap Kok. • On the other hand, using a lattice implies that part of the structural strength comes from working with curved surfaces that share some of their properties with the arch. The final result is a building that eschews the flat, regular shapes that have become so common in urban architecture during the last century.

Les maillages architecturaux

Une partie de l'inspiration de cet article vient d'immeubles comme les Esplanade Theatres on the Bay à Singapour (DP Architects) et l'auditorium du Rhike Park à Tbilissi (Géorgie) (Studio Fuksas). Dans tous les cas, un arrangement maillé a été utilisé pour l'extérieur de l'immeuble. D'un point de vue architectural, cette technique a au moins deux points forts : • D'une part, le treillis peut supporter une proportion importante de son propre poids, ce qui permet à l'architecte de couvrir une grande surface sans utiliser de supports internes comme des colonnes. C'est parfait pour les larges espaces ouverts tels que des salles de concert ou de sport, ou même les grands halls des bâtiments d'aéroport, tels que l'aéroport international de Hong Kong à Chek Lap Kok. • D'autre part, l'utilisation d'un treillis implique qu'une partie de la force structurelle vienne de l'emploi des surfaces courbes qui partagent certaines de leurs propriétés avec l'arche. Le résultat final est un bâtiment qui évite les formes plates et régulières qui sont devenues si communes dans l'architecture urbaine du siècle dernier.

Some simple lattices can be drawn “by hand”, as long as the overall shapes remain planar or use a single curvature. However, once the final shape contains double curvatures - along two intersecting axes at once - things do tend to get a little complicated. This is when a computer comes in as an essential tool to calculate the position of each lattice point, and from there to calculate the constraints expected within the physical structure. For instance, let us consider the height function h(x, y) = x*x - y*y. A simple surface plot shows us that, in the vicinity of coordinate origin point (0, 0, 0), this surface shows a concave curvature in the upwards direction, along axis X. However, curvature is convex along axis Y, also towards the top. This very simple function shows a double curvature that is easy to calculate, but not easy to draw with precision without the help of a computer.

Certains treillis simples peuvent être dessinés « à la main », tant que les formes générales restent planes ou utilisent une courbure unique. Cependant, dès que la forme finale contient deux courbures - le long de deux axes d'intersection en même temps - les choses tendent à devenir un peu plus complexes. C'est là que l'ordinateur prend place comme outil essentiel pour calculer la position de chaque point du treillis et, de là, calculer les contraintes attendues dans la structure physique.

Par exemple, considérons la fonction hauteur h(x, y) = x*x - y*y. Un simple tracé de la surface nous montre que, au voisinage du point d'origine des coordonnées (0, 0, 0), cette surface montre une courbure concave vers le haut, le long de l'axe X. Cependant, la courbure est convexe le long de l'axe Y, tournée aussi vers le haut. cette fonction très simple montre une double courbure qui est facile à calculer, mais qui n'est pas facile à dessiner avec précision sans l'aide d'un ordinateur.

Integrating a lattice into a building In the following discussion, we will create a medium-sized pavilion using a lattice defined with the above function. Naturally, the reader is not encouraged to actually build such a structure in real life - at least, not unless considerable architectural and engineering experience is available to ensure materials are correctly chosen and dimensioned, local building codes are followed, and the construction has some chance of holding up to its intended use. There are some tricky aspects to consider with this type of construction, not least of which is the fact that the lattice would be stressed in compression along axis Y, and in tension along axis X, all by its own weight. Factors such as wind pressure, and the weight of rainfall, ice, snowfall, etc, would also need to be accounted for. Let us begin by writing a short Python program to create an STL file with the mesh. The complete code can be found at: https://pastebin.com/tsi5dbLw . Working on a floor plan of 40 x 30 m in the XY plane, we will calculate a value for height along the Z axis. Minimum and maximum heights have been taken, for this example, at 10 and 20 m above ground level respectively, though this could easily be scaled and adjusted to suit a particular implementation. Finally, 20 separate mesh separations have been taken, along both the X and Y directions.

Intégration d'un treillis dans un bâtiment

Dans la présentation qui suit, nous créerons un pavillon de taille moyenne utilisant un treillis défini avec la fonction ci-dessus. Naturellement, le lecteur n'est pas encouragé à construire en vrai une telle structure, à moins de disposer d'une grande expérience d'ingénieur et d'architecte pour s'assurer que les matériaux sont correctement choisis et dimensionnés, que les règles d'urbanisme local sont respectées et que la construction a des chances de résister pour l'usage prévu. Il y a quelques aspects délicats à considérer avec ce type de construction, le fait que le treillis soit contraint en compression dans l'axe Y et en tension dans l'axe X, n'étant pas le moindre, et le tout par son propre poids. Des facteurs comme la pression du vent et le poids de la pluie, de la glace, de la neige, etc. seraient aussi à prendre en compte.

Commençons par écrire un court programme en Python pour créer un fichier STL avec le maillage. Le code complet peut être trouvé à : https://pastebin.com/tsi5dbLw. Travaillant sur une surface de base de 40 x 30 m dans le plan XY, nous calculerons une valeur de hauteur suivant l'axe Z. Pour cet exemple, les hauteurs minimum et maximum ont été respectivement prises à 10 et 20 m au-dessus du niveau du sol, bien que cela puisse être facilement mis à l'échelle et ajusté pour correspondre à une implantation particulière. Enfin, 20 points de maillage séparés ont été pris le long des deux directions X et Y.

The end result of this program is an STL file that can be imported into a new FreeCAD project using the technique discussed in the previous part of this series. To better visualize proportions, a 40×30 m rectangle has been drawn at ground level, under the roof. Closing off the walls on all four sides of this building will be no easy task, since all four walls will have three straight edges, but the fourth (upper) edge needs to follow a parabolic line. There are several solutions for this problem. One would be to write further programs in Python to create mesh files to suit. However, FreeCAD does offer alternatives. In this case, I made mesh lines visible. Select the mesh object, and, in the Property box, select “Display Mode” and switch from the original “Shaded” mode to “Flat Lines”.

Le résultat final de ce programme est un fichier STL qui peut être importé dans un nouveau projet FreeCAD en utilisant la technique présentée dans la partie précédente de la série. Pour mieux visualiser les proportions, un rectangle de 40 x 30 m à été dessiné au niveau du sol, sous le toit.

Poser les cloisons pour fermer les murs des quatre côtés ne sera pas une tâche facile, car les quatre cloisons auront trois côtés droits, mais le quatrième (celui du haut) devra suivre une courbe parabolique. Il y a plusieurs solutions à ce problème. L'une d'elles est d'écrire des programmes supplémentaires en Python pour créer les fichiers de maillage qui conviennent. Cependant, FreeCAD a d'autres alternatives. Dans ce cas, je rends visibles les lignes du maillage. Sélectionnez l'objet maillé et, dans la zone des Propriétés, sélectionnez « Display mode » (mode d'affichage) et passez du mode d'origine « Shaded » (ombré) à « Flat lines » (simples lignes).

We can then go into the Draft workbench, and, working carefully, draw a new Wire - selecting, point by point, all the vertices along one edge of the roof. Then, close the shape by selecting the corners of the ground rectangle beneath this edge. This flat shape can then be promoted to a plane ?plain? DWire object. Then proceed in the same way for the other walls. Once the walls have been defined, the roof mesh can either be left with its mesh structure apparent, or the Display Mode can be switched back to “Surface”, as desired. One can then add columns to hold up the roof mesh. However, it then becomes apparent that the mesh has no thickness. Even if much care is taken with column heights, some discrepancy appears since column ends are horizontal disks, but the part of the mesh that is in contact with them is not flat. Intersections with the building’s four exterior walls also become apparent.

Nous pouvons aller maintenant dans l'atelier Draft et, en travaillant soigneusement, dessiner un nouveau « Wire » - en sélectionnant, point par point, tous les sommets le long d'un bord du toit. Ensuite, fermez la forme en sélectionnant chaque coin de rectangle du sol en dessous de ce bord. Cette forme plane peut ensuite être transformée en objet Wire plan ? Simple ? [Ndt : plain, en anglais, d'où le jeu de mots plane/plain] Puis, procédez de la même manière pour les autres parois.

Une fois que les murs ont été définis, le maillage du toit peut, soit être laissé avec sa structure maillée apparente, soit le mode d'affichage peut être remis à « Surface », comme vous le voulez.

On peut ensuite ajouter des colonnes pour tenir le maillage du toit. Cependant, il devient apparent que le maillage n'a pas d'épaisseur. Même si beaucoup de soin est pris avec la hauteur des colonnes, certains dysfonctionnements apparaissent car les extrémités des colonnes sont des disques horizontaux, mais la partie du maillage qui les touche n'est pas plate. Les intersections avec les quatre murs extérieurs du bâtiment deviennent aussi apparentes.

One relatively realistic solution is to give the roof mesh some thickness. SImply select the mesh, and, in the Part workbench, create a new Extrusion. Top and bottom surfaces will have the shape of the mesh, while the vertical depth of the object will be the same along its surface. A value of one meter seems appropriate for this building. Finally, the colors and transparency levels of each object can be adjusted in the Properties box. For instance, to represent glass walls - allowing light to enter the building between columns - the four walls can be left with their default color ([204, 204, 204]), but with a transparency of 40.

Une solution relativement réaliste est de donner un peu d'épaisseur au maillage du toit. Il suffit de sélectionner le maillage et créer une nouvelle Extrusion dans l'atelier Part. Les surfaces du dessous et du dessus auront la forme du maillage, tandis que l'épaisseur verticale de l'objet sera la même tout au long de sa surface. Une valeur d'un mètre semble appropriée pour ce bâtiment.

Enfin, la couleur et le niveau de transparence de chaque objet peuvent être ajustés dans la zone Propriétés. Par exemple, pour représenter des murs en verre - permettant à la lumière d'entrer dans le bâtiment entre les colonnes - les quatre murs peuvent rester avec leur couleur par défaut ([204, 204, 204]), mais avec une transparence de 40 %.

What next? In this article on using FreeCAD, we used a mesh in combination with other, more standard FreeCAD tools, to build a 3D representation of a modern building with a lattice roof structure. In the next part, we will explore going from a computer model to something physical, by exporting a finished project and printing it using a 3D printer.

Et ensuite ?

Dans cet article sur l'utilisation de FreeCAD, nous avons utilisé un maillage en combinaison avec d'autres outils FreeCAD plus classiques, pour construire une représentation en 3D d'un bâtiment moderne avec un toit à structure maillée.

Dans la prochaine partie, nous explorerons le passage d'un modèle informatique à un objet matérialisé, en exportant un projet finalisé pour l'imprimer avec une imprimante 3D.

issue127/freecad.txt · Dernière modification : 2017/12/03 11:54 de andre_domenech