Property/fr: Difference between revisions
No edit summary |
(Updating to match new version of source page) |
||
(16 intermediate revisions by 2 users not shown) | |||
Line 5: | Line 5: | ||
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. Voir aussi [[FeaturePython_Custom_Properties/fr|Propriétés personnalisées de FeaturePython]] et [[PropertyLink:_InList_and_OutList|PropertyLink: InList et OutList]] |
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> |
<span id="All_property_types"></span> |
||
== Tous les types de propriétés == |
== Tous les types de propriétés == |
||
Les [[ |
Les [[Scripted_objects/fr|objets créés par script]] personnalisés dans FreeCAD peuvent avoir des propriétés des types suivants : |
||
{| class="sortable wikitable" |
|||
{{Code|code= |
|||
|- |
|||
Acceleration |
|||
! Name !! Unit (if any) !! Remark |
|||
Angle |
|||
|- |
|||
Area |
|||
| Acceleration || style="text-align:center;" | m/s^2 |
|||
Bool |
|||
|- |
|||
BoolList |
|||
| AmountOfSubstance || style="text-align:center;" | mol |
|||
Color |
|||
|- |
|||
ColorList |
|||
| Angle || style="text-align:center;" | ° |
|||
Direction |
|||
|- |
|||
Distance |
|||
| Area || style="text-align:center;" | m^2 |
|||
ElectricPotential |
|||
|- |
|||
Enumeration |
|||
| Bool || |
|||
ExpressionContainer |
|||
|- |
|||
ExpressionEngine |
|||
| BoolList || |
|||
File |
|||
|- |
|||
FileIncluded |
|||
| Color || |
|||
Float |
|||
|- |
|||
FloatConstraint |
|||
| ColorList || |
|||
FloatList |
|||
|- |
|||
Font |
|||
| CurrentDensity || style="text-align:center;" | A/m^2 || {{Version|0.21}} |
|||
Force |
|||
|- |
|||
Frequency |
|||
| Density || style="text-align:center;" | kg/m^3 |
|||
Geometry |
|||
|- |
|||
Integer |
|||
| Direction || |
|||
IntegerConstraint |
|||
|- |
|||
IntegerList |
|||
| DissipationRate || style="text-align:center;" | m^2/s^3 || {{Version|0.21}} |
|||
IntegerSet |
|||
|- |
|||
Length |
|||
| Distance || style="text-align:center;" | m |
|||
Link |
|||
|- |
|||
LinkList |
|||
| DynamicViscosity || style="text-align:center;" | Pa*s || {{Version|0.21}} |
|||
LinkSubList |
|||
|- |
|||
Lists |
|||
| ElectricalCapacitance || style="text-align:center;" | F || {{Version|0.21}} |
|||
Map |
|||
|- |
|||
Material |
|||
| ElectricalConductance || style="text-align:center;" | S || {{Version|0.21}} |
|||
MaterialList |
|||
|- |
|||
Matrix |
|||
| ElectricalConductivity || style="text-align:center;" | S/m || {{Version|0.21}} |
|||
PartShape |
|||
|- |
|||
Path |
|||
| ElectricalInductance|| style="text-align:center;" | H || {{Version|0.21}} |
|||
Percent |
|||
|- |
|||
Placement |
|||
| ElectricalResistance || style="text-align:center;" | Ohm || {{Version|0.21}} |
|||
PlacementLink |
|||
|- |
|||
PlacementList |
|||
| ElectricCharge || style="text-align:center;" | C || {{Version|0.21}} |
|||
Position |
|||
|- |
|||
Precision |
|||
| ElectricCurrent || style="text-align:center;" | A || {{Version|0.21}} |
|||
Pressure |
|||
|- |
|||
PythonObject |
|||
| ElectricPotential || style="text-align:center;" | V || {{Version|0.20}} |
|||
Quantity |
|||
|- |
|||
QuantityConstraint |
|||
| Enumeration || |
|||
Rotation |
|||
|- |
|||
Speed |
|||
| ExpressionEngine || |
|||
Stiffness |
|||
|- |
|||
String |
|||
| File || |
|||
StringList |
|||
|- |
|||
VacuumPermittivity |
|||
| FileIncluded || |
|||
Vector |
|||
|- |
|||
VectorDistance |
|||
| Float || |
|||
VectorList |
|||
|- |
|||
Volume |
|||
| 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 82: | 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 : |
|||
{{Code|code= |
{{Code|code= |
||
Line 93: | Line 264: | ||
<span id="Scripting"></span> |
<span id="Scripting"></span> |
||
== |
== Script == |
||
{{Emphasis|Voir aussi:}} [[FreeCAD_Scripting_Basics/fr|FreeCAD |
{{Emphasis|Voir aussi :}} [[FreeCAD_Scripting_Basics/fr|FreeCAD Script de base]]. |
||
Un [[ |
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 107: | 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") |
||
Line 122: | 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 131: | 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 asPart::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"
- Scripts FreeCAD : Python, Introduction à Python, Tutoriel sur les scripts Python, Débuter avec les scripts
- Modules : Modules intégrés, Unités, Quantity
- Ateliers : Création d'atelier, Commands Gui, Les commandes, Installer des ateliers supplémentaires
- Maillages et objets Parts : Scripts Mesh, Script de données topologiques, Conversion objet Mesh en Part, PythonOCC
- Objets paramétriques : Objets créés par script, Viewproviders (Icône personnalisée dans l'arborescence)
- Scénographie : Graphe de scène Coin (Inventor), Pivy
- Interface graphique : Création d'interface, Création d'une boite de dialogue (1, 2, 3, 4, 5), PySide, Exemples PySide débutant, intermédiaire, expérimenté
- Macros : Macros, Comment installer des macros
- Intégration : Intégrer FreeCAD, Intégration de FreeCADGui
- Autre : Expressions, Extraits de codes, Fonction - tracer une ligne, Bibliothèque mathématique vectorielle de FreeCAD (déprécié)