Bug 54084

Summary: Некорректный импорт файлов в формате SVG
Product: Sisyphus Reporter: Богдан Богуславский <boguslavskijbj>
Component: freecadAssignee: Andrey Cherepanov <cas>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: cas, grenka, nenderus, petr-akhlamov, rider, zerg
Version: unstable   
Hardware: x86_64   
OS: Linux   
Attachments:
Description Flags
файл для проверки
none
image formats import
none
оригинальный вид детали none

Description Богдан Богуславский 2025-04-30 14:44:58 MSK
Created attachment 18346 [details]
файл для проверки

Стенды:
ALT Workstation 11.0 x86-64 (Обновлённый до Sisyphus)
ALT Workstation K 11.0 x86-64 (Обновлённый до Sisyphus)

Версия пакета: 
freecad-1.0.0-alt2.x86_64

Шаги воспроизведения:
1. Запустить приложение из меню (Образование -> FreeCAD) или из терминала:
$ freecad
2. Файл -> Создать
3. Файл -> Импортировать -> Выбрать файл из вложения -> Открыть
4. В открывшемся окне выбрать любой модуль, затем повторить импорт для другого модуля

Ожидаемый результат: успешный импорт

Реальный результат: при выборе модуля Image Formats (FreeCAD) делать выглядит как черный прямоугольник с отверстиями (см. image formats import во вложениях), а при выборе модуля SVG as geometry (ImportSVG) не происходит ничего
Comment 1 Богдан Богуславский 2025-04-30 14:45:36 MSK
Created attachment 18347 [details]
image formats import
Comment 2 Богдан Богуславский 2025-04-30 14:45:58 MSK
Created attachment 18348 [details]
оригинальный вид детали
Comment 3 Ахламов Петр 2025-05-05 16:00:14 MSK
Подтверждаю
Comment 4 Ахламов Петр 2025-05-06 12:52:57 MSK
Лог:

$ freecad
FreeCAD 1.0.0, Libs: 1.0.0RUnknown
(C) 2001-2024 FreeCAD contributors
FreeCAD is free and open-source software licensed under the terms of LGPL2+ license.

processing element 1: svg
existing group transform: []
existing group style: []
done processing element 1
processing element 2: g
existing group transform: [Matrix ((1,0,0,0),(0,1,0,0),(0,0,1,0),(0,0,0,1))]
existing group style: []
name: Pocket002
done processing element 2
processing element 3: path
existing group transform: [Matrix ((1,0,0,0),(0,1,0,0),(0,0,1,0),(0,0,0,1)), Matrix ((1,0,0,-3.645),(0,-1,0,66.355),(0,0,1,0),(0,0,0,1))]
existing group style: [[None, None, None]]
name: Pocket002_f0000
data: {'id': ['Pocket002_f0000'], 'd': ['M', '140.5', '65.0', 'L', '119.0', '65.0', 'L', '119.0', '65.0', 'L', '25.5', '65.0', 'L', '25.5', '65.0', 'L', '5.0', '65.0', 'L', '5.0', '65.0', 'L', '140.5', '65.0', 'L', '140.5', '65.0', 'Z'], 'stroke': '#191919', 'stroke-width': '0.7', 'style': 'stroke-width:0.7;stroke-miterlimit:4;stroke-dasharray:none;stroke-linecap:square;fill:#cccccc;fill-opacity:1.0;fill-rule: evenodd', 'stroke-miterlimit': '4', 'stroke-dasharray': 'none', 'stroke-linecap': 'square', 'fill': '#cccccc', 'fill-opacity': '1.0', 'fill-rule': 'evenodd'}
move Vector (140.5, -65.0, 0.0)
line Vector (140.5, -65.0, 0.0) Vector (119.0, -65.0, 0.0)
line Vector (119.0, -65.0, 0.0) Vector (25.5, -65.0, 0.0)
line Vector (25.5, -65.0, 0.0) Vector (5.0, -65.0, 0.0)
line Vector (5.0, -65.0, 0.0) Vector (140.5, -65.0, 0.0)
applying group transform: Matrix ((1,0,0,-3.645),(0,-1,0,66.355),(0,0,1,0),(0,0,0,1))
Traceback (most recent call last):
  File "<string>", line 2, in <module>
  File "/usr/lib64/python3/site-packages/freecad/module_io.py", line 16, in OpenInsertObject
    getattr(importerModule, importMethod)(objectPath, *importArgs, **importKwargs)
  File "/usr/lib64/freecad/Mod/Draft/importSVG.py", line 1788, in insert
    parser.parse(pyopen(filename))
  File "/usr/lib64/python3.12/xml/sax/expatreader.py", line 105, in parse
    xmlreader.IncrementalParser.parse(self, source)
  File "/usr/lib64/python3.12/xml/sax/xmlreader.py", line 124, in parse
    self.feed(buffer)
  File "/usr/lib64/python3.12/xml/sax/expatreader.py", line 211, in feed
    self._parser.Parse(data, isFinal)
  File "./Modules/pyexpat.c", line 423, in StartElement
  File "/usr/lib64/python3.12/xml/sax/expatreader.py", line 341, in start_element
    self._cont_handler.startElement(name, AttributesImpl(attrs))
  File "/usr/lib64/freecad/Mod/Draft/importSVG.py", line 1227, in startElement
    sh = self.applyTrans(sh)
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/freecad/Mod/Draft/importSVG.py", line 1568, in applyTrans
    sh = sh.transformGeometry(transform)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<class 'Part.OCCError'>: Geom_RectangularTrimmedSurface::V1==V2