Créer une barre à partir d'une ligne
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Be nice to others! Read the FreeCAD code of conduct!
Créer une barre à partir d'une ligne
Bonjour,
Est il possible de créer une barre (un objet plein) à partir d'une ligne ?
Exemple : Je veux créer une barre rectangulaire de 500 unités de long et de section rectangulaire de 12 unité de base et 24 unités de hauteur.
Pour l'instant je dois créer une esquisse d'un rectangle de 24*500 unités et ensuite l'extruder de 12 unités de large.
Je trouve cette solution "archaïque"...
Je m'explique, dans ma démarche de technicien charpentier bois je dessine d'abord le schéma statique de ma structure a l'aide de ligne, pour ça l'atelier "Sketcher" est parfait. Maintenant ces lignes représentent en réalité la fibre neutre des mes barres. Du coup je voudrais créer des pièces à partir de ces lignes. Ce serait peut être un module à rajouter dans l'atelier "Architecture" on clique sur une ligne est on pourrait choisir le profil de la barre et les sections.
Qu'en pensez vous ?
Est il possible de créer une barre (un objet plein) à partir d'une ligne ?
Exemple : Je veux créer une barre rectangulaire de 500 unités de long et de section rectangulaire de 12 unité de base et 24 unités de hauteur.
Pour l'instant je dois créer une esquisse d'un rectangle de 24*500 unités et ensuite l'extruder de 12 unités de large.
Je trouve cette solution "archaïque"...
Je m'explique, dans ma démarche de technicien charpentier bois je dessine d'abord le schéma statique de ma structure a l'aide de ligne, pour ça l'atelier "Sketcher" est parfait. Maintenant ces lignes représentent en réalité la fibre neutre des mes barres. Du coup je voudrais créer des pièces à partir de ces lignes. Ce serait peut être un module à rajouter dans l'atelier "Architecture" on clique sur une ligne est on pourrait choisir le profil de la barre et les sections.
Qu'en pensez vous ?
Formations - Assistance - Développement : https://freecad-france.com
Re: Créer une barre à partir d'une ligne
Salut,
Il n'y a rien d'archaïque là-dedans. Tous les logiciels de CAO paramétriques fonctionnent de cette façon, c'est la base de la modélisation.
Les logiciels commerciaux (SolidWorks, Solid Edge, Inventor) ont des fonctionnalités de structures mécano-soudées qui fonctionnent de façon similaire à ce que tu désires : on dessine une structure filaire en 3D puis on applique des profils à ces lignes. FreeCAD a le potentiel pour ajouter un tel module, mais il y a bien d'autres choses à lui ajouter avant. Sans compter qu'un tel usage ne trouvera d'utilité qu'auprès d'une infime minorité d'utilisateurs.
Il n'y a rien d'archaïque là-dedans. Tous les logiciels de CAO paramétriques fonctionnent de cette façon, c'est la base de la modélisation.
Les logiciels commerciaux (SolidWorks, Solid Edge, Inventor) ont des fonctionnalités de structures mécano-soudées qui fonctionnent de façon similaire à ce que tu désires : on dessine une structure filaire en 3D puis on applique des profils à ces lignes. FreeCAD a le potentiel pour ajouter un tel module, mais il y a bien d'autres choses à lui ajouter avant. Sans compter qu'un tel usage ne trouvera d'utilité qu'auprès d'une infime minorité d'utilisateurs.
Re: Créer une barre à partir d'une ligne
Salut,
Bon effectivement, je trouve ça archaïque parce que c'est pas comme ça que j'ai l'habitude de travailler avec les soft propriétaire et commerciaux que j'utilise dans mon métier. Pour info (SEMA Holzbauprogramme, Cadwork, Dietrich's)
La où je ne suis pas d'accord c'est quand tu dis que cela n’intéresse qu'une minorité de personne, ceci devient faux à partir du moment où le module "Architecture" à fait son apparition.
En effet si FreeCAD propose des solutions logiciels pour traité les corps de métiers du bâtiment, cela concerne un grand nombre d'utilisateur potentiel.( Architectes, Génie Civil, Génie Climatique, tous les corps de métiers du bâtiment).
En tous cas ça me donne envie de programmer une petite gui afin de créer des "barres" à partir d'une ligne.
Je vois la chose ainsi :
Création d'une ligne dans l'espace
Création d'une surface rectangulaire (qui sera la section de la barre) dans le plan perpendiculaire à la ligne et passant par une des extrémités (donc la normale de la surface correspond à la ligne).
9 positions possible de cette surface par rapport à une extrémité de la ligne (les 4 coins de la surface, les 4 milieu d'arrete et le centre de la surface)
Puis extrusion de la surface à la longueur données par la ligne.
Le seul problème que je vois c'est que je n'arrive pas à travailler dans un plan voulu. Une idée de comment on fait ?
Bon effectivement, je trouve ça archaïque parce que c'est pas comme ça que j'ai l'habitude de travailler avec les soft propriétaire et commerciaux que j'utilise dans mon métier. Pour info (SEMA Holzbauprogramme, Cadwork, Dietrich's)
La où je ne suis pas d'accord c'est quand tu dis que cela n’intéresse qu'une minorité de personne, ceci devient faux à partir du moment où le module "Architecture" à fait son apparition.
En effet si FreeCAD propose des solutions logiciels pour traité les corps de métiers du bâtiment, cela concerne un grand nombre d'utilisateur potentiel.( Architectes, Génie Civil, Génie Climatique, tous les corps de métiers du bâtiment).
En tous cas ça me donne envie de programmer une petite gui afin de créer des "barres" à partir d'une ligne.
Je vois la chose ainsi :
Création d'une ligne dans l'espace
Création d'une surface rectangulaire (qui sera la section de la barre) dans le plan perpendiculaire à la ligne et passant par une des extrémités (donc la normale de la surface correspond à la ligne).
9 positions possible de cette surface par rapport à une extrémité de la ligne (les 4 coins de la surface, les 4 milieu d'arrete et le centre de la surface)
Puis extrusion de la surface à la longueur données par la ligne.
Le seul problème que je vois c'est que je n'arrive pas à travailler dans un plan voulu. Une idée de comment on fait ?
Formations - Assistance - Développement : https://freecad-france.com
Re: Créer une barre à partir d'une ligne
Salut,
Les modules Draft et Architecture sont entièrement programmés en Python. Ce langage de programmation est paraît-il assez accessible. Je n'ai aucune expérience, ça fait au moins un an que je veux apprendre mais j'ai d'autres priorités. Ça serait définitivement faisable, surtout que tu pourrais consulter le code du module Arch et t'en inspirer.
Le développement actuel se concentre sur la correction de bogues au module Sketcher qui a énormément évolué cet été. L'objectif est de publier une version finale 0.12 d'ici la fin d'octobre. Ensuite, pour la 0.13, les efforts seront portés vers le Part Design et un nouveau module d'Assemblage. Il me semble que la création de plans devrait aussi être incluse.
Je termine avec ceci : malheureusement, le forum francophone est très peu fréquenté. Il n'y a que moi qui le consulte presque à chaque jour, puis moins régulièrement Yorik (développeur des modules Draft et Arch). Les autres développeurs ne parlent pas français. La discussion serait définitivement plus animée si tu la lançais dans le forum Open Discussion ou encore Developers corner.
Et pourtant. Je maintiens que sur l'ensemble des utilisateurs de FreeCAD, une minorité sera intéressée à un module tel que tu recherches, même si ce module permettait de travailler également les profilés métalliques. On parle de quelque chose de très spécialisé. Par exemple pour ma part j'aimerais qu'un module de tôlerie soit ajouté, parce que ça fait partie de mon travail, mais je suis conscient que l'intérêt pour un tel module resterait limité. Pour l'instant, et dans un horizon à plus ou moins moyen terme, je crois que FreeCAD va rester un outil pour les hobbyistes. Le jour où ses fonctionnalités de base seront complètes et qu'il sera assez stable, alors peut-être on verra un intérêt des milieux professionnels. Mais je crois que l'absence d'un soutien technique payant risque d'être un frein à son adoption.rockn wrote:La où je ne suis pas d'accord c'est quand tu dis que cela n’intéresse qu'une minorité de personne, ceci devient faux à partir du moment où le module "Architecture" à fait son apparition.
En effet si FreeCAD propose des solutions logiciels pour traité les corps de métiers du bâtiment, cela concerne un grand nombre d'utilisateur potentiel.( Architectes, Génie Civil, Génie Climatique, tous les corps de métiers du bâtiment).
C'est exactement de cette façon que fonctionnent les modules d'éléments mécano-soudés dont je te parlais. Mais il y a une complexité supplémentaire : le traitement de joint entre des profilés.rockn wrote: En tous cas ça me donne envie de programmer une petite gui afin de créer des "barres" à partir d'une ligne.
Je vois la chose ainsi :
Création d'une ligne dans l'espace
Création d'une surface rectangulaire (qui sera la section de la barre) dans le plan perpendiculaire à la ligne et passant par une des extrémités (donc la normale de la surface correspond à la ligne).
9 positions possible de cette surface par rapport à une extrémité de la ligne (les 4 coins de la surface, les 4 milieu d'arrete et le centre de la surface)
Puis extrusion de la surface à la longueur données par la ligne.
Les modules Draft et Architecture sont entièrement programmés en Python. Ce langage de programmation est paraît-il assez accessible. Je n'ai aucune expérience, ça fait au moins un an que je veux apprendre mais j'ai d'autres priorités. Ça serait définitivement faisable, surtout que tu pourrais consulter le code du module Arch et t'en inspirer.
Est-ce que tu veux dire par l'interface graphique ? Ça fait partie des éléments manquants, la création de plans de travail. Il y a un outil Plan dans le module Part (menu Paramétrique > Créer primitives), mais les paramètres restent limités.rockn wrote:Le seul problème que je vois c'est que je n'arrive pas à travailler dans un plan voulu. Une idée de comment on fait ?
Le développement actuel se concentre sur la correction de bogues au module Sketcher qui a énormément évolué cet été. L'objectif est de publier une version finale 0.12 d'ici la fin d'octobre. Ensuite, pour la 0.13, les efforts seront portés vers le Part Design et un nouveau module d'Assemblage. Il me semble que la création de plans devrait aussi être incluse.
Je termine avec ceci : malheureusement, le forum francophone est très peu fréquenté. Il n'y a que moi qui le consulte presque à chaque jour, puis moins régulièrement Yorik (développeur des modules Draft et Arch). Les autres développeurs ne parlent pas français. La discussion serait définitivement plus animée si tu la lançais dans le forum Open Discussion ou encore Developers corner.
-
- Posts: 437
- Joined: Wed Sep 15, 2010 9:38 am
Re: Créer une barre à partir d'une ligne
Bonjour,
il y a quelque chose que tu peux essayer, c'est la commande makePipe. Il y a un exemple dans viewtopic.php?f=3&t=1461&p10778.
La macro utilisée et à adapter :
Il n'y a pas d'interface graphique.
J'espère que ça aide. Je n'ai pas testé avec un support dont la tangente n'est pas continue. Dis-nous si ça pose problème.
Gaël
il y a quelque chose que tu peux essayer, c'est la commande makePipe. Il y a un exemple dans viewtopic.php?f=3&t=1461&p10778.
La macro utilisée et à adapter :
Code: Select all
import Part, FreeCAD, math
from FreeCAD import Base
helix=Part.makeHelix(1,10,3)
circle = Part.makeCircle(0.35,Base.Vector(3,0,0),Base.Vector(0,1,0))
circle = Part.Wire([circle])
pipe = Part.Wire(helix).makePipe(circle)
Part.show(pipe)
J'espère que ça aide. Je n'ai pas testé avec un support dont la tangente n'est pas continue. Dis-nous si ça pose problème.
Gaël
Re: Créer une barre à partir d'une ligne
Salut,
Tiens, tu as repris le code de mon message. Mais bon je l'ai piqué moi-même d'un message de Werner il me semble, et l'ai trafiqué un peu.
L'ennui, c'est que ça ne donne pas un solide, mais une ou des surfaces (selon le type de profil) ouverte(s) aux deux extrémités de la ligne.
FreeCAD utilise le noyau géométrique Open CASCADE, qui fonctionne sur le principe de représentation par les bords (boundary representation, ou B-Rep). Il y a toute une hiérarchie d'éléments pour construire un solide : des points reliés ensemble forment une ligne, plusieurs lignes forment un fil (wire) qui peut quant-à-lui former une face si le fil est fermé. Si on assemble une série de faces contiguës, et que celles-ci forment un volume fermé, alors on on obtient un solide.
Tous les modeleurs de CAO 3D modernes fonctionnent de cette façon, mais ce procédé est transparent pour l'utilisateur. FreeCAD s'en va dans cette direction avec les modules PartDesign et Arch, mais quand on passe par la console Python il faut faire toutes ces opérations manuellement. À mon script il manque donc la création de faces aux extrémités et la jonction avec la face existante (la surface tubulaire en hélice du ressort) pour créer un solide. Chose qui se fera automatiquement quand l'outil de l'interface graphique sera programmé.
Tiens, tu as repris le code de mon message. Mais bon je l'ai piqué moi-même d'un message de Werner il me semble, et l'ai trafiqué un peu.
L'ennui, c'est que ça ne donne pas un solide, mais une ou des surfaces (selon le type de profil) ouverte(s) aux deux extrémités de la ligne.
FreeCAD utilise le noyau géométrique Open CASCADE, qui fonctionne sur le principe de représentation par les bords (boundary representation, ou B-Rep). Il y a toute une hiérarchie d'éléments pour construire un solide : des points reliés ensemble forment une ligne, plusieurs lignes forment un fil (wire) qui peut quant-à-lui former une face si le fil est fermé. Si on assemble une série de faces contiguës, et que celles-ci forment un volume fermé, alors on on obtient un solide.
Tous les modeleurs de CAO 3D modernes fonctionnent de cette façon, mais ce procédé est transparent pour l'utilisateur. FreeCAD s'en va dans cette direction avec les modules PartDesign et Arch, mais quand on passe par la console Python il faut faire toutes ces opérations manuellement. À mon script il manque donc la création de faces aux extrémités et la jonction avec la face existante (la surface tubulaire en hélice du ressort) pour créer un solide. Chose qui se fera automatiquement quand l'outil de l'interface graphique sera programmé.
-
- Posts: 437
- Joined: Wed Sep 15, 2010 9:38 am
Re: Créer une barre à partir d'une ligne
Pour avoir un solide, il faut effectivement extruder une "face" et non un "wire". Est-ce qu'il te manque la commande pour faire une "face" à partir d'un "wire" ou c'est la commande "makePipe" qui ne marche pas avec les "faces" ?
Je viens de tester le "makePipe" avec une "face" et le résultat n'est pas correct.
Obtention:
* création d'une ligne ouverte dans un plan (avec un sketch), appelée Sketch
* création d'un sketch fermé à une extrémité de la ligne ouverte et perpendiculaire à elle
* avec l'atelier Draft, création d'un face par "upgrade", appelée Wire
* ensuite en Python:
>>> w = App.ActiveDocument.Wire.Shape
>>> l = App.ActiveDocument.Sketch.Shape
>>> pipe = l.makePipe(w)
>>> Part.show(pipe)
J'obtiens bien quelque chose (appelé Shape), mais je ne sais pas si c'est un solide. App.ActiveDocument.Shape.Shape.Volume me donne 0. De toute façon, la forme n'est pas correcte car le profil est extrudé parallèle à lui-même est non perpendiculaire au support.
Je joins le fichier FreeCAD avec l'extension à retirer. Je viens d'ailleurs de remarquer que je ne peux plus ouvrir le fichier. J'obtiens "Illegal storage access...". Confirmez-moi si vous pouvez l'ouvrir.
Je viens de tester le "makePipe" avec une "face" et le résultat n'est pas correct.
Obtention:
* création d'une ligne ouverte dans un plan (avec un sketch), appelée Sketch
* création d'un sketch fermé à une extrémité de la ligne ouverte et perpendiculaire à elle
* avec l'atelier Draft, création d'un face par "upgrade", appelée Wire
* ensuite en Python:
>>> w = App.ActiveDocument.Wire.Shape
>>> l = App.ActiveDocument.Sketch.Shape
>>> pipe = l.makePipe(w)
>>> Part.show(pipe)
J'obtiens bien quelque chose (appelé Shape), mais je ne sais pas si c'est un solide. App.ActiveDocument.Shape.Shape.Volume me donne 0. De toute façon, la forme n'est pas correcte car le profil est extrudé parallèle à lui-même est non perpendiculaire au support.
Je joins le fichier FreeCAD avec l'extension à retirer. Je viens d'ailleurs de remarquer que je ne peux plus ouvrir le fichier. J'obtiens "Illegal storage access...". Confirmez-moi si vous pouvez l'ouvrir.
- Attachments
-
- makePipe.fcstd.zip
- extension .zip à retirer
- (15.12 KiB) Downloaded 97 times
Re: Créer une barre à partir d'une ligne
Salut,
J'ouvre le fichier, mais FreeCAD me fait une erreur de compression du fichier, et rien n'est visible à l'écran.
Par ailleurs, si tu consultes la suite de mon sujet Need help modeling a spring with makePipe and GUI shapes, il y avait un bogue avec l'usage de l'hélice comme trajectoire du makePipe, la section pivotait autour de la trajectoire. Werner a corrigé ça il y a quelques heures dans la révision 4991. Ce qui est intéressant c'est qu'il ajoute la variable "makeSolid" dans le code.
Voir sa réponse dans le rapport de bogue : https://sourceforge.net/apps/mantisbt/f ... php?id=444
J'ouvre le fichier, mais FreeCAD me fait une erreur de compression du fichier, et rien n'est visible à l'écran.
Par ailleurs, si tu consultes la suite de mon sujet Need help modeling a spring with makePipe and GUI shapes, il y avait un bogue avec l'usage de l'hélice comme trajectoire du makePipe, la section pivotait autour de la trajectoire. Werner a corrigé ça il y a quelques heures dans la révision 4991. Ce qui est intéressant c'est qu'il ajoute la variable "makeSolid" dans le code.
Voir sa réponse dans le rapport de bogue : https://sourceforge.net/apps/mantisbt/f ... php?id=444
Re: Créer une barre à partir d'une ligne
Génial, la variable makeSolid=1 génère un solide !
À noter par contre que makePipe a été remplacé par makePipeShell. J'ai essayé d'ajouter la variable makeSolid à la commande makePipe, et aucune forme n'est créée, ça n'a pas l'air de marcher.
À noter par contre que makePipe a été remplacé par makePipeShell. J'ai essayé d'ajouter la variable makeSolid à la commande makePipe, et aucune forme n'est créée, ça n'a pas l'air de marcher.
Re: Créer une barre à partir d'une ligne
Bonjour,
Merci à vous pour les exemples.
J'ai fait ceci déjà :
Pour s'en servir :
Puis sélectionner une ligne et taper en console :
et ainsi de suite pour chaque lignes.
Un exmple où j'ai créer les barres avec ce script : Bon, on se rend compte que ça génère des Part.ToPoShape, ce qui n'est pas un solide. Pourtant je pars d'une surface que j'extrude.
Cette nouvelle variable "makeSolide" semble intéressante.
Vous utilisez quelle version de FreeCAD ? Pour l'instant je suis avec la 0.12 4593 du PPA Devel sur Ubuntu 11.04 64 bits.
Avec le PPA daily j'aurais cette nouvelle variable ?
Merci à vous pour les exemples.
J'ai fait ceci déjà :
Code: Select all
#add_beam.py
import FreeCAD, FreeCADGui, Part
def create_beam(b,h):
b = float(b)
h = float(h)
selection = FreeCADGui.Selection.getSelection()
line = selection[0]
line = line.Shape
lg_beam = line.Length
p1 = line.Vertexes[0]
p2 = line.Vertexes[1]
x1=p1.X
y1=p1.Y
z1=p1.Z
x2=p2.X
y2=p2.Y
z2=p2.Z
# create a face normal of line
pt_start = FreeCAD.Vector(x1,y1,z1)
direction = FreeCAD.Vector(x2-x1,y2-y1,z2-z1)
section = Part.makePlane(h,b,pt_start,direction)
#Part.show(section)
# create the beam
beam = section.extrude(direction)
Part.show(beam)
print beam
print type(beam)
Code: Select all
import add_beam
Code: Select all
add_beam.create_beam("la largeur","la hauteur")
Un exmple où j'ai créer les barres avec ce script : Bon, on se rend compte que ça génère des Part.ToPoShape, ce qui n'est pas un solide. Pourtant je pars d'une surface que j'extrude.
Cette nouvelle variable "makeSolide" semble intéressante.
Vous utilisez quelle version de FreeCAD ? Pour l'instant je suis avec la 0.12 4593 du PPA Devel sur Ubuntu 11.04 64 bits.
Avec le PPA daily j'aurais cette nouvelle variable ?
Formations - Assistance - Développement : https://freecad-france.com