# Развитие QInventor до практического аналога Inventor Дата исходного аудита: 12 октября 2026 года. Цель активна. ## Результат, к которому идём Самостоятельное Windows-приложение с русским интерфейсом, в котором инженер может пройти связанный процесс: эскиз → параметрическая деталь → сборка → спецификация → оформленный чертёж → сохранение и обмен точной геометрией. Сценарий должен оставаться работоспособным после изменения размеров, отмены/повтора действий и повторного открытия проекта. Архитектура сохраняется: собственные Python/Qt-сервисы и интерфейс поверх неизменённого portable FreeCAD/Open CASCADE. Исходники, проверки и сборка принадлежат этому репозиторию. Дополнительные внешние сервисы не нужны. Ориентир — поведение рабочих инструментов Inventor. Совместимость IPT/IAM/IDW, совпадение закрытого ядра Autodesk и полная коммерческая эквивалентность не входят в доказанный результат. Продвинутые инженерные модули требуют отдельных этапов реализации и проверки. ## Что обнаружено в текущем коде | Область | Реальная основа | Основной следующий шаг | |---|---|---| | Эскиз | Sketcher, универсальный размер, проекция, связанные offset/зеркала/массивы, отменяемый предпросмотр | Дуги и составные контуры; конфликты ограничений; интерактивность выбора | | Деталь | Нативные PartDesign-операции; собственное ассоциативное выдавливание; общая таблица параметров и выражений | Единый процесс остальных операций с предпросмотром и повторным редактированием | | Сборка | Native Assembly, App::Link, закрепление и соединения с решателем | Проверка ошибок решателя; вставка и замена компонентов; вложенные сборки | | Спецификация | Сводный и структурный состав вложенных экземпляров, материалы, масса, CSV и ассоциативная таблица на A4 | Приёмка переносимого выпуска; исключения, сохранённая нумерация, продолжение и выноски | | Чертёж | Три связанные TechDraw-проекции детали/сборки, русский A4, PDF/SVG/DXF и таблица состава | Основные надписи, размеры, разрезы, компоновка и большие сборочные листы | | Поставка | Launcher, sync, portable runtime, проверка снимка исходников при упаковке | Регрессионные проекты, проверка переносимой сборки после каждого этапа | Ключевые точки архитектуры: `src/QInventor/qi_model.py`, `qi_commands.py`, `qi_ui.py`, `qi_parameters.py`, `qi_parameters_ui.py`, `qi_bom.py`, `qi_bom_ui.py`, `qi_extrude.py`, `qi_projection.py`, `qi_sketch_offset.py`, `qi_sketch_patterns.py`; интеграционные сценарии находятся в `tests`. Вращение, отверстия, скругления, фаски и 3D-массивы уже доступны через штатные команды PartDesign. Их следует улучшать как существующие сценарии. ## Очередь реализации ### 1. Надёжность связанного процесса - Устранить блокировку создания чертежа сборки без выделенной детали. - Сохранять отсутствие проекта при отмене выбора плоскости нового эскиза. - Исправить редактирование координат со знаком, углов и размеров, управляемых выражениями, без потери параметрических связей. - Проверять состояние исходной геометрии до создания листа и экспорта. - Отвергать неуспешное соединение по результату реального Assembly solver; откатывать новый объект и положения компонентов. - Проверить весь путь: сборка → чертёж → изменение детали → обновление → сохранение/открытие → экспорт, включая недопустимые изменения. - Сделать область чертежа явной: весь документ/сборка или выбранная деталь. Сейчас команда строит виды всего документа независимо от выделения. Готовность: свежие kernel/GUI-проверки проходят; ошибки не оставляют ложного результата, изменённой геометрии или лишнего шага в истории отмены. ### 2. Параметрическая деталь для повседневной работы - Единая таблица модельных и пользовательских параметров: имя, размерность, выражение, вычисленное значение; атомарное применение с проверкой перестроения. - Единый русский процесс вращения, отверстий, скруглений, фасок и массивов с выбором геометрии, предпросмотром и повторным редактированием. - Расширить эскизные операции на дуги и составные контуры; диагностировать недоопределённость и конфликтующие ограничения. Готовность: корпус, кронштейн, вал и фланец создаются через интерфейс; изменение управляющего параметра обновляет downstream-операции. Неверные значения, размерности и циклические зависимости не портят проект. ### 3. Сборки и спецификации - Вставка из файлов/открытых документов, позиционирование, замена компонента с сохранением поддерживаемых связей и понятной диагностикой остальных. - Вложенные сборки, плоская и структурированная спецификация, обозначения, позиции, исключение компонентов и корректная масса повторных экземпляров. - Проверка пересечений твёрдых тел, управление видимостью и степенями свободы. Готовность: сборка с повторными деталями и подсборкой сохраняется, открывается, решается; изменение исходника обновляет экземпляры. BOM учитывает структуру и количество. STEP сохраняет экземпляры и их положения. ### 4. Производственный чертёж - Формат/масштаб, редактируемая основная надпись, проекции и их размещение. - Редактируемые поля основной надписи и явный выбор области листа. При создании листа материал определяется по источникам видов; для разных материалов используется «См. спецификацию». - Размеры, оси, разрезы и выносные виды в доступном TechDraw-процессе. - Таблица спецификации и позиции компонентов на сборочном листе. - Продолжение спецификации на нескольких листах, большие сборки и другие форматы. Первая таблица собственного A4 ограничена четырьмя сводными или пятью отображаемыми структурными строками; переполнение должно давать отказ, а не обрезанный экспорт. Позиционные выноски и общие шаблоны ещё требуют отдельной реализации и проверки. - Обновление всех ассоциативных видов после изменения детали или сборки. Готовность: детальный и сборочный листы проходят визуальную проверку; PDF/SVG содержат настоящую геометрию и читаемые подписи. Проект хранит редактируемые виды и связи, а не только изображение результата. ### 5. Расширенные инженерные возможности Листовой металл с развёрткой; локальная библиотека стандартных деталей; конфигурации деталей/сборок; простые правила проектирования; каркасы; кинематика. Для каждого модуля сначала определить поддерживаемые сценарии, ограничения и эталонные проекты. Наличие среды FreeCAD само по себе не означает завершённого модуля QInventor. ### 6. Подтверждение готовности и поставка - Свежий полный `scripts/test.ps1` с зафиксированными хешами исходников. - Сохранение/повторное открытие регрессионных FCStd, проверка solids и связей. - Реальные GUI-сценарии с Qt-событиями и снимками окон; визуальная проверка. - `scripts/package.ps1`, запуск распакованной копии с новым и существующим профилем, проверка отсутствия внешних зависимостей и сохранения лицензий. Этап принимается по конкретным рабочим проектам и результатам проверок. Цель не считается выполненной только по наличию кнопок, количеству команд или успешному запуску приложения. ## Источники ориентира - [Autodesk: возможности Inventor](https://www.autodesk.com/ca-en/products/inventor/features) - [Autodesk: работа с параметрами](https://help.autodesk.com/cloudhelp/2026/ENU/Inventor-Help/files/GUID-595F9D8E-9EEA-4446-91AB-830E5BAE548E.htm) - [Текущие границы соответствия](inventor-compatibility.md) - [Рабочие сценарии QInventor](workflows.md) ## Журнал этапов - 12.10.2026: проведён исходный аудит архитектуры, создана активная цель и очередь работ. Свежая базовая проверка: 16 групп, 110 вложенных проверок, 0 ошибок; native exit code 0. Начат этап надёжности связанного процесса. - 12.10.2026: исправлены отмена выбора плоскости без создания пустого проекта, координаты со знаком и углы эскиза, защита формул/справочных размеров, повторное применение без потери точности и лишнего Undo. Чертёж сборки создаётся без выделения тела; ошибочная исходная геометрия отвергается до создания листа. Жёсткие соединения по началам компонентов проверяются по фактическим мировым положениям, включая прямые и косвенные конфликты с откатом всей сборки. Подготовка чертежа дожидается фонового расчёта и пересчитывает проекции по окончательным размерам после быстрых изменений. - Итог этого набора: `scripts/test.ps1` — 19 групп, 129 вложенных проверок, 0 ошибок, native exit code 0, неизменный снимок 46 исходных файлов. [Отчёт этого этапа](../artifacts/validation-previous-20261013-192524.json). Новые сценарии проверяют настоящие Qt-действия, undo/redo, FCStd, ассоциативность и PDF/SVG. Текущая рабочая среда синхронизирована. Новый portable-архив на этом этапе не создавался. Общая цель остаётся активной; следующие крупные работы — единая таблица параметров, полноценные сборочные сценарии и оформление листов. - 13.10.2026: реализована общая таблица модельных и пользовательских параметров: длина, угол и число; формулы, комментарии, переименование и удаление. Новые переменные и связи применяются одним шагом Undo. Геометрия и зависимости предварительно проверяются на временной нативной копии; отклонение сохраняет существующий Redo, в том числе у детали с чертежом. Проверены сохранение FCStd, внешние зависимости документов и циклы. Таблица защищена от удаления скрытой строки и применения устаревшего индекса ограничения после изменений вне окна; добавлено явное обновление. Готовность проекций проверяется отдельно на каждой стадии расчёта. Непосредственный экспорт DXF после быстрых изменений обновляет виды: регрессия измеряет координаты экспортированных линий, а не только наличие файла. Экспорт существующего листа проверяет нативные ошибки его зависимостей, включая историю связанной детали в другом документе, до записи файлов. Это предотвращает экспорт старой сохранённой геометрии ошибочной операции. Независимые листы и проекции эскизов/линий сохраняют поддержку экспорта. - Итог этапа таблицы параметров: свежий `scripts/test.ps1 -TimeoutSeconds 1800` прошёл 21 группу и 155 вложенных проверок без ошибок; native exit code 0. Снимок всех 50 исходных файлов совпал с текущим кодом. Таблица отдельно проверена 16 сценариями ядра и 9 GUI-сценариями. Регрессия связанного чертежа подтверждает актуальную DXF-геометрию после быстрых изменений и отказ PDF/SVG/DXF до записи при ошибке операции исходной связанной детали. [Полный отчёт](../artifacts/validation-previous-20261013-211849.json). Исходная рабочая среда синхронизирована; portable-выпуск по этому снимку проверен свежим и повторным запуском обычного launcher с сохранением FCStd и параметров. Общая цель остаётся активной: дальнейшие этапы включают единый процесс остальных операций детали, развитие сборок и производственных чертежей. Ближайший приоритет — иерархическая спецификация вложенных сборок с материалом и массой конечных деталей; нативная вставка FCStd и повторных компонентов уже доступна и должна сохраняться. - 13.10.2026: добавлены сводная и структурная спецификации вложенных сборок. Количество внутри родителя и общее количество разделены; итоговая масса считается по конечным деталям без повторного сложения родительских строк. Нативные жёсткие и гибкие подсборки, внешние ссылки, масштабы и массивы сохраняют фактические экземпляры и мировые положения. Скрытые элементы остаются в физическом составе. Материал и плотность каждого экземпляра определяют массу и центр масс; native PropertyDensity переводится из внутренних единиц в кг/м³. Определения деталей, развёрнутые элементы массива и исходники булевых операций не становятся дополнительными деталями. Циклы, отсутствующие ссылки, ошибочные операции и плотности отклоняются до записи CSV. CSV заменяется атомарно после проверки всей выбранной области. Основная надпись использует материалы источников видов; посторонняя деталь документа не меняет материал листа. Пустой контейнер конструкционной геометрии не мешает просмотру массы единственной физической сборки. - Точечные проверки этого этапа: 13 сценариев ядра, 3 группы реальных Qt действий и 8 независимых проверок ранее найденных ошибок прошли успешно; native-процессы завершились с кодом 0. FCStd, изменение исходника, Undo/Redo и STEP проверены на сборке из семи твёрдых деталей; количество и положения в STEP измерены после чтения экспортированного файла. Итоговая полная регрессия прошла 23 группы и 172 вложенные проверки без ошибок, native exit code 0. Контрольные суммы всех 54 исходных файлов совпали с проверенным снимком. [Полный отчёт](../artifacts/validation-previous-20261014-224048.json). Дополнительно исправлен обработчик входа/выхода штатного редактора сборки: он обрабатывает только доступный объект эскиза. Проверка выбора ребра использует один жест мыши с обработкой событий между нажатием и отпусканием; клавиша D направляется фактическому Qt-фокусу внутри нативного viewport. Сохраняются проверка реального выбора, штатный диалог 40 мм, решатель и solid. Точечный прогон ленты прошёл 11/11 проверок, native exit code 0. Следующий приоритет после поставки этого этапа — ассоциативная таблица спецификации и позиции на сборочном листе, затем единый процесс остальных операций детали. Рендер и экспорт таблицы на листе ещё требуют реализации и проверки; наличие нативных типов TechDraw не подтверждает готовность. - 14.10.2026, текущий этап: реализована ассоциативная спецификация на русском A4 через нативные Spreadsheet::SheetPython и TechDraw::DrawViewSpreadsheet. Область берётся из источников проекций листа. Чертёж основной сборки хранит ссылку на её корень, поэтому изменение состава обновляет виды и таблицу. Проверены реальные метрики шрифта, число экземпляров, масса, FCStd и восстановление значения ячейки при Undo до дополнительного пересчёта. Отдельные проверки ядра прошли 10/10; DXF — 12/12 на настоящем повторном импорте. Независимая проверка восьми исходных/дополненных DXF подтверждает корректные идентификаторы и ссылки записей без скрытого ремонта при чтении. [Доказательства DXF](../artifacts/drawing-bom-dxf-review/README.md). Первый полный прогон остановлен лимитом 1800 секунд после 17 успешных групп без ошибок; снимок 59 исходных файлов не изменился. Повторный прогон того же набора завершился с 24 успешными группами и одной ошибкой: экспорт при переполнении A4 скрывал точную причину за общим сообщением. CAD завершился с кодом 0; все 59 исходных файлов сохранили контрольные суммы. Исправлена диагностика ошибки таблицы, конфликт имён dxf/DXF в отчёте и штатный 30-минутный лимит теста, недостаточный для измеренного 40-минутного прогона. Новый прогон требует подтверждения полного исправленного снимка. Этап ещё не принят: остаются полный результат, упаковка и свежий/повторный запуск точной распакованной копии. Доступный ZIP пока относится к предыдущему этапу. [Текущее состояние](../artifacts/drawing-bom-development-checkpoint-20261014.json). - 15.10.2026: проверка будущего вращения выявила также дефект действующей таблицы параметров. Нативное `copyObject` при предварительной проверке теряет сохранённую топологическую ссылку эскиза на грань. На реальном Revolution → Groove → эскиз на грани → Pocket копия принимает изменение угла 180° → 90°, а исходная модель теряет опору. Отмена и пересчёт восстанавливают геометрию и экземпляры сборки, но прежний Redo исчезает. Выпуск удерживается до исправления предварительной проверки и добавления этого сценария в регрессию. Проход существующих тестов недостаточен для данного случая. [Измеренный пример](../artifacts/revolve-native-probe/draft/downstream-comparison-runs/20261015-000602-3ecc43185eba4da5ac81dd26e6b52f8f/comparison-report.json). Отдельно воспроизведён отказ допустимого изменения высоты через ту же таблицу после создания спецификации: пробная копия исключает проекции, но ошибочно оставляет требующий их выходной лист. Исходный проект и Redo при таком отказе сохраняются. Исправление должно одновременно обеспечить изменение детали, пересчёт массы и ячеек, Undo/Redo и повторное открытие, сохранив проверку обычных входных таблиц и выражений. [Сквозной сценарий](../artifacts/parameter-drawing-bom-integration/README.md). Отдельный кандидат исправления прошёл 10 проверок геометрии, входных таблиц, истории и повторного открытия, а также четыре проверки выражений масштаба чертежа и пользовательских ячеек спецификации. Все процессы завершились с кодом 0; исходники проекта не менялись. Перенос кандидата в основной модуль и новая полная регрессия ещё обязательны. [Независимая проверка кандидата](../artifacts/parameter-preflight-regression-draft/acceptance-v2-20261015.md). Исправление перенесено в основной модуль. Первый прогон новой регрессии обнаружил также штатную ошибку Undo при смене типа вычисленной ячейки таблицы. Защита до применения проверена на обычных таблицах и спецификации: шесть сценариев прошли, включая немедленный Undo и исполнение прежнего Redo. Меняющие тип ячейки операции пока отклоняются; формулы не переписываются. Итоговые проверки параметров прошли 33/33 на основном коде, включая четыре сценария повторного открытия и изменения FCStd в новом процессе. Ядро завершилось с кодом 0, снимок 60 исходных файлов сохранился; ошибок восстановления Undo в журнале нет. Полный GUI-прогон 26 групп запущен на этом снимке; упаковка и обычный запуск точного ZIP ещё впереди. [Итоговая проверка параметров](../artifacts/parameter-preflight-integration-plan/production-runs/20261015-010323-c67ad7fd65534c41858f0107cec2df59/production-focused-report.json). Полный прогон на этом снимке не имеет подтверждённого завершения: сохранены 13 успешных групп без ошибок и отдельный результат новой регрессии 9/9, но процесс и родительская сессия уже отсутствуют. Проходом полного набора этот результат не считается. Дополнительный native-сценарий выявил потерю Redo при эквивалентной записи формулы с префиксом собственного документа; выпуск удерживается до исправления и повторной проверки итогового кода. [Воспроизведение no-op](../artifacts/parameter-canonical-noop/runs/20261015-154741-1506ba00e5734e39ba8cf5ead46dcdb3/report.json). Исправление канонических формул внесено: реальные отличия зависимостей, комментариев, имён и переменных сохраняются как изменения, а эквивалентная формула не открывает транзакцию. Обновлённый набор параметров прошёл 34/34, native exit 0, снимок 60 исходников неизменен. [Проверка исправленного кода](../artifacts/parameter-preflight-integration-plan/production-runs/20261015-155710-caa40c30f0a64deda709970c55d8c374/production-focused-report.json). Независимый STEP-тест выявил потерю переноса и поворота корня размещённой сборки и в штатном экспорте документа, и при явном выборе корня. Прежний STEP-тест использовал корень без преобразования и этот случай не покрывал. Изолированная нативная экспортная иерархия сохраняет мировую геометрию; исправление перенесено в основной STEP-экспортёр. Восемь проверок product API и чтение девяти STEP-файлов новым процессом прошли с native exit 0. Подтверждены общие определения повторных компонентов, исходные имена, мировые координаты и точная сохранность исходного проекта/Redo, включая холодный запрос геометрии и ошибку уже начавшейся записи файла. [Проверка STEP](../artifacts/step-world-export-candidate/README.md). Исправлен также экспорт BREP/IGES/STL: мировая геометрия извлекается по отдельным экземплярам, не вызывая меняющее исходные данные чтение составной Shape контейнера. Писатель получает отдельный BRep-снимок, а готовый файл заменяет прежний атомарно. Постоянная регрессия прошла 45 сценариев с массивами, масштабом, зеркальностью, масками, явным скрытым элементом и отказами записи. Пустая геометрия отклоняется до изменения файла. Сохранена измеренная штатная семантика форматов: STEP включает физические элементы массива, геометрические форматы учитывают маску; явный выбор скрытого элемента сохраняет его геометрию. Итоговый основной код прошёл 12 групп, включая полный headless kernel 20/20, и чтение 15 STEP-файлов новым процессом, native exit 0. Полный GUI-прогон 15.10.2026 завершён: 26/26 групп, native exit 0, все 61 исходный файл неизменны, ошибок восстановления в журнале нет. Свежие PDF трёх сценариев проверены после рендеринга Poppler: таблицы, количества и массы читаемы, наложения и обрезки нет. Упаковка и проверка обычного запуска точного portable-архива ещё обязательны. [Проверка основного кода](../artifacts/step-cold-root-probe/runs/20261015-163917-c4c46544873547e0ae015636af68378c/fresh-report.json). - Следующий этап после приёмки спецификации на листе — единый процесс вращения и вращательного выреза для валов, втулок и фланцев. Нативный прототип Revolution/Groove дополнен собственным русским Qt-интерфейсом. Свежий и повторный запуск прошли по три сценария с native exit 0: видимый предпросмотр канавки, создание и редактирование одним Undo, Cancel и эквивалентная формула без потери исполняемого Redo, отклонение угла 361° до изменения проекта. Это пока отдельный проверенный кандидат; самостоятельные модули продукта, полная регрессия и portable-проверка ещё обязательны. Неожиданная ошибка уже начатого нативного изменения остаётся отдельным ограничением точного восстановления истории. [Прототип и ограничения](../artifacts/revolve-native-probe/README.md).