Propriétés des objets

From FreeCAD Documentation
Revision as of 19:55, 10 August 2022 by David69 (talk | contribs)

Introduction

Une propriété est une information, telle qu'un nombre ou une chaîne de texte, attachée à un document FreeCAD ou à un objet d'un document. Les propriétés peuvent être visualisées et modifiées avec l'éditeur de propriétés.

Les propriétés jouent un rôle très important dans FreeCAD. Comme les objets dans FreeCAD sont "paramétriques", cela signifie que leur comportement est défini par leurs propriétés et par la manière dont ces propriétés sont utilisées comme entrée pour leurs méthodes de classe. Voir aussi Propriétés personnalisées de FeaturePython et PropertyLink: InList et OutList

Tous les types de propriétés

Les Objets créés par script personnalisés dans FreeCAD peuvent avoir des propriétés des types suivants :

Acceleration
Angle
Area
Bool
BoolList
Color
ColorList
Direction
Distance
ElectricPotential
Enumeration
ExpressionContainer
ExpressionEngine
File
FileIncluded
Float
FloatConstraint
FloatList
Font
Force
Frequency
Geometry
Integer
IntegerConstraint
IntegerList
IntegerSet
Length
Link
LinkList
LinkSubList
Lists
Map
Material
MaterialList
Matrix
PartShape
Path
Percent
Placement
PlacementLink
PlacementList
Position
Precision
Pressure
PythonObject
Quantity
QuantityConstraint
Rotation
Speed
Stiffness
String
StringList
VacuumPermittivity
Vector
VectorDistance
VectorList
Volume

En interne, le nom de la propriété est préfixé par App::Property:

App::PropertyBool
App::PropertyFloat
App::PropertyFloatList
...

Rappelez-vous qu'il s'agit de propriétés types. Un même objet peut avoir plusieurs propriétés du même type, mais avec des noms différents.

par exemple:

obj.addProperty("App::PropertyFloat", "Length")
obj.addProperty("App::PropertyFloat", "Width")
obj.addProperty("App::PropertyFloat", "Height")

Cela indique un objet avec trois propriétés de type "Float", nommées respectivement "Length", "Width" et "Height".

Scrip

See also: FreeCAD scrip de base

Un objet scripté est créé en premier, puis les propriétés lui sont attribuées.

obj = App.ActiveDocument.addObject("Part::Feature", "CustomObject")

obj.addProperty("App::PropertyFloat", "Velocity", "Parameter", "Body speed")
obj.addProperty("App::PropertyBool", "VelocityEnabled", "Parameter", "Enable body speed")

En général, les propriétés Data sont affectées à l'aide de la méthode addProperty() de l'objet. D'autre part, les propriétés View sont normalement fournies automatiquement par l'objet parent à partir duquel l'objet scripté est dérivé.

Par exemple:

  • Dériver de App::FeaturePython fournit uniquement 4 propriétés View: "Display Mode", "On Top When Selected", "Show In Tree" et "Visibility".
  • Dériver de Part::Feature fournit 17 propriétés View: les quatre précédentes, plus "Angular Deflection", "Zone de sélection", "Deviation", "Draw Style", "Lighting", "Line Color", "Line Width", "Point Color", "Point Size", "Selectable", "Selection Style", "Shape Color", et "Transparency".

Néanmoins, les propriétés View peuvent également être affectées à l'aide de la méthode addProperty() de l'objet fournisseur de vue.

obj.ViewObject.addProperty("App::PropertyBool", "SuperVisibility", "Base", "Make the object glow")

Code source

Dans le code source, les propriétés se trouvent dans divers fichiers src/App/Property* .

Ils sont importés et initialisés dans src/App/Application.cpp.

#include "Property.h"
#include "PropertyContainer.h"
#include "PropertyUnits.h"
#include "PropertyFile.h"
#include "PropertyLinks.h"
#include "PropertyPythonObject.h"
#include "PropertyExpressionEngine.h"