Property/fr: Difference between revisions

From FreeCAD Documentation
(Created page with "En interne, le nom de la propriété est préfixé par {{incode|App::Property}}:")
(Updating to match new version of source page)
 
(41 intermediate revisions by 5 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 55: Line 251:
}}
}}


Remember that these are property {{Emphasis|types}}. A single object may have many properties of the same type, but with different names.
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 :


For example:
{{Code|code=
{{Code|code=
obj.addProperty("App::PropertyFloat", "Length")
obj.addProperty("App::PropertyFloat", "Length")
Line 64: Line 261:
}}
}}


This indicates an object with three properties of type "Float", named "Length", "Width", and "Height", respectively.
Cela indique un objet avec trois propriétés de type "Float", nommées respectivement "Length", "Width" et "Height".


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


{{Emphasis|See also:}} [[FreeCAD Scripting Basics|FreeCAD scripting basics]]
{{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.
A [[scripted objects|scripted object]] is created first, and then properties are assigned.
{{Code|code=
{{Code|code=
obj = App.ActiveDocument.addObject("Part::Feature", "CustomObject")
obj = App.ActiveDocument.addObject("Part::Feature", "CustomObject")
Line 78: Line 276:
}}
}}


In general, {{Emphasis|Data}} properties are assigned by using the object's {{incode|addProperty()}} method. On the other hand, {{Emphasis|View}} properties are normally provided automatically by the parent object from which the scripted object is derived.
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 :
For example:
* Deriving from {{incode|App::FeaturePython}} provides only 4 {{Emphasis|View}} properties: "Display Mode", "On Top When Selected", "Show In Tree", and "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".
* Deriving from {{incode|Part::Feature}} provides 17 {{Emphasis|View}} properties: the previous four, plus "Angular Deflection", "Bounding Box", "Deviation", "Draw Style", "Lighting", "Line Color", "Line Width", "Point Color", "Point Size", "Selectable", "Selection Style", "Shape Color", and "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.


Nevertheless, {{Emphasis|View}} properties can also be assigned using the view provider object's {{incode|addProperty()}} method.
{{Code|code=
{{Code|code=
obj.ViewObject.addProperty("App::PropertyBool", "SupeVisibility", "Base", "Make the object glow")
obj.ViewObject.addProperty("App::PropertyBool", "SuperVisibility", "Base", "Make the object glow")
}}
}}
{{docnav/fr|[[Interface_Customization/fr|Personnalisation de l'interface]]|[[Workbenches/fr|Ateliers]]}}


<span id="Source_code"></span>
<div class="mw-translate-fuzzy">
== Code source ==
[[Category:User Documentation/fr]]

</div>
Dans le code source, les propriétés se trouvent dans divers fichiers {{FileName|src/App/Property*}} .

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=
#include "Property.h"
#include "PropertyContainer.h"
#include "PropertyUnits.h"
#include "PropertyFile.h"
#include "PropertyLinks.h"
#include "PropertyPythonObject.h"
#include "PropertyExpressionEngine.h"
}}


[[Category:Base]]


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

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"