Comment ajuster l’espacement des cotes dans AutoCAD 2007, idéalement via une macro ou un LISP, car la fonction dédiée n’est disponible que dans les versions ultérieures ?
Dans AutoCAD 2007, l’ajustement direct de l’espacement des cotes comme dans les versions plus récentes n’est pas une fonctionnalité intégrée facilement accessible. Cependant, il est possible de contourner cette limitation en utilisant des approches de programmation.
Voici les méthodes recommandées :
- Utilisation d’un LISP pour modifier les propriétés des cotes existantes :
- Principe : Un script LISP peut parcourir les cotes d’un dessin et modifier leur propriété d’espacement (si elle est contrôlable via les variables système ou les propriétés d’objet). La variable système
DIMDLIcontrôle la distance entre les lignes d’axe des cotes parallèles, mais elle affecte toutes les cotes du même type. Pour un contrôle plus fin, il faudrait manipuler les objets cotes directement. - Développement : La création d’un tel LISP nécessiterait une analyse approfondie des propriétés des objets cotes dans AutoCAD 2007. Il faudrait identifier la manière dont l’espacement est géré et comment le modifier par programmation. Cela pourrait impliquer l’utilisation de fonctions comme
entget,assoc,substpour lire et modifier les listes de définition d’entité des cotes. - Exemple conceptuel (non fonctionnel sans adaptation précise) :
(defun c:AJUSTESPACEMENTCOTES () (princ "
- Principe : Un script LISP peut parcourir les cotes d’un dessin et modifier leur propriété d’espacement (si elle est contrôlable via les variables système ou les propriétés d’objet). La variable système
Sélectionnez les cotes à ajuster : « )
(setq ss (ssget '((0 . « DIMENSION »))))
(if ss
(progn
(setq i 0)
(repeat (sslength ss)
(setq ent (ssname ss i))
; Ici, il faudrait insérer la logique pour modifier l’espacement
; Cela dépendra de la manière dont l’espacement est stocké dans l’objet cote.
; Par exemple, si c’est une propriété accessible directement ou via une variable système.
; Exemple hypothétique pour une cote linéaire : (vla-put-HorizontalDistance ent 10.0)
(princ (strcat "
Traitement de la cote : " (vl-princ-to-string ent)))
(setq i (1+ i))
)
(princ "
Espacement des cotes ajusté. »)
)
(princ "
Aucune cote sélectionnée.")
)
(princ)
)
```
* Note : La complexité de ce LISP dépendra de la nature exacte de l’espacement que vous souhaitez ajuster (entre les lignes de cote, entre la ligne de cote et l’objet, etc.) et de la façon dont AutoCAD 2007 gère ces paramètres pour les objets cotes.
-
Utilisation de macros (AutoLISP) pour automatiser des commandes existantes :
- Si une commande AutoCAD permet de modifier l’espacement (même de manière limitée), une macro LISP peut être créée pour l’exécuter rapidement sur une sélection d’objets.
- Cependant, dans AutoCAD 2007, il n’y a pas de commande dédiée simple pour ajuster l’espacement des cotes de manière globale ou sélective comme dans les versions plus récentes.
-
Alternative : Utiliser des styles de cote personnalisés (limité) :
- Bien que cela ne permette pas un ajustement dynamique après la création de la cote, vous pouvez configurer un style de cote (
DIMSTYLE) avec des paramètres d’espacement qui vous conviennent. Lors de la création de nouvelles cotes, elles hériteront de ce style. - Pour modifier des cotes existantes, vous pouvez les sélectionner, puis changer leur style de cote pour le style personnalisé que vous avez créé. Cela peut affecter l’espacement, mais le contrôle n’est pas aussi fin qu’une fonction dédiée.
- Bien que cela ne permette pas un ajustement dynamique après la création de la cote, vous pouvez configurer un style de cote (
Recommandation :
La solution la plus flexible et puissante pour votre besoin dans AutoCAD 2007 serait de développer un script LISP personnalisé. Cela demande une certaine expertise en programmation LISP et une bonne compréhension de la structure des objets cotes dans cette version d’AutoCAD. Si vous avez accès à une version plus récente d’AutoCAD, la fonction dédiée serait évidemment la solution la plus simple et efficace.