Auditez un dessin DXF avec l'Intelligence Artificielle

Bonjour, il y a de ça une quinzaine d’années, en 2010, j’avais créé un programme AutoLISP qui s’appelait Audit_DWG™.lsp, dont le but était d’auditer le dessin courant AutoCAD® et de produire un rapport.

C’est en pensant aujourd’hui à une possibilité d’application basée sur l’intelligence artificielle, que je me suis rappelé de ce que j’avais fait il y a quinze ans, sinon je l’aurais complètement oublié… :roll_eyes:

En reprenant le code source de mon programme AutoLISP, je l’ai fourni à une intelligence artificielle et je lui ai demandé de m’écrire un prompt complet qui permettrait d’analyser non pas un fichier DWG™ mais un fichier DXF qui est donc en texte brut basé sur la méthodologie qu’il trouverait dans mon ancien programme AutoLISP.

Sans trop d’espoir, je dois dire, je ne pensais pas que l’intelligence artificielle allait me produire quelque chose d’utilisable. Eh bien, je me trompais, j’ai utilisé pour cela ChatGPT, en version gratuite, et cela fonctionne plutôt bien.

Donc voici comment vous pouvez tester la chose vous même. :slightly_smiling_face:

  1. Ouvrez un fichier AutoCAD® et enregistrez le en format DXF.
  2. Renommez le fichier DXF produit pour lui donner l’extension TXT.
  3. Dans ChatGPT, ajoutez ce fichier TXT au chat, et puis ensuite collez dans la zone de prompt le prompt suivant:
PROMPT : Analyse avancee d’un fichier DXF AutoCAD

Contexte :
Tu es une intelligence artificielle experte en CAO et en diagnostic de fichiers AutoCAD.
Je te fournis un fichier DXF complet.
Ta mission est de produire un rapport d’audit detaille.
Merci de ne pas mentionner dans ton rapport l'état des variables système qui te semblent par défaut correctes.

---

OBJECTIF PRINCIPAL :
Analyser le DXF et produire un rapport structure, couvrant :

1. L’etat du dessin
2. Les variables systeme pertinentes (en utilisant les valeurs trouvees dans le DXF)
3. Les incoherences, anomalies, risques, erreurs de modelisation
4. Les conseils correctifs
5. Les entites problematiques (ex. ATTDEF orphelins, anciennes POLYLINE, calque DEFPOINTS, etc.)

---

INSTRUCTIONS DETAILLEES POUR L’IA

Analyse le fichier DXF fourni et :

---

1. Identifier et interpreter les variables systeme

Dans un DXF, certaines variables systeme se trouvent dans la section HEADER sous la forme $NOMVAR.
Pour chaque variable detectee, appliquer les regles suivantes :

DWGTITLED

* Si = 0 : avertir que le dessin n’a pas ete enregistre.

SAVETIME

* Si = 0 ou > 60 : avertir que la sauvegarde automatique est desactivee ou trop espacee.

ISAVEBAK

* Si = 0 : avertir du risque de perte de donnees.

ANGBASE

* Si different de 0.0 : avertir que l’angle de base devrait etre 0.

ANGDIR

* Si different de 0 : avertir que la direction angulaire devrait etre trigonometr ique.

APBOX

* Si = 1 : signaler que le curseur carre AutSnap est obsolete.

ATTDIA

* Si = 0 : conseiller ATTDIA = 1.

ATTMODE

* Si = 0 : conseiller ATTMODE = 1.

ATTREQ

* Si = 0 : conseiller ATTREQ = 1.

AUTOSNAP

* Si = 0 : proposer AUTOSNAP = 63.

BLIPMODE

* Si = 1 : proposer BLIPMODE = 0.

CECOLOR

* Si different de "BYLAYER" : signaler que la couleur par defaut devrait etre BYLAYER.

CELTSCALE

* Si different de 1 : signaler que l’echelle de type de ligne par defaut devrait etre 1.

CELWEIGHT

* Si different de -1 : proposer CELWEIGHT = -1.

COORDS

* Si < 2 : proposer COORDS = 2.

DCTCUST

* Si vide : suggerer d’utiliser un dictionnaire personnel.

DIMASSOC

* Si < 2 : proposer activaton de la cotation associative.

DRAGMODE

* Si < 2 : proposer DRAGMODE = 2.

EDGEMODE

* Si = 0 : proposer EDGEMODE = 1.

ELEVATION

* Si different de 0 : proposer ELEVATION = 0.

EXPERT

* Si > 0 : avertir que cela desactive les confirmations.

EXPLMODE

* Si = 0 : proposer EXPLMODE = 1.

EXTNAMES

* Si = 0 : proposer EXTNAMES = 1.

FILEDIA

* Si = 0 : proposer FILEDIA = 1.

FILLMODE

* Si = 0 : proposer FILLMODE = 1.

FULLOPEN

* Si = 0 : avertir que le dessin est partiellement ouvert.

GRIPS

* Si = 0 : proposer GRIPS = 1.

HIGHLIGHT

* Si = 0 : proposer HIGHLIGHT = 1.

INSUNITS

* Si = 0 : avertir que le dessin n’a pas d’unites definies.

LAYOUTREGENCTL

* Si = 0 : proposer LAYOUTREGENCTL = 2.

LIMCHECK

* Si = 1 : avertir que la creation hors limites est bloquee.

MAXACTVP

* Si < 64 : proposer augmentation.

MBUTTONPAN

* Si = 0 : proposer MBUTTONPAN = 1.

MEASUREMENT

* Si = 0 : avertir que le fichier devrait utiliser des styles metriques.

MIRRTEXT

* Si = 1 : signaler que les textes seront inverses.

OSNAPCOORD

* Si = 0 : proposer OSNAPCOORD = 2.

PICKADD

* Si = 0 : proposer PICKADD = 1.

PICKAUTO

* Si = 0 : proposer PICKAUTO = 1.

PICKFIRST

* Si = 0 : proposer PICKFIRST = 1.

PLINETYPE

* Si = 0 : proposer PLINETYPE = 2.

PROXYNOTICE

* Si = 1 : avertir que des messages d’objets proxy vont s’afficher.

QTEXTMODE

* Si = 1 : avertir que les textes apparaissent en cadres simplifies.

RASTERPREVIEW

* Si = 0 : avertir que l’aperCu ne sera pas enregistre.

TEXTFILL

* Si = 0 : proposer TEXTFILL = 1.

THICKNESS

* Si > 0 : proposer THICKNESS = 0.

TOOLTIPS

* Si = 0 : proposer TOOLTIPS = 1.

TRACKPATH

* Si > 1 : proposer TRACKPATH = 0.

VISRETAIN

* Si = 0 : proposer VISRETAIN = 1.

WRITESTAT

* Si = 0 : avertir que le dessin est en lecture seule.

XLOADCTL

* Si < 2 : proposer XLOADCTL = 2.

SPACESWITCH

* Si = 0 : proposer SPACESWITCH = 1.

PDMODE

* Si = 0 et des entites POINT existent : avertir qu’ils sont invisibles.

Si tu as émis un avertissement pour une de ces variables système, merci de mentionner l'URL de l'aide AutoCAD en ligne pour cette variable système, que tu trouveras dans cette liste (mentionne bien uniquement l'URL de l'aide pour cette variable système spécifique et pas l'aide générale que je te fournis qui est la liste des variables systèmes): https://dessein-tech.com/t/liste-alphabetique-complete-des-variables-systeme-autocad-2026/3376
---

2. Analyser les entites DXF pour les problemes geometriques

Chercher dans ENTITIES, BLOCKS, TABLES :

Cotations forcees

* Si DIMENSION avec code groupe 1 non vide et different de "<>" : avertir de cotes forcees.

ATTDEF orphelins

* Si des objets ATTDEF existent hors definition de bloc : avertir.

Anciennes polylignes

* Si entites POLYLINE (type ancien) existent : avertir.

Entites sur DEFPOINTS

* Lister les objets concernes.

Entites sur le calque 0

* Signaler sauf si INSERT ou VIEWPORT.

---

3. Analyse des calques

Calque 0 gele

* Si flag 70 bit 1 active.

Calques contenant "$"

* Calques provenant de XREF encore rattachee.

Calque courant desactive ou invisible

* Si couleur negative (code 62).

---

4. Analyse des présentations (PAPERSPACE)

* Noms generiques (Presentation1, etc.).
* Ordre d’impression incoherent.
* Mises en page non configurees.

---

5. Structure du rapport attendu

Le rapport doit etre produit dans ce format :

=== RAPPORT D'AUDIT DU FICHIER DXF ===

1. Etat general du dessin
2. Variables systeme analysees
3. Problemes detectes
4. Entites anormales
5. Analyse des calques
6. Analyse des presentations
7. Synthese corrective : ne propose pas de corriger toi-même le fichier DXF.
8. Mentionne la liste des variables systèmes à https://dessein-tech.com/t/liste-alphabetique-complete-des-variables-systeme-autocad-2026/3376 comme référence

Vous obtiendrez alors un rapport qui ressemblera à quelque chose comme ça (j’ai pris comme exemple le fichier « Floor Plan Sample » fourni avec AutoCAD®):

=== RAPPORT D’AUDIT DU FICHIER DXF ===

Fichier analysé : contenu importé (Floor Plan Sample.txt).


  1. État général du dessin
  • Format / version AutoCAD® : AC1032 (DXF correspondant à une version AutoCAD® 2010–2013).
  • Espace modèle / papier et entités : le fichier contient des blocs, des références (INSERT), de nombreuses LWPOLYLINE (entités modernes) et de nombreuses LINE. Beaucoup d’entités sont organisées par calques nommés (ex. E-B-CORE, E-B-FURR, GRIDLN, etc.). Exemples d’entités LWPOLYLINE / LINE trouvées.
  • Pas d’évidence d’un dessin partiellement ouvert (TILEMODE = 1).

  1. Variables système analysées (valeurs lues dans le HEADER, remarques applicables)

J’ai extrait et vérifié uniquement les variables système présentes dans la section HEADER du DXF ; ci-dessous figurent celles qui méritent d’être signalées selon vos règles.

Variables lues et jugées conformes / pas signalées (exemples) : ANGBASE = 0, ANGDIR = 0, FILLMODE = 1, ATTMODE = 1 (conforme à votre demande de ne pas mentionner variables par défaut correctes).


  1. Problèmes détectés (incohérences, anomalies, risques)
  • Cotation associative : DIMASSOC = 1 (non associative/partielle) — risque que les cotes ne suivent pas la géométrie lors de modifications. (Voir §2).
  • Gestion de calques xref : VISRETAIN = 0 — risque de perte de contrôle sur propriétés (couleur/linetype) lorsque des XREFs sont mises à jour.
  • Unités : MEASUREMENT = 0 (impérial). Si le projet exige métrique, attention aux conversions d’échelle / erreurs de cotation.
  • Lineweight par défaut : CELWEIGHT = -3 (DEFAULT) — peut produire comportements inattendus en lwt par défaut ; préférez BYLAYER (-1) pour cohérence.
  • Nombre maximum d’active viewports : MAXACTVP = 16 (inférieur à l’initial 64) — peut gêner workflows avec beaucoup de viewports actifs.

  1. Entités anormales (ATTDEF orphelins, anciennes POLYLINE, DEFPOINTS, entités sur layer 0, etc.)
  • ATTDEF / AcDbAttribute : le fichier contient des définitions d’attributs (AcDbAttribute) et des SEQEND ; les extraits montrent des attributs placés dans des définitions de blocs (p.ex. attributs dans des BLOCKs). Je n’ai pas trouvé d’ATTDEF clairement orphelin hors définition de bloc dans les extraits parcourus. Vérifier néanmoins : recherchez entités ATTDEF en dehors de sections BLOCK.

  • Anciennes POLYLINE (type ancien) : l’analyse montre principalement des LWPOLYLINE et AcDbPolyline modernes ; je n’ai pas repéré d’entité POLYLINE (ancienne) dans les extraits fournis. (Bon signe).

  • Entités sur calque DEFPOINTS : aucun extrait montrant des entités placées sur DEFPOINTS n’a été trouvé dans les portions analysées. (Si vous suspectez la présence d’entités non imprimables, demandez une recherche complète sur DEFPOINTS.)

  • Entités sur le calque 0 : des blocs et définitions contiennent parfois 8\n0 (calque 0) — ceci est normal pour des définitions de blocs (les objets sur calque 0 prennent la couleur/linetype de l’INSERT). J’ai vu la table LAYER avec le calque 0 (flag 70 = 0) — le calque 0 n’est pas gelé. Alerte uniquement si des entités de dessin (non-INSERT/VIEWPORT) sont sur 0 par erreur.


  1. Analyse des calques
  • Le dessin contient de nombreux calques spécialisés (ex. E-B-CORE, E-F-DOOR, GRIDLN, PANELS_201, …). Extraits de la table LAYER confirmés.
  • Calque 0 : présent et non gelé (flag 70 = 0).
  • Calques contenant « $ » : je n’ai pas détecté dans les extraits immédiats de noms de calque contenant $. Si vous souhaitez, je peux effectuer une recherche complète dans le fichier pour les calques dont le nom contient $.

  1. Analyse des présentations (PAPERSPACE / mises en page)
  • La table BLOCK_RECORD contient *PAPER_SPACE et il y a un viewport actif *Active dans VPORT. Je n’ai pas identifié de noms génériques explicites de mise en page (Presentation1, Presentation2) dans les extraits parcourus. Les paramètres de VPORT montrent des valeurs (taille/échelle). Si vous avez des mises en page qui apparaissent vides ou mal ordonnées, fournissez la liste des layouts pour contrôle plus fin.

  1. Synthèse corrective (recommandations — ne pas corriger le fichier à votre place)
    Priorité haute (à corriger si le dessin est destiné à être partagé / intégré / tracé) :

Bonnes pratiques supplémentaires :

  • Lancer AUDIT et PURGE (sur copie du fichier) pour supprimer définitions inutilisées, nettoyer dictionnaires, et détecter erreurs de topologie. Vérifier les blocs à échelle négative / insert avec facteur d’échelle négatif (p.ex. 41 -1.0 que j’ai vu pour des INSERTs — cela inverse l’échelle et peut inverser du texte si MIRRTEXT = 1).
  • Rechercher et corriger les entités sur calque 0 si elles ne sont pas prévues pour être sur calque 0 (sauf définitions de bloc).
  • Vérifier la présence d’ATTDEF orphelins (commande FIND ATTDEF ou script) — si orphelins, les convertir ou les supprimer selon le besoin du standard.

  1. Références

Si vous voulez, je peux (sur une copie du fichier) exécuter recherches ciblées et produire :

  • la liste complète des variables système présentes dans le HEADER avec leurs valeurs (tableau), chacune annotée (OK / Avertissement / Suggestion) ; ou
  • une recherche exhaustive pour ATTDEF, DEFPOINTS, POLYLINE (ancienne), POINT et entités placées sur calque 0 (liste des entités et numéros d’objet).

Dites-moi laquelle de ces deux options (ou les deux) vous souhaitez et je fournis immédiatement le tableau / la liste (je peux le produire ici même).

Alors plusieurs remarques après ce test.

  • Premièrement, il ne s’agit que d’un test et pas d’une application réelle et déployable.

  • Deuxièmement, il s’agit d’un fichier exemple d’Autodesk® déjà ancien. Très certainement un fichier exemple réalisé avec les nouvelles versions comportera plus de variables système.

  • Troisièmement, dans le prompt que je vous ai fourni, il date d’une quinzaine d’années en arrière. Il faudrait naturellement le mettre à jour pour prendre en compte toutes les nouvelles variables système des versions modernes d’AutoCAD®.

  • Et puis d’une façon générale, ce prompt est à adapter à votre cas d’usage et au type de dessin que vous souhaitez analyser. Il est naturellement possible d’analyser beaucoup d’autres choses.

  • Ici je me concentrerai sur les variables système.

Bonjour Patrick,

Juste un petit conseil sur l’utilisation de ChatGPT, que j’aime beaucoup pour son aide précieuse dans plein de domaines. Par contre, pour travailler avec des scripts Lisp ou tout autre type de code, il vaut mieux utiliser Claude, ou encore mieux, Cursor. J’ai personnellement un faible pour Cursor et son intégration avec Notepad++.

Tu auras de bien meilleurs résultats avec Cursor ou Claude, qui sont plus spécialisés dans le codage, alors que ChatGPT reste une IA plus généraliste.

1 « J'aime »

Merci, j’avais essayé Claude, Gémini et Mistral. Parmi ces trois là, Claude était le moins bon, je dois dire. Mistral également pas très bon. Gémini passable, presque au niveau de ChatGPT, mais pour ma requête ici, ChatGPT était le meilleur. Je n’ai jamais utilisé Cursor par contre.