BON CODE SOUS REVIT (2/3)

Pour faire suite à mon article précédent, on va améliorer notre code afin d’accroitre sa lisibilité.

Précision des unités


La gestion des unités est une véritable difficulté dans Revit car la base de données interne est en pieds ! Ainsi Revit a besoin et nous renvoi des dimensions qui ne sont pas métrique.

Modification 5 : précision des unités dans le nom des variables.


Je vous propose d’ajouter un suffixe au nom de nos variables composées d’un ‘-‘ et de l’abréviation de l’unité.
On utilisera donc les suffixes suivants :
_ft
_m
_cm
_mm

On remplace :

double radius = arc.Radius;

par

double radius_ft = arc.Radius;

Les nombres magiques


Il faut remplacer les nombres dont la correspondance n’est pas claire dans le code par des variables constantes.
On écrira les noms des constantes tout en majuscule avec un ‘_‘ entre chaque mot.

Modification 6 : suppression des nombres magiques


On remplace :

arc = Arc.Create(center, radius_ft + 3.2808399, 0.0, 2.0 * Math.PI, XYZ.BasisX, XYZ.BasisY);

par :

private const double M_TO_FEET = 3.2808399;
arc = Arc.Create(center, radius_ft + 1.0 * M_TO_FEET, 0.0, 2.0 * Math.PI, XYZ.BasisX, XYZ.BasisY);

Puis on remplace :

arc = Arc.Create(center, radius_ft + 1.0 * M_TO_FEET, 0.0, 2.0 * Math.PI, XYZ.BasisX, XYZ.BasisY);

par :

private const double DEGRES360 = 2.0 * Math.PI;
arc = Arc.Create(center, radius_ft + 1.0 * M_TO_FEET, 0.0, DEGRES360, XYZ.BasisX, XYZ.BasisY);

Gestion globale des erreurs


Si notre programme plante, il risque de planter Revit, et il faut absolument éviter cela.
Comme on ne pourra jamais éviter tous les bugs, il faut mettre en place un système de récupération des erreurs. C’est ce qu’on appel la gestion des exceptions.
Au minima, on mettra en place un « try catch » vide.

Modification 7 : mise en place de la récupération des exceptions.


On encapsule notre code dans un try et on retourne ‘failed’ dans le catch.

Gestion au cas par cas des erreurs


On se doit de tester le maximum de cas afin que le code ne plante pas.
Le sujet est vaste, mais on va s’intéresser ici à 3 erreurs classiques :
_division par zéro.
_conversion de chaine en nombre et vis-versa.
_plantage en cas d’argument d’entrée nul d’une méthode.
Nous n’avons pas de cas des deux premières erreurs dans notre code. Cependant, nous avons des arguments de fonction qui peuvent être nuls.

Modification 8 :


On ajoute les lignes suivantes :

if (referenceSelection == null)
{
transaction.RollBack();
       return Result.Failed;
} 
if (modelArc == null)
{
transaction.RollBack();
return Result.Failed;
}

Voila, on a un code qui fonctionne et qu’on arrive à comprendre en le lisant.
On pourrait ajouter un commentaire afin d’expliquer au lecteur l’obligation de convertir les dimensions en pieds lorsqu’on travaille avec la base de données Revit.

Ce bout de code est propre, mais pas réutilisable.

Fermer le menu