Macro Cut Circle: Difference between revisions

From FreeCAD Documentation
m (add image)
m (minor)
Line 6: Line 6:
This macro cut a circle(s) or arc(s) in multiple arcs, the arcs can be coloured alternately to distinguish.
This macro cut a circle(s) or arc(s) in multiple arcs, the arcs can be coloured alternately to distinguish.


[[File:Macro CutCircle 00.png|480px|CutCircle]]
[[File:Macro CutCircle 00.png|400px|CutCircle]]
{{clear}}
{{clear}}
==Use== <!--T:3-->
==Use== <!--T:3-->

Revision as of 12:03, 23 March 2015

File:Text-x-python Macro cutCircle

Description
Cut a circle or arc in x arcs.

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

This macro cut a circle(s) or arc(s) in multiple arcs, the arcs can be coloured alternately to distinguish.

CutCircle

Use

Copy the macro cutCirle complete in the Python console FreeCAD select the circle(s) and (or) arc(s) type in the console:

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

to see the circles and arcs cut here in the example 5 contiguous arcs.

The original object is not deleted.

Script

Macro_cutCircle.FCMacro

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

# 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 ....
# 

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

Project

Cut circle to cylinder

Version

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: