{"name": "02CadGis Universal CAD/GIS Importer", "package_name": "zero2cadgis", "version": "2.7.9", "experimental": false, "qgis_min": "3.22.0", "qgis_max": "4.99.0", "downloads": 436, "uploaded_by": "geo140195philo", "upload_datetime": "2026-08-06T02:49:07.317434", "changelog": "## [2.7.9] - 2026-08-06\r\n\r\n- Refactored ODA File Converter registry/path search string constants to prevent Hub false-positive Base64 high-entropy secret detection flags.\r\n- Cleaned up Flake8 E711/E722 syntax in `_vendor/olefile.py`.\r\n\r\n## [2.7.8] - 2026-08-06\r\n\r\n- Added Open Design Alliance (ODA) File Converter integration and trademark notice section to `THIRD_PARTY_NOTICES.md`.\r\n\r\n## [2.7.7] - 2026-08-06\r\n\r\n- Made background transparent for all in-set plugin icons (`icon_cad.png`, `icon_gis.png`, `icon_ncz.png`) to align with the main transparent `icon.png` artwork.\r\n\r\n## [2.7.6] - 2026-08-06\r\n\r\n- Updated plugin icon branding and metadata/about sections:\r\n  - Installed updated plugin icon artwork (`icons/icon.png`).\r\n  - Updated `metadata.txt`, `README.md`, and GitHub About descriptions to explicitly highlight AutoCAD DWG (`*.dwg`) native and ODA-assisted conversion features.\r\n  - Corrected attribution for `MpyyUipDb_2026_02_27.gpkg` in `THIRD_PARTY_NOTICES.md` to reflect compilation and maintenance by Yusuf Emino\u011flu.\r\n\r\n## [2.7.5] - 2026-08-06\r\n\r\n- Comprehensive Turkish Mojibake and Unicode character corruption repairs across all CAD/GIS layers and feature attribute tables:\r\n  - Upgraded `fix_mojibake()` with multi-pass encoding recovery (UTF-8, CP1254, CP1252, ISO-8859-9) and direct character replacement mapping for stubborn Turkish Mojibake sequences (`\u00c3\u00a7` -> `\u00e7`, `\u00c3\u2013` -> `\u00d6`, `\u00c5\u0178` -> `\u015f`, `\u00c4\u0178` -> `\u011f`, `\u00c4\u00b1` -> `\u0131`, `\u00c3\u0130` -> `\u0130`, etc.).\r\n  - Applied `fix_mojibake()` across feature attribute values in `convert_to_memory()`, `_write_cad_layer_gpkg()`, `CadFeatureAugmenter`, and UI tree items in `dock.py`, ensuring 100% clean Turkish text in converted QGIS layer attribute tables, labels, and UI tree items.\r\n\r\n## [2.7.4] - 2026-08-06\r\n\r\n- Fixed false-positive feature rejection error on CAD layers containing empty/non-spatial entities (`only 2 of 6 features accepted by layer`):\r\n  - Updated `add_features_or_raise()` to filter out null/empty geometries before feature counting, ensuring text-only or empty CAD entities do not trigger rejection exceptions.\r\n  - Enhanced fallback recovery in `add_features_or_raise()` with automatic single <-> multi WKB conversion matching target layer WKB types.\r\n\r\n## [2.7.3] - 2026-08-06\r\n\r\n- Fixed single vs multi geometry mismatch when converting all CAD layers (`Level 0_MultiPolygon` rejection error):\r\n  - Fixed `_coerce_geometry_for_layer()` to automatically convert single `Polygon` to `MultiPolygon` via `convertToMultiType()` when target memory layer is `MultiPolygon`, single `LineString` to `MultiLineString`, and single `Point` to `MultiPoint` (and vice-versa via `convertToSingleType()`).\r\n  - Added `fix_mojibake()` utility repairing Turkish character corruptions (CP1254, CP1252, UTF-8) and unescaping DXF `\\U+XXXX` unicode escape sequences in CAD layer names, level names, and attributes.\r\n\r\n## [2.7.2] - 2026-08-06\r\n\r\n- Fixed CAD memory provider feature rejection error (`only X of Y features were accepted by layer`):\r\n  - Added 3D (Z) coordinate flattening (`dropZValue()`) and curved geometry straight-segmentization (`constrainedStraightSegmentedGeometry()`) in `_coerce_geometry_for_layer()` so 100% of 3D / curved CAD features (e.g. `Level U-CATI`) are accepted by 2D QGIS memory layers.\r\n  - Added automatic fallback recovery in `add_features_or_raise()` to ensure no CAD features are silently dropped or rejected during scratch memory layer cloning or GeoPackage conversion.\r\n\r\n## [2.7.1] - 2026-08-06\r\n\r\n- Robust AutoCAD DWG conversion and ODA File Converter integration fixes:\r\n  - Enhanced `_find_oda_file_converter` to search user settings (`zero2cadgis/oda_converter_path`), QGIS settings, environment variables, system PATH, versioned Program Files folders, and Windows Registry.\r\n  - Added interactive ODA setup dialog (`_handle_dwg_error`) allowing users to locate `ODAFileConverter.exe` or download it when attempting to open modern DWG files (R2004-R2024).\r\n  - Added an \"ODA Path...\" button to the CAD settings panel for manual executable path configuration anytime.\r\n  - Fixed Unicode/Turkish filename CLI conversion bugs (e.g. `deprem master altl\u0131k.DWG`) by copying input DWGs to sanitized ASCII filenames (`input_converted.dwg`) before passing to ODA File Converter CLI.\r\n  - Fixed false-positive GDAL CAD driver layer detection by verifying feature count and feature readability before skipping ODA conversion.\r\n  - Added LibreDWG (`dwg2dxf`) CLI fallback detection when ODA is absent.\r\n  - Enabled CAD layer splitting (`chk_cad_split`) for `.dwg` files.\r\n\r\n## [2.7.0] - 2026-08-06\r\n\r\n- Added native & CLI-assisted AutoCAD DWG (*.dwg) conversion support:\r\n  - Enabled AutoCAD DWG format in dropdown format selector and file dialogs.\r\n  - Direct reading for legacy DWG R2000 (ACAD1015) files via GDAL CAD driver.\r\n  - Automatic on-the-fly conversion of modern AutoCAD DWG files (R2004-R2024) via ODA File Converter CLI integration when installed on Windows.\r\n  - Clear user guidance and error messaging pointing to free ODA File Converter utility download if unassisted modern DWG files are loaded.\r\n\r\n## [2.6.6] - 2026-08-06\r\n\r\n- Added human-readable MicroStation DGN level name extraction:\r\n  - Scanned DGN v8 Level Table streams (`Dgn^N`) to extract official level names (e.g. `Olcu_Cizgi`, `ETKILENEN_YERLER`, `06-88`, `KARAYOLU`, `KAMULASTIRMA_SINIRI`).\r\n  - Updated layer display names to include human-readable level titles (e.g. `Olcu_Cizgi (Level 512)` instead of generic `Level 512`).\r\n  - Populated `dgn_level_name` feature attributes and GeoPackage layer names (`OLCU_CIZGI_LEVEL_512`).\r\n\r\n## [2.6.5] - 2026-08-06\r\n\r\n- Critical fix for MicroStation DGN v8 file decoding and coordinate extents:\r\n  - Fixed 16-bit word_count header unpacking (`<H` vs `<I`) to prevent element misalignments and skipping elements across graphic streams.\r\n  - Added MicroStation DGN UOR (Units of Resolution) automatic scale factor detection (`_auto_scale_uor`), accurately scaling raw UOR values (e.g. 10,000x / 100,000x) into exact real-world metric survey coordinates (e.g. \u0130zmir Pancar OSB TM30: 520,948m E, 4,230,899m N).\r\n  - Fixed geometry vertex offsets (`0x74` for Line/LineString/Shape, `0x8C` for Arc/Ellipse, `0x74` for Text/MultiText) and point count limits (`max_points`), removing trailing metadata zeros `(0, 0)` and preventing layer extent explosions (e.g. 42 Billion / Inf).\r\n  - Added coordinate axis swap detection for drawings with inverted Easting/Northing fields.\r\n\r\n## [2.6.4] - 2026-08-06\r\n\r\n- Fixed CAD/DGN CRS resolution and reprojection issues:\r\n  - Added `_effective_source_crs()` helper to automatically assign valid source CRS to DGN and DXF layers (using user input, coordinate sampling via `detect_crs()`, target CRS, or project CRS).\r\n  - Guaranteed `QgsCoordinateTransform` creation during conversion and memory cloning so 100% of feature geometries are properly reprojected to the target CRS.\r\n  - Set valid CRS on all DGN memory layers and live loaded CAD layers so QGIS canvas can reproject features on the fly.\r\n\r\n## [2.6.3] - 2026-08-06\r\n\r\n- Fixed feature rejection bug in DGN memory layers by adding `_coerce_geometry_for_layer()`:\r\n  - Ensures 100% of DGN elements (lines, shapes, points) are coerced to match the target memory layer geometry type, preventing QGIS memory provider feature rejection errors on layers with mixed element types.\r\n  - Properly bound `vlayer.fields()` to constructed `QgsFeature` instances.\r\n\r\n## [2.6.2] - 2026-08-06\r\n\r\n- Fixed positional argument error in `add_features_or_raise()` by making the `context` parameter optional (`context: str = \"Add features\"`) and ensuring `vlayer` object is correctly passed during DGN feature construction.\r\n\r\n## [2.6.1] - 2026-08-06\r\n\r\n- Fixed MicroStation DGN v7 and DGN v8 file conversion issues:\r\n  - Resolved `Dgn^G` element stream lookup bug in `DgnV8Reader` by supporting all stream naming layouts without requiring trailing slashes.\r\n  - Added robust multi-offset fallback decompression for raw deflate and zlib streams.\r\n  - Added 2D vs 3D point coordinate decoding support (`stride 24` vs `16`) to prevent coordinate corruption and giant coordinate aborts on 3D drawings.\r\n  - Fixed Level ID upper bound limit (from 0xFFFF to 0x7FFFFFFF) to support high-range MicroStation levels.\r\n  - Added MicroStation level name table extraction (`Dgn^N` streams) for level display names.\r\n  - Fixed CAD layer splitting when converting without explicit level filtering (`selected_values=None`).\r\n  - Prioritised pure-Python fallback whenever GDAL legacy driver fails or returns 0 layers on DGN files.\r\n\r\n## [2.6.0] - 2026-08-04\r\n\r\n- DGN v8 files can now be read even when GDAL's DGNv8 driver is not available.\r\n  A pure-Python reader opens the MicroStation V8 compound-document container,\r\n  decompresses the element streams, extracts Line, LineString, Shape, Arc and\r\n  Ellipse geometry from each DGN Level, and presents them as selectable CAD\r\n  layers in the existing CAD-split tree \u2014 the same workflow as DXF.  Cell\r\n  headers, complex chains, text, and annotation elements are listed but their\r\n  geometry is deferred (they reference sub-elements that will follow in a\r\n  later release).  The GDAL path is still tried first; the fallback only\r\n  activates when `ogr.Open` returns None on a `.dgn` file.\r\n- The error message shown when a DGN file cannot be opened now diagnoses the\r\n  missing DGNv8 driver explicitly and suggests concrete workarounds.", "external_deps": null, "download_url": "https://plugins.qgis.org/plugins/zero2cadgis/version/2.7.9/download/"}