Macro Cut Circle
| Description |
|---|
| Cuts circles or arcs into multiple arcs. The created arcs can be colored alternately to distinguish them. (Command line, paste the complete macro in the Python console). Macro version: 00.03 Last modified: 2019-07-02 FreeCAD version: All Download: ToolBar Icon Author: mario52 |
| Author |
| mario52 |
| Download |
| ToolBar Icon |
| Links |
| Macros recipes How to install macros How to customize toolbars |
| Macro Version |
| 00.03 |
| Date last modified |
| 2019-07-02 |
| FreeCAD Version(s) |
| All |
| Default shortcut |
| None |
| See also |
| None |
Description
This macro cuts circles or arcs into multiple arcs. The created arcs can be colored alternately to distinguish them.
CutCircle
Usage
- Paste the macro cutCirle in the Python console.
- Press Enter (the code is now in memory).
- Select one or more circles or arcs.
- Invoke the
cutCircle()function with 1 or 2 arguments from the Python console:- Example with 1 argument:
cutCircle(4). This will create 4 new arcs for each selected circle or arc and stop there (no coloring). - Example with 2 arguments:
cutCircle(6, 1). This will create 6 new arcs for each selected circle or arc, colored alternately in red and white as shown in the image.
- Example with 1 argument:
- The original object is not deleted.
Script
Macro_Cut_Circle.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__ = "02/07/2019"
__version__ = "00.03"
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
App.ActiveDocument.recompute()
#cutCircle(5, 1) # here with 5 arcs and colored
#cutCircle(4) #
Example
cutCircle(5, 1) # here with 5 arcs and colored
cutCircle(4) #
Project
Cut circle to cylinder
Version
ver 00.03 02/07/2019 : add "App.ActiveDocument.recompute()"
ver 00.02 09/03/2015 : adding create arcs colored alternately Red White Red White .... or not
ver 00.01 24/02/2015 :
