Clone
1
dxf FR
ispyisail edited this page 2026-09-12 06:56:32 +12:00

Import et export DXF

Le « DXF » de QET recouvre deux fonctions sans rapport qui partagent simplement un format de fichier :

Sens Comment
Export folio → .dxf Fichier → Exporter, aux côtés de PDF/PNG/SVG en interne, code propre à QET
Import .dxf → géométrie d'élément l'éditeur d'élément, Importer un fichier DXF appelle un programme tiers séparé

Elles ne font pas l'aller-retour l'une vers l'autre et ne partagent aucun code. Si vous cherchez « importer un dessin DXF comme folio », ce n'est ni l'une ni l'autre — voir §3.

Sources : sources/createdxf.{cpp,h}, sources/dxfpaintdevice.{cpp,h}, sources/dxf/dxftoelmt.{cpp,h}.


1. Exporter un folio en DXF

Fichier → Exporter, même dialogue que PDF/PNG/SVG, un fichier .dxf par folio. Le cadre, le cartouche et chaque objet du folio sont inclus.

Il n'existe aucun verbe en ligne de commande pour cela. --export-pdf, --export-png et --export-svg existent ; l'export DXF est aujourd'hui réservé à l'interface graphique.

Comment c'est rendu

Plutôt qu'une passe de dessin spécifique au DXF, QET réutilise exactement le même code paint() que chaque élément et chaque forme possède déjà pour le rendu à l'écran, en PDF ou en PNG. Un QPaintEngine sur mesure (DxfPaintEngine) se place derrière un QPainter, intercepte le petit ensemble d'appels de dessin que ces méthodes paint() font réellement, et traduit chacun en une entité DXF au lieu de pixels. C'est un choix de conception délibéré : le code de rendu d'un objet est « déjà correct » pour tous les autres exports, l'export DXF ne peut donc pas diverger de ce que vous voyez à l'écran — il exécute les mêmes appels, simplement enregistrés autrement.

Ce que cela coûte — de vraies limites de fidélité

Le dialecte DXF ciblé (AC1006) et l'ensemble volontairement restreint d'appels traduits font que certaines choses ne passent pas :

Appel de dessin QET Résultat DXF
Lignes LINE
Rectangles contour LWPOLYLINEaucun remplissage, même si le rectangle est rempli à l'écran (ce dialecte DXF n'a pas de primitive de rectangle rempli)
Ellipses/cercles CIRCLE ou un arc à balayage complet
Arcs une suite de cordes LINE droites, pas une véritable entité d'arc DXF
Polygones LWPOLYLINE
Texte TEXT
Chemins remplis contour seul, comme les rectangles — pas de HATCH
Images / pixmaps non exportées. Le DXF n'a pas d'entité d'image matricielle dans ce dialecte ; un rectangle de substitution est dessiné à la position, taille et rotation de l'image, la mise en page est donc préservée mais pas l'image elle-même

Ce qui sort de cette liste (dégradés et similaires) n'est pas silencieusement abandonné — un avertissement est journalisé, selon le principe qu'un appelant doit savoir immédiatement que quelque chose n'était pas exportable plutôt que d'obtenir un fichier DXF amputé sans le savoir.

Si votre dessin repose sur des formes remplies, des hachures ou des images intégrées survivant dans le DXF, ce ne sera pas le cas — prévoyez plutôt des contours et du texte.


2. Importer un DXF dans un élément

C'est un outil de création de symbole, situé dans l'éditeur d'élément (Fichier → Importer un fichier DXF), pas dans l'éditeur de folio/schéma. Il lit la géométrie d'un .dxf et l'ajoute comme primitives de dessin à l'élément actuellement ouvert — une façon de calquer ou de réutiliser un tracé CAO en dessinant un nouveau symbole, pas un moyen d'introduire un schéma DXF dans un projet.

Cela nécessite un programme séparé

Contrairement à l'export, l'import n'est pas intégré à QET. Il appelle dxf2elmt, un outil console tiers (Vadoola/dxf2elmt) que QET recherche à côté de lui-même (<dossier de données>/binary/dxf2elmt, ou .exe sous Windows). S'il est introuvable, QET affiche un dialogue avec le lien de téléchargement et le dossier où le dézipper, plutôt que d'échouer silencieusement — le même principe que qet_tb_generator pour la création de borniers (voir Automatiser QElectroTech).

QET le lance sous la forme dxf2elmt <fichier> -v, lit sa sortie standard comme le XML .elmt résultant, et l'empile sur la pile d'annulation de l'éditeur d'élément comme une seule opération. Sur un DXF volumineux, un dialogue d'avertissement prévient que l'import peut prendre du temps avant de démarrer.

dxf2elmt étant un projet séparé, sa propre interprétation des entités DXF — ce qui correspond à quoi, et ses propres limites — relève de ce projet, pas de QET.


3. Ce que ni l'un ni l'autre n'est

  • Pas un moyen de placer un dessin DXF sur un folio tel quel. L'import n'alimente que l'éditeur d'élément.
  • Pas garanti pour l'aller-retour. Les limites de l'export — contours seuls, pas d'images (§1) — font qu'un .dxf écrit par QET n'est pas une source fidèle à réimporter, indépendamment même du fait que l'import et l'export utilisent des codes entièrement différents.
  • Pas un chemin d'échange CAO général, au sens de la préservation des calques, des blocs ou des métadonnées DXF au-delà de la géométrie brute : les deux sens travaillent au niveau des primitives de dessin individuelles.

Voir aussi : Automatiser QElectroTech · Lier des éléments