Makro Apothem-basierte Prisma-GUI
| Beschreibung |
|---|
| Dieses Makro zeigt dem Benutzer ein Dialogfeld an, in dem er den Abstand zwischen den Mittelpunkten, die Anzahl der Seiten und die Höhe eingeben kann, und erstellt dann ein Prisma basierend auf der Apothem oder dem Inradius eines Polygons. Dies kann äußerst praktisch sein, wenn man nur den Abstand zwischen den Flächen kennt. Ein Beispiel hierfür wären sechseckige Kunststoff- oder Metallprofile, die von Anbietern bereitgestellt werden. Die meisten Anbieter definieren solche Materialien anhand des Abstands zwischen den Flächen. Wenn man solche Materialien in seinen Projekten verwendet, kann dieses Makro eine echte Zeitersparnis sein. Versionsmakro : 1.0 Datum der letzten Änderung : 2014-12-31 FreeCAD version : Alle Herunterladen : Werkzeugleisten-Symbol Autor: Quick61 |
| Autor |
| Quick61 |
| Herunterladen |
| Werkzeugleisten-Symbol |
| Links |
| Makros Rezepte Wie man Makros installiert Symbolleisten anpassen |
| Macro-Version |
| 1.0 |
| Datum der letzten Änderung |
| 2014-12-31 |
| FreeCAD-Version(s) |
| Alle |
| Standardverknüpfung |
| None |
| Siehe auch |
| None |
Beschreibung
Dieses Makro zeigt dem Benutzer ein Dialogfeld an, in dem er den Abstand zwischen den Mittelpunkten, die Anzahl der Seiten und die Höhe eingeben kann, und erstellt dann ein Prisma basierend auf der Apothème oder dem Innenradius eines Polygons. Dies kann äußerst praktisch sein, wenn man nur den Abstand zwischen den Flächen kennt. Ein Beispiel hierfür wären sechseckige Kunststoff- oder Metallprofile, die von Anbietern bereitgestellt werden. Die meisten Anbieter definieren solche Materialien anhand des Abstands zwischen den Flächen. Wenn man solche Materialien in seinen Projekten verwendet, kann dieses Makro eine echte Zeitersparnis sein.
Anwendung
Kopiere das Makro in das FreeCAD-Makroverzeichnis. Führe das Makro dann entweder über den Dialog „Makro ausführen“ aus oder erstelle eine Verknüpfung, die über die benutzerdefinierte Symbolleiste verwendet werden kann.
Wenn das Makro ausgeführt wird, wird dem Benutzer ein Dialogfeld wie das unten abgebildete angezeigt. Geben Sie zunächst den gewünschten Abstand zwischen den Flächen ein. Dies kann eine beliebige Zahl sein, auch mit Dezimalstellen, jedoch keine Bruchzahlen. Geben Sie als Nächstes die Anzahl der Seiten ein. Diese Zahl muss eine ganze Zahl und für korrekte Ergebnisse auch eine gerade Zahl sein. Geben Sie zuletzt die gewünschte Höhe des Prismas ein. Auch hier kann es sich um eine beliebige Zahl handeln, die auch Dezimalstellen enthalten kann. Klicken Sie auf „OK“, um das Prisma in Ihrem Dokument zu erstellen.

Das Makro
Macro_Apothem_Based_Prism_GUI.FCMacro
# # # # # # # # # # #
#
# Apothem Based Prism
#
# This script will take the input of the distance between flats, (apothem, aka inradius),
# and the number of sidesfor a regular polygon along with a height and produce a
# correctly sized prism derived from the circumradius.
#
# # # # # # # # # # #
import FreeCAD, FreeCADGui, Part, PartGui, math
from FreeCAD import Base
from PySide import QtGui, QtCore
from math import cos, radians
App = FreeCAD
Gui = FreeCADGui
class p():
def priSm(self):
try:
dbf = float(self.d1.text())
nos = int(self.d2.text())
hth = float(self.d3.text())
aR = dbf / 2
op1 = 180/float(nos)
coS = cos(math.radians(op1))
cR = aR / coS
prism=App.ActiveDocument.addObject("Part::Prism","Prism")
prism.Polygon=nos
prism.Circumradius=cR
prism.Height=hth
prism.Placement=Base.Placement(Base.Vector(0.00,0.00,0.00),Base.Rotation(0.00,0.00,0.00,1.00))
prism.Label='Prism'
App.ActiveDocument.recompute()
Gui.SendMsgToActiveView("ViewFit")
except:
FreeCAD.Console.PrintError("Unable to complete task")
self.close()
def close(self):
self.dialog.hide()
#
# Make dialog box and get input for distance between flats, number of sides, and height
#
def __init__(self):
self.dialog = None
self.dialog = QtGui.QDialog()
self.dialog.resize(280,110)
self.dialog.setWindowTitle("Apothem Based Prism")
la = QtGui.QVBoxLayout(self.dialog)
iN1 = QtGui.QLabel("Distance Between Flats")
la.addWidget(iN1)
self.d1 = QtGui.QLineEdit()
la.addWidget(self.d1)
iN2 = QtGui.QLabel("Number Of Sides (Best results - use even numbers)")
la.addWidget(iN2)
self.d2 = QtGui.QLineEdit()
la.addWidget(self.d2)
iN3 = QtGui.QLabel("Prism Height")
la.addWidget(iN3)
self.d3 = QtGui.QLineEdit()
la.addWidget(self.d3)
okbox = QtGui.QDialogButtonBox(self.dialog)
okbox.setOrientation(QtCore.Qt.Horizontal)
okbox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
la.addWidget(okbox)
QtCore.QObject.connect(okbox, QtCore.SIGNAL("accepted()"), self.priSm)
QtCore.QObject.connect(okbox, QtCore.SIGNAL("rejected()"), self.close)
QtCore.QMetaObject.connectSlotsByName(self.dialog)
self.dialog.show()
self.dialog.exec_()
p()
Ergänzungen
SVG-Symbol zur Verwendung in benutzerdefinierten Symbolleisten-Verknüpfungen.
Danksagungen
Ein Dank an die FreeCAD-Hauptentwickler shoogen und FreeCAD-Programmierer wandererfan für ihre unschätzbare Hilfe und Beratung bei der Erstellung dieses Makros.