problèmes avec makeFillet

Forum destiné aux questions et discussions en français
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Post Reply
nicotuf
Posts: 14
Joined: Mon Jul 20, 2009 1:51 pm

problèmes avec makeFillet

Post by nicotuf »

Bonjour à tous,

Dans une macro, j’essaie de créer un profil type tube acier laminé. Mais je coince sur la fonction makeFillet qui renvoi des résultats que j'ai du mal à suivre.

Donc, voilà ce que je souhaite obtenir :

L'interface marche très bien en sélectionnant la série d’arêtes 1, 3, 5 et 7
01.jpg
01.jpg (7.06 KiB) Viewed 1838 times
Et deux essais de code infructueux...

Code: Select all

#from os import *
import FreeCAD, FreeCADGui, Part, Draft, math
from PyQt4 import QtGui,QtCore
from FreeCAD import Base
App=FreeCAD
Gui=FreeCADGui


P1=Base.Vector(-30/2,-30/2,0)
S1=Part.makeBox(30,30,100,P1)
S1=S1.makeFillet(2,[S1.Edges[1],S1.Edges[3],S1.Edges[5],S1.Edges[7]])

Part.show(S1)

Code: Select all

#from os import *
import FreeCAD, FreeCADGui, Part, Draft, math
from PyQt4 import QtGui,QtCore
from FreeCAD import Base
App=FreeCAD
Gui=FreeCADGui


P1=Base.Vector(-30/2,-30/2,0)
S1=Part.makeBox(30,30,100,P1)
S1=S1.makeFillet(2,[S1.Edges[2],S1.Edges[4],S1.Edges[6],S1.Edges[8]])

Part.show(S1)
Si quelqu'un à une idée, merci d'avance.

Nicolas
User avatar
yorik
Founder
Posts: 13640
Joined: Tue Feb 17, 2009 9:16 pm
Location: Brussels
Contact:

Re: problèmes avec makeFillet

Post by yorik »

Tes deux scripts me semblent foncionner très bien... Le problème est identifier quels edges tu veux arrondir, c'est ça?
Tu pourrais essayer de les identifier par la longueur...

Code: Select all

goodedges = []
for edge in S1.Edges:
    l = (edge.Vertexes[-1].Point.sub(edge.Vertexes[0].Point)).Length
    if l == 30:
        goodedges.append(edge)
nicotuf
Posts: 14
Joined: Mon Jul 20, 2009 1:51 pm

Re: problèmes avec makeFillet

Post by nicotuf »

Merci pour ce code je l'ai intégrer et ça marche très bien,

Entre temps j'ai compris mon problème.

Pour Les références des edges prisent sur la pièce (n) il faut entrer (n-1) dans la fonction makeFillet.

Code: Select all

    #from os import *
    import FreeCAD, FreeCADGui, Part, Draft, math
    from PyQt4 import QtGui,QtCore
    from FreeCAD import Base
    App=FreeCAD
    Gui=FreeCADGui


    P1=Base.Vector(-30/2,-30/2,0)
    S1=Part.makeBox(30,30,100,P1)
    S1=S1.makeFillet(2,[S1.Edges[0],S1.Edges[2],S1.Edges[4],S1.Edges[6]])

    Part.show(S1)
Post Reply