8.9 KiB
Аудит P_Rec_Annot v1.0.4
Статический read-only аудит каталога C:\dev\autodesk\link\P_Rec_Annot\v1.0.4\repo. Исходник не запускался, не собирался и не изменялся. link — symbolic link на \\phpsrv03\NBIM\code\CS; каталог repo внутри ссылки — обычный directory без собственного .git.
Краткий вывод
P_Rec_Annot — не одна команда, а комплект из 25 legacy-проектов DLL в одном решении. Его ядро обслуживает орто-чертежи Plant 3D: пакетное обновление, размещение и обновление line-number annotations, автоматические осевые линии/опоры, высотные отметки, проверку отсутствующих объектов, слои viewport и ручные annotation blocks. README исходника прямо называет former OrthoTools.2019 (README.md:1-5) и перечисляет пользовательские команды (README.md:8-31).
Наиболее употребляемым в агрегате XLSX является имя P_Rec_Annot с 218 796 единицами Количество запусков. В самом исходном комплекте не найден подтверждённый writer этого счётчика: найдено только использование Environment.MachineName для выбора пользовательского индекса (GetLinenumberAnnotationText/LinenumberAnnotation.cs:225-250). Поэтому 218 796 нельзя доказательно трактовать как число ручных запусков; это внешний агрегат, семантику которого нужно подтвердить по источнику telemetry.
Факты инвентаризации
| Показатель | Значение |
|---|---|
| Файлов | 271 |
| C# исходников вне bin/obj/lib | 120 |
Проектов .csproj |
25 |
| DLL в исходном комплекте | 32 |
| AutoCAD-команд, включая архивные совпадения | 49 |
| Ribbon/even-handler/database/write evidence строк | 4 402+ |
| Target framework актуальных проектов | .NET Framework 4.7 |
| Platform target | x64 |
| Решение | P_Rec_Annot.sln |
Подтверждённые точки входа
OrthoLoaderреализует загрузку библиотек: читаетSettings.xml, строит путь от расположения текущей DLL и вызываетEditor.Command("._netload", ...)для каждой сборки (OrthoLoader/Loader.cs:24-29,48-82,105-118).RibbonреализуетIExtensionApplication, подписывается наComponentManager.ItemInitialized, создаёт вкладкуPluginsOrtho, восемь панелей и кнопки с командами (OrthoLoader/Ribbon.cs:16-29,151-190,193-377).- Кнопка аннотаций содержит
PXP-AAV,MTO-MAиBJ; отдельные команды актуальны для line numbers, elevations, supports, layers и package update (OrthoLoader/Ribbon.cs:31-145). PXP-IOD— session command пакетного обновления (UpdateOrthoDrawings/Commands.cs:519);PXP-OAиPXP-AAVзапускают автоматическую обработку, но автоматического event-trigger для самих аннотаций не доказано (OrthoAutoAnnotate/Commands.cs:6444-6463,AutoAnnotateView/Commands.cs:546).
Назначение и миграция
Основной переносимый контракт — правила получения Plant 3D данных, построения текста и создания/обновления орто-аннотаций. Переносить следует после выделения Core и Plant 3D 2026 adapter. Не переносить как есть загрузчик _netload, hard-coded ссылки на AutoCAD 2019, архивные копии и не подтверждённую telemetry.
Официальная документация Plant 3D 2026 подтверждает, что штатные annotations предназначены для orthographic drawings и поддерживают annotation styles/templates: About Annotations. Штатная настройка формата выполняется через Project Setup/Class Definitions: Annotation Format for Orthographic Drawings. Это подтверждает область пересечения, но не доказывает замену корпоративных правил P_Rec_Annot. Autodesk также документирует создание и обновление Ortho, но не эквивалент всего пакетного поведения: Create an Orthographic View, About Updating Orthographic Drawings.
Нужна ли новая кнопка: да, на первом этапе миграции нужна одна явная корпоративная кнопка/команда для воспроизводимого сценария Annotate, а не набор скрытых вызовов. Предварительно: вкладка «Промхимпроект», панель «Аннотации», команда PHP_REC_ANNOT; состав операций должен выбираться режимом или отдельными безопасными командами после golden-теста.
Ответы на ключевые вопросы
- Автоматические вызовы: обнаружены загрузочные и UI-события Ribbon, WinForms-события и временные PointMonitor; подписок
CommandWillStart/ObjectModified/Idle, запускающих аннотацию, не подтверждено. Риск повторной подписки остаётся уCurrentProjectOpenedEvent. - DWG: код массово использует AutoCAD transactions,
OpenMode.ForWrite,AppendEntity,BlockReference,MLeader, attributes и удаление старых annotation blocks; изменения проекта через Plant DataLinks читаются, прямой SQL/SQLite writer в исходниках не найден. - DCF/Project.xml: прямое изменение не доказано;
PnPDatabase/DataLinksManagerиPnPDrawings/PnPDatalinksсоздают косвенный риск через Plant API. - Повторный запуск: есть явные удаления ранее размещённых blocks в
AutoAnnotateView/Commands.cs:476-500иAutoLinenumberConnections/Commands.cs:535-558, но глобальная идемпотентность всего комплекта не доказана. - Undo: операции заключены в AutoCAD transactions; гарантия единого undo для пакетного сценария не доказана, нужна runtime-проверка.
- Build: не выполнялся по ограничению задания.
Файлы отчёта
Основные выводы находятся в Markdown-файлах этого каталога. evidence/ содержит только агрегированные CSV/текстовые метаданные, без копий исходников и бинарников. Инструмент повторного read-only анализа: tools/plugin-usage/Build-PRecAnnotAudit.ps1.
Ограничения
- Исходный каталог содержит release DLL, DWG, DOCX, PDF и ZIP, но они не добавляются в Git и не открывались/запускались.
- Без Plant 3D 2019 runtime нельзя подтвердить фактические визуальные результаты, число созданных объектов, undo и семантику внешнего usage-счётчика.
- Сравнение 2026 ограничено официально опубликованными возможностями; полноценная замена требует runtime-сопоставления корпоративных annotation blocks и правил.