problèmes avec makeFillet

Forum destiné aux questions et discussions en français
Forum rules
Règles du forum et informations utiles.

VEUILLEZ LIRE CECI AVANT DE DEMANDER DE L'AIDE
nicotuf
Posts: 14
Joined: Mon Jul 20, 2009 1:51 pm

problèmes avec makeFillet

Postby nicotuf » Mon Jul 18, 2011 12:40 pm

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 1051 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
Site Admin
Posts: 11712
Joined: Tue Feb 17, 2009 9:16 pm
Location: São Paulo, Brazil
Contact:

Re: problèmes avec makeFillet

Postby yorik » Mon Jul 18, 2011 3:07 pm

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

Postby nicotuf » Tue Jul 19, 2011 9:10 am

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)