Macro Stairs/it: Difference between revisions

From FreeCAD Documentation
(Created page with "==Descrizione== Crea una scala a chiocciola")
(Updating to match new version of source page)
(15 intermediate revisions by 3 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}}
{{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|left]]
[[File:Macro CircularStair.png|480px]]

{{clear}}
==Use==
==Uso==
Creare lo scalino modello, selezionare l'oggetto e avviare la macro
Create your stair nosing, select your object and launch the macro


*'''Hmarche''' : head marche
*'''Hmarche''' : alzata dello scalino
*'''nombre''' : number objects for 1 turn
*'''nombre''' : numero di scalini per giro
*'''rayon''' : radius (axe to object)
*'''rayon''' : raggio (rispetto all'asse dello scalino)
*'''tours''' : nomber turns pitch
*'''tours''' : numero di giri
*'''cylindre''' : 1=create cylinder 0=not cylinder
*'''cloner''' : 1=crea cloni 0=crea copie
*'''cylindre''' : 1=crea cilindro 0=senza cilindro (piantone)


==Script==
==Script==

ToolBar Icon [[Image:Macro_Stairs.png]]

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

<syntaxhighlight>
{{MacroCode|code=

# Select your object(s) give :
# Select your object(s) give :
# head marche
# head marche
Line 25: 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__ = "28/02/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.02"
__version__ = "00.04"


sel = FreeCADGui.Selection.getSelection()
sel = FreeCADGui.Selection.getSelection()
Line 41: Line 60:
rayon = 20 # radius (axe to object)
rayon = 20 # radius (axe to object)
tours = 5 # nomber turns pitch
tours = 5 # nomber turns pitch
cloner = 1 # 1=clone 0=copy
cylindre = 1 # 1=create cylinder 0=not cylinder
cylindre = 1 # 1=create cylinder 0=not cylinder
###############################################
###############################################
Line 46: 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:
obj = Draft.scale(sel,delta=App.Vector(1, 1, 1),center=App.Vector(),copy=True,legacy=True)
obj=Draft.clone(sel)
else:
obj = Draft.scale(sel,delta=App.Vector(1, 1, 1),center=App.Vector(),copy=True,legacy=True)
try:
try:
for io in range(len(obj)):
for io in range(len(obj)):
Line 72: Line 101:


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

</syntaxhighlight>

==Links==
}}
The discussion on the forum [http://forum.freecadweb.org/viewtopic.php?f=3&t=9921 Newbie question - spiral staris reloaded]

==Link==
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