Macro Cut Circle/fr: Difference between revisions

From FreeCAD Documentation
m (Created page with "==Projet== Couper les cercles d'un cylindre.")
(Updating to match new version of source page)
Line 7: Line 7:
Copiez la macro dans la console Python de FreeCAD, sélectionnez les arcs et cercles concernés, tapez la commande '''cutCirle''' dans la console Python de FreeCAD:
Copiez la macro dans la console Python de FreeCAD, sélectionnez les arcs et cercles concernés, tapez la commande '''cutCirle''' dans la console Python de FreeCAD:
<syntaxhighlight>
<syntaxhighlight>
cutCircle(5)
cutCircle(5, 1) # here with 5 arcs and coloured
cutCircle(4) #
</syntaxhighlight>
</syntaxhighlight>
pour voir les cercles et arcs découpés dans cet exemple cinq arcs contigus.
pour voir les cercles et arcs découpés dans cet exemple cinq arcs contigus.
Line 17: Line 18:


<syntaxhighlight>
<syntaxhighlight>
# selection circle(s) (circle and arcs)
# selection circle(s) (circles and arcs)
# give number of cut
# give number of cut, biColor 0/1
# cut the circle to x parts
# cut the circle to x arcs
# if biColor is <> 0 the arcs are colored alternately Red White Red White ....
#
#
#

__title__ = "cutCircle"
__title__ = "cutCircle"
__author__ = "Mario52"
__author__ = "Mario52"
__date__ = "24/02/2015"
__date__ = "09/03/2015"
__version__ = "00.02"


import Draft
import Draft
global biscolor ; biscolor = 0
def cutCircle(number):
def cutCircle(number = 2, biColor = 0):
global biscolor
def defbiColor(objet):
global biscolor
if biscolor == 0:
FreeCADGui.ActiveDocument.getObject(objet.Name).LineColor = (1.0,0.0,0.0) # 255 = 1 (10 = (1/255 * 10 ))
biscolor = 1
else:
FreeCADGui.ActiveDocument.getObject(objet.Name).LineColor = (1.0,1.0,1.0) # 255 = 1 (10 = (1/255 * 10 ))
biscolor = 0
selection = FreeCADGui.Selection.getSelection()
selection = FreeCADGui.Selection.getSelection()
for piece in selection:
for piece in selection:
Line 36: Line 48:
rayon = piece.Radius
rayon = piece.Radius
placem = piece.Placement
placem = piece.Placement

if (nom[:8] == "Cylinder"):
if (nom[:8] == "Cylinder"):
pivot0 = float(piece.Angle/number)
pivot0 = float(piece.Angle/number)
App.Console.PrintMessage("Cylinder"+"\n")
FreeCAD.Console.PrintMessage("Cylinder"+"\n")
else:
else:
pivot0 = float(360/number)
pivot0 = float(360/number)
App.Console.PrintMessage("Circle"+"\n")
FreeCAD.Console.PrintMessage("Circle"+"\n")
pivot1 = 0.0
pivot1 = 0.0
for i in range(number):
for i in range(number):
Draft.makeCircle(radius=rayon,placement=placem,face=False,startangle=(pivot1),endangle=(pivot0+pivot1),support=None)
cercle = Draft.makeCircle(radius=rayon,placement=placem,face=False,startangle=(pivot1),endangle=(pivot0+pivot1),support=None)
if biColor != 0:
# circle(radius=rayon,arc=(circonference/number),startangle=(pivot1), endangle=(pivot0+pivot1),placemObject=placem) # with "macro circle"
defbiColor(cercle)
pivot1 += pivot0
pivot1 += pivot0
elif nom[:3] == "Arc":
elif nom[:3] == "Arc":
App.Console.PrintMessage("Arc"+"\n")
FreeCAD.Console.PrintMessage("Arc"+"\n")
circonference = piece.Shape.Length
circonference = piece.Shape.Length
rayon = piece.Radius
rayon = piece.Radius
Line 58: Line 71:
pivot1 = 0.0
pivot1 = 0.0
for i in range(number):
for i in range(number):
Draft.makeCircle(radius=rayon,placement=placem,face=False,startangle=(pivot1+First),endangle=(pivot0+pivot1+First),support=None)
cercle = Draft.makeCircle(radius=rayon,placement=placem,face=False,startangle=(pivot1+First),endangle=(pivot0+pivot1+First),support=None)
if biColor != 0:
# circle(radius=rayon,arc=(circonference/number),startangle=(pivot1+First), endangle=(pivot0+pivot1+First),placemObject=placem) # with "macro circle"
defbiColor(cercle)
pivot1 += pivot0
pivot1 += pivot0


Line 70: Line 84:
==Version==
==Version==
ver 0.1 24/02/2015 :
ver 0.1 24/02/2015 :

ver 00.02 09/03/2015 : adding create arcs coloured altenat alternately Red White Red White .... or not

ver 00.01 24/02/2015 :


{{clear}}
{{clear}}

Revision as of 18:05, 9 March 2015

File:Text-x-python Macro cutCircle

Description
Coupe un cercle ou un arc en nombre d'arcs pécifié.

Author: mario52
Author
mario52
Download
None
Links
Macro Version
1.0
Date last modified
None
FreeCAD Version(s)
None
Default shortcut
None
See also
None

Description

Cette macro coupe un cercle(s) ou un arc(s) sélectionné(s) en plusieurs arcs contigus.

Utilisation

Copiez la macro dans la console Python de FreeCAD, sélectionnez les arcs et cercles concernés, tapez la commande cutCirle dans la console Python de FreeCAD:

cutCircle(5, 1)  # here with 5 arcs and coloured
cutCircle(4)     #

pour voir les cercles et arcs découpés dans cet exemple cinq arcs contigus.

l'objet(s) original(aux) n'est pas éffacé.

Script

Macro_cutCircle.FCMacro

# selection circle(s) (circles and arcs)
# give number of cut, biColor 0/1
# cut the circle to x arcs
# if biColor is <> 0 the arcs are colored alternately Red White Red White ....
# 
 
__title__   = "cutCircle"
__author__  = "Mario52"
__date__    = "09/03/2015"
__version__ = "00.02"

import Draft
global biscolor ; biscolor = 0
def cutCircle(number = 2, biColor = 0):
    global biscolor
    def defbiColor(objet):
        global biscolor
        if biscolor == 0:
            FreeCADGui.ActiveDocument.getObject(objet.Name).LineColor = (1.0,0.0,0.0) # 255 = 1 (10 = (1/255 * 10 ))
            biscolor = 1
        else:
            FreeCADGui.ActiveDocument.getObject(objet.Name).LineColor = (1.0,1.0,1.0) # 255 = 1 (10 = (1/255 * 10 ))
            biscolor = 0
    selection = FreeCADGui.Selection.getSelection()
    for piece in selection:
        nom = piece.Name
        if (nom[:6] == "Circle") or (nom[:8] == "Cylinder"):
            circonference = piece.Shape.Length
            rayon = piece.Radius
            placem = piece.Placement
 
            if (nom[:8] == "Cylinder"):
                pivot0 = float(piece.Angle/number)
                FreeCAD.Console.PrintMessage("Cylinder"+"\n")
            else:
                pivot0 = float(360/number)
                FreeCAD.Console.PrintMessage("Circle"+"\n")
            pivot1 = 0.0
            for i in range(number):
                cercle = Draft.makeCircle(radius=rayon,placement=placem,face=False,startangle=(pivot1),endangle=(pivot0+pivot1),support=None)
                if biColor != 0:
                    defbiColor(cercle)
                pivot1 += pivot0
        elif nom[:3] == "Arc":
            FreeCAD.Console.PrintMessage("Arc"+"\n")
            circonference = piece.Shape.Length
            rayon = piece.Radius
            placem = piece.Placement
            First = float(piece.FirstAngle)
            Last  = float(piece.LastAngle)
            pivot0 = abs((First - Last) / number)
            pivot1 = 0.0
            for i in range(number):
                cercle = Draft.makeCircle(radius=rayon,placement=placem,face=False,startangle=(pivot1+First),endangle=(pivot0+pivot1+First),support=None)
                if biColor != 0:
                    defbiColor(cercle)
                pivot1 += pivot0

Projet

Couper les cercles d'un cylindre.

Version

ver 0.1 24/02/2015 :

ver 00.02 09/03/2015 : adding create arcs coloured altenat alternately Red White Red White .... or not

ver 00.01 24/02/2015 :

Other languages: