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 |
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.
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.
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()
SVG-Symbol zur Verwendung in benutzerdefinierten Symbolleisten-Verknüpfungen.
Ein Dank a die FreeCAD-Hauptentwickler shoogen und FreeCAD-Programmierer wandererfan für ihre unschätzbare Hilfe und Beratung bei der Erstellung dieses Makros.