Comment corriger l’orientation de blocs 3D AutoCAD qui s’insèrent de manière incorrecte (ex: vue de face au lieu de vue de dessus) en raison d’une création dans un Système de Coordonnées Utilisateur (SCU) non standard, afin qu’ils apparaissent correctement orientés lors de l’insertion dans un plan ?
Lorsque des blocs 3D sont créés dans un Système de Coordonnées Utilisateur (SCU) différent du SCU Général (ou SCU Monde - SCM), ils peuvent s’insérer avec une orientation inattendue dans d’autres dessins. Par exemple, un objet conçu pour être vu de dessus (axe Z vers le haut) peut apparaître sur sa face avant ou latérale lors d’une insertion standard en vue de dessus.
Pour corriger l’orientation de ces blocs, il est nécessaire de modifier leur définition interne. Voici les méthodes recommandées :
1. Comprendre le Problème d’Orientation
Le problème survient lorsque l’orientation des axes X, Y, Z du SCU de création du bloc ne correspond pas à l’orientation standard du SCU Monde (SCM) d’AutoCAD (X=Est, Y=Nord, Z=Haut). Un bloc créé avec son ‹ haut › le long de l’axe Y et son ‹ avant › le long de l’axe Z, s’insérera ‹ couché › si le dessin cible attend un ‹ haut › le long de l’axe Z et un ‹ avant › le long de l’axe Y.
2. Méthode Manuelle (pour un petit nombre de blocs ou des fichiers DWG séparés)
Si vous avez les blocs sous forme de fichiers DWG séparés ou un nombre limité de définitions de blocs à corriger, vous pouvez utiliser la commande ROTATE3D :
- Ouvrez le fichier DWG du bloc ou insérez une instance du bloc dans un dessin vierge.
- Passez en vue 3D (par exemple, Isométrique SO) pour mieux visualiser l’orientation.
- Lancez la commande
ROTATE3D(ou_ROTATE3D). - Sélectionnez tous les objets constituant le bloc (ou utilisez l’option
_allsi le dessin ne contient que le bloc). - Définissez l’axe de rotation : Dans le cas typique où le bloc est ‹ couché › sur le côté (son ‹ haut › est le long de l’axe Y au lieu de Z), une rotation autour de l’axe X est nécessaire. Choisissez l’option
_X. - Spécifiez un point sur l’axe : Utilisez
0,0,0ou le point d’insertion du bloc. - Entrez l’angle de rotation : Pour corriger l’orientation décrite (bloc en vue de face au lieu de dessus), un angle de
90degrés (ou-90selon le sens exact) autour de l’axe X est souvent la solution. Testez pour confirmer. - Enregistrez le bloc : Si c’était un fichier DWG séparé, enregistrez-le. Si c’était une instance dans un dessin, utilisez la commande
WBLOCpour l’exporter en tant que nouveau fichier DWG, en vous assurant de choisir le point de base correct.
3. Méthode Automatisée (LISP pour les définitions de blocs dans un dessin)
Pour traiter plusieurs définitions de blocs au sein d’un même dessin, un script LISP est la solution la plus efficace. Le LISP suivant, fourni par (gile), modifie directement la définition des blocs sélectionnés, garantissant que toutes les futures insertions et les instances existantes seront corrigées.
Code LISP (BASCULEBLOC.lsp) :
(defun c:BASCULEBLOC (/ ss doc name lst)
(if (ssget '((0 . "INSERT"))) ; Sélectionne les références de blocs
(progn
(setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
(vlax-for obj (setq ss (vla-get-ActiveSelectionSet doc))
(if (not (member (setq name (vla-get-Name obj)) lst))
(setq lst (cons name lst))
)
)
(vla-Delete ss) ; Supprime les références sélectionnées (les définitions restent)
(vlax-for blk (vla-get-Blocks doc)
(if (member (vla-get-Name blk) lst) ; Si le nom de la définition de bloc est dans notre liste
(vlax-for obj blk ; Itère sur les entités à l'intérieur de cette définition de bloc
(vla-TransformBy
obj
(vlax-tmatrix
'((1. 0. 0. 0.)
(0. 0. -1. 0.)
(0. 1. 0. 0.)
(0. 0. 0. 1.)
)
)
)
)
)
)
(vla-Regen doc acActiveViewport)
)
)
(princ)
)
Utilisation du LISP :
- Enregistrez le code ci-dessus dans un fichier texte avec l’extension
.lsp(par exemple,BASCULEBLOC.lsp). - Chargez le LISP dans AutoCAD via la commande
APPLOAD(ou_APPLOAD). - Exécutez la commande LISP en tapant
BASCULEBLOCdans la ligne de commande et en appuyant sur Entrée. - Sélectionnez les références de blocs dans le dessin dont vous souhaitez corriger l’orientation. Le LISP identifiera les définitions de blocs correspondantes et appliquera la rotation.
Explication du LISP :
Ce LISP effectue une rotation de 90 degrés autour de l’axe X sur la géométrie de la définition des blocs sélectionnés. La matrice de transformation ((1. 0. 0. 0.) (0. 0. -1. 0.) (0. 1. 0. 0.) (0. 0. 0. 1.)) est une matrice de rotation standard pour 90° autour de X. En modifiant la définition, toutes les instances du bloc (existantes et futures) seront automatiquement mises à jour avec la bonne orientation.
4. Workflow Recommandé pour Traiter un Grand Nombre de Blocs (Bonne Pratique Industrielle)
Pour une gestion optimale et éviter les problèmes avec les blocs imbriqués :
- Créez un nouveau dessin AutoCAD vierge.
- Insérez les blocs problématiques dans ce nouveau dessin en utilisant le Design Center (
ADCENTERou_ADCENTER). Cela vous permet de choisir spécifiquement les définitions de blocs à importer. - Insérez une instance de chaque bloc que vous souhaitez corriger dans l’espace objet de ce nouveau dessin.
- Chargez et exécutez le LISP
BASCULEBLOC(décrit ci-dessus) et sélectionnez toutes les instances de blocs que vous venez d’insérer. Le LISP corrigera leurs définitions. - Vérifiez l’orientation des blocs en insérant de nouvelles instances ou en changeant les vues.
- Exportez les blocs corrigés : Utilisez la commande
WBLOC(ou_WBLOCK) pour exporter chaque bloc corrigé en tant que fichier DWG séparé. Cela vous permettra de les réutiliser facilement dans d’autres projets avec la bonne orientation.
Cette approche garantit que seules les définitions de blocs souhaitées sont modifiées et que les blocs imbriqués ne subissent pas de rotations indésirables, tout en vous fournissant des fichiers de blocs propres et correctement orientés pour l’avenir.