Macro Apothem Based Prism GUI
| Description |
|---|
| Cette macro présente à l'utilisateur une boîte de dialogue dans laquelle il doit indiquer la distance entre les centres, le nombre de côtés et la hauteur, et crée un prisme basé sur l'apothème ou le rayon intérieur d'un polygone. Cela peut s'avérer extrêmement pratique lorsque l'on ne connaît que la distance entre les plats. C'est le cas, par exemple, des stocks hexagonaux de plastique ou de métal fournis par les vendeurs. La plupart des fournisseurs définissent ce type de stock par la distance entre les plats. Si vous utilisez ce type de stock dans vos projets, cette macro peut vous faire gagner du temps. Version macro : 1.0 Date dernière modification : 2014-12-31 Version FreeCAD : Toutes Téléchargement : Icône de la barre d'outils Auteur: Quick61 |
| Auteur |
| Quick61 |
| Téléchargement |
| Icône de la barre d'outils |
| Liens |
| Page des macros Comment installer une macro Comment créer une barre d'outils |
| Version Macro |
| 1.0 |
| Dernière modification |
| 2014-12-31 |
| Version(s) FreeCAD |
| Toutes |
| Raccourci clavier |
| None |
| Voir aussi |
| None |
Description
Cette macro présente à l'utilisateur une fenêtre de dialogue pour fournir la distance entre les centres, le nombre de côtés, et la hauteur permettra de créer un prisme sur la base du apothème ou in radius d'un polygone.
Utilisation
Copiez la macro dans votre répertoire des macros. lancez la macro ou créez un bouton raccourci dans une barre d'outils.
Lorsqu'elle est exécuté, le Macro présente à l'utilisateur une boîte de dialogue comme illustrée ci-dessous. Entrez d'abord la distance souhaitée entre les alvéoles. Cela peut être un nombre quelconque et peut inclure une valeur décimale, la macro ne reconnait pas les entrées fractionnaires. Ensuite, entrez le nombre de côtés. Ce nombre est un nombre entier et doit être un nombre pair pour des résultats corrects. Enfin entrez la hauteur que vous souhaitez donner au prisme. Encore une fois, cela peut être un nombre quelconque et peut inclure une valeur décimale. Cliquez sur OK et le prisme sera créé dans votre document.
La macro
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()
Ajouts
Le fichier icône SVG pour utiliser dans votre barre d'outils.
Remerciements
Remerciements à shoogen développeur et à wandererfan pour leur aide précieuse et les conseils dans la mise au point de cette macro.