EchoCad

Features

The free edition makes a drawing visible in QGIS — one drawing at a time. Pro turns a whole folder of them into data you can query and analyse.

FeatureFreePro
Layers, colours, line types, hatches, textyesyes
How many drawings per runone, by handa whole folder
3D solids drawn as faces—yes
Drawing text turned into shape attributes—yes
Batch conversion with a CSV report—yes
Open polylines closed into polygons—yes
Align to map — click the drawing, click the map—yes
Elevations (Z) kept—yes
Mapping profiles—yes
Block attributes as fields—yes
Runs from the Processing toolbox / models—yes
Converter needednone — DXF read directlybundled — nothing to install

0. What both editions do — reading the drawing

This part is the same code in both editions. Nothing is held back to make the free edition worse: a drawing that opens correctly in Pro opens correctly free.

  • One QGIS layer per CAD layer, split by geometry type
  • Entity colour, line type (solid / dashed / dash-dot) and line width kept
  • Text placed at its original size, rotation and colour
  • Hatch patterns rebuilt from the drawing’s own definitions — not flattened to a solid blob
  • Korean, Japanese and Chinese text read correctly whatever the drawing’s encoding says
  • Optional GeoPackage output, and the coordinate system taken from your project
  • Failures say why — unsupported format, empty drawing and timeout are told apart

The difference is how much of it you can do at once, and what you get back. Free is one drawing per run, through the import window, by hand, with no limit on how many. What Pro adds is below.

1. 3D solids drawn as faces

A 3DSOLID in a DWG is not a mesh. It is a boundary representation: faces, edges, and the surfaces those faces lie on. QGIS’s importer skips them, so a drawing made of nothing but solids comes in empty. On screen that reads as “the drawing is broken”, not “this is a solid”.

Pro reads the ACIS data inside the drawing and brings every face in as a 3D polygon.

  • Curved surfaces come in too — cones, tori, ellipses and splines. Each face boundary is sampled along its own curves, so the polygon is the surface
  • Holes are cut. A face with an inner loop becomes a polygon with an interior ring, not a filled disc
  • Z is kept, so vertical walls stay vertical instead of collapsing to a line
  • R14 to 2018, including drawings whose solids are stored away from the entity
A bracket-shaped 3D solid imported into QGIS as faces, with three bolt holes cut through it.
That drawing, imported. Every face became a polygon, and the three bolt holes are interior rings — not filled discs.

The free edition still tells you what is in there. Drop a DXF with solids into it and it reports how many the drawing holds — it just does not draw them.

2. Block attributes as queryable fields

Most of the information in a drawing is not in the lines. It is in block attributes (ATTRIB): manhole numbers, pipe diameters, asset codes, parcel numbers. QGIS’s own importer does not bring these across. The drawing opens; the attributes are gone.

Pro builds one block-reference point layer per CAD layer and spreads every attribute tag found there into a field.

  • cad_layer and block_name come first, then the tag fields
  • Tags a block does not carry are left NULL, so blocks with different tag sets still land in one layer
  • The original tag name is kept as the QGIS field alias, so a normalised field name loses nothing

Below is a room-information layer actually extracted from a public sample (a Swiss facility-management drawing), opened in the QGIS attribute table. 85 room-stamp blocks in the drawing became 85 rows with fields.

The QGIS attribute table showing columns cad_layer, block_name, FLAECHE, RAUMBEZ and RNR2 with room areas and names.
The real QGIS attribute table. Area, room name and room number each became a column.
block_nameFLAECHERAUMBEZRNR2BWD
bbl-raumstempel11.58Treppe2011.DM.04.001VBeton gestrichenBeton gestrichenBeton gestrichen
bbl-raumstempel1.78Steigzone2011.DM.04.003F
bbl-raumstempel10.11Warenlift2011.DM.04.004VHolzMetallHolz
bbl-raumstempel10.11Warenlift2011.DM.04.005VHolzMetallHolz

Sum the areas (FLAECHE), classify by room name (RAUMBEZ), join to your register on the room number (RNR2). The door layer of the same drawing produced 16 fields including fire rating, acoustic rating and size. In the free edition this table does not exist at all.

3. Mapping profiles — CAD layers onto your schema

A hundred drawings arrive with a hundred layer namings. A-WALL-EXST, A-WALL-NEW and A-WALL-2F are all the same building wall, but QGIS receives three layers.

A profile is a list of glob-pattern rules. The first rule that matches wins, so order is priority.

{
  "version": 1,
  "name": "example",
  "rules": [
    { "match": "A-WALL-*", "layer_name": "building_wall", "geometry": "polygon" },
    { "match": "*-TEXT",   "layer_name": "annotation",    "geometry": "point"   }
  ],
  "default": { "layer_name": "{cad_layer}", "geometry": "auto" }
}
The QGIS layer panel after importing without a mapping profile: 23 layers with raw CAD names.
Before — 23 layers with the raw CAD names
The QGIS layer panel after applying a mapping profile: 11 layers grouped into building, services, room and drawing furniture.
After — grouped into 11

Same drawing. Seven rules turned 23 layers into 10. The Defpoints at the top matched no rule: it keeps its original name and is listed as unmatched, so you know immediately whether something was left out.

  • Several CAD layers merge into one output layer
  • geometry fixes the geometry type, or auto splits as the drawing does
  • {cad_layer} is replaced by the original layer name
  • One JSON file, so a team can share it and keep it in git

You do not have to write the file by hand. Edit… next to Layer names lets you put CAD layers under new names and saves the rules for you.

4. Batch folder conversion with a per-file report

Drawings usually arrive by the folder, not one at a time. The free edition converts one drawing per run — open the window, pick the file, pick the coordinate system, import, repeat. That is fine for one drawing and unusable for eighty.

  • Point it at a folder and every DWG inside is converted. Subfolders optional
  • One file failing does not stop the rest. It does not halt half way
  • Per-file results go into a CSV report, so you can see later what failed and why
  • The mapping profile and coordinate system apply to the whole run
  • It runs as a Processing algorithm, so it goes into a model or a script and can be re-run on next month’s delivery unchanged
import processing

processing.run("echocad:batchimportdwg", {
    "INPUT_FOLDER":    "D:/deliveries/2026-03/dwg",
    "RECURSIVE":       True,
    "CRS":             "EPSG:5186",
    "PROFILE":         "D:/office/office-schema.json",
    "EXTRACT_ATTRIBS": True,
    "OUTPUT":          "D:/work/gpkg",
    "REPORT":          "D:/work/report.csv",
})

Below is a real report from one run over a folder of nine drawings. Two were R12 files last saved in 1998 and came through. One was corrupt and did not. The run did not stop there, and what failed and why is on the record.

filestatusnotelayersfeaturessec
facility-2011-dm-a04.dwgokDropped 1 feature with broken coordinates / closed 7,101 open polylines / attached 1,463 texts6236,078180.3
cafm-plan-de.dwgokDropped 1 feature with broken coordinates / closed 970 open polylines / attached 117 texts324,48756.3
fire-station.dwgokClosed 159 open polylines / attached 157 texts164,01049.6
floorplan-elevation.dwgokClosed 836 open polylines / attached 82 texts2410,750150.0
building-a-floor0.dwgokClosed 377 open polylines / attached 93 texts295,30134.1
fortcollins-lincoln-plan.dwgokR12 drawing, recovered351,33810.4
fortcollins-lincoln-section.dwgokR12 drawing, recovered461,65510.2
site-survey-3.dwgunsupportedFormat AC1012. EchoCad tried to recover it and could not.000.1
tourist-home.dwgokDropped 5 features with broken coordinates / closed 538 open polylines / attached 602 texts4122,158135.8

Features dropped for broken coordinates are counted too. Drop them silently and nobody can explain the missing count later.

Pro ships with the converter for Windows and macOS. Nothing to download, no path to point at, and it works on a machine with no internet at all. On macOS the executable bit and the quarantine attribute are handled for you, so there is no Terminal step.

The bundled build is LibreDWG 0.14.8578, and the version matters: the commonly packaged 0.13.3 converts 44 of our 50 sample drawings and truncates 4, while 0.14.8578 converts 48. Fetch it yourself and you get whatever your package manager has.

Pro carries the Windows and macOS builds. Install it and it works. On macOS the execute permission and the quarantine flag are handled for you, so there is no reason to open a terminal.

Corresponding source for the bundled converter is pointed to in bin/SOURCE.md, as GPL-3 requires.

Next

See the price Documentation