Macro Taglia Cerchio

From FreeCAD Documentation
This page is a translated version of the page Macro Cut Circle and the translation is 50% complete.
Outdated translations are marked like this.
Other languages:

Taglia Cerchio

Descrizione
Suddivide un cerchio o un arco nel numero richiesto di archi. Il nuovo cerchio viene creato nella coordinata reale dell'oggetto, non nelle coordinate del corpo.
(Riga di comando, incolla questa macro completa nella console Python).

Versione macro: 00.03
Ultima modifica: 2019-07-02
Download: Icon
Autore: mario52
Autore
mario52
Download
Icon
Link
Versione macro
00.03
Data ultima modifica
2019-07-02
Versioni di FreeCAD
None
Scorciatoia
Nessuna
Vedere anche
Nessuno

Descrizione

Questa macro suddivide un cerchio(i) o arco(i) in archi, gli archi possono essere di colori alternati per distinguerli.

CutCircle

Usage

Utilizzo

Copiare la macro cutCirle completa nella console Python di FreeCAD, selezionare il cerchio(i) e/o l'arco(i) poi digitare nella console:

Script

ToolBar Icon

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

Esempio

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

Project

In progetto

Applicare la suddivisione a un cilindro

Versione

ver 00.03 02/07/2019 : aggiunto "App.ActiveDocument.recompute()"

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

ver 00.01 24/02/2015 :