Merci pour le complément d'info,
effectivement la DraftArray fonctionne bien, j'ai tenté avec un script qui dupliquait un tour puis le décalait et enfin l'additionnait au reste mais ça prend un temps fou pour un résultat nul : les opérations booléennes n'ont pas l'air de fonctionner sur ce balayage. ( je tourne avec la révision 1827).
D'ailleurs c'est pareil avec la DraftArray, impossible de la soustraire à un cylindre.
Script pour filetage
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Be nice to others! Read the FreeCAD code of conduct!
Re: Script pour filetage
Voila un script qui finalement fonctionne, c'est un peu long pour la création mais après ça va bien, il n'y a pas le délai à l'ouverture comme lorsque l'on fait tous les tours d'un coup.
Une méthode plus rapide de continuation du filet : on fait 1 tour, on le duplique on en obtiens 2 , on duplique ce bloc, on a 4 tour, puis 8, etc, mais c'est pas bien pratique pour un nombre de tour qui n'est pas une puissance de 2.
Code: Select all
import Part, FreeCAD, math, copy
from FreeCAD import Base
#Fabrication du premier tour de filet
helix = Part.makeHelix(1,1,3) #Un seul tour d'helice
edge1 = Part.makeLine((2.5,0,-0.125), (2.5,0,0.125))
edge2 = Part.makeLine((2.5,0,0.125), (3.1,0,0.419))
edge3 = Part.makeLine((3.1,0,0.419), (3.1,0,-0.419))
edge4 = Part.makeLine((3.1,0,-0.419), (2.5,0,-0.125))
section = Part.Wire([edge1,edge2,edge3,edge4])
makeSolid=True
isFrenet=True
pipe = Part.Wire(helix).makePipeShell([section],makeSolid,isFrenet)
#Continuation du filet
count=1
length=10 #Dix tours de fillet
trslt = FreeCAD.Vector(0,0,1) #decalage entre chaque tour
pipe2=pipe.copy()
while count< length :
pipe2.translate(trslt)
pipe=pipe.fuse(pipe2)
count += 1
pipe2.nullify()
Part.show(pipe)
Code: Select all
#Continuation du filet
count=0
length=10 #Au moins dix tours de fillet...
while (pow(2,count))< length :
pipe2=pipe.copy()
pipe2.translate(FreeCAD.Vector(0,0,pow(2,count)))
pipe=pipe.fuse(pipe2)
count += 1
pipe2.nullify()
Part.show(pipe)
Re: Script pour filetage
Bonjour
est il possible de combiner les arcs et edge ou bien faut-il remplacer les courbes par une polyline ?
mario
est il possible de combiner les arcs et edge ou bien faut-il remplacer les courbes par une polyline ?
Code: Select all
arc1 = Part.makeCircle(0.144339769921, Base.Vector( -0.469204000000,0,0.5), Base.Vector(0,1,0), (RadDeg(2.094335598958)), (RadDeg(3.128711895642)))
edge1 = Part.makeLine((-0.541366446790,0.000000000000,-0.374993798337),( -0.000112000000,0.000000000000,-0.062500000000))
section = Part.Wire([edge1,edge3,edge2])
Maybe you need a special feature, go into Macros_recipes and Code_snippets, Topological_data_scripting.
My macros on Gist.github here complete macros Wiki and forum.
My macros on Gist.github here complete macros Wiki and forum.