Macro Stairs
File:Text-x-python Macro Stairs |
Description |
---|
Crée un escalier en suivant une hélice. Version macro : 00.03 Date dernière modification : 2015-03-01 Auteur: Mario52 |
Auteur |
Mario52 |
Téléchargement |
None |
Liens |
Page des macros Comment installer une macro Comment créer une barre d'outils |
Version Macro |
00.03 |
Dernière modification |
2015-03-01 |
Version(s) FreeCAD |
None |
Raccourci clavier |
None |
Voir aussi |
None |
Description
Crée un escalier en suivant une hélice.
Temporary code for external macro link. Do not use this code. This code is used exclusively by Addon Manager. Link for optional manual installation: [ Macro]
# This code is copied instead of the original macro code # to guide the user to the online download page. # Use it if the code of the macro is larger than 64 KB and cannot be included in the wiki # or if the RAW code URL is somewhere else in the wiki. from PySide import QtGui, QtCore diag = QtGui.QMessageBox(QtGui.QMessageBox.Information, "Information", "This macro must be downloaded from this link\n" "\n" "" + "\n" "\n" "Quit this window to access the download page") diag.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) diag.setWindowModality(QtCore.Qt.ApplicationModal) diag.exec_() import webbrowser webbrowser.open("")
Utilisation
Créez une marche réglez les paramètres dans la macro sélectionnez votre marche et lancez la macro.
- Hmarche : hauteur entre les marches
- nombre : nombre de marches sur un tour d'hélice
- rayon : rayon central (de l'axe au bord intérieur de l'escalier)
- tours : nombre tours
- cloner : 1=crée un clone 0=crée une copie
- cylindre : 1=crée un cylindre 0=ne crée pas de cylindre
Script
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
import FreeCAD, Draft, Part
__title__ = "CircularStair"
__author__ = "Mario52"
__date__ = "01/03/2015"
__url__ = "http://www.freecadweb.org/index-fr.html"
__version__ = "00.03"
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,((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))
a = ligne.Shape.Edges[0].Vertexes[1] # fin de la ligne
coor_X = (a.Point.x)
coor_Y = (a.Point.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()
Lien
La discussion sur le forum Newbie question - spiral staris reloaded