Macro SimpleProperties
Description |
---|
Cette macro donne des propriétés simples de l'objet sélectionné (volume, boundbox, ...) Version macro : 0.7 Date dernière modification : 2019-06-10 Version FreeCAD : 0.17+ Téléchargement : ToolBar Icon Auteur: OpenBrain |
Auteur |
OpenBrain |
Téléchargement |
ToolBar Icon |
Liens |
Page des macros Comment installer une macro Comment créer une barre d'outils |
Version Macro |
0.7 |
Dernière modification |
2019-06-10 |
Version(s) FreeCAD |
0.17+ |
Raccourci clavier |
None |
Voir aussi |
Arch_Survey Macro_FCInfo |
Description
Contexte
Cette macro a été écrite principalement pour que l'utilisateur puisse accéder à une information rapide et concise sur les propriétés physiques d'un objet. Cela vise en particulier à préparer un emballage d'objet & livraison.
Utilisation
Sélectionnez un objet et exécutez la macro. Il affichera dans une boîte de message:
- Volume de l'objet en litres
- Dimensions de la borne d'objet en millimètres
- Si un objet a été sélectionné en cliquant sur un bord, sa longueur est affichée en millimètres
- Si un objet a été sélectionné en cliquant sur une face, sa zone est affichée en mètres carrés.
Installation
La macro est disponible via le gestionnaire d'extensions. Le code est fourni sur cette page pour plus de commodité au cas où votre installation n'ait git-python. Bien qu'il devrait être à jour, la dernière version est toujours disponible sur FreeCAD-macro repository.
Pour des explications plus détaillées, voir la page Comment installer des macros.
Script
Limitations
- Un seul objet à la fois
Code
Macro_SimpleProperties.FCMacro
#!/usr/bin/python
#####################################
# Copyright (c) openBrain 2019
# Licensed under LGPL v2
#
# This FreeCAD macro will give basic properties of the selected object (volume, boundbox, ...)
#
#
# Version history :
# *0.7 : some typo improvement + commenting
# *0.6 : check if selected object has a valid shape
# *0.5 : beta release
#
#####################################
__Name__ = 'SimpleProperties'
__Comment__ = 'Gives basic properties of object (volume, boundbox, ...)'
__Author__ = 'openBrain'
__Version__ = '0.7'
__Date__ = '2019-06-10'
__License__ = 'LGPL v2'
__Web__ = 'https://www.freecadweb.org/wiki/Macro_SimpleProperties'
__Wiki__ = 'https://www.freecadweb.org/wiki/Macro_SimpleProperties'
__Icon__ = ''
__Help__ = 'Select an object and run the macro'
__Status__ = 'Beta'
__Requires__ = 'FreeCAD >= 0.17'
__dbg__ = False #True for debugging
SIGNUM = '%.3g' #Set the display format of numbers
from PySide import QtGui
def cslM(msg): #Print message in console
FreeCAD.Console.PrintMessage('\n')
FreeCAD.Console.PrintMessage(msg)
def cslW(msg): #Print warning in console
FreeCAD.Console.PrintMessage('\n')
FreeCAD.Console.PrintWarning(msg)
def cslE(msg): #Print error in console
FreeCAD.Console.PrintMessage('\n')
FreeCAD.Console.PrintError(msg)
def cslD(msg): #Print debug message in console
if __dbg__:
FreeCAD.Console.PrintMessage('\n')
FreeCAD.Console.PrintMessage("Debug : " + str(msg))
if __dbg__: ##Clear report view in debug mode
FreeCADGui.getMainWindow().findChild(QtGui.QTextEdit, "Report view").clear()
cslM("Starting Simple Properties macro")
if len(Gui.Selection.getSelection()) != 1: ##If not exactly one object selected, warn user & quit
cslE("One and only one object shall be selected ... Exiting")
elif not ("Shape" in Gui.Selection.getSelection()[0].PropertiesList): ##If selected object has no shape, warn user & exit
cslE("Selected object has no valid shape ... Exiting")
else:
obj = Gui.Selection.getSelection()[0] #Get selected object
retStr = ""
if len(Gui.Selection.getSelectionEx()[0].SubObjects) != 1: #If several object subobjects have been selected, ignore & warn user
cslW("No or several subobject(s) selected, will be ignored")
else:
objEx = Gui.Selection.getSelectionEx()[0].SubObjects[0] #If one subobject selected
if isinstance(objEx, Part.Edge): ##If it's an edge, print its length
retStr += "Edge length : " + '%s' % float(SIGNUM % (objEx.Length)) + " mm\n"
elif isinstance(objEx, Part.Face): ##If it's a face, print its area
retStr += "Face area : " + '%s' % float(SIGNUM % (objEx.Area/1000000)) + " m2\n"
else: ##If other (unsupported) type, warn user
cslD("Subobject type : " + str(objEx.ShapeType))
cslW("Unsupported type of subobject")
retStr += "Object volume : " + '%s' % float(SIGNUM % (obj.Shape.Volume/1000000)) + " l\n" #Print object volume
bb = obj.Shape.BoundBox #Get object boundbox
retStr += "Object boundbox : " + '%s' % float(SIGNUM % (bb.XLength)) + " x " + '%s' % float(SIGNUM % (bb.YLength)) + " x " + '%s' % float(SIGNUM % (bb.ZLength)) + " mm" + "\n" #Print object boundbox dimensions
QtGui.QMessageBox(QtGui.QMessageBox.Information, "Object Simple Props",retStr).exec_() #Display information in a message box
cslM("End")