Property/fr: Difference between revisions

From FreeCAD Documentation
(Updating to match new version of source page)
(Updating to match new version of source page)
 
(23 intermediate revisions by 4 users not shown)
Line 3: Line 3:
== Introduction ==
== Introduction ==


Une [[Property/fr|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'[[Property editor/fr|éditeur de propriétés]].
Une [[Property/fr|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'[[Property_editor/fr|é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.
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 [[FeaturePython_Custom_Properties/fr|Propriétés personnalisées de FeaturePython]] et [[PropertyLink:_InList_and_OutList/fr|PropertyLink: InList et OutList]]


<span id="All_property_types"></span>
== Tous les types de propriétés ==
== Tous les types de propriétés ==


Les [[scripted objects/fr|Objets créés par script]] personnalisés dans FreeCAD peuvent avoir des propriétés des types suivants :
Les [[Scripted_objects/fr|objets créés par script]] personnalisés dans FreeCAD peuvent avoir des propriétés des types suivants :

{{Code|code=
{| class="sortable wikitable"
Bool
|-
Float
! Name !! Unit (if any) !! Remark
FloatList
|-
FloatConstraint
| Acceleration || style="text-align:center;" | m/s^2
Angle
|-
Distance
| AmountOfSubstance || style="text-align:center;" | mol
ExpressionEngine
|-
Integer
| Angle || style="text-align:center;" | °
IntegerConstraint
|-
Percent
| Area || style="text-align:center;" | m^2
Enumeration
|-
IntegerList
| Bool ||
String
|-
StringList
| BoolList ||
Length
|-
Link
| Color ||
LinkList
|-
LinkSubList
| ColorList ||
Matrix
|-
Vector
| CurrentDensity || style="text-align:center;" | A/m^2 || {{Version|0.21}}
VectorList
|-
VectorDistance
| Density || style="text-align:center;" | kg/m^3
Placement
|-
PlacementLink
| Direction ||
PythonObject
|-
Color
| DissipationRate || style="text-align:center;" | m^2/s^3 || {{Version|0.21}}
ColorList
|-
Material
| Distance || style="text-align:center;" | m
Path
|-
File
| DynamicViscosity || style="text-align:center;" | Pa*s || {{Version|0.21}}
FileIncluded
|-
PartShape
| ElectricalCapacitance || style="text-align:center;" | F || {{Version|0.21}}
FilletContour
|-
Circle
| ElectricalConductance || style="text-align:center;" | S || {{Version|0.21}}
}}
|-
| ElectricalConductivity || style="text-align:center;" | S/m || {{Version|0.21}}
|-
| ElectricalInductance|| style="text-align:center;" | H || {{Version|0.21}}
|-
| ElectricalResistance || style="text-align:center;" | Ohm || {{Version|0.21}}
|-
| ElectricCharge || style="text-align:center;" | C || {{Version|0.21}}
|-
| ElectricCurrent || style="text-align:center;" | A || {{Version|0.21}}
|-
| ElectricPotential || style="text-align:center;" | V || {{Version|0.20}}
|-
| Enumeration ||
|-
| ExpressionEngine ||
|-
| File ||
|-
| FileIncluded ||
|-
| Float ||
|-
| FloatConstraint ||
|-
| FloatList ||
|-
| Font ||
|-
| Force || style="text-align:center;" | N
|-
| Frequency || style="text-align:center;" | Hz
|-
| HeatFlux || style="text-align:center;" | W/m^2|| {{Version|0.21}}
|-
| Integer ||
|-
| IntegerConstraint ||
|-
| IntegerList ||
|-
| IntegerSet ||
|-
| InverseArea || style="text-align:center;" | 1/m^2 || {{Version|0.21}}
|-
| InverseLength || style="text-align:center;" | 1/m || {{Version|0.21}}
|-
| InverseVolume || style="text-align:center;" | 1/m^3 || {{Version|0.21}}
|-
| KinematicViscosity || style="text-align:center;" | m^2/s || {{Version|0.21}}
|-
| Length || style="text-align:center;" | m
|-
| Link ||
|-
| LinkChild ||
|-
| LinkGlobal ||
|-
| LinkHidden ||
|-
| LinkList ||
|-
| LinkListChild ||
|-
| LinkListGlobal ||
|-
| LinkListHidden ||
|-
| LinkSub ||
|-
| LinkSubChild ||
|-
| LinkSubGlobal ||
|-
| LinkSubHidden ||
|-
| LinkSubList ||
|-
| LinkSubListChild ||
|-
| LinkSubListGlobal ||
|-
| LinkSubListHidden ||
|-
| LuminousIntensity || style="text-align:center;" | cd || {{Version|0.21}}
|-
| MagneticFieldStrength || style="text-align:center;" | A/m || {{Version|0.21}}
|-
| MagneticFlux || style="text-align:center;" | Wb or V*s || {{Version|0.21}}
|-
| MagneticFluxDensity || style="text-align:center;" | T || {{Version|0.21}}
|-
| Magnetization || style="text-align:center;" | A/m || {{Version|0.21}}
|-
| Map ||
|-
| Mass || style="text-align:center;" | kg || {{Version|0.21}}
|-
| Material ||
|-
| MaterialList ||
|-
| Matrix ||
|-
| PartShape || || a Part property, is accessed as</br>{{incode|Part::PropertyPartShape}}
|-
| Path ||
|-
| Percent ||
|-
| PersistentObject ||
|-
| Placement ||
|-
| PlacementLink ||
|-
| PlacementList ||
|-
| Position ||
|-
| Power || style="text-align:center;" | W || {{Version|0.21}}
|-
| Precision ||
|-
| Pressure || style="text-align:center;" | Pa
|-
| PythonObject ||
|-
| Quantity ||
|-
| QuantityConstraint ||
|-
| Rotation ||
|-
| ShearModulus || style="text-align:center;" | Pa || {{Version|0.21}}
|-
| SpecificEnergy || style="text-align:center;" | m^2/s^2 or J/kg || {{Version|0.21}}
|-
| SpecificHeat || style="text-align:center;" | J/kg/K || {{Version|0.21}}
|-
| Speed || style="text-align:center;" | m/s
|-
| Stiffness || style="text-align:center;" | m/s^2
|-
| Stress || style="text-align:center;" | Pa || {{Version|0.21}}
|-
| String ||
|-
| StringList ||
|-
| Temperature || style="text-align:center;" | K || {{Version|0.21}}
|-
| ThermalConductivity || style="text-align:center;" | W/m/K || {{Version|0.21}}
|-
| ThermalExpansionCoefficient || style="text-align:center;" | 1/K || {{Version|0.21}}
|-
| ThermalTransferCoefficient || style="text-align:center;" | W/m^2/K || {{Version|0.21}}
|-
| Time || style="text-align:center;" | s || {{Version|0.21}}
|-
| UltimateTensileStrength || style="text-align:center;" | Pa || {{Version|0.21}}
|-
| UUID ||
|-
| VacuumPermittivity || style="text-align:center;" | s^4*A^2 / (m^3*kg)
|-
| Vector ||
|-
| VectorDistance ||
|-
| VectorList ||
|-
| Velocity || style="text-align:center;" | m/s || {{Version|0.21}}
|-
| Volume || style="text-align:center;" | l or m^3
|-
| VolumeFlowRate || style="text-align:center;" | l/s or m^3/s || {{Version|0.21}}
|-
| VolumetricThermalExpansionCoefficient || style="text-align:center;" | 1/K || {{Version|0.21}}
|-
| Work || style="text-align:center;" | J || {{Version|0.21}}
|-
| XLink ||
|-
| XLinkList ||
|-
| XLinkSub ||
|-
| XLinkSubList ||
|-
| YieldStrength || style="text-align:center;" | Pa || {{Version|0.21}}
|-
| YoungsModulus || style="text-align:center;" | Pa || {{Version|0.21}}
|}


En interne, le nom de la propriété est préfixé par {{incode|App::Property}}:
En interne, le nom de la propriété est préfixé par {{incode|App::Property}} :
{{Code|code=
{{Code|code=
App::PropertyBool
App::PropertyBool
Line 57: Line 253:
Rappelez-vous qu'il s'agit de propriétés {{Emphasis|types}}. Un même objet peut avoir plusieurs propriétés du même type, mais avec des noms différents.
Rappelez-vous qu'il s'agit de propriétés {{Emphasis|types}}. Un même objet peut avoir plusieurs propriétés du même type, mais avec des noms différents.


par exemple:
Par exemple :


{{Code|code=
{{Code|code=
Line 67: Line 263:
Cela indique un objet avec trois propriétés de type "Float", nommées respectivement "Length", "Width" et "Height".
Cela indique un objet avec trois propriétés de type "Float", nommées respectivement "Length", "Width" et "Height".


<span id="Scripting"></span>
== Scrip ==
== Script ==


{{Emphasis|See also:}} [[FreeCAD Scripting Basics/fr|FreeCAD scrip de base]]
{{Emphasis|Voir aussi :}} [[FreeCAD_Scripting_Basics/fr|FreeCAD Script de base]].


Un [[scripted objects/fr|objet scripté]] est créé en premier, puis les propriétés lui sont attribuées.
Un [[Scripted_objects/fr|objet scripté]] est créé en premier, puis les propriétés lui sont attribuées.
{{Code|code=
{{Code|code=
obj = App.ActiveDocument.addObject("Part::Feature", "CustomObject")
obj = App.ActiveDocument.addObject("Part::Feature", "CustomObject")
Line 81: Line 278:
En général, les propriétés {{Emphasis|Data}} sont affectées à l'aide de la méthode {{incode|addProperty()}} de l'objet. D'autre part, les propriétés {{Emphasis|View}} sont normalement fournies automatiquement par l'objet parent à partir duquel l'objet scripté est dérivé.
En général, les propriétés {{Emphasis|Data}} sont affectées à l'aide de la méthode {{incode|addProperty()}} de l'objet. D'autre part, les propriétés {{Emphasis|View}} sont normalement fournies automatiquement par l'objet parent à partir duquel l'objet scripté est dérivé.


Par exemple:
Par exemple :
* Dériver de {{incode|App::FeaturePython}} fournit uniquement 4 propriétés {{Emphasis|View}}: "Display Mode", "On Top When Selected", "Show In Tree" et "Visibility".
* Dériver de {{incode|App::FeaturePython}} fournit uniquement 4 propriétés {{Emphasis|View}}: "Display Mode", "On Top When Selected", "Show In Tree" et "Visibility".
* Dériver de {{incode|Part::Feature}} fournit 17 propriétés {{Emphasis|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".
* Dériver de {{incode|Part::Feature}} fournit 17 propriétés {{Emphasis|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 {{Emphasis|View}} peuvent également être affectées à l'aide de la méthode {{incode|addProperty()}} de l'objet viewprovider.


Néanmoins, les propriétés {{Emphasis|View}} peuvent également être affectées à l'aide de la méthode {{incode|addProperty()}} de l'objet fournisseur de vue.
{{Code|code=
{{Code|code=
obj.ViewObject.addProperty("App::PropertyBool", "SuperVisibility", "Base", "Make the object glow")
obj.ViewObject.addProperty("App::PropertyBool", "SuperVisibility", "Base", "Make the object glow")
}}
}}


<span id="Source_code"></span>
== Code source ==
== Code source ==


Line 95: Line 294:


Ils sont importés et initialisés dans {{incode|[https://github.com/FreeCAD/FreeCAD/blob/9c27f1078e5ec516fe882aac1a27f5c6c6174554/src/App/Application.cpp#L1681-L1758 src/App/Application.cpp]}}.
Ils sont importés et initialisés dans {{incode|[https://github.com/FreeCAD/FreeCAD/blob/9c27f1078e5ec516fe882aac1a27f5c6c6174554/src/App/Application.cpp#L1681-L1758 src/App/Application.cpp]}}.

{{Code|lang=cpp|code=
{{Code|lang=cpp|code=
#include "Property.h"
#include "Property.h"
Line 104: Line 304:
#include "PropertyExpressionEngine.h"
#include "PropertyExpressionEngine.h"
}}
}}



{{Powerdocnavi{{#translation:}}}}
{{Powerdocnavi{{#translation:}}}}
[[Category:Developer Documentation{{#translation:}}]]
[[Category:Developer Documentation{{#translation:}}]]
[[Category:Python Code{{#translation:}}]]
[[Category:Python Code{{#translation:}}]]
{{clear}}

Latest revision as of 16:26, 20 May 2023

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 :

Name Unit (if any) Remark
Acceleration m/s^2
AmountOfSubstance mol
Angle °
Area m^2
Bool
BoolList
Color
ColorList
CurrentDensity A/m^2 introduced in version 0.21
Density kg/m^3
Direction
DissipationRate m^2/s^3 introduced in version 0.21
Distance m
DynamicViscosity Pa*s introduced in version 0.21
ElectricalCapacitance F introduced in version 0.21
ElectricalConductance S introduced in version 0.21
ElectricalConductivity S/m introduced in version 0.21
ElectricalInductance H introduced in version 0.21
ElectricalResistance Ohm introduced in version 0.21
ElectricCharge C introduced in version 0.21
ElectricCurrent A introduced in version 0.21
ElectricPotential V introduced in version 0.20
Enumeration
ExpressionEngine
File
FileIncluded
Float
FloatConstraint
FloatList
Font
Force N
Frequency Hz
HeatFlux W/m^2 introduced in version 0.21
Integer
IntegerConstraint
IntegerList
IntegerSet
InverseArea 1/m^2 introduced in version 0.21
InverseLength 1/m introduced in version 0.21
InverseVolume 1/m^3 introduced in version 0.21
KinematicViscosity m^2/s introduced in version 0.21
Length m
Link
LinkChild
LinkGlobal
LinkHidden
LinkList
LinkListChild
LinkListGlobal
LinkListHidden
LinkSub
LinkSubChild
LinkSubGlobal
LinkSubHidden
LinkSubList
LinkSubListChild
LinkSubListGlobal
LinkSubListHidden
LuminousIntensity cd introduced in version 0.21
MagneticFieldStrength A/m introduced in version 0.21
MagneticFlux Wb or V*s introduced in version 0.21
MagneticFluxDensity T introduced in version 0.21
Magnetization A/m introduced in version 0.21
Map
Mass kg introduced in version 0.21
Material
MaterialList
Matrix
PartShape a Part property, is accessed as
Part::PropertyPartShape
Path
Percent
PersistentObject
Placement
PlacementLink
PlacementList
Position
Power W introduced in version 0.21
Precision
Pressure Pa
PythonObject
Quantity
QuantityConstraint
Rotation
ShearModulus Pa introduced in version 0.21
SpecificEnergy m^2/s^2 or J/kg introduced in version 0.21
SpecificHeat J/kg/K introduced in version 0.21
Speed m/s
Stiffness m/s^2
Stress Pa introduced in version 0.21
String
StringList
Temperature K introduced in version 0.21
ThermalConductivity W/m/K introduced in version 0.21
ThermalExpansionCoefficient 1/K introduced in version 0.21
ThermalTransferCoefficient W/m^2/K introduced in version 0.21
Time s introduced in version 0.21
UltimateTensileStrength Pa introduced in version 0.21
UUID
VacuumPermittivity s^4*A^2 / (m^3*kg)
Vector
VectorDistance
VectorList
Velocity m/s introduced in version 0.21
Volume l or m^3
VolumeFlowRate l/s or m^3/s introduced in version 0.21
VolumetricThermalExpansionCoefficient 1/K introduced in version 0.21
Work J introduced in version 0.21
XLink
XLinkList
XLinkSub
XLinkSubList
YieldStrength Pa introduced in version 0.21
YoungsModulus Pa introduced in version 0.21

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".

Script

Voir aussi : FreeCAD Script 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 viewprovider.

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"