Comment implémenter un calcul conditionnel pour un attribut de bloc AutoCAD, tel que la détermination d’unités de passage (UP) basées sur la dimension d’une porte (par exemple, si la dimension est entre 90 et 150, alors 1 UP) ?
La création d’attributs AutoCAD avec des formules conditionnelles complexes (type ‹ SI… ALORS… ›) directement intégrées dans leur définition n’est pas nativement supportée par les champs ou les attributs standards d’AutoCAD pour des logiques de plages ou des conditions multiples. Les champs permettent de récupérer des propriétés d’objets ou des expressions simples, mais pas des structures conditionnelles avancées comme celles d’un tableur.
Pour atteindre l’objectif de calculer des unités de passage (UP) basées sur des dimensions de porte, plusieurs approches sont possibles, allant des fonctionnalités natives d’AutoCAD aux solutions de programmation :
-
Utilisation de Blocs Dynamiques avec Tables de Consultation (Lookup Tables)
C’est la méthode la plus robuste et native d’AutoCAD pour gérer des valeurs conditionnelles sans programmation.- Principe : Un bloc dynamique contient un paramètre (ex: largeur de porte) et une table de consultation qui associe des plages de valeurs de ce paramètre à des valeurs d’attribut (ex: UP).
- Procédure :
- Créer un bloc dynamique : Définissez un paramètre linéaire pour la largeur de la porte.
- Ajouter un attribut : Créez un attribut pour l’UP (par exemple,
UP_PORTE). - Insérer une table de consultation : Dans l’éditeur de blocs, ajoutez une action « Table de consultation » (Lookup Table).
- Définir les propriétés :
- Ajoutez le paramètre de largeur comme propriété d’entrée.
- Ajoutez l’attribut
UP_PORTEcomme propriété de sortie. - Remplissez la table avec vos conditions. Pour des plages, vous devrez définir des valeurs discrètes ou utiliser des paramètres de visibilité combinés. Exemple :
Largeur|UP_PORTE60|090|1150|2
- Lier l’attribut à la table : L’attribut
UP_PORTEsera automatiquement mis à jour en fonction de la valeur de la largeur choisie dans le bloc dynamique.
- Avantages : Solution intégrée, visuelle, facile à utiliser une fois configurée, gère des valeurs discrètes ou des plages définies.
- Inconvénients : Nécessite une définition manuelle des entrées/sorties dans la table.
-
Utilisation de Blocs Dynamiques avec États de Visibilité
Cette méthode est plus simple pour un nombre limité de cas, comme envisagé par l’utilisateur final.- Principe : Créer différentes versions de l’attribut (ou du bloc entier) pour chaque condition et les rendre visibles/invisibles selon un paramètre de visibilité.
- Procédure :
- Créer un bloc dynamique : Ajoutez un paramètre de visibilité.
- Définir les états de visibilité : Créez un état pour chaque condition (ex: « Porte 90-150cm = 1 UP », « Porte >150cm = 2 UP »).
- Associer les attributs : Dans chaque état de visibilité, définissez l’attribut
UP_PORTEavec la valeur correspondante. Cachez les autres attributs ou géométries non pertinentes pour cet état.
- Avantages : Facile à mettre en œuvre pour des cas simples et distincts.
- Inconvénients : Moins flexible pour des plages continues, peut entraîner une duplication d’objets et une maintenance plus lourde si le nombre de conditions est élevé.
-
Développement Personnalisé (LISP ou .NET)
Pour une logique complexe, des calculs dynamiques non couverts par les fonctionnalités natives, ou une automatisation poussée.- Principe : Écrire un programme qui lit la valeur d’un attribut (dimension), applique une logique conditionnelle (IF/ELSE IF/ELSE) et met à jour la valeur d’un autre attribut (UP).
- Procédure (Exemple LISP) :
- Créer une fonction LISP : Cette fonction prendrait le bloc comme argument ou itérerait sur les blocs du dessin.
- Accéder aux attributs : Lire la valeur de l’attribut de dimension (ex:
DIM_PORTE). - Appliquer la logique : Utiliser des structures conditionnelles LISP (
condouif) pour déterminer la valeur de l’UP. Par exemple :(if (and (>= dim_porte 90) (< dim_porte 150)) (setq up_val 1) (if (>= dim_porte 150) (setq up_val 2) (setq up_val 0) ; Valeur par défaut ou pour < 90 ) ) - Mettre à jour l’attribut : Modifier la valeur de l’attribut UP (
UP_PORTE) du bloc. - Déclencher la fonction : La fonction peut être appelée manuellement, ou automatiquement via un événement (par exemple, à la modification du bloc, à l’enregistrement du dessin, ou via un réacteur).
- Avantages : Flexibilité maximale, gestion de logiques très complexes, automatisation complète.
- Inconvénients : Nécessite des compétences en programmation, maintenance du code.
Recommandation :
Pour la plupart des cas de calculs conditionnels basés sur des paramètres de bloc, la méthode des Blocs Dynamiques avec Tables de Consultation est la solution la plus appropriée et la plus professionnelle dans AutoCAD. Elle est native, paramétrique et ne requiert pas de programmation. Si la logique devient trop complexe ou nécessite des calculs mathématiques avancés et une automatisation poussée, le développement LISP ou .NET devient indispensable.