Macro Stairs/it: Difference between revisions

From FreeCAD Documentation
(Updating to match new version of source page)
(Updating to match new version of source page)
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages/>
{{Macro/it|Icon=Text-x-python|Name=Macro Stairs|Name/it=Scala a chiocciola|Description=Crea una scala a chiocciola.|Author=Mario52|Version=00.03|Date=2015-03-01}}
{{Macro/it
|Name=Macro Stairs
|Translate=Scala a chiocciola
|Icon=Macro_Stairs.png
|Description=Crea una scala a chiocciola.
|Author=Mario52
|Version=00.04
|Date=2019-07-24
|FCVersion=All
|Download=[https://www.freecadweb.org/wiki/images/a/a3/Macro_Stairs.png ToolBar Icon]
}}


==Descrizione==
==Descrizione==
Crea una scala a chiocciola
Crea una scala a chiocciola


[[File:Macro CircularStair.png|480px]]


{{Codeextralink|}}

[[File:Macro CircularStair.png|480px|left]]
{{clear}}
==Uso==
==Uso==
Creare lo scalino modello, selezionare l'oggetto e avviare la macro
Creare lo scalino modello, selezionare l'oggetto e avviare la macro
Line 20: Line 28:


==Script==
==Script==

ToolBar Icon [[Image:Macro_Stairs.png]]

'''Macro_Stairs.FCMacro'''
'''Macro_Stairs.FCMacro'''

{{Code|code=
{{MacroCode|code=


# Select your object(s) give :
# Select your object(s) give :
Line 30: Line 42:
# the original object is not modify
# the original object is not modify
# Macro_Stairs.FCMacro
# Macro_Stairs.FCMacro
#

#01/03/2015
import FreeCAD, Draft, Part
import FreeCAD, Draft, Part


__title__ = "CircularStair"
__title__ = "CircularStair"
__author__ = "Mario52"
__author__ = "Mario52"
__date__ = "01/03/2015"
__date__ = "2019/07/24"
__url__ = "http://www.freecadweb.org/index-fr.html"
__url__ = "http://www.freecadweb.org/index-fr.html"
__wiki__ = "https://www.freecadweb.org/wiki/Macro_Stairs"
__version__ = "00.03"
__version__ = "00.04"


sel = FreeCADGui.Selection.getSelection()
sel = FreeCADGui.Selection.getSelection()
Line 52: Line 66:
vecligne=[FreeCAD.Vector(0.0,0.0,0.0),FreeCAD.Vector(rayon,0.0,0.0)] # vector for line directrice
vecligne=[FreeCAD.Vector(0.0,0.0,0.0),FreeCAD.Vector(rayon,0.0,0.0)] # vector for line directrice
ligne = Draft.makeWire(vecligne,closed=False,face=False,support=None) # creation de la ligne de base
ligne = Draft.makeWire(vecligne,closed=False,face=False,support=None) # creation de la ligne de base

coor_X = coor_Y = coor_Z = 0.0
coor_X = coor_Y = coor_Z = 0.0
for i0 in range(tours):
for i0 in range(tours):
for i in range(0,360,((360/nombre))): # boucle principale 0 to 360 degrees
for i in range(0,360,(int(360/nombre))): # boucle principale 0 to 360 degrees
FreeCAD.ActiveDocument.getObject(ligne.Name).Placement=App.Placement(App.Vector(0,0,coor_Z), App.Rotation(App.Vector(0,0,1),i), App.Vector(0,0,0))
FreeCAD.ActiveDocument.getObject(ligne.Name).Placement=App.Placement(App.Vector(0,0,coor_Z), App.Rotation(App.Vector(0,0,1),i), App.Vector(0,0,0))
try:
a = ligne.Shape.Edges[0].Vertexes[1] # fin de la ligne
a = ligne.Shape.Edges[0].Vertexes[1] # fin de la ligne
coor_X = (a.Point.x)
coor_Y = (a.Point.y)
coor_X = (a.Point.x)
coor_Y = (a.Point.y)
except Exception:
a = ligne.End
coor_X = (ligne.End.x) # fin de la ligne X
coor_Y = (ligne.End.y) # fin de la ligne Y


if cloner == 1:
if cloner == 1:
Line 81: Line 101:


FreeCAD.ActiveDocument.recompute()
FreeCAD.ActiveDocument.recompute()



}}
}}

==Link==
==Link==
La discussione nel forum [http://forum.freecadweb.org/viewtopic.php?f=3&t=9921 Newbie question - spiral staris reloaded]
La discussione nel forum [http://forum.freecadweb.org/viewtopic.php?f=3&t=9921 Newbie question - spiral stairs reloaded]


{{clear}}
{{clear}}
<languages/>

Revision as of 11:21, 23 May 2020

Other languages:

Scala a chiocciola

Descrizione
Crea una scala a chiocciola.

Versione macro: 00.04
Ultima modifica: 2019-07-24
Versione FreeCAD: All
Download: ToolBar Icon
Autore: Mario52
Autore
Mario52
Download
ToolBar Icon
Link
Versione macro
00.04
Data ultima modifica
2019-07-24
Versioni di FreeCAD
All
Scorciatoia
Nessuna
Vedere anche
Nessuno

Descrizione

Crea una scala a chiocciola

Uso

Creare lo scalino modello, selezionare l'oggetto e avviare la macro

  • Hmarche  : alzata dello scalino
  • nombre  : numero di scalini per giro
  • rayon  : raggio (rispetto all'asse dello scalino)
  • tours  : numero di giri
  • cloner  : 1=crea cloni 0=crea copie
  • cylindre : 1=crea cilindro 0=senza cilindro (piantone)

Script

ToolBar Icon

Macro_Stairs.FCMacro

# Select your object(s) give :
#     head marche
#     number objects for 1 turn
#     radius (axe to object)
#     number turns
# the original object is not modify
# Macro_Stairs.FCMacro
# 
#01/03/2015 
import FreeCAD, Draft, Part

__title__   = "CircularStair"
__author__  = "Mario52"
__date__    = "2019/07/24"
__url__     = "http://www.freecadweb.org/index-fr.html"
__wiki__    = "https://www.freecadweb.org/wiki/Macro_Stairs"
__version__ = "00.04"

sel = FreeCADGui.Selection.getSelection()

############## Modify here ####################
Hmarche  = 10  # head marche
nombre   = 18  # number objects for 1 turn
rayon    = 20  # radius (axe to object)
tours    = 5  # nomber turns pitch 
cloner   = 1   # 1=clone    0=copy
cylindre = 1   # 1=create cylinder  0=not cylinder
###############################################

vecligne=[FreeCAD.Vector(0.0,0.0,0.0),FreeCAD.Vector(rayon,0.0,0.0)]   # vector for line directrice
ligne = Draft.makeWire(vecligne,closed=False,face=False,support=None)  # creation de la ligne de base

coor_X = coor_Y = coor_Z = 0.0
for i0 in range(tours):
    for i in range(0,360,(int(360/nombre))):                                  # boucle principale 0 to 360 degrees
        FreeCAD.ActiveDocument.getObject(ligne.Name).Placement=App.Placement(App.Vector(0,0,coor_Z), App.Rotation(App.Vector(0,0,1),i), App.Vector(0,0,0))
        try:
            a = ligne.Shape.Edges[0].Vertexes[1]       # fin de la ligne
            coor_X = (a.Point.x)
            coor_Y = (a.Point.y)
        except Exception:
            a = ligne.End         
            coor_X = (ligne.End.x)                      # fin de la ligne X
            coor_Y = (ligne.End.y)                      # fin de la ligne Y

        if cloner == 1:
            obj=Draft.clone(sel)
        else:
            obj = Draft.scale(sel,delta=App.Vector(1, 1, 1),center=App.Vector(),copy=True,legacy=True)
        try:
            for io in range(len(obj)):
                obj[io].Placement=App.Placement(App.Vector(coor_X,coor_Y,coor_Z), App.Rotation(i,0,0), App.Vector(0,0,0))
        except Exception:
            obj.Placement=App.Placement(App.Vector(coor_X,coor_Y,coor_Z), App.Rotation(i,0,0), App.Vector(0,0,0))

        coor_Z += Hmarche
App.ActiveDocument.removeObject(ligne.Name)                            # remove ligne de base directrice

# create cylinder
if cylindre == 1:
    App.ActiveDocument.addObject("Part::Cylinder","Cylinder")
    App.ActiveDocument.ActiveObject.Label = "Cylindre"
    FreeCAD.ActiveDocument.ActiveObject.Height = (Hmarche * nombre * tours)    # heigth of cylinder
    FreeCAD.ActiveDocument.ActiveObject.Radius = (rayon)                       # radius of cylinder

FreeCAD.ActiveDocument.recompute()

Link

La discussione nel forum Newbie question - spiral stairs reloaded