Python-Programm für Wendeltreppen in AutoCAD und BricsCAD (Software)

Martin Vogel ⌂ @, Dortmund / Bochum, Donnerstag, 21.06.2018, 16:09 (vor 95 Tagen)

Um schnell mal eine Wendeltreppe in einem generischen CAD-Programm wie BricsCAD oder AutoCAD zu zeichnen, sind eine Anzahl sich wiederholender Schritte nötig, die man sinnvollerweise einem Programm überlässt.

Wer LISP mag, kann zum Beispiel das 1995 von Xue-dong Zhao geschriebene Spiral-Stair-Script SPST.LSP so anpassen, dass es auch unter aktuellen Programmversionen noch läuft. Es ist nach kurzer Suche an verschiedenen Orten im Web zu finden.

Man könnte aber auch einfach ein kleines Pythonprogramm schreiben, das eine Scriptdatei für AutoCAD oder BricsCAD zum Zeichnen einer Wendeltreppe erzeugt. Diese kann die Treppe dann gleich so bemessen, dass sie bequem zu gehen ist.

[image]

Das unten zu findende Programm Wendeltreppe.py fragt zuerst nach der gewünschten Höhe der Treppe in Zentimetern. Daraus ermittelt es die Zahl der Stufen, die erforderlich ist, um der optimalen Stufenhöhe von 17 Zentimetern so nah wie möglich zu kommen.

Der Innen- und Außendurchmesser der Wendel bestimmen die Stufenbreite. 30 Zentimeter vom äußeren Rand entfernt befindet sich die Lauflinie, welche die für eine bequeme und sichere Nutzung der Treppe optimale Stufentiefe und den erforderlichen Drehwinkel (auf 15° gerundet) festlegt. Dieser Drehwinkel kann noch verändert werden, um mehr Freiheit in der Gestaltung der Treppengeometrie zu haben.

Sind alle Geometrieparameter festgelegt, schreibt das Pythonprogramm das CAD-Script WENDELTREPPE.SCR. Wer BricsCAD verwendet, kann diese Datei einfach doppelklicken und hat im nächsten Augenblick eine fertige Wendeltreppe auf dem Bildschirm, bei der nur noch ein paar Kleinigkeiten wie Handlauf, Geländerstäbe oder eine schöne, ebenmäßig geformte Unterseite ergänzt werden müssen. AutoCAD unterstützt das Doppelklicken von Scriptdateien nicht; hier müssen Sie in einer neuen, leeren Datei den Befehl SCRIPT eintippen und im sich öffnenden Dialogfenster die Datei WENDELTREPPE.SCR suchen und ausführen.

  1. #!/usr/bin/env python3
  2. # benötigt mindestens Python 3.6
  3.  
  4. from math import pi, degrees
  5.  
  6. print("""
  7. Dieses Programm erzeugt eine AutoCAD/BricsCAD-Scriptdatei für eine
  8. Wendeltreppe.
  9.  
  10. Starten Sie die erzeugte Scriptdatei WENDELTREPPE.SCR im CAD-Programm
  11. in einer leeren Zeichnung (Einheit Zentimeter) mit dem Befehl SCRIPT!
  12. """)
  13.  
  14. def fi(s, vorgabe=None):
  15. "float input"
  16. while True:
  17. print(f"{s}{f' ({vorgabe})' if vorgabe else ''}: ",end="")
  18. inp = input().replace(",",".")
  19. if not inp:
  20. inp = vorgabe
  21. try:
  22. return float(inp)
  23. except:
  24. print("Fehler: Eingabe wurde nicht als Zahl erkannt.")
  25.  
  26. da = fi("Außendurchmesser der Treppe", 250)
  27. du = da - 60
  28. ul = pi * du
  29. print(f"Der Durchmesser der Lauflinie beträgt {du} cm.")
  30. print(f"Ihr Umfang beträgt {ul:.1f} cm.")
  31. di = fi("Innendurchmesser der Treppe", 50)
  32. ht = fi("Höhe der Treppe", 260)
  33. n = round(ht/17)
  34. hs = ht/n
  35. print(f"Die Treppe erhält {n} Stufen.")
  36. print(f"Die Stufenhöhe beträgt {hs:.1f} cm.")
  37. # rechnerischer Auftritt aus Schrittmaßregel
  38. ra = 63 - 2 * hs
  39. # rechnerischer Winkel der Treppe
  40. rw = 360 * n * ra / ul
  41. # gerundet auf 15°
  42. rwg = int(round(rw/15)*15)
  43. wt = fi("Gesamtdrehwinkel der Treppe",rwg)
  44. # Winkel einer Stufe
  45. ws = wt/n
  46. # Vorderseite der Stufe
  47. p0 = f"{di/2},0,0"
  48. p1 = f"{da/2},0,0"
  49. p2 = f"{da/2},0,{hs}"
  50. p3 = f"{di/2},0,{hs}"
  51.  
  52. with open("WENDELTREPPE.SCR","w") as scr:
  53. # Koordinateneingabe geht vor Objektfang
  54. scr.write("OSnapCoord 1\n")
  55. # Einheit Zentimeter
  56. scr.write("_InsUnits 5\n")
  57. # Vorderseite der Stufe
  58. scr.write(f"3DPoly {p0} {p1} {p2} {p3} s\n")
  59. # Rotieren
  60. scr.write(f"Rotation l 0,0,0 0,0,1 {ws}\n")
  61. # Block definieren
  62. scr.write(f"-Block Stufe 0,0,0 l \n")
  63. for i in range(n):
  64. scr.write(f"_-Insert Stufe\n0,0,{i*hs} 1 1 {i*ws}\n")
  65. # Anzeige anpassen
  66. scr.write("-APunkt -1,-1,1\n")
  67. scr.write("Zoom Gr\n")
  68.  
  69. input("Fertig. [Enter]")

--
Dipl.-Ing. Martin Vogel
Leiter des Bauforums

Heute schon programmiert? Einführung in Python 3 (PDF)

Tags:
Python, AutoCAD, BricsCAD, Script



gesamter Thread:

 RSS-Feed dieser Diskussion

powered by my little forum