Compare commits
54
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bfd31a3747 | ||
|
|
c5cf142159 | ||
|
|
bc481d4378 | ||
|
|
1fa25809de | ||
|
|
6ed1e4086b | ||
|
|
c633107273 | ||
|
|
2d9fbdd474 | ||
|
|
98564b807f | ||
|
|
1b4ff816ba | ||
|
|
13578b7c9b | ||
|
|
523d063ceb | ||
|
|
31171c9ed8 | ||
|
|
edf1640c4f | ||
|
|
81a075e684 | ||
|
|
32607e2f34 | ||
|
|
c9c4113e86 | ||
|
|
33f91c26aa | ||
|
|
ef615a1f8e | ||
|
|
e7765cbdda | ||
|
|
d8e61b7a5e | ||
|
|
79067b72de | ||
|
|
44de0cf787 | ||
|
|
239796aafe | ||
|
|
8a1735408a | ||
|
|
544b329077 | ||
|
|
1563e2fae0 | ||
|
|
bd5f47d811 | ||
|
|
1bfb91bc4b | ||
|
|
209b8b89b8 | ||
|
|
31787fc05a | ||
|
|
11cf97c476 | ||
|
|
76d362d2c3 | ||
|
|
37d3cacc13 | ||
|
|
713e620485 | ||
|
|
6f32371418 | ||
|
|
243080a1aa | ||
|
|
75c27ee8e5 | ||
|
|
c83ff3d9b3 | ||
|
|
09c53be7f4 | ||
|
|
bdd2c9c888 | ||
|
|
95dba856c8 | ||
|
|
6fa3af6eda | ||
|
|
c616188336 | ||
|
|
bb44b1b1aa | ||
|
|
ea3a9e157e | ||
|
|
837ac1d994 | ||
|
|
142b5f8b93 | ||
|
|
dcf95d7e3a | ||
|
|
c733a27cbb | ||
|
|
9a7a6cd678 | ||
|
|
66e52e5f50 | ||
|
|
60b3934cd2 | ||
|
|
34222cedc8 | ||
|
|
596c95a4b6 |
@@ -0,0 +1,129 @@
|
||||
# AGENTS.md
|
||||
|
||||
## Назначение проекта
|
||||
|
||||
Этот репозиторий содержит аудит, архитектуру, исходный код, тесты, runtime
|
||||
evidence и документацию миграции корпоративной экосистемы Autodesk AutoCAD
|
||||
Plant 3D 2019 на Autodesk AutoCAD Plant 3D 2026.
|
||||
|
||||
Конечная цель — функционально эквивалентная рабочая схема Plant 3D 2026:
|
||||
корпоративный Launcher, локальная доставка и активация пакетов, managed
|
||||
плагины, команды, Ribbon, Plant project integration, DataLinks, Ortho,
|
||||
аннотации, обновление, диагностика и rollback. Миграция не считается
|
||||
завершённой после успешной компиляции: необходима runtime-проверка реальных
|
||||
сценариев в Plant 3D 2026.
|
||||
|
||||
## Связанные репозитории
|
||||
|
||||
- основной Autodesk-репозиторий: `C:\dev\autodesk`;
|
||||
- Launcher Next: `C:\dev\launcher-next`;
|
||||
- legacy launcher (read-only): `C:\dev\launcher\git`, `C:\dev\p_serv_starter`;
|
||||
- legacy P_Rec_Annot (read-only): `C:\dev\autodesk\link\P_Rec_Annot\v1.0.4\repo`.
|
||||
|
||||
Legacy и deployed-файлы нельзя изменять без отдельного прямого задания.
|
||||
|
||||
## Целевая платформа и принцип миграции
|
||||
|
||||
- Autodesk AutoCAD Plant 3D 2026, series R25.1, Windows x64, .NET 8;
|
||||
- использовать реальные Autodesk 2026 managed assemblies;
|
||||
- managed package загружается локально, не напрямую с UNC;
|
||||
- Autodesk DLL нельзя коммитить, помещать в package/fixture или публиковать.
|
||||
|
||||
Переносится функциональное поведение, а не историческая структура файлов. Не
|
||||
воспроизводить без отдельного доказательства 20 последовательных `NETLOAD`,
|
||||
legacy LISP bootstrap, `OrthoLoader.dll`, загрузку с сети или прежние
|
||||
workaround. Предпочтительная цепочка:
|
||||
|
||||
`Launcher Next → versioned local package → один managed entry assembly → internal dependencies → commands and Ribbon`.
|
||||
|
||||
## Статус legacy-команд
|
||||
|
||||
Ни одна активная команда Plant 3D 2019 не исчезает молча. Для каждой команды
|
||||
фиксируется ровно один статус: `IMPLEMENTED`, `RUNTIME_VERIFIED`,
|
||||
`REPLACED_WITH_NATIVE`, `RETIRED_APPROVED` или `BLOCKED_WITH_REASON`.
|
||||
Aliases сохраняются, пока их удаление не утверждено отдельно.
|
||||
|
||||
## Runtime уровни
|
||||
|
||||
`Smoke` проверяет assembly load, регистрацию команд, Plant context, Ribbon,
|
||||
отсутствие необработанных исключений и отсутствие записи в DWG.
|
||||
|
||||
`DryRun` проверяет реальные Plant data, Ortho/sheet/view definitions, DataLinks,
|
||||
Plant objects, детерминированный план и отсутствие записи в DWG/project DB.
|
||||
|
||||
`Apply` разрешается только отдельным явным заданием: write guard, ограниченная
|
||||
DWG transaction, тестовая копия проекта, baseline, rollback/UNDO, duplicate
|
||||
protection и runtime evidence обязательны. Apply нельзя включать только
|
||||
локальной конфигурацией.
|
||||
|
||||
## Runtime важнее предположений
|
||||
|
||||
Build и unit tests не доказывают Autodesk integration. Для
|
||||
`RUNTIME_VERIFIED` необходимы фактические результаты: команда, module path,
|
||||
DBMOD, Ribbon, DataLinks, Ortho status, telemetry и состояние файлов после
|
||||
закрытия. Не выдумывать UI evidence: использовать `null`, `NOT VERIFIED` или
|
||||
`BLOCKED WITH REASON`.
|
||||
|
||||
На тестовой машине реальный Plant 3D запуск разрешён, если он входит в задачу
|
||||
и есть test branch, локальный fixture, пройденные build/tests, rollback и нет
|
||||
production deploy. Не создавать искусственный review-gate перед Process.Start.
|
||||
Остановка допустима лишь после завершения доступной части работы и при
|
||||
конкретном внешнем blocker: установка, ОС, права, Autodesk runtime, fixture или
|
||||
необходимость production-данных.
|
||||
|
||||
## Test fixtures и отсутствие записи
|
||||
|
||||
Fixtures создаются вне Git, например `<TEST_FIXTURE_ROOT>`. Ortho fixture —
|
||||
настоящий Plant project с Pipe, DataLinks row, line group, Ortho drawing,
|
||||
Ortho viewport и source-model connection; обычный AutoCAD viewport не годится.
|
||||
Production DWG/project использовать нельзя без прямого разрешения.
|
||||
|
||||
Нельзя коммитить DWG, DCF, Project.xml с runtime-data, project DB, Ortho
|
||||
generated files или реальные engineering values.
|
||||
|
||||
Для Smoke/DryRun проверять DBMOD до/после, SHA-256 содержательных project
|
||||
files, отсутствие непредусмотренных transactions/DCF/project-metadata writes.
|
||||
`LastWriteTime` недостаточен. Отделять служебные Plant cache/session files от
|
||||
содержательных данных.
|
||||
|
||||
## Ribbon, механика и evidence
|
||||
|
||||
Ribbon — часть продукта: проверять tab, panel, button, command binding, stable
|
||||
IDs, отсутствие дубликатов при документах/workspace/reinitialization. Команда
|
||||
может быть отдельно рабочей, но plugin slice не завершён без Ribbon evidence
|
||||
или отдельного UI defect.
|
||||
|
||||
Документировать каждую runtime-цепочку: component/project/class/method,
|
||||
input/output, Autodesk transaction mode, writes, telemetry, failure code и
|
||||
rollback action. Документация соответствует фактическому коду.
|
||||
|
||||
Evidence содержит только проверенные значения. Не добавлять username, permit,
|
||||
полный environment, real project paths/line numbers/ObjectId/RowId/properties,
|
||||
полные logs, local manifest или startup scripts. Путь fixture заменять на
|
||||
`<TEST_FIXTURE_ROOT>`.
|
||||
|
||||
## Warnings и Git
|
||||
|
||||
Известный `MSB3277` WindowsBase 4.0.0.0/8.0.0.0 допустим только при полном
|
||||
совпадении с ранее зафиксированным warning. Новые warnings исследовать; не
|
||||
подавлять `NoWarn` без причины.
|
||||
|
||||
Запрещены force push, amend/rebase опубликованной истории, push binaries,
|
||||
изменение неизвестного remote и production deployment из test branch. Перед
|
||||
commit выполнять:
|
||||
|
||||
```powershell
|
||||
git diff --check
|
||||
git status --short
|
||||
git diff --cached --check
|
||||
```
|
||||
|
||||
Не смешивать Launcher defect, plugin defect, runtime evidence и unrelated
|
||||
formatting в одном commit.
|
||||
|
||||
## Definition of Done
|
||||
|
||||
Срез завершён, когда реализованы код, build/tests, валидный package и требуемый
|
||||
runtime-сценарий; записаны фактические результаты; выполнен rollback; fixture и
|
||||
production изолированы; механика документирована; ветка опубликована обычным
|
||||
push.
|
||||
@@ -0,0 +1,6 @@
|
||||
artifacts/
|
||||
.local-dotnet-sdk/
|
||||
.local-tools/
|
||||
bin/
|
||||
obj/
|
||||
.vs/
|
||||
@@ -0,0 +1,89 @@
|
||||
# AGENTS.md — P_Rec_Annot
|
||||
|
||||
## Назначение и package
|
||||
|
||||
`P_Rec_Annot` — приоритетный Plant 3D 2026 plugin для чтения, планирования и
|
||||
последующего создания Ortho-аннотаций; это перенос активного legacy поведения
|
||||
Plant 3D 2019 на .NET 8/Plant 3D 2026.
|
||||
|
||||
Единственная assembly для `NETLOAD` — `PRecAnnot.Plant3D2026.dll`.
|
||||
`PRecAnnot.*.dll` — internal managed dependencies, их нельзя NETLOAD по одной.
|
||||
Использовать Autodesk 2026 references; Autodesk DLL не включать в bundle.
|
||||
|
||||
## Commands и context
|
||||
|
||||
Поддерживаемые команды: `PHP_REC_ANNOT`, `PXP-AAV`, `PXP-OA`. Все
|
||||
регистрируются реальным Autodesk API, работают в Smoke/DryRun, не изменяют DWG
|
||||
в этих режимах и создают одно usage event на явный вызов.
|
||||
|
||||
Project status: `NotFound`, `FoundWithName`, `FoundWithoutDisplayName`,
|
||||
`Ambiguous`, `Failed`. Никогда не выводить `проект '' найден`; для пустого
|
||||
display name: `Plant 3D-проект открыт; отображаемое имя не определено.`
|
||||
Diagnostic code: `PLANT_PROJECT_DISPLAY_NAME_EMPTY`.
|
||||
|
||||
Drawing states: `Ortho`, `NotOrtho`, `Ambiguous`, `Failed`. Обычный DWG не
|
||||
классифицируется как Ortho; для реального Ortho применять Autodesk API и
|
||||
`OrthoDocUtils.IsValidOrthoDrawing`.
|
||||
|
||||
## DryRun и determinism
|
||||
|
||||
Pipeline: `Plant context → Ortho detection → sheet/view definitions → viewport
|
||||
snapshots → DataLinks → Plant properties → independent DTO → deterministic
|
||||
AnnotationPlan → diagnostics → no write`.
|
||||
|
||||
Autodesk objects, transactions и database handles остаются в adapter layer;
|
||||
Core/Application используют только независимые DTO. На неизменном fixture
|
||||
повторный DryRun обязан давать тот же PlanId, counts, порядок операций и warning
|
||||
codes, без side effects. PlanId не включает время, GUID, absolute path,
|
||||
нестабильный ObjectId или пользовательские данные.
|
||||
|
||||
## Write guard, Ribbon, tests
|
||||
|
||||
Все writes проходят централизованный write guard; в Smoke/DryRun он всегда
|
||||
запрещает изменения. Apply не обходится через command handler/adapter.
|
||||
|
||||
Ожидаемый Ribbon путь: `Промхимпроект → Аннотации → Аннотировать`. Требуются
|
||||
stable IDs, отсутствие дублей, binding к `PHP_REC_ANNOT`, устойчивость к
|
||||
документам/workspace и корректный Terminate.
|
||||
|
||||
Unit tests не требуют Autodesk runtime. Runtime evidence отдельно фиксирует
|
||||
initialization, commands, context, Ortho, DataLinks, plan, Ribbon, DBMOD,
|
||||
telemetry и shutdown.
|
||||
|
||||
Bundle содержит только фактический runtime dependency graph и никогда не
|
||||
содержит Autodesk DLL, PDB, test assemblies, legacy 2019 assemblies, bin/obj
|
||||
или production configuration.
|
||||
|
||||
Fixture: local Plant 3D 2026 project вне Git с настоящей Pipe, synthetic line
|
||||
number, Ortho drawing/viewport и SHA baseline до DryRun.
|
||||
|
||||
## Viewport membership and source DataLinks
|
||||
|
||||
Legacy P_Rec_Annot source for read-only analysis is
|
||||
`\\phpsrv03\NBIM\code\CS\P_Rec_Annot\v1.0.4\repo`.
|
||||
|
||||
A source object is not a member of an Ortho viewport without confirmed
|
||||
evidence. A geometry-only filter is at most `PartiallyResolved`. Apply is
|
||||
blocked by any `PLUGIN_ONLY_CHANGE` in a DWG, DCF, or project metadata found by
|
||||
a paired CONTROL/DryRun comparison.
|
||||
|
||||
## Ortho source DataLinks and DCF control
|
||||
|
||||
DataLinks активного Ortho drawing не являются источником Piping rows. Piping
|
||||
rows читаются из source model drawing и Piping project part, разрешённых через
|
||||
Ortho sheet/view definitions.
|
||||
|
||||
Перед предположениями об Autodesk runtime API необходимо исследовать текущий
|
||||
код, доступный legacy usage, assembly metadata и реальные runtime types.
|
||||
Reflection/runtime inspection применяется только для подтверждения данных,
|
||||
которых нельзя установить статически. Production resolver не угадывает
|
||||
Autodesk properties по строковым именам.
|
||||
|
||||
Подтверждённый контракт Plant 3D 2026: `IDwgViewDef.DwgQuery` →
|
||||
`IDwgQuery.ModelFiles` → `ModelFile[].ModelFileName`. При несовпадении типа
|
||||
возвращать `ORTHO_MODEL_FILES_API_UNSUPPORTED`, без fallback-эвристики.
|
||||
|
||||
Проверка DCF выполняется на парных `control` и `DryRun` fixtures, созданных из
|
||||
одного закрытого состояния проекта. Сравнивать нужно `control delta` с
|
||||
`DryRun delta`: одинаковые изменения классифицируются как baseline behavior
|
||||
Plant 3D, а plugin-only изменения блокируют дальнейшую работу.
|
||||
@@ -0,0 +1,13 @@
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<LangVersion>latest</LangVersion>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<Deterministic>true</Deterministic>
|
||||
<DebugType>portable</DebugType>
|
||||
<AutoCAD2026ManagedDir Condition="'$(AutoCAD2026ManagedDir)' == '' and '$(Plant3D2026InstallDir)' != ''">$(Plant3D2026InstallDir)</AutoCAD2026ManagedDir>
|
||||
<Plant3D2026ManagedDir Condition="'$(Plant3D2026ManagedDir)' == '' and '$(Plant3D2026InstallDir)' != ''">$(Plant3D2026InstallDir)\PLNT3D</Plant3D2026ManagedDir>
|
||||
<Plant3D2026InstallDir Condition="'$(Plant3D2026InstallDir)' == '' and '$(AutoCAD2026ManagedDir)' != ''">$(AutoCAD2026ManagedDir)</Plant3D2026InstallDir>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,54 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.0.31903.59
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PRecAnnot.Abstractions", "src\PRecAnnot.Abstractions\PRecAnnot.Abstractions.csproj", "{10000000-0000-0000-0000-000000000001}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PRecAnnot.Core", "src\PRecAnnot.Core\PRecAnnot.Core.csproj", "{10000000-0000-0000-0000-000000000002}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PRecAnnot.Application", "src\PRecAnnot.Application\PRecAnnot.Application.csproj", "{10000000-0000-0000-0000-000000000003}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PRecAnnot.Plant3D2026", "src\PRecAnnot.Plant3D2026\PRecAnnot.Plant3D2026.csproj", "{10000000-0000-0000-0000-000000000004}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PRecAnnot.UI", "src\PRecAnnot.UI\PRecAnnot.UI.csproj", "{10000000-0000-0000-0000-000000000005}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PRecAnnot.Telemetry", "src\PRecAnnot.Telemetry\PRecAnnot.Telemetry.csproj", "{10000000-0000-0000-0000-000000000006}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PRecAnnot.Core.Tests", "tests\PRecAnnot.Core.Tests\PRecAnnot.Core.Tests.csproj", "{10000000-0000-0000-0000-000000000007}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{10000000-0000-0000-0000-000000000001}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{10000000-0000-0000-0000-000000000001}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{10000000-0000-0000-0000-000000000001}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{10000000-0000-0000-0000-000000000001}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{10000000-0000-0000-0000-000000000002}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{10000000-0000-0000-0000-000000000002}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{10000000-0000-0000-0000-000000000002}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{10000000-0000-0000-0000-000000000002}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{10000000-0000-0000-0000-000000000003}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{10000000-0000-0000-0000-000000000003}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{10000000-0000-0000-0000-000000000003}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{10000000-0000-0000-0000-000000000003}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{10000000-0000-0000-0000-000000000004}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{10000000-0000-0000-0000-000000000004}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{10000000-0000-0000-0000-000000000004}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{10000000-0000-0000-0000-000000000004}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{10000000-0000-0000-0000-000000000005}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{10000000-0000-0000-0000-000000000005}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{10000000-0000-0000-0000-000000000005}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{10000000-0000-0000-0000-000000000005}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{10000000-0000-0000-0000-000000000006}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{10000000-0000-0000-0000-000000000006}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{10000000-0000-0000-0000-000000000006}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{10000000-0000-0000-0000-000000000006}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{10000000-0000-0000-0000-000000000007}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{10000000-0000-0000-0000-000000000007}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{10000000-0000-0000-0000-000000000007}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{10000000-0000-0000-0000-000000000007}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -0,0 +1,24 @@
|
||||
# P_Rec_Annot Plant 3D 2026 foundation
|
||||
|
||||
Foundation for migration from the legacy P_Rec_Annot v1.0.4. Legacy sources remain read-only and are not copied here.
|
||||
|
||||
Current slice:
|
||||
|
||||
* `PRecAnnot.Abstractions` — Autodesk-free immutable contracts and DTOs;
|
||||
* `PRecAnnot.Core` — deterministic annotation planning and duplicate filtering;
|
||||
* `PRecAnnot.Application` — command registry and use-case orchestration;
|
||||
* `PRecAnnot.Plant3D2026` — guarded adapter boundary; compilation against Plant 3D 2026 is blocked until the SDK/runtime is installed;
|
||||
* `PRecAnnot.UI` — idempotent Ribbon registration model, without legacy `_netload`;
|
||||
* `PRecAnnot.Telemetry` — local JSONL command-scope events, without project path/number;
|
||||
* `PRecAnnot.Bundle.Tests` and `PRecAnnot.Core.Tests` — architecture/core/packaging checks.
|
||||
|
||||
The first vertical slice is intentionally a dry-run planning slice. It does not mutate DWG until the Plant 3D 2026 adapter is compiled and runtime-tested on a controlled project.
|
||||
|
||||
Build:
|
||||
|
||||
```powershell
|
||||
dotnet build .\PRecAnnot2026.sln --configuration Release
|
||||
dotnet test .\PRecAnnot2026.sln --configuration Release --no-build
|
||||
```
|
||||
|
||||
When Plant 3D 2026 is installed, pass `/p:Plant3D2026InstallDir=...`. Autodesk assemblies are `Private=false`, `CopyLocal=false` and are never committed.
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ApplicationPackage SchemaVersion="1.0" Name="P_Rec_Annot" Description="P_Rec_Annot Plant 3D 2026" AppVersion="0.1.0" Author="NBIM">
|
||||
<Components>
|
||||
<!-- SeriesMin/SeriesMax and platform token are pending official/runtime verification. -->
|
||||
<RuntimeRequirements OS="Win64" />
|
||||
<ComponentEntry AppName="PRecAnnot2026" ModuleName="Contents\Windows\PRecAnnot.Plant3D2026.dll" AppDescription="P_Rec_Annot entry assembly" LoadReasons="LoadOnAutoCADStartup" />
|
||||
</Components>
|
||||
</ApplicationPackage>
|
||||
@@ -0,0 +1,5 @@
|
||||
# Annotation-plan determinism
|
||||
|
||||
`AnnotationPlanBuilder` uses schema version `1`. Its canonical input is the normalized command, source drawing basename, view ID, source snapshots sorted by stable ID, properties sorted by key, membership state, and operations sorted by stable source key and type. Absolute paths, process data, timestamps and runtime ObjectIds are excluded.
|
||||
|
||||
Runtime DryRun confirmed equal PlanIds and summaries for two calls of each supported command. Changing a relevant normalized input changes the PlanId.
|
||||
@@ -0,0 +1,3 @@
|
||||
# Target architecture
|
||||
|
||||
Core and Abstractions have no Autodesk, WinForms or WPF references. Only `PRecAnnot.Plant3D2026` may reference installed Autodesk assemblies. DWG mutation remains synchronous on AutoCAD's thread; no `Task.Run` is used for database operations. Ribbon registration is guarded and unloadable. The bundle has one entry assembly and no legacy `_netload` chain.
|
||||
@@ -0,0 +1,29 @@
|
||||
# Build
|
||||
|
||||
The workstation has .NET SDK 8.0.423 and Autodesk AutoCAD Plant 3D 2026 installed. The paths are deliberately supplied at build time; no machine-specific Autodesk path is stored in project files.
|
||||
|
||||
Detected assembly inventory:
|
||||
|
||||
| Assembly | Assembly version | Build input |
|
||||
|---|---:|---|
|
||||
| AcMgd.dll | 25.1.0.0 | `AutoCAD2026ManagedDir` |
|
||||
| AcDbMgd.dll | 25.1.0.0 | `AutoCAD2026ManagedDir` |
|
||||
| AcCoreMgd.dll | 25.1.0.0 | `AutoCAD2026ManagedDir` |
|
||||
| AdWindows.dll | 5.2.1.1 | `AutoCAD2026ManagedDir` |
|
||||
| PnP3dObjectsMgd.dll | 17.0.60.1 | `Plant3D2026ManagedDir` |
|
||||
| PnPProjectManagerMgd.dll | 17.0.60.1 | `Plant3D2026ManagedDir` |
|
||||
|
||||
The actual build used:
|
||||
|
||||
```powershell
|
||||
dotnet restore .\Plant3D2026\P_Rec_Annot\PRecAnnot2026.sln
|
||||
dotnet build .\Plant3D2026\P_Rec_Annot\PRecAnnot2026.sln --configuration Release `
|
||||
/p:AutoCAD2026ManagedDir="<AutoCAD managed directory>" `
|
||||
/p:Plant3D2026ManagedDir="<Plant 3D managed directory>"
|
||||
```
|
||||
|
||||
`PRecAnnot.Plant3D2026` now compiles against the real AutoCAD/Plant 3D 2026 metadata. The adapter has real `IExtensionApplication`, `CommandMethod`, `PlantApplication.CurrentProject`, `Document`, `Editor`, and `Autodesk.Windows` Ribbon references. The previous conditional foundation-only adapter was removed. Autodesk references are `Private=false` and `CopyLocal=false`.
|
||||
|
||||
Release emits one non-fatal WindowsBase reference conflict caused by Autodesk's legacy reference surface versus the .NET 8 reference pack. It does not copy Autodesk assemblies to output. Autodesk DLLs are excluded from Git, NuGet, bundle, and publish output.
|
||||
|
||||
The local smoke bundle is created at `Plant3D2026\P_Rec_Annot\artifacts\P_Rec_Annot.bundle`. Deploy is NOT PERFORMED.
|
||||
@@ -0,0 +1,18 @@
|
||||
# Command migration matrix
|
||||
|
||||
Initial active set is based on non-archive command registrations and Ribbon definitions in audit evidence. This matrix is deliberately explicit; commands remain blocked until Plant 3D 2026 runtime evidence exists.
|
||||
|
||||
| Legacy command | Legacy module | Target use case | Decision | Status | Blocker/test |
|
||||
|---|---|---|---|---|---|
|
||||
| PXP-AAV | AutoAnnotateView | automatic annotations in viewport | port after isolation | BLOCKED_WITH_REASON | 2026 assemblies/runtime |
|
||||
| PXP-OA | OrthoAutoAnnotate | axis/support graphical annotations | port after isolation | BLOCKED_WITH_REASON | exact legacy rules/golden DWG |
|
||||
| PXP-ALC | AutoLinenumberConnections | line-number connection annotations | reimplement | BLOCKED_WITH_REASON | DataLinks adapter |
|
||||
| PXP-LN, PXP-ELN, PXP-ULN, PXP-ESN, PXP-RMP | AnnotateLineNumbers | line-number list/updates | reimplement | BLOCKED_WITH_REASON | golden cases |
|
||||
| PXP-AE, PXP-IE | AutoElevation/InsertElevation | elevations | reimplement | BLOCKED_WITH_REASON | geometry/runtime |
|
||||
| PXP-IOD | UpdateOrthoDrawings | batch update | defer to Wave 5 | BLOCKED_WITH_REASON | multi-DWG transaction |
|
||||
| PXP-UOB | UpdateOrthoViewBlocks | viewport layers | adapter | BLOCKED_WITH_REASON | layer API |
|
||||
| PXP-OSI, PXP-COV | OrthoAutoAnnotate/CheckOrthoView | locate/check objects | compare native | BLOCKED_WITH_REASON | runtime comparison |
|
||||
| PXP-MA, CAC, BJ, mto-ma | PHPAnnotations/P3DNewMa | manual annotation blocks | port/review | BLOCKED_WITH_REASON | UI and block contract |
|
||||
| PXP-AC | SwapAttributesMenuItem | swap annotation attributes | port after rules | BLOCKED_WITH_REASON | block schema |
|
||||
|
||||
Archive-only registrations are not published. No command is silently discarded.
|
||||
@@ -0,0 +1,26 @@
|
||||
# CONTROL versus DryRun DCF comparison
|
||||
|
||||
DBMOD covers only the active drawing. This procedure separately compares
|
||||
content-bearing project files after identical CONTROL and DryRun sessions.
|
||||
|
||||
1. With Plant 3D closed and the Launcher session `RolledBack`, copy the local
|
||||
fixture to `<FROZEN_FIXTURE>`.
|
||||
2. Create `<CONTROL_FIXTURE>` and `<DRYRUN_FIXTURE>` from that same frozen
|
||||
state; calculate complete local SHA-256 inventories before each run.
|
||||
3. Open model and Ortho drawings in CONTROL through the same Launcher DryRun
|
||||
launch contract, but invoke no P_Rec_Annot command. Close without saving,
|
||||
wait for Launcher rollback, then calculate the after inventory.
|
||||
4. Repeat with DRYRUN and invoke each supported command twice. Close without
|
||||
saving, wait for rollback, then calculate the after inventory.
|
||||
5. Compare deltas by logical relative path. Classify each content-bearing file
|
||||
as `UNCHANGED`, `AUTODESK_BASELINE_CHANGE`, `PLUGIN_ONLY_CHANGE`, or
|
||||
`INCONCLUSIVE`.
|
||||
|
||||
Content-bearing groups include model DWG, Ortho DWG, `Piping.dcf`, remaining
|
||||
DCF/database files, `Project.xml` or equivalent project metadata, and Ortho
|
||||
metadata. Lock, cache, session, log, preview, and temporary files are reported
|
||||
separately and cannot establish project invariance.
|
||||
|
||||
Any `PLUGIN_ONLY_CHANGE` blocks Apply. Full paths and hashes remain local;
|
||||
repository evidence contains only logical fixture markers, groups, counts, and
|
||||
classifications.
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"executionMode": "DryRun",
|
||||
"planSchemaVersion": 1,
|
||||
"sourceObjectsRead": 7,
|
||||
"membershipResolved": 0,
|
||||
"membershipPartial": 0,
|
||||
"membershipUnresolved": 7,
|
||||
"phpRecAnnotPlanIds": ["plan-C5D40DC32505D5D9CFE6D38B", "plan-C5D40DC32505D5D9CFE6D38B"],
|
||||
"pxpAavPlanIds": ["plan-E4877CA13418D43A17F47AAA", "plan-E4877CA13418D43A17F47AAA"],
|
||||
"pxpOaPlanIds": ["plan-6C794D25C292E73AA3BDDC31", "plan-6C794D25C292E73AA3BDDC31"],
|
||||
"summariesDeterministic": true,
|
||||
"dbmodBefore": 0,
|
||||
"dbmodAfter": 0,
|
||||
"launcherSession": "RolledBack",
|
||||
"dcfControlComparison": null,
|
||||
"applyModeUsed": false
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"executionMode": "DryRun",
|
||||
"runtimeExecuted": false,
|
||||
"plantProjectDetected": null,
|
||||
"orthoDetection": "NotExecuted",
|
||||
"viewportCount": null,
|
||||
"dataLinksAvailable": null,
|
||||
"objectsRead": null,
|
||||
"plan": {
|
||||
"create": null,
|
||||
"update": null,
|
||||
"skip": null,
|
||||
"conflict": null,
|
||||
"unsupported": null
|
||||
},
|
||||
"planDeterministic": true,
|
||||
"dbmodBefore": null,
|
||||
"dbmodAfter": null,
|
||||
"dwgModified": null,
|
||||
"dcfModified": null,
|
||||
"projectXmlModified": null,
|
||||
"unhandledExceptions": null,
|
||||
"blocker": "No controlled test Ortho DWG/project path was supplied or discovered; runtime DryRun was not claimed."
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"executionMode": "DryRun",
|
||||
"fixture": {
|
||||
"frozen": "<FROZEN_FIXTURE>",
|
||||
"control": "<CONTROL_FIXTURE>",
|
||||
"dryRun": "<DRYRUN_FIXTURE>",
|
||||
"trackedFileCount": 210
|
||||
},
|
||||
"membership": {
|
||||
"mechanism": "IDwgViewDef.DwgQuery.Execute -> MdObjectId.PrjObjectId -> DataLinksManager.FindAcPpRowId",
|
||||
"orthoViews": 1,
|
||||
"sourceObjects": 7,
|
||||
"resolved": 5,
|
||||
"partiallyResolved": 0,
|
||||
"outsideView": 2,
|
||||
"notResolved": 0,
|
||||
"evidenceCode": "VIEW_MEMBERSHIP_FROM_CONFIRMED_PNP_ID"
|
||||
},
|
||||
"commands": {
|
||||
"PHP_REC_ANNOT": {
|
||||
"planSchemaVersion": 1,
|
||||
"run1PlanId": "plan-AD701C7AA38D99E4C28D7D6D",
|
||||
"run2PlanId": "plan-AD701C7AA38D99E4C28D7D6D",
|
||||
"planDeterministic": true,
|
||||
"summaryDeterministic": true
|
||||
},
|
||||
"PXP-AAV": {
|
||||
"planSchemaVersion": 1,
|
||||
"run1PlanId": "plan-C4FCD62F4EEBA1D1948FA22B",
|
||||
"run2PlanId": "plan-C4FCD62F4EEBA1D1948FA22B",
|
||||
"planDeterministic": true,
|
||||
"summaryDeterministic": true
|
||||
},
|
||||
"PXP-OA": {
|
||||
"planSchemaVersion": 1,
|
||||
"run1PlanId": "plan-C30D133E2D5B4BF4C0AF2ED1",
|
||||
"run2PlanId": "plan-C30D133E2D5B4BF4C0AF2ED1",
|
||||
"planDeterministic": true,
|
||||
"summaryDeterministic": true
|
||||
}
|
||||
},
|
||||
"projectFileComparison": {
|
||||
"controlDeltaCount": 0,
|
||||
"dryRunDeltaCount": 0,
|
||||
"modelDwgPluginOnlyDelta": "UNCHANGED",
|
||||
"orthoDwgPluginOnlyDelta": "UNCHANGED",
|
||||
"pipingDcfPluginOnlyDelta": "UNCHANGED",
|
||||
"projectMetadataPluginOnlyDelta": "UNCHANGED"
|
||||
},
|
||||
"dbmod": {
|
||||
"pairedRun": null,
|
||||
"reason": "Command-window output was not retained."
|
||||
},
|
||||
"launcher": {
|
||||
"controlSession": "RolledBack",
|
||||
"dryRunSession": "RolledBack",
|
||||
"netloadCount": 1,
|
||||
"profileArgumentPresent": false
|
||||
},
|
||||
"apply": {
|
||||
"performed": false,
|
||||
"authorised": false,
|
||||
"reason": "All operations remain Skip; annotation rules are not yet implemented."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"date": "2026-08-03",
|
||||
"executionMode": "DryRun",
|
||||
"plantProjectDetected": true,
|
||||
"projectDisplayNameStatus": "FoundWithName",
|
||||
"orthoDetection": "Confirmed",
|
||||
"viewportCount": 1,
|
||||
"dataLinksAvailable": true,
|
||||
"dataLinksSheetToSourceMapping": "resolved-through-piping-project-drawing-id",
|
||||
"sourceDrawingsResolved": 1,
|
||||
"sourceDataLinksAvailable": true,
|
||||
"objectsRead": 7,
|
||||
"pipeObjectsRead": 7,
|
||||
"phpRecAnnotRuns": 1,
|
||||
"pxpAavRuns": null,
|
||||
"pxpOaRuns": null,
|
||||
"planId": null,
|
||||
"repeatedPlanIdEqual": null,
|
||||
"dbmodBefore": null,
|
||||
"dbmodAfter": null,
|
||||
"dwgModified": null,
|
||||
"dcfModified": null,
|
||||
"changedProjectFiles": null,
|
||||
"unhandledExceptions": 0,
|
||||
"applyModeUsed": false,
|
||||
"launcherRollback": "RolledBack",
|
||||
"exactViewportMembership": "not-verified"
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"product": "Autodesk AutoCAD Plant 3D 2026",
|
||||
"manualNetload": true,
|
||||
"bundleLoaded": true,
|
||||
"automaticAppLoaderChecked": false,
|
||||
"smokeModeConfirmedByOperator": true,
|
||||
"observedCommandLogRuntimeMode": "Normal",
|
||||
"assemblyInitializeCountObserved": 1,
|
||||
"commands": {
|
||||
"PHP_REC_ANNOT": { "registered": true, "executed": true, "usageEvents": 1, "result": "PreflightAccepted" },
|
||||
"PXP-AAV": { "registered": true, "executed": true, "usageEvents": 1, "result": "PreflightAccepted" },
|
||||
"PXP-OA": { "registered": true, "executed": true, "usageEvents": 1, "result": "PreflightAccepted" }
|
||||
},
|
||||
"ribbon": { "created": true, "duplicateCheckedExhaustively": false },
|
||||
"plantContext": { "projectDetected": true, "projectDisplayName": "DefaultProject", "observedOrthoDetected": false, "dataLinksAvailable": true },
|
||||
"writesBlocked": true,
|
||||
"dbmodChecked": false,
|
||||
"dwgModified": false,
|
||||
"dcfModified": false,
|
||||
"projectXmlModified": false,
|
||||
"telemetryEventsExpected": 3,
|
||||
"telemetryEventsActual": 3,
|
||||
"unhandledExceptions": 0,
|
||||
"temporaryInstallationRemoved": true,
|
||||
"productionDeploy": false
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
# Golden test plan
|
||||
|
||||
Capture a minimal 2019 Ortho fixture with input objects, output blocks/attributes, text, layer, style, coordinates, rotation, scale, DataLinks, before/after usage event and repeat-run behavior. Recreate the same fixture in 2026 only after the adapter is available. Do not commit production DWG/DCF.
|
||||
@@ -0,0 +1,5 @@
|
||||
RuleId,TargetClass,TargetMethod,LegacyFile,LegacyLines,Behavior,MigrationDecision,TestName
|
||||
RULE-001,AnnotationRuleEngine,BuildPlan,AutoAnnotateView/Commands.cs,476-500,Remove prior annotations then insert calculated annotations,REIMPLEMENT_SAME_BEHAVIOR,ExistingAnnotation_IsUpdatedNotDuplicated
|
||||
RULE-002,AnnotationRuleEngine,BuildPlan,OrthoAutoAnnotate/Commands.cs,6444-6488,Require Plant project and registered Ortho drawing,KEEP_AFTER_ISOLATION,PlantProjectAndOrthoDrawingRequired
|
||||
RULE-003,PlantObjectReader,ReadObjects,README.md,96-101,Read EngineeringItems and line-group relationships through PnP API,REIMPLEMENT_SAME_BEHAVIOR,PlantAdapter_ReadsGoldenObjects
|
||||
RULE-004,CommandRegistry,Foundation,OrthoLoader/Ribbon.cs,109-129,Expose annotation commands in annotation panel,REIMPLEMENT_SAME_BEHAVIOR,AllActiveCommands_AreMapped
|
||||
|
@@ -0,0 +1,18 @@
|
||||
# Migration dashboard
|
||||
|
||||
The first real Plant 3D 2026 build is complete against the workstation assemblies (AutoCAD managed 25.1.0.0; Plant managed 17.0.60.1; AdWindows 5.2.1.1). Core remains Autodesk-free.
|
||||
|
||||
| Area | Status |
|
||||
|---|---|
|
||||
| `PHP_REC_ANNOT` | Registered real `CommandMethod`; primary diagnostic entry point |
|
||||
| `PXP-AAV` | Registered real `CommandMethod`; diagnostic alias |
|
||||
| `PXP-OA` | Registered real `CommandMethod`; diagnostic alias |
|
||||
| Ribbon | Implemented with `Autodesk.Windows`; idempotent tab/panel guard |
|
||||
| Adapter | Compiled against real 2026 assemblies |
|
||||
| Bundle | Local smoke package built and checked for Autodesk DLL exclusion |
|
||||
| Runtime smoke | Manual NETLOAD confirmed on Plant 3D 2026; automatic AppLoader and Ortho DryRun remain unverified |
|
||||
| Ortho read path | Compiled against `OrthoDocUtils`, `OrthoProject`, `DwgSheetDefinitions`, `DwgViewDefs`, and `DataLinksManager`; runtime fixture pending |
|
||||
| Dry-run plan | Deterministic Core builder with DTO boundary and Apply guard; no annotation writes |
|
||||
| Production deploy | NOT PERFORMED |
|
||||
|
||||
Fixed API assumptions: foundation-only lifecycle became `IExtensionApplication`; command descriptors became actual `CommandMethod` registrations; Ortho detection uses `OrthoDocUtils.IsValidOrthoDrawing` plus the Ortho project part; viewport metadata uses `DwgSheetDefinitions`/`DwgViewDefs`; object properties use read-only `DataLinksManager.SelectAcPpRowIds` and `GetAllProperties`; Core receives only immutable DTOs. Remaining blockers are a controlled Ortho fixture, geometry/object-to-viewport mapping, legacy source provenance, and future Apply implementation.
|
||||
@@ -0,0 +1,15 @@
|
||||
# Module migration matrix
|
||||
|
||||
| Legacy module | Target project | Classification | Wave |
|
||||
|---|---|---|---|
|
||||
| AnnotateLineNumbers | PRecAnnot.Core + Plant3D2026 | KEEP_AFTER_ISOLATION | 3 |
|
||||
| AutoAnnotateView | Core + Plant3D2026 | REIMPLEMENT_SAME_BEHAVIOR | 1 |
|
||||
| OrthoAutoAnnotate | Core + Plant3D2026 | REIMPLEMENT_SAME_BEHAVIOR | 1 |
|
||||
| AutoLinenumberConnections | Core + Plant3D2026 | REIMPLEMENT_SAME_BEHAVIOR | 2 |
|
||||
| AutoElevation/InsertElevation | Core + Plant3D2026 | REIMPLEMENT_SAME_BEHAVIOR | 3 |
|
||||
| UpdateOrthoDrawings | Plant3D2026/Application | DEFER_AND_RETEST | 5 |
|
||||
| OrthoLoader | bundle/entry composition root | DO_NOT_REUSE | 1 |
|
||||
| Ribbon | PRecAnnot.UI | REIMPLEMENT | 1 |
|
||||
| GetLinenumberAnnotationText | Plant adapter + Core mapper | KEEP_AFTER_ISOLATION | 2 |
|
||||
| PHPAnnotations/P3DNewMa | UI + block adapter | REVIEW_USAGE | 4 |
|
||||
| telemetry | PRecAnnot.Telemetry | REIMPLEMENT | 1 |
|
||||
@@ -0,0 +1,46 @@
|
||||
# Ortho DryRun runtime result
|
||||
|
||||
Date: 2026-08-03
|
||||
|
||||
The local test fixture's `TestPipeOrtho.dwg` was detected as Ortho with one
|
||||
viewport. In the paired `DryRun`, `PHP_REC_ANNOT`, `PXP-AAV`, and `PXP-OA`
|
||||
each ran twice. Plugin telemetry recorded all six preflight completions without
|
||||
an unhandled exception. The command-window DBMOD output was not retained for
|
||||
this paired run, so its DBMOD value is recorded as `NOT RECORDED` rather than
|
||||
inferred from telemetry.
|
||||
|
||||
`PlantProject.Name` was available for this fixture and rendered as
|
||||
`PRecAnnotTestProject`.
|
||||
|
||||
The active Ortho sheet does not expose direct Piping rows and must not be used
|
||||
as a DataLinks source. Metadata inspection and a sanitized runtime probe
|
||||
confirmed `IDwgViewDef.DwgQuery.ModelFiles[].ModelFileName` as the source-model
|
||||
reference. The adapter resolves that reference through
|
||||
`PipingProject.GetPnPDrawingFiles()` and reads
|
||||
`DataLinksManager.SelectAcPpRowIds(PnPProjectDrawing.Id)`.
|
||||
|
||||
On the paired real DryRun, one source drawing was resolved and seven source
|
||||
Plant objects were read. The confirmed view query resolved five source rows to
|
||||
the active viewport and classified two as outside the view. Each command
|
||||
reported seven skipped operations, zero writes, zero conflicts, and zero
|
||||
errors. The repeated plans were deterministic:
|
||||
|
||||
| Command | Run 1 / run 2 PlanId |
|
||||
| --- | --- |
|
||||
| `PHP_REC_ANNOT` | `plan-AD701C7AA38D99E4C28D7D6D` |
|
||||
| `PXP-AAV` | `plan-C4FCD62F4EEBA1D1948FA22B` |
|
||||
| `PXP-OA` | `plan-C30D133E2D5B4BF4C0AF2ED1` |
|
||||
|
||||
This verifies source-model DataLinks access, exact view membership through the
|
||||
stored view query, and repeated-plan determinism. The remaining functional
|
||||
limitation is annotation-rule coverage: all seven operations remain safe
|
||||
`Skip` operations, so no first Apply is authorised.
|
||||
|
||||
The earlier single-fixture SHA baseline changed before the first command and
|
||||
was therefore inconclusive. A fresh paired comparison used 210-file CONTROL
|
||||
and DRYRUN copies created from the same closed frozen fixture. Both inventories
|
||||
had zero SHA-256 delta after their respective sessions. The CONTROL session
|
||||
invoked no plugin command; the DRYRUN session invoked all six commands. Thus
|
||||
the model DWG, Ortho DWG, `Piping.dcf`, project metadata, and other tracked
|
||||
content-bearing files have no plugin-only delta in this comparison. Both
|
||||
Launcher sessions completed automatic rollback to `RolledBack`.
|
||||
@@ -0,0 +1,39 @@
|
||||
# Ortho source-model mapping
|
||||
|
||||
## Confirmed Plant 3D 2026 read path
|
||||
|
||||
```text
|
||||
Active Ortho document
|
||||
→ OrthoProject.DwgSheetDefinitions
|
||||
→ IDwgSheetDef.DwgViewDefs
|
||||
→ IDwgViewDef.DwgQuery.ModelFiles[].ModelFileName
|
||||
→ PipingProject.GetPnPDrawingFiles()
|
||||
→ exact normalized-path match to PnPProjectDrawing
|
||||
→ PnPProjectDrawing.Id
|
||||
→ DataLinksManager.SelectAcPpRowIds(int dwgid)
|
||||
→ GetObjectClassname / GetAllProperties
|
||||
→ independent PlantObjectSnapshot
|
||||
→ AnnotationPlanBuilder
|
||||
```
|
||||
|
||||
`PlantOrthoViewportReader.ReadViewports` reads the typed DwgQuery contract and
|
||||
creates an Ortho viewport snapshot. `PlantObjectReader.ReadObjects` resolves
|
||||
the resulting model-file reference through the Piping project drawing list and
|
||||
reads DataLinks by project drawing ID. The active Ortho database is not a
|
||||
Piping-row source.
|
||||
|
||||
All calls are read-only. The adapter opens no write transaction and does not
|
||||
save a drawing, DCF, or project metadata.
|
||||
|
||||
## Diagnostics
|
||||
|
||||
The source reader returns stable telemetry diagnostics rather than suppressing
|
||||
the result of a failed query: `ORTHO_SOURCE_DRAWING_NOT_RESOLVED`,
|
||||
`ORTHO_SOURCE_DRAWING_NOT_IN_PROJECT`, `ORTHO_SOURCE_DRAWING_AMBIGUOUS`,
|
||||
`PIPING_PROJECT_PART_NOT_FOUND`, `SOURCE_DATALINKS_UNAVAILABLE`,
|
||||
`SOURCE_DATALINKS_NO_ROWS`, `SOURCE_DATABASE_READ_FAILED`,
|
||||
`SOURCE_PIPE_ROWS_NOT_FOUND`, or `SOURCE_DATALINKS_READ`.
|
||||
|
||||
Exact membership of a source object in a particular Ortho viewport is not yet
|
||||
implemented. A source-level DryRun plan must not be presented as proof of
|
||||
viewport membership.
|
||||
@@ -0,0 +1,36 @@
|
||||
# Ortho viewport membership
|
||||
|
||||
## Runtime path
|
||||
|
||||
`EntryPoint.RunDiagnostic` reads each `OrthoViewportInfo` and calls
|
||||
`PlantObjectReader.ReadObjects`. The reader resolves source Piping rows, then
|
||||
`PlantViewportMembershipReader.Read` evaluates the stored query for that exact
|
||||
view. It maps `MdObjectId.PrjObjectId` to a source DataLinks row and assigns a
|
||||
membership status to every independent `PlantObjectSnapshot`.
|
||||
|
||||
| Status | Meaning | Diagnostic evidence |
|
||||
| --- | --- | --- |
|
||||
| `Resolved` | The source row was returned by the exact view query. | `VIEW_MEMBERSHIP_FROM_CONFIRMED_PNP_ID` |
|
||||
| `ObjectOutsideView` | The source row was not returned by that confirmed query. | `VIEW_MEMBERSHIP_OBJECT_OUTSIDE_CLIP` |
|
||||
| `NotResolved` | The view contract is unavailable, ambiguous, or failed. | `VIEW_MEMBERSHIP_API_UNSUPPORTED` |
|
||||
|
||||
No source object is treated as visible solely because it belongs to the same
|
||||
model drawing. No geometry-only result is upgraded to `Resolved`.
|
||||
|
||||
## Plan effect
|
||||
|
||||
`AnnotationPlanBuilder` includes membership status in its canonical plan input.
|
||||
`ObjectOutsideView`, unsupported, and unresolved objects are `Skip` operations
|
||||
with stable reason codes. `Resolved` membership can progress only through the
|
||||
existing annotation rules; this DryRun slice never writes an annotation.
|
||||
|
||||
## Paired DryRun evidence
|
||||
|
||||
The paired local DryRun resolved five of seven source rows through the exact
|
||||
view query and classified the remaining two as `ObjectOutsideView`. Each of
|
||||
the three supported commands produced an identical PlanId on its repeated
|
||||
invocation. Both Launcher sessions reached `RolledBack`.
|
||||
|
||||
The paired command-window DBMOD output was not retained. It is intentionally
|
||||
reported as `NOT RECORDED`; project-file SHA-256 inventories nevertheless had
|
||||
zero delta for both CONTROL and DRYRUN copies.
|
||||
@@ -0,0 +1,9 @@
|
||||
# PXP-AAV read-path analysis
|
||||
|
||||
Status: traced to the existing command registration and the shared dry-run plan path; annotation writes are not implemented in this slice.
|
||||
|
||||
| RuleId | LegacyCommand | LegacyProject | LegacyFile | ObservedBehavior | TargetUseCase | TargetClass | Test | Status |
|
||||
|---|---|---|---|---|---|---|---|---|
|
||||
| PXP-AAV-001 | PXP-AAV | legacy audit | `docs/legacy-rule-provenance.csv` | legacy provenance is recorded, but the requested legacy checkout is absent on this workstation | read objects visible to an Ortho view and build a dry-run plan | adapter DTO -> `AnnotationPlan` | `AnnotationPlan_InputOrderDoesNotChangeResult` | partial |
|
||||
|
||||
The implementation deliberately does not claim behavioral equivalence. The next required input is a read-only copy of the legacy source or a golden test Ortho drawing with expected diagnostics.
|
||||
@@ -0,0 +1,9 @@
|
||||
# PXP-OA read-path analysis
|
||||
|
||||
Status: command is a real `CommandMethod` and uses the same safe context/read-plan pipeline. No Ortho annotation is created, updated, or deleted.
|
||||
|
||||
| RuleId | LegacyCommand | LegacyProject | LegacyFile | ObservedBehavior | TargetUseCase | TargetClass | Test | Status |
|
||||
|---|---|---|---|---|---|---|---|---|
|
||||
| PXP-OA-001 | PXP-OA | legacy audit | `docs/legacy-rule-provenance.csv` | legacy provenance is available, but source checkout was not found locally | Ortho context and DataLinks read diagnostics | adapter DTO -> `AnnotationPlan` | `ApplyMode_IsBlocked` | partial |
|
||||
|
||||
Exact object filters, annotation text, placement rules, and existing-annotation detection remain unconfirmed until the legacy source or a controlled golden fixture is supplied.
|
||||
@@ -0,0 +1,101 @@
|
||||
# Plant 3D 2026 DwgQuery / ModelFiles API contract
|
||||
|
||||
## Scope and method
|
||||
|
||||
This report is based on metadata-only inspection of the installed Plant 3D 2026
|
||||
assemblies. The assemblies were read from `<PLANT3D_2026_INSTALL>` and were not
|
||||
copied into the repository. Metadata-only inspection was necessary because the
|
||||
normal PowerShell host cannot load the product's .NET 8 dependencies safely.
|
||||
|
||||
Legacy source at the documented local path was not present on this machine, so
|
||||
there is no legacy API claim in this report.
|
||||
|
||||
## Confirmed assemblies
|
||||
|
||||
| Assembly | Version | Relevant type |
|
||||
| --- | --- | --- |
|
||||
| `PnPDwg2dDef` | `0.0.0.0` | `Autodesk.ProcessPower.Drawings2d.DwgQuery`, `IDwgQuery`, `DwgViewDef`, `IDwgViewDef`, `DwgSheetDef`, `IDwgSheetDef` |
|
||||
| `PnPDwg2dUtil` | `0.0.0.0` | `Autodesk.ProcessPower.Drawings2d.ModelFile` |
|
||||
| `PnP3dOrthoProjectPart` | `17.0.60.1` | Ortho project-part integration assembly; the metadata scan found no public DwgQuery declaration there |
|
||||
|
||||
`PnPDwg2dDef` and `PnPDwg2dUtil` use `0.0.0.0` assembly versions in the
|
||||
installed metadata. The supported runtime contract is therefore identified by
|
||||
the exact public type names below, not by an invented product-version number.
|
||||
|
||||
## Confirmed contract
|
||||
|
||||
```text
|
||||
Autodesk.ProcessPower.Drawings2d.IDwgViewDef.DwgQuery
|
||||
: Autodesk.ProcessPower.Drawings2d.IDwgQuery
|
||||
|
||||
Autodesk.ProcessPower.Drawings2d.IDwgQuery.ModelFiles
|
||||
: Autodesk.ProcessPower.Drawings2d.ModelFile[]
|
||||
|
||||
Autodesk.ProcessPower.Drawings2d.ModelFile.ModelFileName
|
||||
: System.String
|
||||
|
||||
Autodesk.ProcessPower.Drawings2d.ModelFile.ModelFileGuid
|
||||
: System.String
|
||||
```
|
||||
|
||||
`DwgViewDef` implements `IDwgViewDef`; `DwgQuery` implements `IDwgQuery` and
|
||||
`IDisposable`; `ModelFile` implements `IComparable<ModelFile>`.
|
||||
|
||||
`ModelFiles` is an array, not an untyped enumerable. `ModelFileName` is the
|
||||
only confirmed string field representing the model-file reference. `ModelFileGuid`
|
||||
is a separate identity field. `IsReferencedDwg` and `Xform` describe reference
|
||||
state and transform, not a substitute path.
|
||||
|
||||
## Public members relevant to source resolution
|
||||
|
||||
`IDwgViewDef` exposes `DwgQuery`, `ViewName`, layout/orientation properties,
|
||||
and `SetClippingPlanes`, `SetLayout`, `SetOrientation`, `Erase`, and `New`.
|
||||
|
||||
`IDwgQuery` exposes `ModelFiles`, `Execute`, and `Erase`.
|
||||
|
||||
`ModelFile` exposes `ModelFileName`, `ModelFileGuid`, `IsReferencedDwg`, and
|
||||
`Xform`; its constructors accept a file-name string and optional transform,
|
||||
reference flag, and GUID.
|
||||
|
||||
`IDwgSheetDef.DwgViewDefs` exposes the view-definition collection. Sheet
|
||||
`DwgName`/`DwgPath` identify the Ortho sheet and must not be used as the source
|
||||
of Piping DataLinks.
|
||||
|
||||
## Current and legacy usage
|
||||
|
||||
The original adapter used reflection and tried several possible names
|
||||
(`ModelFileName`, `Value`, and arbitrary string values). That was not a valid
|
||||
Plant 3D 2026 contract.
|
||||
|
||||
The production read path now uses the confirmed typed chain only:
|
||||
|
||||
```text
|
||||
IDwgViewDef.DwgQuery.ModelFiles[].ModelFileName
|
||||
```
|
||||
|
||||
The legacy source path was unavailable locally, so no legacy source-model or
|
||||
DataLinks workaround has been imported.
|
||||
|
||||
## Runtime evidence
|
||||
|
||||
Static metadata cannot prove whether `ModelFileName` is project-relative or
|
||||
absolute in a concrete Ortho fixture, or whether a particular view has zero,
|
||||
one, or multiple model files. In DryRun only, setting
|
||||
`P_REC_ANNOT_DIAGNOSTICS=OrthoStructure` enables a sanitized structure probe.
|
||||
It records type names, collection counts, null state, string length, and a
|
||||
one-way value hash; it does not emit paths or engineering data.
|
||||
|
||||
On the local DryRun fixture, the runtime probe recorded one view with one
|
||||
`ModelFile`. The concrete types were `DwgViewDef`, `DwgQueryByBox`, and
|
||||
`ModelFile[]`; `ModelFileName` was non-null and an absolute fixture-model
|
||||
reference. The path itself was not retained in repository evidence.
|
||||
|
||||
The resolver resolves that reference to exactly one
|
||||
`PipingProject.GetPnPDrawingFiles()` entry by normalized full-path equality,
|
||||
then uses the confirmed `DataLinksManager.SelectAcPpRowIds(int dwgid)` overload
|
||||
with the resolved `PnPProjectDrawing.Id`. It does not open or query the active
|
||||
Ortho database for Piping rows.
|
||||
|
||||
The production resolver has no fallback property-name search. If the exact
|
||||
contract is unavailable at runtime it reports
|
||||
`ORTHO_MODEL_FILES_API_UNSUPPORTED` rather than guessing.
|
||||
@@ -0,0 +1,56 @@
|
||||
# Ortho viewport membership API
|
||||
|
||||
## Scope
|
||||
|
||||
This report records the Plant 3D 2026 contract used to map source-model
|
||||
DataLinks objects to one Ortho view. Autodesk binaries were inspected in
|
||||
`<PLANT3D_2026_INSTALL>` and are not part of this repository.
|
||||
|
||||
## Confirmed Plant 3D 2026 contract
|
||||
|
||||
| Assembly | Version | Type/member | Purpose |
|
||||
| --- | --- | --- | --- |
|
||||
| `PnPDwg2dDef` | `0.0.0.0` | `IDwgViewDef.DwgQuery` | Returns the query stored by an Ortho view. |
|
||||
| `PnPDwg2dDef` | `0.0.0.0` | `DwgQueryByBox.Execute(StringCollection, StringCollection)` | Executes the stored view selection and returns `IDwgSet`. |
|
||||
| `PnPDwg2dDef` | `0.0.0.0` | `IDwgSet.GetItem(int, ref MdObjectId)` | Enumerates selected source identities. |
|
||||
| `PnPDwg2dUtil` | `0.0.0.0` | `MdObjectId.PrjObjectId` | Exposes the selected project object identity. |
|
||||
| `PnPDataLinks` | `17.0.60.1` | `DataLinksManager.FindAcPpRowId(PpObjectId)` | Maps a selected project object to its DataLinks row. |
|
||||
|
||||
`DwgQueryByBox` also exposes `CoordinateSystem`, `XLength`, `YLength`,
|
||||
`ZLength`, and `SelectionMask`. `DwgViewDef` exposes orientation, clipping,
|
||||
and layout fields. They are not used as a heuristic in this slice because the
|
||||
query result provides a stronger project-object identity.
|
||||
|
||||
## Selected implementation
|
||||
|
||||
`PlantViewportMembershipReader.Read` locates exactly one view by the stable
|
||||
ID already generated from the sheet GUID and view name. It executes that
|
||||
view's stored `DwgQuery`, converts every returned `MdObjectId.PrjObjectId`
|
||||
through `DataLinksManager.FindAcPpRowId`, and intersects the result with the
|
||||
source drawing's Piping rows.
|
||||
|
||||
Matching rows receive `Resolved` with
|
||||
`VIEW_MEMBERSHIP_FROM_CONFIRMED_PNP_ID`. Source rows absent from the confirmed
|
||||
query result receive `ObjectOutsideView` with
|
||||
`VIEW_MEMBERSHIP_OBJECT_OUTSIDE_CLIP`. An unsupported or ambiguous runtime
|
||||
contract stays `NotResolved` with `VIEW_MEMBERSHIP_API_UNSUPPORTED`; the code
|
||||
does not guess alternate Autodesk properties or select an arbitrary view.
|
||||
|
||||
## Legacy analysis
|
||||
|
||||
The read-only legacy source at
|
||||
`\\phpsrv03\NBIM\code\CS\P_Rec_Annot\v1.0.4\repo` was available. Its
|
||||
`UpdateOrthoDrawings/Commands.cs` configured `DwgQuery.ModelFiles` and called
|
||||
`DwgQuery.Execute`; `OrthoAutoAnnotate/Commands.cs` and
|
||||
`AutoAnnotateView/ViewPorts.cs` also used viewport and entity extents. Those
|
||||
extents checks are a geometric filter, not an authoritative object identity,
|
||||
so they were not ported as `Resolved` membership.
|
||||
|
||||
## Side effects and failure handling
|
||||
|
||||
The reader opens no Autodesk write transaction and calls no persistence API.
|
||||
It does not modify DWG, DCF, or project metadata. `DLException` while mapping
|
||||
an individual generated identity is ignored only for that non-Piping identity;
|
||||
other failures yield the stable API diagnostic and preserve no false positive.
|
||||
Runtime DryRun and paired control/DryRun hash comparison remain required to
|
||||
verify actual no-write behavior.
|
||||
@@ -0,0 +1,31 @@
|
||||
# Plant 3D 2026 runtime smoke results
|
||||
|
||||
## Scope
|
||||
|
||||
The smoke test used a temporary per-user bundle installation only. Production deploy was not performed. The temporary installation was removed after AutoCAD closed.
|
||||
|
||||
## Confirmed
|
||||
|
||||
- Manual `NETLOAD` loaded the P_Rec_Annot entry assembly in AutoCAD Plant 3D 2026.
|
||||
- `PHP_REC_ANNOT`, `PXP-AAV`, and `PXP-OA` were accepted by the command line.
|
||||
- The active Plant project was detected as `DefaultProject`.
|
||||
- The user confirmed Smoke mode behavior and no DWG mutation during the manual smoke interaction.
|
||||
- The runtime log contains one assembly initialization and one normal termination for the observed process.
|
||||
- The runtime log records Ribbon creation with status `Created`.
|
||||
- The runtime log records exactly one `CommandUsageEvent` for each of the three commands.
|
||||
- The observed Plant context reported `DataLinksAvailable=true` and `IsOrthoDrawing=false` for `Floor Plan Sample.dwg`.
|
||||
- No unhandled exception was reported in the captured runtime log.
|
||||
|
||||
## Not confirmed
|
||||
|
||||
- Automatic AppLoader loading without `NETLOAD` was not tested.
|
||||
- DBMOD and byte-level DWG/DCF/Project.xml comparisons were not captured by the smoke evidence.
|
||||
- Ribbon duplicate behavior across workspace/document lifecycle was not exhaustively tested.
|
||||
- A command invocation logged as `RuntimeMode=Smoke` is not present in the captured JSONL; the three detailed command records have `RuntimeMode=Normal`.
|
||||
|
||||
## Evidence handling
|
||||
|
||||
The detailed runtime JSONL remains local under `%LOCALAPPDATA%\Promhimproekt\PRecAnnot2026\Logs\` and is not committed. No DWG, DCF, Project.xml, Autodesk DLL, user identity, project path, or full local runtime path is included in the repository.
|
||||
|
||||
Temporary installation: PERFORMED AND REMOVED.
|
||||
Production deploy: NOT PERFORMED.
|
||||
@@ -0,0 +1,19 @@
|
||||
# Runtime test plan
|
||||
|
||||
Runtime smoke is ready but has not been executed in AutoCAD. The local package is `Plant3D2026\P_Rec_Annot\artifacts\P_Rec_Annot.bundle`.
|
||||
|
||||
Next-step installation command (intentionally not executed):
|
||||
|
||||
```powershell
|
||||
Copy-Item -Recurse -Force .\Plant3D2026\P_Rec_Annot\artifacts\P_Rec_Annot.bundle `
|
||||
"$env:APPDATA\Autodesk\ApplicationPlugins\P_Rec_Annot.bundle"
|
||||
```
|
||||
|
||||
In a controlled Plant 3D 2026 session, verify that the entry assembly loads, the `Промхимпроект` tab and `Аннотации` panel occur once, and the `Аннотировать` button invokes `PHP_REC_ANNOT`. Open a Plant project and active DWG, run all three commands, verify the project guard and diagnostic-only behavior, and confirm no unhandled exception. Repeat initialization and confirm no Ribbon duplicate. DWG mutation, Ortho viewport/data-link behavior, undo, repeat-run idempotence, and golden-DWG comparison remain runtime blockers for the implementation wave.
|
||||
|
||||
Deploy status: NOT PERFORMED.
|
||||
# Current slice: Ortho read / dry-run
|
||||
|
||||
`P_REC_ANNOT_RUNTIME_MODE=Smoke` reads context only. `DryRun` reads Ortho view metadata and DataLinks properties, builds an immutable deterministic `AnnotationPlan`, and never applies it. `Apply` is blocked with `APPLY_MODE_NOT_IMPLEMENTED`; unknown values resolve to `DryRun`.
|
||||
|
||||
The read adapter uses `OrthoDocUtils.IsValidOrthoDrawing`, `OrthoProject.DwgSheetDefinitions`, `IDwgViewDef`, and read-only `DataLinksManager` methods. The adapter does not expose AutoCAD or Plant objects to Core and contains no write calls. A runtime DryRun result is not published until a controlled test Ortho DWG is available; see `docs/evidence/ortho-dry-run-summary.json`.
|
||||
@@ -0,0 +1,312 @@
|
||||
namespace PRecAnnot.Abstractions;
|
||||
|
||||
public sealed record RuntimeDiagnostic
|
||||
{
|
||||
public required string Code { get; init; }
|
||||
public required string Message { get; init; }
|
||||
public string Severity { get; init; } = "Warning";
|
||||
}
|
||||
|
||||
public enum OrthoDetectionStatus { Confirmed, NotOrtho, Ambiguous, Unsupported, Failed }
|
||||
public enum PlantProjectDetectionStatus { NotFound, FoundWithName, FoundWithoutDisplayName, Ambiguous, Failed }
|
||||
|
||||
public sealed record OrthoDetectionResult
|
||||
{
|
||||
public required OrthoDetectionStatus Status { get; init; }
|
||||
public required IReadOnlyList<string> Evidence { get; init; }
|
||||
public required IReadOnlyList<RuntimeDiagnostic> Diagnostics { get; init; }
|
||||
}
|
||||
|
||||
public readonly record struct Point2Dto(double X, double Y);
|
||||
public readonly record struct Point3Dto(double X, double Y, double Z);
|
||||
public readonly record struct Vector2Dto(double X, double Y);
|
||||
public sealed record Bounds2Dto(Point2Dto Minimum, Point2Dto Maximum);
|
||||
|
||||
public sealed record GeometrySnapshot
|
||||
{
|
||||
public Point3Dto? WorldPosition { get; init; }
|
||||
public Point2Dto? PaperPosition { get; init; }
|
||||
public Bounds2Dto? ProjectedBounds { get; init; }
|
||||
public double? Rotation { get; init; }
|
||||
public double? Elevation { get; init; }
|
||||
}
|
||||
|
||||
public sealed record OrthoViewportInfo
|
||||
{
|
||||
public required string Id { get; init; }
|
||||
public required string DisplayName { get; init; }
|
||||
public double CenterX { get; init; }
|
||||
public double CenterY { get; init; }
|
||||
public double Width { get; init; }
|
||||
public double Height { get; init; }
|
||||
public double Scale { get; init; }
|
||||
public double TwistAngle { get; init; }
|
||||
public bool IsOn { get; init; }
|
||||
public bool IsLocked { get; init; }
|
||||
public string? SourceDrawingName { get; init; }
|
||||
public string? ViewName { get; init; }
|
||||
}
|
||||
|
||||
public sealed record PlantObjectSnapshot
|
||||
{
|
||||
public required string SnapshotId { get; init; }
|
||||
public required string ObjectClass { get; init; }
|
||||
public string? Tag { get; init; }
|
||||
public string? LineNumber { get; init; }
|
||||
public string? SupportNumber { get; init; }
|
||||
public string? EquipmentNumber { get; init; }
|
||||
public required GeometrySnapshot Geometry { get; init; }
|
||||
public IReadOnlyDictionary<string, string?> Properties { get; init; } = new Dictionary<string, string?>();
|
||||
public IReadOnlyList<string> Diagnostics { get; init; } = Array.Empty<string>();
|
||||
public ViewMembershipStatus MembershipStatus { get; init; } = ViewMembershipStatus.NotResolved;
|
||||
public IReadOnlyList<string> MembershipEvidenceCodes { get; init; } = Array.Empty<string>();
|
||||
}
|
||||
|
||||
public enum ViewMembershipStatus { NotResolved, Resolved, PartiallyResolved, ObjectOutsideView, Unsupported, Failed }
|
||||
|
||||
public sealed record SourceObjectViewportMembership
|
||||
{
|
||||
public required string SourceObjectStableKey { get; init; }
|
||||
public required string ViewStableKey { get; init; }
|
||||
public required ViewMembershipStatus Status { get; init; }
|
||||
public IReadOnlyList<string> EvidenceCodes { get; init; } = Array.Empty<string>();
|
||||
public string? ReasonCode { get; init; }
|
||||
}
|
||||
|
||||
public sealed record PlantRuntimeContext
|
||||
{
|
||||
public bool HasActiveDocument { get; init; }
|
||||
public bool HasPlantProject { get; init; }
|
||||
public bool IsOrthoDrawing { get; init; }
|
||||
public string? DrawingName { get; init; }
|
||||
public string? ProjectDisplayName { get; init; }
|
||||
public PlantProjectDetectionStatus ProjectDetectionStatus { get; init; } = PlantProjectDetectionStatus.NotFound;
|
||||
public IReadOnlyList<OrthoViewportInfo> Viewports { get; init; } = Array.Empty<OrthoViewportInfo>();
|
||||
public IReadOnlyList<RuntimeDiagnostic> Diagnostics { get; init; } = Array.Empty<RuntimeDiagnostic>();
|
||||
public OrthoDetectionResult Detection { get; init; } = new() { Status = OrthoDetectionStatus.Unsupported, Evidence = Array.Empty<string>(), Diagnostics = Array.Empty<RuntimeDiagnostic>() };
|
||||
}
|
||||
|
||||
public interface IPlantRuntimeContextReader { PlantRuntimeContext ReadCurrentContext(); }
|
||||
public interface IOrthoViewportReader { IReadOnlyList<OrthoViewportInfo> ReadViewports(CancellationToken cancellationToken); }
|
||||
|
||||
public enum SourceDrawingResolutionStatus { Resolved, NotReferenced, Ambiguous, MissingFromProject, Unsupported, Failed }
|
||||
|
||||
public sealed record OrthoSourceDrawingReference
|
||||
{
|
||||
public required string StableId { get; init; }
|
||||
public required string DisplayName { get; init; }
|
||||
public string? ProjectRelativePath { get; init; }
|
||||
public long? ProjectDrawingRowId { get; init; }
|
||||
public required SourceDrawingResolutionStatus Status { get; init; }
|
||||
public IReadOnlyList<string> EvidenceCodes { get; init; } = Array.Empty<string>();
|
||||
}
|
||||
|
||||
public sealed record SourcePlantObjectSnapshot
|
||||
{
|
||||
public required string StableObjectKey { get; init; }
|
||||
public required string ClassName { get; init; }
|
||||
public string? SourceDrawingStableId { get; init; }
|
||||
public string? LineGroupStableKey { get; init; }
|
||||
public IReadOnlyDictionary<string, string?> Properties { get; init; } = new Dictionary<string, string?>();
|
||||
}
|
||||
|
||||
public sealed record SourceDrawingReadResult
|
||||
{
|
||||
public required OrthoSourceDrawingReference Source { get; init; }
|
||||
public IReadOnlyList<SourcePlantObjectSnapshot> Objects { get; init; } = Array.Empty<SourcePlantObjectSnapshot>();
|
||||
public IReadOnlyList<RuntimeDiagnostic> Diagnostics { get; init; } = Array.Empty<RuntimeDiagnostic>();
|
||||
}
|
||||
|
||||
public interface IOrthoSourceDrawingResolver
|
||||
{
|
||||
IReadOnlyList<OrthoSourceDrawingReference> Resolve(OrthoDrawingSnapshot drawing);
|
||||
}
|
||||
|
||||
public sealed record OrthoDrawingSnapshot
|
||||
{
|
||||
public required string StableId { get; init; }
|
||||
public IReadOnlyList<OrthoViewSourceSnapshot> Views { get; init; } = Array.Empty<OrthoViewSourceSnapshot>();
|
||||
}
|
||||
|
||||
public sealed record OrthoViewSourceSnapshot
|
||||
{
|
||||
public required string ViewStableId { get; init; }
|
||||
public IReadOnlyList<string> ReferencedDrawingPaths { get; init; } = Array.Empty<string>();
|
||||
}
|
||||
|
||||
public interface ISourceDrawingDataLinksReader
|
||||
{
|
||||
SourceDrawingReadResult Read(PlantProjectContext project, OrthoSourceDrawingReference source);
|
||||
}
|
||||
|
||||
public sealed record PlantProjectContext
|
||||
{
|
||||
public required string StableProjectId { get; init; }
|
||||
public string? ProjectDisplayName { get; init; }
|
||||
}
|
||||
|
||||
public enum AnnotationOperationKind { Create, Update, Skip, Conflict, Unsupported }
|
||||
|
||||
public sealed record AnnotationOperationPlan
|
||||
{
|
||||
public required string SourceSnapshotId { get; init; }
|
||||
public required AnnotationOperationKind Kind { get; init; }
|
||||
public string? AnnotationType { get; init; }
|
||||
public string? Text { get; init; }
|
||||
public Point2Dto? Position { get; init; }
|
||||
public double? Rotation { get; init; }
|
||||
public string? ExistingAnnotationId { get; init; }
|
||||
public required IReadOnlyList<string> Reasons { get; init; }
|
||||
}
|
||||
|
||||
public sealed record AnnotationPlanSummary
|
||||
{
|
||||
public int ObjectsExamined { get; init; }
|
||||
public int CreateCount { get; init; }
|
||||
public int UpdateCount { get; init; }
|
||||
public int SkipCount { get; init; }
|
||||
public int ConflictCount { get; init; }
|
||||
public int UnsupportedCount { get; init; }
|
||||
public int WarningCount { get; init; }
|
||||
public int ErrorCount { get; init; }
|
||||
}
|
||||
|
||||
public sealed record AnnotationPlanningRequest
|
||||
{
|
||||
public required string CommandName { get; init; }
|
||||
public required OrthoViewportInfo Viewport { get; init; }
|
||||
public IReadOnlyList<PlantObjectSnapshot> Objects { get; init; } = Array.Empty<PlantObjectSnapshot>();
|
||||
public IReadOnlyList<ExistingAnnotation> Existing { get; init; } = Array.Empty<ExistingAnnotation>();
|
||||
// Test-only limited Apply intent. It is part of the canonical plan and is
|
||||
// deliberately explicit: the planner must never choose an arbitrary Pipe.
|
||||
public string? LimitedApplyTargetSnapshotId { get; init; }
|
||||
public string? LimitedApplyRuleId { get; init; }
|
||||
}
|
||||
|
||||
public interface IAnnotationPlanBuilder { AnnotationPlan Build(AnnotationPlanningRequest request); }
|
||||
public enum PRecAnnotExecutionMode { Smoke, DryRun, Apply }
|
||||
public interface IRuntimeWriteGuard { void EnsureWriteAllowed(string operation); }
|
||||
|
||||
public sealed record CreatePipeAnnotationOperation
|
||||
{
|
||||
public required string OperationId { get; init; }
|
||||
public required string SourceObjectStableKey { get; init; }
|
||||
public required string ViewStableKey { get; init; }
|
||||
public required string RuleId { get; init; }
|
||||
public required AnnotationPoint Placement { get; init; }
|
||||
public required string DuplicateKey { get; init; }
|
||||
}
|
||||
|
||||
public sealed record FirstLimitedApplyPermit
|
||||
{
|
||||
public required string FixtureMarker { get; init; }
|
||||
public required bool AllowApply { get; init; }
|
||||
public required string TargetSnapshotId { get; init; }
|
||||
public required string ExpectedPlanId { get; init; }
|
||||
}
|
||||
|
||||
public sealed record FirstLimitedApplyPreflight
|
||||
{
|
||||
public required string PlanId { get; init; }
|
||||
public required CreatePipeAnnotationOperation Operation { get; init; }
|
||||
}
|
||||
|
||||
public sealed record OrthoViewportRef(string DrawingId, string ViewportId);
|
||||
|
||||
public sealed record PlantObjectData
|
||||
{
|
||||
public required string ObjectId { get; init; }
|
||||
public required string ClassName { get; init; }
|
||||
public string? LineNumber { get; init; }
|
||||
public string? Tag { get; init; }
|
||||
public string? DisplayName { get; init; }
|
||||
public required AnnotationPoint Position { get; init; }
|
||||
public double Rotation { get; init; }
|
||||
}
|
||||
|
||||
public readonly record struct AnnotationPoint(double X, double Y, double Z = 0);
|
||||
|
||||
public sealed record ExistingAnnotation(string StableKey, string? Text, AnnotationPoint Position);
|
||||
|
||||
public sealed record AnnotationRequest
|
||||
{
|
||||
public required OrthoViewportRef Viewport { get; init; }
|
||||
public required IReadOnlyList<PlantObjectData> Objects { get; init; }
|
||||
public required IReadOnlyList<ExistingAnnotation> Existing { get; init; }
|
||||
}
|
||||
|
||||
public sealed record AnnotationIntent
|
||||
{
|
||||
public required string StableKey { get; init; }
|
||||
public required string Text { get; init; }
|
||||
public required AnnotationPoint Position { get; init; }
|
||||
public required double Rotation { get; init; }
|
||||
public required string ClassName { get; init; }
|
||||
public required string Layer { get; init; }
|
||||
}
|
||||
|
||||
public sealed record AnnotationPlan
|
||||
{
|
||||
public int PlanSchemaVersion { get; init; }
|
||||
public string PlanId { get; init; } = string.Empty;
|
||||
public string CommandName { get; init; } = string.Empty;
|
||||
public IReadOnlyList<AnnotationOperationPlan> Operations { get; init; } = Array.Empty<AnnotationOperationPlan>();
|
||||
public IReadOnlyList<RuntimeDiagnostic> Diagnostics { get; init; } = Array.Empty<RuntimeDiagnostic>();
|
||||
public AnnotationPlanSummary Summary { get; init; } = new();
|
||||
public required IReadOnlyList<AnnotationIntent> Create { get; init; }
|
||||
public required IReadOnlyList<AnnotationIntent> Update { get; init; }
|
||||
public required IReadOnlyList<string> Delete { get; init; }
|
||||
public required IReadOnlyList<string> SkipReasons { get; init; }
|
||||
public int ExaminedCount { get; init; }
|
||||
public bool IsDeterministic { get; init; } = true;
|
||||
}
|
||||
|
||||
public interface IPlantProjectContext
|
||||
{
|
||||
bool IsPlantProjectOpen { get; }
|
||||
string? ProjectName { get; }
|
||||
}
|
||||
|
||||
public interface IOrthoDrawingContext
|
||||
{
|
||||
bool IsOrthoDrawing { get; }
|
||||
IReadOnlyList<OrthoViewportRef> GetViewports();
|
||||
}
|
||||
|
||||
public interface IPlantObjectReader
|
||||
{
|
||||
IReadOnlyList<PlantObjectSnapshot> ReadObjects(OrthoViewportInfo viewport, CancellationToken cancellationToken);
|
||||
}
|
||||
|
||||
public interface IAnnotationRepository
|
||||
{
|
||||
IReadOnlyList<ExistingAnnotation> FindExisting(OrthoViewportRef viewport);
|
||||
AnnotationWriteResult Apply(AnnotationPlan plan, CancellationToken cancellationToken);
|
||||
}
|
||||
|
||||
public sealed record AnnotationWriteResult(int Created, int Updated, int Deleted, int Skipped);
|
||||
|
||||
public interface IAnnotationRuleEngine
|
||||
{
|
||||
AnnotationPlan BuildPlan(AnnotationRequest request);
|
||||
}
|
||||
|
||||
public sealed record CommandUsageEvent
|
||||
{
|
||||
public required string CommandName { get; init; }
|
||||
public required string ResultStatus { get; init; }
|
||||
public int ObjectsExamined { get; init; }
|
||||
public int AnnotationsCreated { get; init; }
|
||||
public int AnnotationsUpdated { get; init; }
|
||||
public int AnnotationsDeleted { get; init; }
|
||||
public int AnnotationsSkipped { get; init; }
|
||||
public int WarningCount { get; init; }
|
||||
public int ErrorCount { get; init; }
|
||||
public long DurationMilliseconds { get; init; }
|
||||
public DateTimeOffset TimestampUtc { get; init; } = DateTimeOffset.UtcNow;
|
||||
}
|
||||
|
||||
public interface ICommandUsageSink
|
||||
{
|
||||
void Record(CommandUsageEvent usageEvent);
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup><TargetFramework>net8.0</TargetFramework></PropertyGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,36 @@
|
||||
namespace PRecAnnot.Application;
|
||||
|
||||
public sealed record PRecAnnotCommandDescriptor
|
||||
{
|
||||
public required string CommandName { get; init; }
|
||||
public required string DisplayName { get; init; }
|
||||
public required string UseCaseId { get; init; }
|
||||
public required string RibbonPanel { get; init; }
|
||||
public bool RequiresPlantProject { get; init; }
|
||||
public bool RequiresOrthoDrawing { get; init; }
|
||||
public bool RequiresSelection { get; init; }
|
||||
public string Status { get; init; } = "BLOCKED_WITH_REASON";
|
||||
}
|
||||
|
||||
public sealed class CommandRegistry
|
||||
{
|
||||
private readonly IReadOnlyDictionary<string, PRecAnnotCommandDescriptor> _commands;
|
||||
|
||||
public CommandRegistry(IEnumerable<PRecAnnotCommandDescriptor> commands)
|
||||
{
|
||||
var list = commands.ToList();
|
||||
if (list.GroupBy(x => x.CommandName, StringComparer.OrdinalIgnoreCase).Any(x => x.Count() > 1))
|
||||
throw new ArgumentException("Command names must be unique.", nameof(commands));
|
||||
_commands = list.ToDictionary(x => x.CommandName, StringComparer.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
public IReadOnlyCollection<PRecAnnotCommandDescriptor> Commands => _commands.Values.ToArray();
|
||||
public bool TryGet(string name, out PRecAnnotCommandDescriptor? descriptor) => _commands.TryGetValue(name, out descriptor);
|
||||
|
||||
public static CommandRegistry Foundation() => new(new[]
|
||||
{
|
||||
new PRecAnnotCommandDescriptor { CommandName = "PHP_REC_ANNOT", DisplayName = "Аннотировать", UseCaseId = "ortho-annotation", RibbonPanel = "Аннотации", RequiresPlantProject = true, RequiresOrthoDrawing = true, Status = "BLOCKED_WITH_REASON" },
|
||||
new PRecAnnotCommandDescriptor { CommandName = "PXP-AAV", DisplayName = "Разместить аннотации автоматически", UseCaseId = "auto-annotate-view", RibbonPanel = "Аннотации", RequiresPlantProject = true, RequiresOrthoDrawing = true, Status = "BLOCKED_WITH_REASON" },
|
||||
new PRecAnnotCommandDescriptor { CommandName = "PXP-OA", DisplayName = "Разместить осевые линии и опоры", UseCaseId = "ortho-axes-supports", RibbonPanel = "Осевые линии и опоры", RequiresPlantProject = true, RequiresOrthoDrawing = true, Status = "BLOCKED_WITH_REASON" }
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup><TargetFramework>net8.0</TargetFramework></PropertyGroup>
|
||||
<ItemGroup><ProjectReference Include="..\PRecAnnot.Abstractions\PRecAnnot.Abstractions.csproj" /></ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,193 @@
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using PRecAnnot.Abstractions;
|
||||
|
||||
namespace PRecAnnot.Core;
|
||||
|
||||
public sealed class AnnotationPlanBuilder : IAnnotationPlanBuilder
|
||||
{
|
||||
public const int CurrentPlanSchemaVersion = 2;
|
||||
public AnnotationPlan Build(AnnotationPlanningRequest request)
|
||||
{
|
||||
var objects = request.Objects.OrderBy(x => x.SnapshotId, StringComparer.Ordinal).ToArray();
|
||||
var existing = request.Existing.ToDictionary(x => x.StableKey, StringComparer.OrdinalIgnoreCase);
|
||||
var operations = new List<AnnotationOperationPlan>(objects.Length);
|
||||
var creates = new List<AnnotationIntent>();
|
||||
var updates = new List<AnnotationIntent>();
|
||||
var diagnostics = new List<RuntimeDiagnostic>();
|
||||
var seen = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
|
||||
|
||||
foreach (var item in objects)
|
||||
{
|
||||
if (!seen.Add(item.SnapshotId))
|
||||
{
|
||||
operations.Add(new AnnotationOperationPlan { SourceSnapshotId = item.SnapshotId, Kind = AnnotationOperationKind.Conflict, Reasons = new[] { "duplicate-snapshot-id" } });
|
||||
continue;
|
||||
}
|
||||
|
||||
if (string.IsNullOrWhiteSpace(item.ObjectClass))
|
||||
{
|
||||
operations.Add(new AnnotationOperationPlan { SourceSnapshotId = item.SnapshotId, Kind = AnnotationOperationKind.Unsupported, Reasons = new[] { "missing-object-class" } });
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(request.LimitedApplyTargetSnapshotId) &&
|
||||
!string.Equals(item.SnapshotId, request.LimitedApplyTargetSnapshotId, StringComparison.Ordinal))
|
||||
{
|
||||
operations.Add(new AnnotationOperationPlan { SourceSnapshotId = item.SnapshotId, Kind = AnnotationOperationKind.Skip, Reasons = new[] { "APPLY_NOT_SELECTED_TARGET" } });
|
||||
continue;
|
||||
}
|
||||
|
||||
if (item.MembershipStatus is not ViewMembershipStatus.Resolved and not ViewMembershipStatus.PartiallyResolved)
|
||||
{
|
||||
operations.Add(new AnnotationOperationPlan { SourceSnapshotId = item.SnapshotId, Kind = AnnotationOperationKind.Skip, Reasons = new[] { MembershipReason(item.MembershipStatus) } });
|
||||
continue;
|
||||
}
|
||||
|
||||
// The first Apply slice is intentionally narrower than the
|
||||
// historic bulk rules: exactly one explicitly selected, resolved
|
||||
// Pipe can become a PIPE block operation. All other objects keep
|
||||
// their normal diagnostic treatment.
|
||||
if (!string.IsNullOrWhiteSpace(request.LimitedApplyTargetSnapshotId) &&
|
||||
string.Equals(item.SnapshotId, request.LimitedApplyTargetSnapshotId, StringComparison.Ordinal))
|
||||
{
|
||||
if (!string.Equals(item.ObjectClass, "Pipe", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
operations.Add(new AnnotationOperationPlan { SourceSnapshotId = item.SnapshotId, Kind = AnnotationOperationKind.Unsupported, Reasons = new[] { "APPLY_UNSUPPORTED_OBJECT_CLASS" } });
|
||||
continue;
|
||||
}
|
||||
if (item.MembershipStatus != ViewMembershipStatus.Resolved)
|
||||
{
|
||||
operations.Add(new AnnotationOperationPlan { SourceSnapshotId = item.SnapshotId, Kind = AnnotationOperationKind.Skip, Reasons = new[] { "APPLY_REQUIRES_RESOLVED_MEMBERSHIP" } });
|
||||
continue;
|
||||
}
|
||||
if (item.Geometry.PaperPosition is not { } pipePosition)
|
||||
{
|
||||
operations.Add(new AnnotationOperationPlan { SourceSnapshotId = item.SnapshotId, Kind = AnnotationOperationKind.Skip, Reasons = new[] { "ANNOTATION_PLACEMENT_NOT_RESOLVED" } });
|
||||
continue;
|
||||
}
|
||||
|
||||
var pipeIntent = new AnnotationIntent
|
||||
{
|
||||
StableKey = $"{request.Viewport.Id}:{item.SnapshotId}:{FirstLimitedApplyPlanner.RuleId}",
|
||||
Text = FirstLimitedApplyPlanner.RuleId,
|
||||
Position = new AnnotationPoint(pipePosition.X, pipePosition.Y),
|
||||
Rotation = item.Geometry.Rotation ?? 0,
|
||||
ClassName = item.ObjectClass,
|
||||
Layer = "PXP_ANNOTATION"
|
||||
};
|
||||
operations.Add(new AnnotationOperationPlan
|
||||
{
|
||||
SourceSnapshotId = item.SnapshotId,
|
||||
Kind = AnnotationOperationKind.Create,
|
||||
AnnotationType = "PIPE",
|
||||
Text = FirstLimitedApplyPlanner.RuleId,
|
||||
Position = pipePosition,
|
||||
Rotation = item.Geometry.Rotation,
|
||||
Reasons = Array.Empty<string>()
|
||||
});
|
||||
creates.Add(pipeIntent);
|
||||
continue;
|
||||
}
|
||||
|
||||
var text = string.IsNullOrWhiteSpace(item.LineNumber) ? item.Tag?.Trim() : item.LineNumber!.Trim();
|
||||
if (string.IsNullOrWhiteSpace(text))
|
||||
{
|
||||
operations.Add(new AnnotationOperationPlan { SourceSnapshotId = item.SnapshotId, Kind = AnnotationOperationKind.Skip, Reasons = new[] { "missing-line-number-or-tag" } });
|
||||
continue;
|
||||
}
|
||||
|
||||
var position = item.Geometry.PaperPosition;
|
||||
if (position is null)
|
||||
{
|
||||
diagnostics.Add(new RuntimeDiagnostic { Code = "MISSING_GEOMETRY", Message = $"No paper position for {item.SnapshotId}." });
|
||||
}
|
||||
|
||||
var stableKey = $"{request.Viewport.SourceDrawingName ?? string.Empty}:{request.Viewport.Id}:{item.SnapshotId}";
|
||||
var existingAnnotation = existing.TryGetValue(stableKey, out var match) ? match : existing.TryGetValue(item.SnapshotId, out var directMatch) ? directMatch : null;
|
||||
var kind = existingAnnotation is null ? AnnotationOperationKind.Create : AnnotationOperationKind.Update;
|
||||
operations.Add(new AnnotationOperationPlan
|
||||
{
|
||||
SourceSnapshotId = item.SnapshotId,
|
||||
Kind = kind,
|
||||
AnnotationType = "PlantObject",
|
||||
Text = text,
|
||||
Position = position,
|
||||
Rotation = item.Geometry.Rotation,
|
||||
ExistingAnnotationId = existingAnnotation?.StableKey,
|
||||
Reasons = Array.Empty<string>()
|
||||
});
|
||||
|
||||
var intent = new AnnotationIntent
|
||||
{
|
||||
StableKey = stableKey,
|
||||
Text = text,
|
||||
Position = position is { } point ? new AnnotationPoint(point.X, point.Y) : new AnnotationPoint(0, 0),
|
||||
Rotation = item.Geometry.Rotation ?? 0,
|
||||
ClassName = item.ObjectClass,
|
||||
Layer = "PXP_ANNOTATION"
|
||||
};
|
||||
if (kind == AnnotationOperationKind.Create) creates.Add(intent); else updates.Add(intent);
|
||||
}
|
||||
|
||||
var summary = new AnnotationPlanSummary
|
||||
{
|
||||
ObjectsExamined = objects.Length,
|
||||
CreateCount = operations.Count(x => x.Kind == AnnotationOperationKind.Create),
|
||||
UpdateCount = operations.Count(x => x.Kind == AnnotationOperationKind.Update),
|
||||
SkipCount = operations.Count(x => x.Kind == AnnotationOperationKind.Skip),
|
||||
ConflictCount = operations.Count(x => x.Kind == AnnotationOperationKind.Conflict),
|
||||
UnsupportedCount = operations.Count(x => x.Kind == AnnotationOperationKind.Unsupported),
|
||||
WarningCount = diagnostics.Count(x => !string.Equals(x.Severity, "Error", StringComparison.OrdinalIgnoreCase)),
|
||||
ErrorCount = diagnostics.Count(x => string.Equals(x.Severity, "Error", StringComparison.OrdinalIgnoreCase))
|
||||
};
|
||||
|
||||
return new AnnotationPlan
|
||||
{
|
||||
PlanSchemaVersion = CurrentPlanSchemaVersion,
|
||||
PlanId = BuildPlanId(request, objects, operations),
|
||||
CommandName = request.CommandName,
|
||||
Operations = operations,
|
||||
Diagnostics = diagnostics,
|
||||
Summary = summary,
|
||||
Create = creates,
|
||||
Update = updates,
|
||||
Delete = Array.Empty<string>(),
|
||||
SkipReasons = operations.Where(x => x.Kind == AnnotationOperationKind.Skip).SelectMany(x => x.Reasons).OrderBy(x => x, StringComparer.Ordinal).ToArray(),
|
||||
ExaminedCount = objects.Length,
|
||||
IsDeterministic = true
|
||||
};
|
||||
}
|
||||
|
||||
private static string BuildPlanId(AnnotationPlanningRequest request, IReadOnlyList<PlantObjectSnapshot> objects, IReadOnlyList<AnnotationOperationPlan> operations)
|
||||
{
|
||||
var canonical = new StringBuilder("schema=").Append(CurrentPlanSchemaVersion)
|
||||
.Append("|command=").Append(Normalize(request.CommandName))
|
||||
.Append("|source=").Append(Normalize(Path.GetFileName(request.Viewport.SourceDrawingName)))
|
||||
.Append("|view=").Append(Normalize(request.Viewport.Id))
|
||||
.Append("|limited-target=").Append(Normalize(request.LimitedApplyTargetSnapshotId))
|
||||
.Append("|limited-rule=").Append(Normalize(request.LimitedApplyRuleId));
|
||||
foreach (var item in objects.OrderBy(x => x.SnapshotId, StringComparer.Ordinal))
|
||||
{
|
||||
canonical.Append("|object=").Append(Normalize(item.SnapshotId)).Append('|').Append(Normalize(item.ObjectClass))
|
||||
.Append('|').Append(Normalize(item.Tag)).Append('|').Append(Normalize(item.LineNumber))
|
||||
.Append('|').Append(item.MembershipStatus);
|
||||
foreach (var property in item.Properties.OrderBy(x => x.Key, StringComparer.Ordinal))
|
||||
canonical.Append("|property=").Append(Normalize(property.Key)).Append('=').Append(Normalize(property.Value));
|
||||
}
|
||||
foreach (var operation in operations.OrderBy(x => x.SourceSnapshotId, StringComparer.Ordinal).ThenBy(x => x.Kind))
|
||||
canonical.Append("|operation=").Append(Normalize(operation.SourceSnapshotId)).Append(':').Append(operation.Kind).Append(':').Append(string.Join(',', operation.Reasons.OrderBy(x => x, StringComparer.Ordinal)));
|
||||
var hash = SHA256.HashData(Encoding.UTF8.GetBytes(canonical.ToString()));
|
||||
return "plan-" + Convert.ToHexString(hash)[..24];
|
||||
}
|
||||
|
||||
private static string Normalize(string? value) => (value ?? string.Empty).Trim().Normalize(NormalizationForm.FormC);
|
||||
|
||||
private static string MembershipReason(ViewMembershipStatus status) => status switch
|
||||
{
|
||||
ViewMembershipStatus.ObjectOutsideView => "VIEW_MEMBERSHIP_OBJECT_OUTSIDE_CLIP",
|
||||
ViewMembershipStatus.Unsupported => "VIEW_MEMBERSHIP_API_UNSUPPORTED",
|
||||
ViewMembershipStatus.Failed => "VIEW_MEMBERSHIP_TRANSFORM_FAILED",
|
||||
_ => "VIEW_MEMBERSHIP_NOT_RESOLVED"
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
using PRecAnnot.Abstractions;
|
||||
|
||||
namespace PRecAnnot.Core;
|
||||
|
||||
public sealed class AnnotationRuleEngine : IAnnotationRuleEngine
|
||||
{
|
||||
public AnnotationPlan BuildPlan(AnnotationRequest request)
|
||||
{
|
||||
var objects = request.Objects.Select(item => new PlantObjectSnapshot
|
||||
{
|
||||
SnapshotId = item.ObjectId,
|
||||
ObjectClass = item.ClassName,
|
||||
Tag = item.Tag,
|
||||
LineNumber = item.LineNumber,
|
||||
Geometry = new GeometrySnapshot { PaperPosition = new Point2Dto(item.Position.X, item.Position.Y), Rotation = item.Rotation },
|
||||
MembershipStatus = ViewMembershipStatus.Resolved
|
||||
}).ToArray();
|
||||
|
||||
return new AnnotationPlanBuilder().Build(new AnnotationPlanningRequest
|
||||
{
|
||||
CommandName = "PHP_REC_ANNOT",
|
||||
Viewport = new OrthoViewportInfo { Id = request.Viewport.ViewportId, DisplayName = request.Viewport.ViewportId, SourceDrawingName = request.Viewport.DrawingId },
|
||||
Objects = objects,
|
||||
Existing = request.Existing
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
using PRecAnnot.Abstractions;
|
||||
|
||||
namespace PRecAnnot.Core;
|
||||
|
||||
public sealed class ExecutionModeWriteGuard(PRecAnnotExecutionMode mode) : IRuntimeWriteGuard
|
||||
{
|
||||
public void EnsureWriteAllowed(string operation) => throw new InvalidOperationException(mode == PRecAnnotExecutionMode.Apply ? "APPLY_MODE_NOT_IMPLEMENTED" : "SMOKE_WRITE_BLOCKED");
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using PRecAnnot.Abstractions;
|
||||
|
||||
namespace PRecAnnot.Core;
|
||||
|
||||
public sealed class FirstLimitedApplyPlanner
|
||||
{
|
||||
public const string FixtureMarker = "FIRST_LIMITED_APPLY";
|
||||
public const string RuleId = "PXP-OA.PIPE.OPEN-END.V1";
|
||||
|
||||
public FirstLimitedApplyPreflight Prepare(
|
||||
PRecAnnotExecutionMode mode,
|
||||
AnnotationPlan plan,
|
||||
OrthoViewportInfo viewport,
|
||||
IReadOnlyList<PlantObjectSnapshot> objects,
|
||||
FirstLimitedApplyPermit permit)
|
||||
{
|
||||
if (mode != PRecAnnotExecutionMode.Apply) throw new InvalidOperationException("APPLY_MODE_REQUIRED");
|
||||
if (!permit.AllowApply || !string.Equals(permit.FixtureMarker, FixtureMarker, StringComparison.Ordinal))
|
||||
throw new InvalidOperationException("APPLY_TEST_FIXTURE_OR_PERMIT_REQUIRED");
|
||||
if (!string.Equals(permit.ExpectedPlanId, plan.PlanId, StringComparison.Ordinal))
|
||||
throw new InvalidOperationException("APPLY_PLAN_STALE");
|
||||
|
||||
var targets = objects.Where(x => string.Equals(x.SnapshotId, permit.TargetSnapshotId, StringComparison.Ordinal)).ToArray();
|
||||
if (targets.Length != 1) throw new InvalidOperationException("APPLY_REQUIRES_EXACTLY_ONE_TARGET");
|
||||
var target = targets[0];
|
||||
if (target.MembershipStatus != ViewMembershipStatus.Resolved) throw new InvalidOperationException("APPLY_REQUIRES_RESOLVED_MEMBERSHIP");
|
||||
if (!string.Equals(target.ObjectClass, "Pipe", StringComparison.OrdinalIgnoreCase)) throw new InvalidOperationException("APPLY_UNSUPPORTED_OBJECT_CLASS");
|
||||
if (target.Geometry.PaperPosition is not { } placement) throw new InvalidOperationException("ANNOTATION_PLACEMENT_NOT_RESOLVED");
|
||||
|
||||
var create = plan.Operations.Where(x => x.Kind == AnnotationOperationKind.Create && string.Equals(x.SourceSnapshotId, target.SnapshotId, StringComparison.Ordinal)).ToArray();
|
||||
if (create.Length != 1) throw new InvalidOperationException("APPLY_TARGET_CREATE_NOT_PLANNED");
|
||||
|
||||
var duplicateKey = Stable("duplicate", RuleId, viewport.Id, target.SnapshotId);
|
||||
return new FirstLimitedApplyPreflight
|
||||
{
|
||||
PlanId = plan.PlanId,
|
||||
Operation = new CreatePipeAnnotationOperation
|
||||
{
|
||||
OperationId = Stable("operation", RuleId, viewport.Id, target.SnapshotId),
|
||||
SourceObjectStableKey = target.SnapshotId,
|
||||
ViewStableKey = viewport.Id,
|
||||
RuleId = RuleId,
|
||||
Placement = new AnnotationPoint(placement.X, placement.Y),
|
||||
DuplicateKey = duplicateKey
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private static string Stable(params string[] values) => Convert.ToHexString(SHA256.HashData(Encoding.UTF8.GetBytes(string.Join("|", values))))[..24];
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
using PRecAnnot.Abstractions;
|
||||
|
||||
namespace PRecAnnot.Core;
|
||||
|
||||
public static class OrthoDetectionClassifier
|
||||
{
|
||||
public static OrthoDetectionResult Classify(bool hasPlantProject, bool hasOrthoPart, bool apiConfirmed, bool metadataAmbiguous = false)
|
||||
{
|
||||
if (!hasPlantProject) return Result(OrthoDetectionStatus.NotOrtho, "NO_PLANT_PROJECT", "Active Plant project is absent.");
|
||||
if (metadataAmbiguous) return Result(OrthoDetectionStatus.Ambiguous, "AMBIGUOUS_ORTHO_METADATA", "Plant metadata is insufficient to confirm Ortho.");
|
||||
if (!hasOrthoPart) return Result(OrthoDetectionStatus.Unsupported, "ORTHO_PART_UNAVAILABLE", "Ortho project part is unavailable.");
|
||||
return apiConfirmed
|
||||
? Result(OrthoDetectionStatus.Confirmed, "ORTHO_API_CONFIRMED", "OrthoDocUtils confirmed the active drawing.")
|
||||
: Result(OrthoDetectionStatus.NotOrtho, "ORTHO_API_NEGATIVE", "OrthoDocUtils did not confirm the active drawing.");
|
||||
}
|
||||
|
||||
private static OrthoDetectionResult Result(OrthoDetectionStatus status, string code, string message) => new()
|
||||
{
|
||||
Status = status,
|
||||
Evidence = new[] { code },
|
||||
Diagnostics = new[] { new RuntimeDiagnostic { Code = code, Message = message } }
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using PRecAnnot.Abstractions;
|
||||
|
||||
namespace PRecAnnot.Core;
|
||||
|
||||
public sealed class OrthoSourceDrawingResolver : IOrthoSourceDrawingResolver
|
||||
{
|
||||
public IReadOnlyList<OrthoSourceDrawingReference> Resolve(OrthoDrawingSnapshot drawing)
|
||||
{
|
||||
var candidates = drawing.Views
|
||||
.OrderBy(x => x.ViewStableId, StringComparer.Ordinal)
|
||||
.SelectMany(x => x.ReferencedDrawingPaths)
|
||||
.Where(x => !string.IsNullOrWhiteSpace(x))
|
||||
.Select(x => x.Trim().Replace('\\', '/'))
|
||||
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||
.OrderBy(x => x, StringComparer.OrdinalIgnoreCase)
|
||||
.Select(path => new OrthoSourceDrawingReference
|
||||
{
|
||||
StableId = StableId(drawing.StableId, path),
|
||||
DisplayName = Path.GetFileName(path),
|
||||
ProjectRelativePath = path,
|
||||
Status = SourceDrawingResolutionStatus.Resolved,
|
||||
EvidenceCodes = new[] { "SOURCE_FROM_VIEW_DEFINITION", "SOURCE_PATH_MATCHED_PROJECT_RELATIVE" }
|
||||
})
|
||||
.ToArray();
|
||||
|
||||
return candidates.Length != 0
|
||||
? candidates
|
||||
: new[]
|
||||
{
|
||||
new OrthoSourceDrawingReference
|
||||
{
|
||||
StableId = StableId(drawing.StableId, "none"),
|
||||
DisplayName = "source drawing unavailable",
|
||||
Status = SourceDrawingResolutionStatus.NotReferenced,
|
||||
EvidenceCodes = new[] { "ORTHO_SOURCE_DRAWING_NOT_RESOLVED" }
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private static string StableId(string drawingId, string source)
|
||||
{
|
||||
var hash = SHA256.HashData(Encoding.UTF8.GetBytes($"{drawingId}|{source}"));
|
||||
return "src-" + Convert.ToHexString(hash)[..20];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup><TargetFramework>net8.0</TargetFramework></PropertyGroup>
|
||||
<ItemGroup><ProjectReference Include="..\PRecAnnot.Abstractions\PRecAnnot.Abstractions.csproj" /></ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,285 @@
|
||||
using System.Diagnostics;
|
||||
using Autodesk.AutoCAD.ApplicationServices;
|
||||
using Autodesk.AutoCAD.Runtime;
|
||||
using Autodesk.Windows;
|
||||
using PRecAnnot.Abstractions;
|
||||
using PRecAnnot.Core;
|
||||
using AcadApplication = Autodesk.AutoCAD.ApplicationServices.Application;
|
||||
|
||||
namespace PRecAnnot.Plant3D2026;
|
||||
|
||||
public sealed class EntryPoint : IExtensionApplication
|
||||
{
|
||||
public void Initialize()
|
||||
{
|
||||
RuntimeDiagnostics.Write("AssemblyInitializeStarted");
|
||||
RibbonIntegration.Register();
|
||||
// Test automation is driven only by the explicitly generated /b script.
|
||||
// Initialize remains production-equivalent and must not orchestrate commands.
|
||||
RuntimeDiagnostics.Write("AssemblyInitializeCompleted");
|
||||
}
|
||||
|
||||
public void Terminate()
|
||||
{
|
||||
RuntimeDiagnostics.Write("AssemblyTerminateStarted");
|
||||
RibbonIntegration.Terminate();
|
||||
RuntimeDiagnostics.Write("AssemblyTerminateCompleted");
|
||||
}
|
||||
|
||||
[CommandMethod("PHP_REC_ANNOT")]
|
||||
public void PrimaryCommand() => RunDiagnostic("PHP_REC_ANNOT");
|
||||
|
||||
[CommandMethod("PXP-AAV")]
|
||||
public void AutoAnnotateViewCommand() => RunDiagnostic("PXP-AAV");
|
||||
|
||||
[CommandMethod("PXP-OA")]
|
||||
public void OrthoAnnotateCommand() => RunDiagnostic("PXP-OA");
|
||||
|
||||
[CommandMethod("PHP_REC_AUTOMATION_START", CommandFlags.Session)]
|
||||
public void AutomationStartCommand() => FirstLimitedApplyAutomationBootstrap.Arm();
|
||||
|
||||
// Test-only command-queue barrier. It deliberately performs no Plant or
|
||||
// drawing work; its CommandEnded event proves the activated document is
|
||||
// ready before the coordinator calls the Plant APIs.
|
||||
[CommandMethod("PHP_REC_AUTOMATION_READY")]
|
||||
public void AutomationReadyCommand() { }
|
||||
|
||||
[CommandMethod("PHP_REC_AUTOMATION_PREPARE", CommandFlags.Session)]
|
||||
public void AutomationPrepareCommand() => ScriptDrivenFirstApplyAutomation.Prepare();
|
||||
|
||||
[CommandMethod("PHP_REC_AUTOMATION_FINALIZE", CommandFlags.Session)]
|
||||
public void AutomationFinalizeCommand() => ScriptDrivenFirstApplyAutomation.FinalizePreview();
|
||||
|
||||
private static void RunDiagnostic(string commandName)
|
||||
{
|
||||
var operationId = Guid.NewGuid().ToString("N");
|
||||
var stopwatch = Stopwatch.StartNew();
|
||||
Document? document = null;
|
||||
RuntimeDiagnostics.Write("CommandStarted", operationId: operationId, commandName: commandName);
|
||||
try
|
||||
{
|
||||
document = AcadApplication.DocumentManager.MdiActiveDocument;
|
||||
var mode = ParseMode(RuntimeDiagnostics.RuntimeMode);
|
||||
|
||||
var context = new PlantRuntimeContextReader().ReadCurrentContext();
|
||||
var details = new Dictionary<string, object?>
|
||||
{
|
||||
["ExecutionMode"] = mode.ToString(),
|
||||
["IsPlantProjectDetected"] = context.HasPlantProject,
|
||||
["IsPlantProjectOpen"] = context.HasPlantProject,
|
||||
["IsOrthoDrawing"] = context.IsOrthoDrawing,
|
||||
["ViewportCount"] = context.Viewports.Count,
|
||||
["DataLinksAvailable"] = DataLinksAvailable(context.HasPlantProject)
|
||||
};
|
||||
|
||||
if (document is null || !context.HasPlantProject)
|
||||
{
|
||||
RuntimeDiagnostics.Write("CommandPreflightCompleted", operationId: operationId, commandName: commandName, resultStatus: "PreflightRejected", document: document, details: details);
|
||||
WriteEditor(document, "\nP_Rec_Annot: Активный Plant 3D-проект не найден; DWG не изменён.");
|
||||
WriteUsage(operationId, commandName, "PreflightRejected", document, details, stopwatch.ElapsedMilliseconds);
|
||||
RuntimeDiagnostics.Write("CommandCompleted", operationId: operationId, commandName: commandName, resultStatus: "PreflightRejected", document: document, details: details);
|
||||
return;
|
||||
}
|
||||
|
||||
if (mode == PRecAnnotExecutionMode.Smoke || !context.IsOrthoDrawing)
|
||||
{
|
||||
var status = context.IsOrthoDrawing ? "PreflightAccepted" : "NotOrtho";
|
||||
RuntimeDiagnostics.Write("CommandPreflightCompleted", operationId: operationId, commandName: commandName, resultStatus: status, document: document, details: details);
|
||||
WriteEditor(document, $"\nP_Rec_Annot {commandName}: проект '{context.ProjectDisplayName}' найден; тип чертежа: {(context.IsOrthoDrawing ? "Ortho" : "NotOrtho")}; DWG не изменён.");
|
||||
WriteUsage(operationId, commandName, status, document, details, stopwatch.ElapsedMilliseconds);
|
||||
RuntimeDiagnostics.Write("CommandCompleted", operationId: operationId, commandName: commandName, resultStatus: status, document: document, details: details);
|
||||
return;
|
||||
}
|
||||
|
||||
if (mode == PRecAnnotExecutionMode.Apply && !string.Equals(commandName, "PXP-OA", StringComparison.Ordinal))
|
||||
throw new InvalidOperationException("APPLY_RULE_NOT_SUPPORTED");
|
||||
var hasLimitedApplyPermit = !string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable("P_REC_ANNOT_APPLY_PERMIT_PATH"));
|
||||
var applyPermit = (mode == PRecAnnotExecutionMode.Apply || hasLimitedApplyPermit) && document is not null
|
||||
? FirstLimitedApplyPermitReader.ReadFor(document)
|
||||
: null;
|
||||
var automationTarget = FirstLimitedApplyAutomationCoordinator.SelectedTargetSnapshotId;
|
||||
var limitedTarget = applyPermit?.TargetSnapshotId ?? automationTarget;
|
||||
if (mode == PRecAnnotExecutionMode.Apply && context.Viewports.Count != 1)
|
||||
throw new InvalidOperationException("APPLY_REQUIRES_EXACTLY_ONE_VIEWPORT");
|
||||
|
||||
var builder = new AnnotationPlanBuilder();
|
||||
var plans = new List<AnnotationPlan>();
|
||||
var objectsByViewport = new List<IReadOnlyList<PlantObjectSnapshot>>();
|
||||
foreach (var viewport in context.Viewports)
|
||||
{
|
||||
var objects = new PlantObjectReader().ReadObjects(viewport, CancellationToken.None);
|
||||
objectsByViewport.Add(objects);
|
||||
plans.Add(builder.Build(new AnnotationPlanningRequest
|
||||
{
|
||||
CommandName = commandName,
|
||||
Viewport = viewport,
|
||||
Objects = objects,
|
||||
LimitedApplyTargetSnapshotId = limitedTarget,
|
||||
LimitedApplyRuleId = limitedTarget is null ? null : FirstLimitedApplyPlanner.RuleId
|
||||
}));
|
||||
}
|
||||
|
||||
if (mode == PRecAnnotExecutionMode.DryRun &&
|
||||
string.Equals(Environment.GetEnvironmentVariable("P_REC_ANNOT_DIAGNOSTICS"), "FirstLimitedApply", StringComparison.Ordinal))
|
||||
{
|
||||
var candidates = objectsByViewport.SelectMany(x => x)
|
||||
.Where(x => string.Equals(x.ObjectClass, "Pipe", StringComparison.OrdinalIgnoreCase) && x.MembershipStatus == ViewMembershipStatus.Resolved && x.Geometry.PaperPosition is not null)
|
||||
.Select(x => x.SnapshotId)
|
||||
.OrderBy(x => x, StringComparer.Ordinal)
|
||||
.ToArray();
|
||||
WriteEditor(document, $"\nP_Rec_Annot Apply preview candidates: {string.Join(",", candidates)}");
|
||||
details["ApplyPreviewCandidateCount"] = candidates.Length;
|
||||
}
|
||||
|
||||
var summary = new
|
||||
{
|
||||
ObjectsExamined = plans.Sum(x => x.Summary.ObjectsExamined),
|
||||
CreateCount = plans.Sum(x => x.Summary.CreateCount),
|
||||
UpdateCount = plans.Sum(x => x.Summary.UpdateCount),
|
||||
SkipCount = plans.Sum(x => x.Summary.SkipCount),
|
||||
ConflictCount = plans.Sum(x => x.Summary.ConflictCount),
|
||||
UnsupportedCount = plans.Sum(x => x.Summary.UnsupportedCount),
|
||||
WarningCount = plans.Sum(x => x.Summary.WarningCount),
|
||||
ErrorCount = plans.Sum(x => x.Summary.ErrorCount)
|
||||
};
|
||||
var membershipResolved = objectsByViewport.SelectMany(x => x).Count(x => x.MembershipStatus == ViewMembershipStatus.Resolved);
|
||||
var membershipPartial = objectsByViewport.SelectMany(x => x).Count(x => x.MembershipStatus == ViewMembershipStatus.PartiallyResolved);
|
||||
var membershipUnresolved = objectsByViewport.SelectMany(x => x).Count(x => x.MembershipStatus == ViewMembershipStatus.NotResolved);
|
||||
var membershipOutside = objectsByViewport.SelectMany(x => x).Count(x => x.MembershipStatus == ViewMembershipStatus.ObjectOutsideView);
|
||||
var planId = plans.Count == 1 ? plans[0].PlanId : null;
|
||||
details["ObjectsExamined"] = summary.ObjectsExamined;
|
||||
details["PlanSchemaVersion"] = AnnotationPlanBuilder.CurrentPlanSchemaVersion;
|
||||
details["PlanId"] = planId;
|
||||
details["MembershipResolved"] = membershipResolved;
|
||||
details["MembershipPartial"] = membershipPartial;
|
||||
details["MembershipUnresolved"] = membershipUnresolved;
|
||||
details["MembershipOutsideView"] = membershipOutside;
|
||||
details["PlanCreateCount"] = summary.CreateCount;
|
||||
details["PlanUpdateCount"] = summary.UpdateCount;
|
||||
details["PlanSkipCount"] = summary.SkipCount;
|
||||
details["PlanConflictCount"] = summary.ConflictCount;
|
||||
details["PlanUnsupportedCount"] = summary.UnsupportedCount;
|
||||
details["ErrorCount"] = summary.ErrorCount;
|
||||
if (string.Equals(commandName, "PXP-OA", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
var candidates = objectsByViewport.SelectMany(x => x)
|
||||
.Where(x => string.Equals(x.ObjectClass, "Pipe", StringComparison.OrdinalIgnoreCase) && x.MembershipStatus == ViewMembershipStatus.Resolved && x.Geometry.PaperPosition is not null)
|
||||
.Select(x => x.SnapshotId).OrderBy(x => x, StringComparer.Ordinal).ToArray();
|
||||
ScriptDrivenFirstApplyAutomation.RecordPxpOa(planId, candidates, context.Viewports.SingleOrDefault()?.Id, summary.CreateCount, summary.SkipCount, mode == PRecAnnotExecutionMode.Apply ? applyPermit is not null : null, summary.ObjectsExamined, membershipResolved);
|
||||
FirstLimitedApplyAutomationCoordinator.RecordPxpOa(planId, candidates, context.Viewports.SingleOrDefault()?.Id, summary.CreateCount, summary.SkipCount, mode == PRecAnnotExecutionMode.Apply ? applyPermit is not null : null);
|
||||
}
|
||||
if (mode == PRecAnnotExecutionMode.Apply)
|
||||
{
|
||||
var corePermit = new FirstLimitedApplyPermit
|
||||
{
|
||||
FixtureMarker = FirstLimitedApplyPlanner.FixtureMarker,
|
||||
AllowApply = applyPermit!.AllowApply,
|
||||
TargetSnapshotId = applyPermit.TargetSnapshotId,
|
||||
ExpectedPlanId = applyPermit.ExpectedPlanId
|
||||
};
|
||||
var preflight = new FirstLimitedApplyPlanner().Prepare(mode, plans.Single(), context.Viewports.Single(), objectsByViewport.Single(), corePermit);
|
||||
new RuntimeWriteGuard(mode).EnsureWriteAllowed(preflight.Operation.OperationId);
|
||||
RuntimeDiagnostics.Write("ApplyPreflightCompleted", operationId: operationId, commandName: commandName, resultStatus: "Accepted", document: document);
|
||||
RuntimeDiagnostics.Write("AnnotationTransactionStarted", operationId: operationId, commandName: commandName, document: document);
|
||||
var outcome = new FirstLimitedPipeAnnotationWriter().Write(document!, preflight.Operation, applyPermit.VisibilityState);
|
||||
FirstLimitedApplyAutomationCoordinator.RecordApplyOutcome(outcome);
|
||||
details["ApplyOutcome"] = outcome.ToString();
|
||||
details["AnnotationsCreated"] = outcome == PipeAnnotationWriteOutcome.Created ? 1 : 0;
|
||||
details["AnnotationsSkipped"] = outcome == PipeAnnotationWriteOutcome.AlreadyExists ? 1 : 0;
|
||||
RuntimeDiagnostics.Write(outcome == PipeAnnotationWriteOutcome.Created ? "AnnotationCreated" : "AnnotationDuplicateDetected", operationId: operationId, commandName: commandName, resultStatus: outcome.ToString(), document: document);
|
||||
RuntimeDiagnostics.Write("AnnotationTransactionCommitted", operationId: operationId, commandName: commandName, resultStatus: outcome.ToString(), document: document);
|
||||
}
|
||||
RuntimeDiagnostics.Write("CommandPreflightCompleted", operationId: operationId, commandName: commandName, resultStatus: "DryRunCompleted", document: document, details: details);
|
||||
WriteEditor(document, $"\nP_Rec_Annot — диагностический план\nПроект: {context.ProjectDisplayName}\nТип чертежа: Ortho\nViewport: {context.Viewports.Count}\nОбъектов найдено: {summary.ObjectsExamined}\nБудет создано: {summary.CreateCount}\nБудет обновлено: {summary.UpdateCount}\nБудет пропущено: {summary.SkipCount}\nКонфликтов: {summary.ConflictCount}\nОшибок: {summary.ErrorCount}\nDWG не изменён.");
|
||||
WriteEditor(document, $"\nPlan schema: {AnnotationPlanBuilder.CurrentPlanSchemaVersion}; PlanId: {planId ?? "multiple"}; membership resolved/partial/outside/unresolved: {membershipResolved}/{membershipPartial}/{membershipOutside}/{membershipUnresolved}.");
|
||||
var completedStatus = mode == PRecAnnotExecutionMode.Apply ? "ApplyCompleted" : "DryRunCompleted";
|
||||
WriteUsage(operationId, commandName, completedStatus, document, details, stopwatch.ElapsedMilliseconds);
|
||||
RuntimeDiagnostics.Write("CommandCompleted", operationId: operationId, commandName: commandName, resultStatus: completedStatus, document: document, details: details);
|
||||
}
|
||||
catch (System.Exception exception)
|
||||
{
|
||||
RuntimeDiagnostics.Write("CommandFailed", "ERROR", operationId, commandName, exception.Message, exception, document);
|
||||
WriteUsage(operationId, commandName, exception.Message, document, null, stopwatch.ElapsedMilliseconds, exception);
|
||||
WriteEditor(document, $"\nP_Rec_Annot: безопасная диагностика завершилась ошибкой: {exception.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
private static PRecAnnotExecutionMode ParseMode(string value) =>
|
||||
value.Equals("Smoke", StringComparison.OrdinalIgnoreCase) ? PRecAnnotExecutionMode.Smoke :
|
||||
value.Equals("Apply", StringComparison.OrdinalIgnoreCase) ? PRecAnnotExecutionMode.Apply : PRecAnnotExecutionMode.DryRun;
|
||||
|
||||
private static bool DataLinksAvailable(bool hasPlantProject)
|
||||
{
|
||||
try { return hasPlantProject && Autodesk.ProcessPower.PlantInstance.PlantApplication.ProjectPart("Piping")?.DataLinksManager is not null; }
|
||||
catch { return false; }
|
||||
}
|
||||
|
||||
private static void WriteUsage(string operationId, string commandName, string status, Document? document, IReadOnlyDictionary<string, object?>? details, long duration, System.Exception? exception = null)
|
||||
{
|
||||
var eventDetails = new Dictionary<string, object?>
|
||||
{
|
||||
["ObjectsExamined"] = 0, ["AnnotationsCreated"] = 0, ["AnnotationsUpdated"] = 0,
|
||||
["AnnotationsDeleted"] = 0, ["AnnotationsSkipped"] = 0, ["WarningCount"] = 0,
|
||||
["ErrorCount"] = exception is null ? 0 : 1, ["DurationMilliseconds"] = duration
|
||||
};
|
||||
if (details is not null) foreach (var item in details) eventDetails[item.Key] = item.Value;
|
||||
RuntimeDiagnostics.Write("CommandUsageEvent", exception is null ? "INFO" : "ERROR", operationId, commandName, status, exception, document, eventDetails);
|
||||
}
|
||||
|
||||
private static void WriteEditor(Document? document, string message)
|
||||
{
|
||||
try { document?.Editor.WriteMessage(message); } catch { }
|
||||
}
|
||||
}
|
||||
|
||||
internal static class RibbonIntegration
|
||||
{
|
||||
private const string TabId = "PRecAnnot.Plant3D2026";
|
||||
private const string PanelId = "PRecAnnot.Plant3D2026.Annotations";
|
||||
private const string ButtonId = "PRecAnnot.Plant3D2026.PHP_REC_ANNOT";
|
||||
private static bool deferred;
|
||||
|
||||
public static void Register()
|
||||
{
|
||||
RuntimeDiagnostics.Write("RibbonInitializationStarted");
|
||||
try
|
||||
{
|
||||
if (ComponentManager.Ribbon is null)
|
||||
{
|
||||
if (!deferred) { ComponentManager.ItemInitialized += OnItemInitialized; deferred = true; }
|
||||
RuntimeDiagnostics.Write("RibbonInitializationCompleted", resultStatus: "Deferred");
|
||||
return;
|
||||
}
|
||||
RegisterNow();
|
||||
}
|
||||
catch (System.Exception exception) { RuntimeDiagnostics.Write("RibbonInitializationCompleted", "ERROR", exception: exception, resultStatus: "Failed"); }
|
||||
}
|
||||
|
||||
private static void OnItemInitialized(object? sender, EventArgs args)
|
||||
{
|
||||
if (ComponentManager.Ribbon is null) return;
|
||||
ComponentManager.ItemInitialized -= OnItemInitialized;
|
||||
deferred = false;
|
||||
Register();
|
||||
}
|
||||
|
||||
private static void RegisterNow()
|
||||
{
|
||||
var ribbon = ComponentManager.Ribbon!;
|
||||
var tab = ribbon.Tabs.FirstOrDefault(x => string.Equals(x.Id, TabId, StringComparison.OrdinalIgnoreCase));
|
||||
if (tab is null) { tab = new RibbonTab { Id = TabId, Title = "Промхимпроект" }; ribbon.Tabs.Add(tab); }
|
||||
var panel = tab.Panels.FirstOrDefault(x => string.Equals(x.Source?.Id, PanelId, StringComparison.OrdinalIgnoreCase));
|
||||
if (panel is not null) { RuntimeDiagnostics.Write("RibbonAlreadyExists", resultStatus: "AlreadyExists"); RuntimeDiagnostics.Write("RibbonInitializationCompleted", resultStatus: "AlreadyExists"); return; }
|
||||
var source = new RibbonPanelSource { Id = PanelId, Title = "Аннотации" };
|
||||
source.Items.Add(new RibbonButton { Id = ButtonId, Text = "Аннотировать", ShowText = true, CommandParameter = "PHP_REC_ANNOT " });
|
||||
tab.Panels.Add(new RibbonPanel { Source = source });
|
||||
RuntimeDiagnostics.Write("RibbonInitializationCompleted", resultStatus: "Created");
|
||||
}
|
||||
|
||||
public static void Terminate()
|
||||
{
|
||||
if (!deferred) return;
|
||||
ComponentManager.ItemInitialized -= OnItemInitialized;
|
||||
deferred = false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,495 @@
|
||||
using System.Text.Json;
|
||||
using Autodesk.AutoCAD.ApplicationServices;
|
||||
using Autodesk.AutoCAD.DatabaseServices;
|
||||
using Autodesk.AutoCAD.Runtime;
|
||||
using Autodesk.ProcessPower.PlantInstance;
|
||||
using Autodesk.ProcessPower.ProjectManager;
|
||||
using PRecAnnot.Abstractions;
|
||||
using AcadApplication = Autodesk.AutoCAD.ApplicationServices.Application;
|
||||
|
||||
namespace PRecAnnot.Plant3D2026;
|
||||
|
||||
// Test-only coordinator. It is not registered in Ribbon and is inert unless
|
||||
// the explicit NextPilot automation environment and local marker are present.
|
||||
internal sealed record FirstApplyAutomationConfiguration
|
||||
{
|
||||
public required string Phase { get; init; }
|
||||
public string? OrthoDrawingPath { get; init; }
|
||||
public string? ModelDrawingPath { get; init; }
|
||||
public required string EvidencePath { get; init; }
|
||||
public required string FixtureMarkerPath { get; init; }
|
||||
}
|
||||
|
||||
internal sealed record AutomationEntityCounts(int Total, int PipeBlocks, int PxpOaXdata, int Owned);
|
||||
|
||||
internal static class FirstLimitedApplyAutomationBootstrap
|
||||
{
|
||||
private enum BootstrapState { Created, Prepared, Armed, Starting, Completed }
|
||||
private static BootstrapState state;
|
||||
private static bool observedIdle;
|
||||
private static int idleCallbackCount;
|
||||
private static int coordinatorStartCount;
|
||||
|
||||
internal static int IdleCallbackCount => idleCallbackCount;
|
||||
internal static int CoordinatorStartCount => coordinatorStartCount;
|
||||
|
||||
// Called from Initialize: BCL gates and one lightweight subscription only.
|
||||
internal static void Prepare()
|
||||
{
|
||||
if (state != BootstrapState.Created) return;
|
||||
state = BootstrapState.Prepared;
|
||||
AcadApplication.Idle += OnIdle;
|
||||
RuntimeDiagnostics.Write("AutomationBootstrapSubscribed", resultStatus: "Prepared");
|
||||
}
|
||||
|
||||
// Public test command is intentionally side-effect free with respect to Plant APIs.
|
||||
internal static void Arm()
|
||||
{
|
||||
if (state is BootstrapState.Prepared)
|
||||
{
|
||||
// The command itself is the post-NETLOAD barrier. The next Idle
|
||||
// callback, not this command callback, is allowed to start work.
|
||||
observedIdle = true;
|
||||
state = BootstrapState.Armed;
|
||||
}
|
||||
}
|
||||
|
||||
private static void OnIdle(object? sender, EventArgs args)
|
||||
{
|
||||
try
|
||||
{
|
||||
idleCallbackCount++;
|
||||
RuntimeDiagnostics.Write("AutomationBootstrapIdle", resultStatus: state.ToString());
|
||||
// The script engine can consume the custom command after NETLOAD. The
|
||||
// first idle is therefore the explicit post-NETLOAD arming point.
|
||||
if (state == BootstrapState.Prepared) { observedIdle = true; state = BootstrapState.Armed; }
|
||||
if (!observedIdle || state != BootstrapState.Armed) return;
|
||||
state = BootstrapState.Starting;
|
||||
AcadApplication.Idle -= OnIdle;
|
||||
coordinatorStartCount++;
|
||||
RuntimeDiagnostics.Write("AutomationCoordinatorStarting", resultStatus: "FirstPostStartupIdle");
|
||||
new FirstLimitedApplyAutomationCoordinator().Start();
|
||||
}
|
||||
catch (System.Exception exception)
|
||||
{
|
||||
state = BootstrapState.Completed;
|
||||
AcadApplication.Idle -= OnIdle;
|
||||
FirstLimitedApplyAutomationCoordinator.WriteBootstrapFailure(exception);
|
||||
}
|
||||
}
|
||||
}
|
||||
internal sealed record FirstApplyAutomationEvidence
|
||||
{
|
||||
public int SchemaVersion { get; init; } = 1;
|
||||
public required string Phase { get; init; }
|
||||
public bool Completed { get; init; }
|
||||
public bool? Prepared { get; init; }
|
||||
public bool? FunctionalEvidenceCompleted { get; init; }
|
||||
public string? ErrorCode { get; init; }
|
||||
public int? DbmodBefore { get; init; }
|
||||
public int? DbmodAfterCommand1 { get; init; }
|
||||
public int? DbmodAfterCommand2 { get; init; }
|
||||
public int? DbmodAfterUndo { get; init; }
|
||||
public AutomationEntityCounts? Baseline { get; init; }
|
||||
public AutomationEntityCounts? AfterCommand1 { get; init; }
|
||||
public AutomationEntityCounts? AfterCommand2 { get; init; }
|
||||
public AutomationEntityCounts? AfterUndo { get; init; }
|
||||
public IReadOnlyList<string> CompletedCommands { get; init; } = Array.Empty<string>();
|
||||
public string? PlanIdRun1 { get; init; }
|
||||
public string? PlanIdRun2 { get; init; }
|
||||
public bool? PlanIdsEqual { get; init; }
|
||||
public int? EligibleCandidateCount { get; init; }
|
||||
public string? SelectedCandidateHash { get; init; }
|
||||
public string? ViewHash { get; init; }
|
||||
public int? CreateRun1 { get; init; }
|
||||
public int? CreateRun2 { get; init; }
|
||||
public int? SkipRun2 { get; init; }
|
||||
public string? ApplyOutcomeRun1 { get; init; }
|
||||
public string? ApplyOutcomeRun2 { get; init; }
|
||||
public bool? PermitAccepted { get; init; }
|
||||
public bool? CommandsCompleted { get; init; }
|
||||
public bool? InspectorsCompleted { get; init; }
|
||||
public bool? EvidenceFlushed { get; init; }
|
||||
public bool? ExitAttemptQueued { get; init; }
|
||||
public bool? QuitCommandWillStart { get; init; }
|
||||
public bool? QuitCommandEnded { get; init; }
|
||||
public string? ExitFailureCode { get; init; }
|
||||
public int? IdleCallbackCount { get; init; }
|
||||
public int? CoordinatorStartCount { get; init; }
|
||||
// Local test evidence only. This is intentionally never copied into Git
|
||||
// evidence because exception stacks may contain machine-specific paths.
|
||||
public string? ExceptionText { get; init; }
|
||||
public string? PreviousState { get; init; }
|
||||
public string? CurrentState { get; init; }
|
||||
public IReadOnlyList<string> StateTransitions { get; init; } = Array.Empty<string>();
|
||||
}
|
||||
|
||||
internal sealed class FirstLimitedApplyAutomationCoordinator
|
||||
{
|
||||
private enum CoordinatorState { Created, Starting, Running, Completed, Failed, ExitQueued }
|
||||
private sealed record PxpResult(string? PlanId, IReadOnlyList<string> Candidates, string? View, int Create, int Skip, bool? PermitAccepted, string? ApplyOutcome);
|
||||
private static string? selectedTargetSnapshotId;
|
||||
private static readonly List<PxpResult> pxpResults = [];
|
||||
internal static string? SelectedTargetSnapshotId => selectedTargetSnapshotId;
|
||||
internal static void WriteBootstrapFailure(System.Exception exception) =>
|
||||
RuntimeDiagnostics.Write("AutomationBootstrapFailed", "ERROR", resultStatus: "AUTOMATION_BOOTSTRAP_FAILED", exception: exception);
|
||||
internal static void RecordPxpOa(string? planId, IReadOnlyList<string> candidates, string? view, int create, int skip, bool? permitAccepted)
|
||||
{
|
||||
if (string.Equals(Environment.GetEnvironmentVariable("P_REC_ANNOT_AUTOMATION"), "FirstLimitedApplyRuntimeTest", StringComparison.Ordinal))
|
||||
pxpResults.Add(new(planId, candidates, view, create, skip, permitAccepted, null));
|
||||
}
|
||||
internal static void RecordApplyOutcome(PipeAnnotationWriteOutcome outcome)
|
||||
{
|
||||
if (!string.Equals(Environment.GetEnvironmentVariable("P_REC_ANNOT_AUTOMATION"), "FirstLimitedApplyRuntimeTest", StringComparison.Ordinal) || pxpResults.Count == 0) return;
|
||||
var last = pxpResults[^1];
|
||||
pxpResults[^1] = last with { ApplyOutcome = outcome.ToString() };
|
||||
}
|
||||
private FirstApplyAutomationConfiguration? config;
|
||||
private Document? document;
|
||||
private readonly List<Document> automationOpenedDocuments = [];
|
||||
private readonly List<string> completed = [];
|
||||
private int step;
|
||||
private int? before, after1, after2, afterUndo;
|
||||
private AutomationEntityCounts? baseline, counts1, counts2, countsUndo;
|
||||
private readonly List<string> transitions = ["Created"];
|
||||
private CoordinatorState state = CoordinatorState.Created;
|
||||
private CoordinatorState previousState = CoordinatorState.Created;
|
||||
private bool documentHandlersSubscribed;
|
||||
private bool lifecycleHandlersSubscribed;
|
||||
private bool fixtureDocumentActivated;
|
||||
private bool projectActivationStarted;
|
||||
private bool exitQueued;
|
||||
private bool exitHandlerSubscribed;
|
||||
private string? exceptionText;
|
||||
private bool functionalCompleted;
|
||||
private bool evidenceFlushed;
|
||||
private bool exitAttemptQueued;
|
||||
private string? exitFailureCode;
|
||||
|
||||
public void Start()
|
||||
{
|
||||
try
|
||||
{
|
||||
Transition(CoordinatorState.Starting, "PostStartupReady");
|
||||
config = ReadConfiguration();
|
||||
if (string.Equals(config.Phase, "LifecycleProbe", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
CompleteLifecycleProbe();
|
||||
return;
|
||||
}
|
||||
if (string.IsNullOrWhiteSpace(config.OrthoDrawingPath)) throw new InvalidOperationException("AUTOMATION_ORTHO_PATH_REQUIRED");
|
||||
// A first startup Idle is sufficient to arm automation, but not to
|
||||
// call Plant APIs. Establish an AutoCAD document first and wait for
|
||||
// its activation plus a quiescent callback before project activation.
|
||||
AcadApplication.DocumentManager.DocumentActivated += OnDocumentActivated;
|
||||
AcadApplication.Idle += OnIdle;
|
||||
lifecycleHandlersSubscribed = true;
|
||||
if (!string.IsNullOrWhiteSpace(config.ModelDrawingPath)) automationOpenedDocuments.Add(AcadApplication.DocumentManager.Open(config.ModelDrawingPath, false));
|
||||
transitions.Add("DocumentOpenStarted");
|
||||
RuntimeDiagnostics.Write("AutomationBeforeDocumentOpen", resultStatus: "PostStartupReady");
|
||||
document = AcadApplication.DocumentManager.Open(config.OrthoDrawingPath, false);
|
||||
automationOpenedDocuments.Add(document);
|
||||
AcadApplication.DocumentManager.MdiActiveDocument = document;
|
||||
transitions.Add("DocumentOpened");
|
||||
RuntimeDiagnostics.Write("AutomationAfterDocumentOpen", resultStatus: "WaitingForDocumentActivation", document: document);
|
||||
document.CommandEnded += OnCommandEnded;
|
||||
document.CommandFailed += OnCommandFailed;
|
||||
document.CommandCancelled += OnCommandCancelled;
|
||||
documentHandlersSubscribed = true;
|
||||
Transition(CoordinatorState.Running, "AutomationRunning");
|
||||
// DocumentActivated can be raised synchronously by Open before the
|
||||
// coordinator receives the returned Document. Confirm the current
|
||||
// active document after assignment so that one missed event cannot
|
||||
// strand the workflow waiting for another startup Idle.
|
||||
// Open was requested for this exact local fixture and it has just
|
||||
// been made MDI-active. Queue a no-op public command regardless of
|
||||
// wrapper identity/name normalisation; CommandEnded is the actual
|
||||
// readiness proof before any Plant API is used.
|
||||
fixtureDocumentActivated = true;
|
||||
transitions.Add("FixtureDocumentActiveAfterOpen");
|
||||
QueueReadinessBarrier();
|
||||
}
|
||||
catch (System.Exception ex) { FailFromCallback("Start", ex, "AUTOMATION_START_FAILED"); }
|
||||
}
|
||||
|
||||
private void CompleteLifecycleProbe()
|
||||
{
|
||||
transitions.Add("LifecycleProbeCompleted");
|
||||
WriteEvidence(true, null);
|
||||
// LifecycleProbe is already running from the first verified Idle callback.
|
||||
// Do not wait for a second Idle: a startup-script host is permitted not to
|
||||
// raise one, which otherwise leaves acad.exe responsive but stranded.
|
||||
RequestControlledExit(idleSafe: true);
|
||||
}
|
||||
|
||||
private void OnIdle(object? sender, EventArgs e) => RunCallback("Idle", TryActivateProjectAndVerifyContext);
|
||||
private void OnDocumentActivated(object sender, DocumentCollectionEventArgs e)
|
||||
{
|
||||
RunCallback("DocumentActivated", () =>
|
||||
{
|
||||
if (document is null || e.Document is null) return;
|
||||
if (!string.Equals(e.Document.Name, document.Name, StringComparison.OrdinalIgnoreCase)) return;
|
||||
fixtureDocumentActivated = true;
|
||||
transitions.Add("FixtureDocumentActivated");
|
||||
TryActivateProjectAndVerifyContext();
|
||||
});
|
||||
}
|
||||
private void TryActivateProjectAndVerifyContext()
|
||||
{
|
||||
if (IsTerminal || document is null || !fixtureDocumentActivated || projectActivationStarted) return;
|
||||
if (!AcadApplication.IsQuiescent) return;
|
||||
projectActivationStarted = true;
|
||||
AcadApplication.Idle -= OnIdle;
|
||||
AcadApplication.DocumentManager.DocumentActivated -= OnDocumentActivated;
|
||||
lifecycleHandlersSubscribed = false;
|
||||
try
|
||||
{
|
||||
transitions.Add("ProjectActivationStarted");
|
||||
RuntimeDiagnostics.Write("AutomationBeforeProjectActivation", resultStatus: "DocumentActivatedAndQuiescent", document: document);
|
||||
var projectXml = Path.Combine(Path.GetDirectoryName(config!.FixtureMarkerPath)!, "Project.xml");
|
||||
var project = PlantProject.LoadProject(projectXml, false, string.Empty, string.Empty);
|
||||
PlantApplication.SetCurrentProject(project, true);
|
||||
transitions.Add("ProjectActivated");
|
||||
RuntimeDiagnostics.Write("AutomationAfterProjectActivation", resultStatus: "ProjectAvailable", document: document);
|
||||
transitions.Add("ContextVerificationStarted");
|
||||
var context = new PlantRuntimeContextReader().ReadCurrentContext(document);
|
||||
if (!context.HasPlantProject || !context.IsOrthoDrawing || context.Viewports.Count != 1) { Complete(false, $"AUTOMATION_ORTHO_CONTEXT_INVALID:P={context.HasPlantProject};O={context.IsOrthoDrawing};V={context.Viewports.Count}"); return; }
|
||||
var candidates = new PlantObjectReader().ReadObjects(context.Viewports.Single(), CancellationToken.None)
|
||||
.Where(x => string.Equals(x.ObjectClass, "Pipe", StringComparison.OrdinalIgnoreCase) && x.MembershipStatus == ViewMembershipStatus.Resolved && x.Geometry.PaperPosition is not null)
|
||||
.Select(x => x.SnapshotId).OrderBy(x => x, StringComparer.Ordinal).ToArray();
|
||||
if (candidates.Length == 0) { Complete(false, "AUTOMATION_NO_ELIGIBLE_CANDIDATE"); return; }
|
||||
selectedTargetSnapshotId = candidates[0];
|
||||
transitions.Add("ContextVerified");
|
||||
before = Dbmod(); baseline = Counts();
|
||||
Queue("PXP-OA");
|
||||
}
|
||||
catch (System.Exception ex) { FailFromCallback("ContextVerification", ex, "AUTOMATION_CONTEXT_FAILED"); }
|
||||
}
|
||||
|
||||
private void Queue(string command) => _ = DispatchCommandAsync(command, false);
|
||||
private void QueueReadinessBarrier()
|
||||
{
|
||||
_ = DispatchCommandAsync("PHP_REC_AUTOMATION_READY", true);
|
||||
}
|
||||
private async Task DispatchCommandAsync(string command, bool readiness)
|
||||
{
|
||||
if (IsTerminal || document is null) return;
|
||||
var expected = document;
|
||||
transitions.Add(readiness ? "ReadinessCommandDispatchRequested" : "CommandDispatchRequested:" + command);
|
||||
try
|
||||
{
|
||||
await AcadApplication.DocumentManager.ExecuteInCommandContextAsync(async _ =>
|
||||
{
|
||||
transitions.Add("CommandContextEntered:" + command);
|
||||
var active = AcadApplication.DocumentManager.MdiActiveDocument;
|
||||
if (active is null || !string.Equals(active.Name, expected.Name, StringComparison.OrdinalIgnoreCase))
|
||||
throw new InvalidOperationException("AUTOMATION_COMMAND_DOCUMENT_NOT_ACTIVE");
|
||||
transitions.Add(readiness ? "ReadinessBarrierQueued" : "CommandQueued:" + command);
|
||||
await active.Editor.CommandAsync(command);
|
||||
transitions.Add("CommandInvocationReturned:" + command);
|
||||
}, null);
|
||||
}
|
||||
catch (System.Exception exception) { FailFromCallback("CommandDispatcher", exception, "AUTOMATION_COMMAND_CONTEXT_FAILED"); }
|
||||
}
|
||||
private void OnCommandEnded(object sender, CommandEventArgs e)
|
||||
{
|
||||
RunCallback("CommandEnded", () =>
|
||||
{
|
||||
var name = e.GlobalCommandName?.Trim().TrimStart('.', '_').ToUpperInvariant();
|
||||
if (name == "PHP_REC_AUTOMATION_READY")
|
||||
{
|
||||
transitions.Add("ReadinessBarrierCompleted");
|
||||
TryActivateProjectAndVerifyContext();
|
||||
return;
|
||||
}
|
||||
if (name is not ("PXP-OA" or "UNDO" or "U")) return;
|
||||
completed.Add(name);
|
||||
transitions.Add("CommandCompleted:" + name);
|
||||
if (step++ == 0) { after1 = Dbmod(); counts1 = Counts(); Queue("PXP-OA"); return; }
|
||||
if (step == 2 && string.Equals(config?.Phase, "Apply", StringComparison.OrdinalIgnoreCase)) { after2 = Dbmod(); counts2 = Counts(); Queue("_.UNDO _1"); return; }
|
||||
if (string.Equals(config?.Phase, "Apply", StringComparison.OrdinalIgnoreCase)) { afterUndo = Dbmod(); countsUndo = Counts(); Complete(true, null, safeToExitNow: true); }
|
||||
else { after2 = Dbmod(); counts2 = Counts(); Complete(true, null, safeToExitNow: true); }
|
||||
});
|
||||
}
|
||||
private void OnCommandFailed(object sender, CommandEventArgs e) => RunCallback("CommandFailed", () => Complete(false, "AUTOMATION_COMMAND_FAILED:" + e.GlobalCommandName));
|
||||
private void OnCommandCancelled(object sender, CommandEventArgs e) => RunCallback("CommandCancelled", () => Complete(false, "AUTOMATION_COMMAND_CANCELLED:" + e.GlobalCommandName));
|
||||
|
||||
private int Dbmod() => Convert.ToInt32(AcadApplication.GetSystemVariable("DBMOD"));
|
||||
private AutomationEntityCounts Counts()
|
||||
{
|
||||
if (document is null) throw new InvalidOperationException("AUTOMATION_DOCUMENT_UNAVAILABLE");
|
||||
using var tx = document.Database.TransactionManager.StartOpenCloseTransaction();
|
||||
var table = (BlockTable)tx.GetObject(document.Database.BlockTableId, OpenMode.ForRead);
|
||||
var paper = (BlockTableRecord)tx.GetObject(table[BlockTableRecord.PaperSpace], OpenMode.ForRead);
|
||||
var total = 0; var pipes = 0; var xdata = 0; var owned = 0;
|
||||
foreach (ObjectId id in paper)
|
||||
{
|
||||
total++;
|
||||
if (tx.GetObject(id, OpenMode.ForRead) is BlockReference block && string.Equals(block.Name, "PIPE", StringComparison.OrdinalIgnoreCase)) pipes++;
|
||||
if (tx.GetObject(id, OpenMode.ForRead) is Entity entity)
|
||||
{
|
||||
using var data = entity.GetXDataForApplication("PXP-OA");
|
||||
if (data is not null) { xdata++; if (data.AsArray().Any(x => x.TypeCode == 1000)) owned++; }
|
||||
}
|
||||
}
|
||||
return new(total, pipes, xdata, owned);
|
||||
}
|
||||
private FirstApplyAutomationConfiguration ReadConfiguration()
|
||||
{
|
||||
if (!string.Equals(Environment.GetEnvironmentVariable("P_REC_ANNOT_AUTOMATION"), "FirstLimitedApplyRuntimeTest", StringComparison.Ordinal)) throw new InvalidOperationException("AUTOMATION_DISABLED");
|
||||
if (!string.Equals(RuntimeDiagnostics.RuntimeMode, "DryRun", StringComparison.OrdinalIgnoreCase) && !string.Equals(RuntimeDiagnostics.RuntimeMode, "Apply", StringComparison.OrdinalIgnoreCase)) throw new InvalidOperationException("AUTOMATION_MODE_BLOCKED");
|
||||
var path = Environment.GetEnvironmentVariable("P_REC_ANNOT_AUTOMATION_CONFIG");
|
||||
if (string.IsNullOrWhiteSpace(path) || !Path.IsPathFullyQualified(path) || path.StartsWith("\\\\", StringComparison.Ordinal)) throw new InvalidOperationException("AUTOMATION_CONFIGURATION_REQUIRED");
|
||||
var loaded = JsonSerializer.Deserialize<FirstApplyAutomationConfiguration>(File.ReadAllText(path), new JsonSerializerOptions { PropertyNameCaseInsensitive = true }) ?? throw new InvalidOperationException("AUTOMATION_CONFIGURATION_INVALID");
|
||||
if (!File.Exists(loaded.FixtureMarkerPath) || !string.Equals(File.ReadAllText(loaded.FixtureMarkerPath).Trim(), "P_REC_ANNOT_TEST_FIXTURE=FIRST_LIMITED_APPLY", StringComparison.Ordinal)) throw new InvalidOperationException("AUTOMATION_FIXTURE_MARKER_INVALID");
|
||||
if (!string.Equals(loaded.Phase, "LifecycleProbe", StringComparison.OrdinalIgnoreCase) &&
|
||||
(string.IsNullOrWhiteSpace(loaded.OrthoDrawingPath) || !Path.GetFullPath(loaded.OrthoDrawingPath).StartsWith(Path.GetDirectoryName(Path.GetFullPath(loaded.FixtureMarkerPath))! + Path.DirectorySeparatorChar, StringComparison.OrdinalIgnoreCase)))
|
||||
throw new InvalidOperationException("AUTOMATION_FIXTURE_OUTSIDE_MARKER_ROOT");
|
||||
return loaded;
|
||||
}
|
||||
private void Complete(bool success, string? error, bool safeToExitNow = false)
|
||||
{
|
||||
if (IsTerminal) return;
|
||||
functionalCompleted = success;
|
||||
Transition(success ? CoordinatorState.Completed : CoordinatorState.Failed, success ? "Completed" : "Failed");
|
||||
UnsubscribeHandlers();
|
||||
TryWriteEvidence(success, error);
|
||||
selectedTargetSnapshotId = null;
|
||||
pxpResults.Clear();
|
||||
RequestControlledExit(safeToExitNow);
|
||||
}
|
||||
|
||||
// The managed Application.Quit call can leave a startup-script host alive
|
||||
// when it is invoked from a CommandEnded callback. Queue AutoCAD's native
|
||||
// QUIT command instead; the command processor runs it after the current
|
||||
// public PXP-OA command has fully returned and discards every open drawing.
|
||||
private void RequestControlledExit(bool idleSafe = false)
|
||||
{
|
||||
if (exitQueued) return;
|
||||
exitQueued = true;
|
||||
Transition(CoordinatorState.ExitQueued, "ExitQueued");
|
||||
if (idleSafe)
|
||||
{
|
||||
DispatchNativeQuit();
|
||||
return;
|
||||
}
|
||||
AcadApplication.Idle += OnExitIdle;
|
||||
exitHandlerSubscribed = true;
|
||||
}
|
||||
|
||||
private void OnExitIdle(object? sender, EventArgs args)
|
||||
{
|
||||
RunCallback("ControlledExitIdle", DispatchNativeQuit);
|
||||
}
|
||||
|
||||
private void DispatchNativeQuit()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (exitHandlerSubscribed) AcadApplication.Idle -= OnExitIdle;
|
||||
exitHandlerSubscribed = false;
|
||||
exitAttemptQueued = true;
|
||||
if (!AcadApplication.IsQuiescent)
|
||||
{
|
||||
transitions.Add("QuitDispatchDeferredNotQuiescent");
|
||||
TryWriteEvidence(functionalCompleted, null);
|
||||
return;
|
||||
}
|
||||
// LifecycleProbe opens no fixture document, but the real startup
|
||||
// document is available at this point (observed as Drawing1.dwg).
|
||||
// Use that live document only to queue native QUIT; never retain it
|
||||
// past this callback or use it for fixture/Plant work.
|
||||
var exitDocument = AcadApplication.DocumentManager.MdiActiveDocument;
|
||||
if (exitDocument is null)
|
||||
{
|
||||
exitFailureCode = "AUTOMATION_EXIT_DOCUMENT_UNAVAILABLE";
|
||||
transitions.Add("QuitDispatchSkippedNoLiveDocument");
|
||||
TryWriteEvidence(functionalCompleted, null);
|
||||
return;
|
||||
}
|
||||
transitions.Add("QuitDispatchAttempted");
|
||||
// Persist the exit boundary before handing control back to AutoCAD;
|
||||
// process termination can otherwise prevent the final evidence flush.
|
||||
TryWriteEvidence(functionalCompleted, null);
|
||||
exitDocument.SendStringToExecute("_.QUIT _N\n", true, true, false);
|
||||
document = null;
|
||||
automationOpenedDocuments.Clear();
|
||||
}
|
||||
catch (System.Exception exception)
|
||||
{
|
||||
// This is terminal cleanup: contain the exception and leave process
|
||||
// cleanup to Launcher rather than re-entering document APIs.
|
||||
// A failed graceful-exit dispatch is not a failure of already
|
||||
// completed PXP-OA/UNDO work. Launcher owns bounded forced cleanup.
|
||||
exitFailureCode = "AUTOMATION_CONTROLLED_EXIT_FAILED:" + exception.GetType().Name;
|
||||
transitions.Add("QuitDispatchFailed");
|
||||
TryWriteEvidence(functionalCompleted, null);
|
||||
}
|
||||
}
|
||||
|
||||
private bool IsTerminal => state is CoordinatorState.Completed or CoordinatorState.Failed or CoordinatorState.ExitQueued;
|
||||
|
||||
private void Transition(CoordinatorState next, string transition)
|
||||
{
|
||||
previousState = state;
|
||||
state = next;
|
||||
transitions.Add(transition);
|
||||
}
|
||||
|
||||
private void RunCallback(string callback, Action action)
|
||||
{
|
||||
if (IsTerminal && callback != "ControlledExitIdle") return;
|
||||
try { action(); }
|
||||
catch (System.Exception exception) { FailFromCallback(callback, exception, "AUTOMATION_CALLBACK_FAILED"); }
|
||||
}
|
||||
|
||||
private void FailFromCallback(string callback, System.Exception exception, string code)
|
||||
{
|
||||
exceptionText = exception.ToString();
|
||||
RuntimeDiagnostics.Write("AutomationCallbackFailed", "ERROR", resultStatus: code + ":" + callback, exception: exception);
|
||||
if (!IsTerminal) Complete(false, code + ":" + callback + ":" + exception.GetType().Name);
|
||||
else
|
||||
{
|
||||
UnsubscribeHandlers();
|
||||
if (functionalCompleted)
|
||||
{
|
||||
exitFailureCode = code + ":" + callback + ":" + exception.GetType().Name;
|
||||
transitions.Add("ExitCallbackFailed");
|
||||
TryWriteEvidence(true, null);
|
||||
}
|
||||
else TryWriteEvidence(false, code + ":" + callback + ":" + exception.GetType().Name);
|
||||
}
|
||||
}
|
||||
|
||||
private void UnsubscribeHandlers()
|
||||
{
|
||||
if (documentHandlersSubscribed && document is not null)
|
||||
{
|
||||
try { document.CommandEnded -= OnCommandEnded; document.CommandFailed -= OnCommandFailed; document.CommandCancelled -= OnCommandCancelled; }
|
||||
catch (System.Exception exception) { RuntimeDiagnostics.Write("AutomationHandlerUnsubscribeFailed", "ERROR", resultStatus: "AUTOMATION_UNSUBSCRIBE_FAILED", exception: exception); }
|
||||
}
|
||||
documentHandlersSubscribed = false;
|
||||
if (lifecycleHandlersSubscribed)
|
||||
{
|
||||
try { AcadApplication.DocumentManager.DocumentActivated -= OnDocumentActivated; AcadApplication.Idle -= OnIdle; }
|
||||
catch (System.Exception exception) { RuntimeDiagnostics.Write("AutomationHandlerUnsubscribeFailed", "ERROR", resultStatus: "AUTOMATION_UNSUBSCRIBE_FAILED", exception: exception); }
|
||||
}
|
||||
lifecycleHandlersSubscribed = false;
|
||||
}
|
||||
|
||||
private bool TryWriteEvidence(bool success, string? error)
|
||||
{
|
||||
try { evidenceFlushed = true; WriteEvidence(success, error); return true; }
|
||||
catch (System.Exception exception) { evidenceFlushed = false; RuntimeDiagnostics.Write("AutomationEvidenceWriteFailed", "ERROR", resultStatus: "AUTOMATION_EVIDENCE_WRITE_FAILED", exception: exception); return false; }
|
||||
}
|
||||
|
||||
private void WriteEvidence(bool success, string? error)
|
||||
{
|
||||
if (config is null) return;
|
||||
var first = pxpResults.ElementAtOrDefault(0); var second = pxpResults.ElementAtOrDefault(1);
|
||||
var expectedCommands = string.Equals(config.Phase, "Apply", StringComparison.OrdinalIgnoreCase) ? 3 : 2;
|
||||
var evidence = new FirstApplyAutomationEvidence { Phase = config.Phase, Completed = success, ErrorCode = error, DbmodBefore = before, DbmodAfterCommand1 = after1, DbmodAfterCommand2 = after2, DbmodAfterUndo = afterUndo, Baseline = baseline, AfterCommand1 = counts1, AfterCommand2 = counts2, AfterUndo = countsUndo, CompletedCommands = completed, PlanIdRun1 = first?.PlanId, PlanIdRun2 = second?.PlanId, PlanIdsEqual = first is not null && second is not null ? string.Equals(first.PlanId, second.PlanId, StringComparison.Ordinal) : null, EligibleCandidateCount = first?.Candidates.Count, SelectedCandidateHash = selectedTargetSnapshotId, ViewHash = first?.View, CreateRun1 = first?.Create, CreateRun2 = second?.Create, SkipRun2 = second?.Skip, ApplyOutcomeRun1 = first?.ApplyOutcome, ApplyOutcomeRun2 = second?.ApplyOutcome, PermitAccepted = first?.PermitAccepted, CommandsCompleted = completed.Count >= expectedCommands, InspectorsCompleted = baseline is not null && counts1 is not null && counts2 is not null && (!string.Equals(config.Phase, "Apply", StringComparison.OrdinalIgnoreCase) || countsUndo is not null), EvidenceFlushed = evidenceFlushed, ExitAttemptQueued = exitAttemptQueued, ExitFailureCode = exitFailureCode, IdleCallbackCount = FirstLimitedApplyAutomationBootstrap.IdleCallbackCount, CoordinatorStartCount = FirstLimitedApplyAutomationBootstrap.CoordinatorStartCount, ExceptionText = exceptionText, PreviousState = previousState.ToString(), CurrentState = state.ToString(), StateTransitions = transitions };
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(config.EvidencePath)!);
|
||||
File.WriteAllText(config.EvidencePath, JsonSerializer.Serialize(evidence));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
using System.Text.Json;
|
||||
using Autodesk.AutoCAD.ApplicationServices;
|
||||
using Autodesk.AutoCAD.DatabaseServices;
|
||||
using Autodesk.AutoCAD.Geometry;
|
||||
using PRecAnnot.Abstractions;
|
||||
|
||||
namespace PRecAnnot.Plant3D2026;
|
||||
|
||||
// This file is deliberately runtime-only. Core receives only the anonymised
|
||||
// permit and canonical operation; no AutoCAD handle, database or project path
|
||||
// crosses the adapter boundary.
|
||||
internal sealed record FirstLimitedApplyRuntimePermit
|
||||
{
|
||||
public required bool AllowApply { get; init; }
|
||||
public required string FixtureMarkerPath { get; init; }
|
||||
public required string TargetSnapshotId { get; init; }
|
||||
public required string ExpectedPlanId { get; init; }
|
||||
public required string VisibilityState { get; init; }
|
||||
}
|
||||
|
||||
internal static class FirstLimitedApplyPermitReader
|
||||
{
|
||||
private const string MarkerContent = "P_REC_ANNOT_TEST_FIXTURE=FIRST_LIMITED_APPLY";
|
||||
|
||||
public static FirstLimitedApplyRuntimePermit ReadFor(Document document)
|
||||
{
|
||||
var path = Environment.GetEnvironmentVariable("P_REC_ANNOT_APPLY_PERMIT_PATH");
|
||||
if (string.IsNullOrWhiteSpace(path) || !Path.IsPathFullyQualified(path) || path.StartsWith("\\\\", StringComparison.Ordinal))
|
||||
throw new InvalidOperationException("APPLY_PERMIT_PATH_REQUIRED");
|
||||
if (!File.Exists(path)) throw new InvalidOperationException("APPLY_PERMIT_MISSING");
|
||||
|
||||
var permit = JsonSerializer.Deserialize<FirstLimitedApplyRuntimePermit>(File.ReadAllText(path), new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
|
||||
if (permit is null || !permit.AllowApply || string.IsNullOrWhiteSpace(permit.TargetSnapshotId) || string.IsNullOrWhiteSpace(permit.ExpectedPlanId) || string.IsNullOrWhiteSpace(permit.VisibilityState))
|
||||
throw new InvalidOperationException("APPLY_TEST_FIXTURE_OR_PERMIT_REQUIRED");
|
||||
if (!Path.IsPathFullyQualified(permit.FixtureMarkerPath) || permit.FixtureMarkerPath.StartsWith("\\\\", StringComparison.Ordinal) || !File.Exists(permit.FixtureMarkerPath))
|
||||
throw new InvalidOperationException("APPLY_TEST_FIXTURE_OR_PERMIT_REQUIRED");
|
||||
if (!string.Equals(File.ReadAllText(permit.FixtureMarkerPath).Trim(), MarkerContent, StringComparison.Ordinal))
|
||||
throw new InvalidOperationException("APPLY_TEST_FIXTURE_OR_PERMIT_REQUIRED");
|
||||
|
||||
var root = Path.GetDirectoryName(Path.GetFullPath(permit.FixtureMarkerPath))!;
|
||||
var drawing = Path.GetFullPath(document.Name);
|
||||
if (!drawing.StartsWith(root + Path.DirectorySeparatorChar, StringComparison.OrdinalIgnoreCase))
|
||||
throw new InvalidOperationException("APPLY_TEST_FIXTURE_OR_PERMIT_REQUIRED");
|
||||
return permit;
|
||||
}
|
||||
}
|
||||
|
||||
internal enum PipeAnnotationWriteOutcome { Created, AlreadyExists }
|
||||
|
||||
internal sealed class FirstLimitedPipeAnnotationWriter
|
||||
{
|
||||
private const string BlockName = "PIPE";
|
||||
private const string XdataApplication = "PXP-OA";
|
||||
|
||||
public PipeAnnotationWriteOutcome Write(Document document, CreatePipeAnnotationOperation operation, string visibilityState)
|
||||
{
|
||||
var database = document.Database;
|
||||
using var transaction = database.TransactionManager.StartTransaction();
|
||||
var table = (BlockTable)transaction.GetObject(database.BlockTableId, OpenMode.ForRead);
|
||||
if (!table.Has(BlockName)) throw new InvalidOperationException("ANNOTATION_TEMPLATE_BLOCK_MISSING");
|
||||
|
||||
var paper = (BlockTableRecord)transaction.GetObject(table[BlockTableRecord.PaperSpace], OpenMode.ForWrite);
|
||||
if (HasOwnedAnnotation(transaction, paper, operation.DuplicateKey)) return PipeAnnotationWriteOutcome.AlreadyExists;
|
||||
EnsureRegApp(transaction, database);
|
||||
|
||||
using var annotation = new BlockReference(
|
||||
new Point3d(operation.Placement.X, operation.Placement.Y, operation.Placement.Z),
|
||||
table[BlockName]);
|
||||
paper.AppendEntity(annotation);
|
||||
transaction.AddNewlyCreatedDBObject(annotation, true);
|
||||
SetConfirmedVisibility(annotation, visibilityState);
|
||||
annotation.XData = new ResultBuffer(
|
||||
new TypedValue((int)DxfCode.ExtendedDataRegAppName, XdataApplication),
|
||||
new TypedValue((int)DxfCode.ExtendedDataAsciiString, operation.DuplicateKey),
|
||||
new TypedValue((int)DxfCode.ExtendedDataAsciiString, operation.RuleId));
|
||||
transaction.Commit();
|
||||
return PipeAnnotationWriteOutcome.Created;
|
||||
}
|
||||
|
||||
private static bool HasOwnedAnnotation(Transaction transaction, BlockTableRecord paper, string duplicateKey)
|
||||
{
|
||||
foreach (ObjectId id in paper)
|
||||
{
|
||||
if (transaction.GetObject(id, OpenMode.ForRead) is not BlockReference reference) continue;
|
||||
using var xdata = reference.GetXDataForApplication(XdataApplication);
|
||||
if (xdata?.AsArray().Any(value => value.TypeCode == (int)DxfCode.ExtendedDataAsciiString && string.Equals(value.Value as string, duplicateKey, StringComparison.Ordinal)) == true)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static void EnsureRegApp(Transaction transaction, Database database)
|
||||
{
|
||||
var apps = (RegAppTable)transaction.GetObject(database.RegAppTableId, OpenMode.ForRead);
|
||||
if (apps.Has(XdataApplication)) return;
|
||||
apps.UpgradeOpen();
|
||||
using var record = new RegAppTableRecord { Name = XdataApplication };
|
||||
apps.Add(record);
|
||||
transaction.AddNewlyCreatedDBObject(record, true);
|
||||
}
|
||||
|
||||
// The "V" property and allowed values are the confirmed legacy PXP-OA
|
||||
// dynamic-block contract. Failure is pre-commit and leaves no entity.
|
||||
private static void SetConfirmedVisibility(BlockReference annotation, string visibilityState)
|
||||
{
|
||||
var property = annotation.DynamicBlockReferencePropertyCollection
|
||||
.Cast<DynamicBlockReferenceProperty>()
|
||||
.SingleOrDefault(value => string.Equals(value.PropertyName, "V", StringComparison.Ordinal));
|
||||
if (property is null || !property.GetAllowedValues().OfType<string>().Contains(visibilityState, StringComparer.Ordinal))
|
||||
throw new InvalidOperationException("ANNOTATION_VISIBILITY_STATE_UNSUPPORTED");
|
||||
property.Value = visibilityState;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
using System.Collections;
|
||||
using System.Reflection;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using Autodesk.ProcessPower.Drawings2d;
|
||||
|
||||
namespace PRecAnnot.Plant3D2026;
|
||||
|
||||
// This is a diagnostic-only probe. It is never part of source resolution and is
|
||||
// called only by the explicit DryRun/OrthoStructure environment flag combination.
|
||||
internal static class OrthoRuntimeStructureInspector
|
||||
{
|
||||
public static void Inspect(IDwgViewDef view)
|
||||
{
|
||||
if (!RuntimeDiagnostics.IsOrthoStructureDiagnosticsEnabled) return;
|
||||
|
||||
try
|
||||
{
|
||||
var query = view.DwgQuery;
|
||||
var modelFiles = query?.ModelFiles;
|
||||
var details = new Dictionary<string, object?>
|
||||
{
|
||||
["ViewRuntimeType"] = TypeName(view.GetType()),
|
||||
["DwgQueryRuntimeType"] = query is null ? null : TypeName(query.GetType()),
|
||||
["ModelFilesDeclaredType"] = typeof(ModelFile[]).FullName,
|
||||
["ModelFilesRuntimeType"] = modelFiles?.GetType().AssemblyQualifiedName,
|
||||
["ModelFilesCount"] = modelFiles?.Length ?? 0,
|
||||
["ModelFileElements"] = modelFiles?.Select(DescribeModelFile).ToArray() ?? Array.Empty<IReadOnlyDictionary<string, object?>>()
|
||||
};
|
||||
RuntimeDiagnostics.Write("OrthoRuntimeStructureInspected", resultStatus: "Captured", details: details);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
RuntimeDiagnostics.Write("OrthoRuntimeStructureInspectionFailed", "WARNING", resultStatus: "Failed", exception: exception);
|
||||
}
|
||||
}
|
||||
|
||||
private static IReadOnlyDictionary<string, object?> DescribeModelFile(ModelFile? modelFile)
|
||||
{
|
||||
if (modelFile is null)
|
||||
{
|
||||
return new Dictionary<string, object?> { ["IsNull"] = true };
|
||||
}
|
||||
|
||||
var properties = modelFile.GetType()
|
||||
.GetProperties(BindingFlags.Instance | BindingFlags.Public)
|
||||
.Where(property => property.CanRead && property.GetIndexParameters().Length == 0)
|
||||
.OrderBy(property => property.Name, StringComparer.Ordinal)
|
||||
.Select(property => DescribeProperty(modelFile, property))
|
||||
.ToArray();
|
||||
return new Dictionary<string, object?>
|
||||
{
|
||||
["RuntimeType"] = TypeName(modelFile.GetType()),
|
||||
["Properties"] = properties
|
||||
};
|
||||
}
|
||||
|
||||
private static IReadOnlyDictionary<string, object?> DescribeProperty(ModelFile modelFile, PropertyInfo property)
|
||||
{
|
||||
object? value;
|
||||
try { value = property.GetValue(modelFile); }
|
||||
catch { value = null; }
|
||||
return new Dictionary<string, object?>
|
||||
{
|
||||
["PropertyName"] = property.Name,
|
||||
["PropertyType"] = property.PropertyType.FullName,
|
||||
["ValueKind"] = value?.GetType().FullName ?? "null",
|
||||
["IsNull"] = value is null,
|
||||
["StringLength"] = value is string text ? text.Length : null,
|
||||
["PathKind"] = property.Name == "ModelFileName" && value is string path
|
||||
? (Path.IsPathRooted(path) ? "Absolute" : "ProjectRelative")
|
||||
: null,
|
||||
["CollectionCount"] = value is ICollection collection ? collection.Count : null,
|
||||
["StableHash"] = value is null ? null : Hash(value.ToString() ?? string.Empty)
|
||||
};
|
||||
}
|
||||
|
||||
private static string TypeName(Type type) => $"{type.FullName}, {type.Assembly.GetName().Name}, {type.Assembly.GetName().Version}";
|
||||
|
||||
private static string Hash(string value) => Convert.ToHexString(SHA256.HashData(Encoding.UTF8.GetBytes(value)))[..16];
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup><TargetFramework>net8.0-windows</TargetFramework><PlatformTarget>x64</PlatformTarget><UseWindowsForms>true</UseWindowsForms><EnableDefaultApplicationDefinition>false</EnableDefaultApplicationDefinition></PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\PRecAnnot.Abstractions\PRecAnnot.Abstractions.csproj" />
|
||||
<ProjectReference Include="..\PRecAnnot.Application\PRecAnnot.Application.csproj" />
|
||||
<ProjectReference Include="..\PRecAnnot.Core\PRecAnnot.Core.csproj" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition="Exists('$(AutoCAD2026ManagedDir)') and Exists('$(Plant3D2026ManagedDir)')">
|
||||
<Reference Include="AcMgd"><HintPath>$(AutoCAD2026ManagedDir)\AcMgd.dll</HintPath><Private>false</Private><CopyLocal>false</CopyLocal></Reference>
|
||||
<Reference Include="AcDbMgd"><HintPath>$(AutoCAD2026ManagedDir)\AcDbMgd.dll</HintPath><Private>false</Private><CopyLocal>false</CopyLocal></Reference>
|
||||
<Reference Include="AcCoreMgd"><HintPath>$(AutoCAD2026ManagedDir)\AcCoreMgd.dll</HintPath><Private>false</Private><CopyLocal>false</CopyLocal></Reference>
|
||||
<Reference Include="AdWindows"><HintPath>$(AutoCAD2026ManagedDir)\AdWindows.dll</HintPath><Private>false</Private><CopyLocal>false</CopyLocal></Reference>
|
||||
<Reference Include="PnPDataLinks"><HintPath>$(AutoCAD2026ManagedDir)\PnPDataLinks.dll</HintPath><Private>false</Private><CopyLocal>false</CopyLocal></Reference>
|
||||
<Reference Include="PnPDataObjects"><HintPath>$(AutoCAD2026ManagedDir)\PnPDataObjects.dll</HintPath><Private>false</Private><CopyLocal>false</CopyLocal></Reference>
|
||||
<Reference Include="PnPProjectManagerMgd"><HintPath>$(Plant3D2026ManagedDir)\PnPProjectManagerMgd.dll</HintPath><Private>false</Private><CopyLocal>false</CopyLocal></Reference>
|
||||
<Reference Include="PnP3dObjectsMgd"><HintPath>$(Plant3D2026ManagedDir)\PnP3dObjectsMgd.dll</HintPath><Private>false</Private><CopyLocal>false</CopyLocal></Reference>
|
||||
<Reference Include="PnP3dProjectPartsMgd"><HintPath>$(Plant3D2026ManagedDir)\PnP3dProjectPartsMgd.dll</HintPath><Private>false</Private><CopyLocal>false</CopyLocal></Reference>
|
||||
<Reference Include="PnP3dOrthoProjectPart"><HintPath>$(Plant3D2026ManagedDir)\PnP3dOrthoProjectPart.dll</HintPath><Private>false</Private><CopyLocal>false</CopyLocal></Reference>
|
||||
<Reference Include="PnPDwg2dDef"><HintPath>$(Plant3D2026ManagedDir)\PnPDwg2dDef.dll</HintPath><Private>false</Private><CopyLocal>false</CopyLocal></Reference>
|
||||
<Reference Include="PnPDwg2dUtil"><HintPath>$(Plant3D2026ManagedDir)\PnPDwg2dUtil.dll</HintPath><Private>false</Private><CopyLocal>false</CopyLocal></Reference>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,14 @@
|
||||
namespace PRecAnnot.Plant3D2026;
|
||||
|
||||
public sealed record Plant3D2026Availability(bool IsAvailable, string InstallDirectory, IReadOnlyList<string> MissingAssemblies)
|
||||
{
|
||||
public static Plant3D2026Availability Detect(string installDirectory)
|
||||
{
|
||||
var expected = new[] { "AcMgd.dll", "AcDbMgd.dll", "AcCoreMgd.dll", "PnPDataLinks.dll", Path.Combine("PLNT3D", "PnPProjectManagerMgd.dll"), Path.Combine("PLNT3D", "PnP3dObjectsMgd.dll") };
|
||||
var missing = expected.Where(x => !File.Exists(Path.Combine(installDirectory, x))).ToArray();
|
||||
return new(missing.Length == 0, installDirectory, missing);
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class Plant3D2026BlockedException(Plant3D2026Availability availability)
|
||||
: InvalidOperationException($"Plant 3D 2026 assemblies are unavailable at '{availability.InstallDirectory}'. Missing: {string.Join(", ", availability.MissingAssemblies)}") { }
|
||||
@@ -0,0 +1,527 @@
|
||||
using System.Security.Cryptography;
|
||||
using System.Collections.Specialized;
|
||||
using System.Text;
|
||||
using Autodesk.AutoCAD.ApplicationServices;
|
||||
using Autodesk.AutoCAD.DatabaseServices;
|
||||
using Autodesk.ProcessPower.DataLinks;
|
||||
using Autodesk.ProcessPower.Drawings2d;
|
||||
using Autodesk.ProcessPower.PnP3dObjects;
|
||||
using Autodesk.ProcessPower.P3dProjectParts;
|
||||
using Autodesk.ProcessPower.PlantInstance;
|
||||
using Autodesk.ProcessPower.ProjectManager;
|
||||
using PRecAnnot.Abstractions;
|
||||
using AcadApplication = Autodesk.AutoCAD.ApplicationServices.Application;
|
||||
|
||||
namespace PRecAnnot.Plant3D2026;
|
||||
|
||||
internal sealed class PlantRuntimeContextReader : IPlantRuntimeContextReader
|
||||
{
|
||||
public PlantRuntimeContext ReadCurrentContext() => ReadCurrentContext(null);
|
||||
|
||||
public PlantRuntimeContext ReadCurrentContext(Document? explicitDocument = null)
|
||||
{
|
||||
var document = explicitDocument ?? AcadApplication.DocumentManager.MdiActiveDocument;
|
||||
if (document is null)
|
||||
{
|
||||
return Empty(false, false, "NO_ACTIVE_DOCUMENT", "Активный документ отсутствует.");
|
||||
}
|
||||
|
||||
PlantProject? project;
|
||||
try { project = PlantApplication.CurrentProject; }
|
||||
catch (Exception exception)
|
||||
{
|
||||
return Empty(true, false, "PLANT_PROJECT_READ_FAILED", exception.GetType().Name);
|
||||
}
|
||||
|
||||
if (project is null)
|
||||
{
|
||||
return Empty(true, false, "NO_PLANT_PROJECT", "Активный Plant 3D-проект не найден.");
|
||||
}
|
||||
|
||||
var displayName = string.IsNullOrWhiteSpace(project.Name) ? null : project.Name.Trim();
|
||||
var projectStatus = displayName is null ? PlantProjectDetectionStatus.FoundWithoutDisplayName : PlantProjectDetectionStatus.FoundWithName;
|
||||
|
||||
OrthoProject? orthoProject;
|
||||
try { orthoProject = PlantApplication.ProjectPart("Ortho") as OrthoProject; }
|
||||
catch (Exception exception)
|
||||
{
|
||||
return Empty(true, true, "ORTHO_PROJECT_PART_READ_FAILED", exception.GetType().Name);
|
||||
}
|
||||
|
||||
if (orthoProject is null)
|
||||
{
|
||||
return Empty(true, true, "ORTHO_PROJECT_PART_UNAVAILABLE", "Ortho project part недоступен.", OrthoDetectionStatus.Unsupported, "ProjectPart(Ortho)");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
string resolvedPath;
|
||||
var isOrtho = OrthoDocUtils.IsValidOrthoDrawing(document.Name, orthoProject, out resolvedPath);
|
||||
if (!isOrtho)
|
||||
{
|
||||
return Empty(true, true, "NOT_ORTHO_DRAWING", "OrthoDocUtils.IsValidOrthoDrawing вернул false.", OrthoDetectionStatus.NotOrtho, "Ortho project part", "OrthoDocUtils.IsValidOrthoDrawing=false");
|
||||
}
|
||||
|
||||
var viewports = new PlantOrthoViewportReader(orthoProject, document.Name).ReadViewports(CancellationToken.None);
|
||||
return new PlantRuntimeContext
|
||||
{
|
||||
HasActiveDocument = true,
|
||||
HasPlantProject = true,
|
||||
IsOrthoDrawing = true,
|
||||
DrawingName = Path.GetFileName(document.Name),
|
||||
ProjectDisplayName = displayName ?? "display name unavailable",
|
||||
ProjectDetectionStatus = projectStatus,
|
||||
Viewports = viewports,
|
||||
Diagnostics = displayName is null ? new[] { new RuntimeDiagnostic { Code = "PLANT_PROJECT_DISPLAY_NAME_EMPTY", Message = "Plant project is open but no display name is available.", Severity = "Warning" } } : Array.Empty<RuntimeDiagnostic>(),
|
||||
Detection = new OrthoDetectionResult
|
||||
{
|
||||
Status = OrthoDetectionStatus.Confirmed,
|
||||
Evidence = new[] { "ProjectPart(Ortho)", "OrthoDocUtils.IsValidOrthoDrawing=true", "DwgSheetDefinitions" },
|
||||
Diagnostics = Array.Empty<RuntimeDiagnostic>()
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
return Empty(true, true, "ORTHO_DETECTION_FAILED", exception.GetType().Name, OrthoDetectionStatus.Failed, "ProjectPart(Ortho)");
|
||||
}
|
||||
}
|
||||
|
||||
private static PlantRuntimeContext Empty(bool hasDocument, bool hasProject, string code, string message, OrthoDetectionStatus status = OrthoDetectionStatus.NotOrtho, params string[] evidence) => new()
|
||||
{
|
||||
HasActiveDocument = hasDocument,
|
||||
HasPlantProject = hasProject,
|
||||
IsOrthoDrawing = false,
|
||||
ProjectDisplayName = hasProject ? "display name unavailable" : null,
|
||||
ProjectDetectionStatus = hasProject ? PlantProjectDetectionStatus.Ambiguous : PlantProjectDetectionStatus.NotFound,
|
||||
Diagnostics = new[] { new RuntimeDiagnostic { Code = code, Message = message } },
|
||||
Detection = new OrthoDetectionResult { Status = status, Evidence = evidence, Diagnostics = new[] { new RuntimeDiagnostic { Code = code, Message = message } } }
|
||||
};
|
||||
}
|
||||
|
||||
internal sealed class PlantOrthoViewportReader : IOrthoViewportReader
|
||||
{
|
||||
private readonly OrthoProject project;
|
||||
private readonly string drawingName;
|
||||
|
||||
public PlantOrthoViewportReader(OrthoProject project, string drawingName)
|
||||
{
|
||||
this.project = project;
|
||||
this.drawingName = Path.GetFileName(drawingName);
|
||||
}
|
||||
|
||||
public IReadOnlyList<OrthoViewportInfo> ReadViewports(CancellationToken cancellationToken)
|
||||
{
|
||||
var result = new List<OrthoViewportInfo>();
|
||||
foreach (var sheet in project.DwgSheetDefinitions.AsArray())
|
||||
{
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
if (!string.Equals(Path.GetFileName(sheet.DwgName), drawingName, StringComparison.OrdinalIgnoreCase)) continue;
|
||||
|
||||
foreach (var view in sheet.DwgViewDefs.AsArray())
|
||||
{
|
||||
try
|
||||
{
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
var id = StableId(sheet.DwgGuid.ToString(), view.ViewName);
|
||||
result.Add(new OrthoViewportInfo
|
||||
{
|
||||
Id = id,
|
||||
DisplayName = view.ViewName,
|
||||
CenterX = view.CenterPoint.X,
|
||||
CenterY = view.CenterPoint.Y,
|
||||
Width = view.ViewWidth,
|
||||
Height = view.ViewHeight,
|
||||
Scale = view.ViewScale,
|
||||
TwistAngle = 0,
|
||||
IsOn = true,
|
||||
IsLocked = false,
|
||||
SourceDrawingName = ReadSourceDrawingPath(view),
|
||||
ViewName = view.ViewName
|
||||
});
|
||||
}
|
||||
catch
|
||||
{
|
||||
// One malformed view must not abort the remaining read-only analysis.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result.OrderByDescending(x => x.CenterY).ThenBy(x => x.CenterX).ThenBy(x => x.Id, StringComparer.Ordinal).ToArray();
|
||||
}
|
||||
|
||||
private static string StableId(string sheetId, string viewName)
|
||||
{
|
||||
var hash = SHA256.HashData(Encoding.UTF8.GetBytes(sheetId + "|" + viewName));
|
||||
return "vp-" + Convert.ToHexString(hash)[..20];
|
||||
}
|
||||
|
||||
private static string? ReadSourceDrawingPath(IDwgViewDef view)
|
||||
{
|
||||
// Confirmed Plant 3D 2026 contract (PnPDwg2dDef/PnPDwg2dUtil):
|
||||
// IDwgViewDef.DwgQuery -> IDwgQuery.ModelFiles -> ModelFile.ModelFileName.
|
||||
// The Ortho sheet is never used as a Piping DataLinks source.
|
||||
try
|
||||
{
|
||||
if (!OrthoModelFilesContract.IsSupported(view, out var diagnostic))
|
||||
{
|
||||
RuntimeDiagnostics.Write("OrthoModelFilesContractRejected", "WARNING", resultStatus: diagnostic.Code, details: diagnostic.Details);
|
||||
return null;
|
||||
}
|
||||
|
||||
if (RuntimeDiagnostics.IsOrthoStructureDiagnosticsEnabled)
|
||||
{
|
||||
OrthoRuntimeStructureInspector.Inspect(view);
|
||||
}
|
||||
|
||||
return view.DwgQuery?.ModelFiles
|
||||
.Select(file => file.ModelFileName)
|
||||
.FirstOrDefault(value => !string.IsNullOrWhiteSpace(value));
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
RuntimeDiagnostics.Write("OrthoModelFilesReadFailed", "WARNING", resultStatus: "ORTHO_MODEL_FILES_API_UNSUPPORTED", exception: exception);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
internal static class OrthoModelFilesContract
|
||||
{
|
||||
private const string ExpectedViewType = "Autodesk.ProcessPower.Drawings2d.DwgViewDef";
|
||||
private const string ExpectedQueryType = "Autodesk.ProcessPower.Drawings2d.DwgQueryByBox";
|
||||
private const string ExpectedModelFileType = "Autodesk.ProcessPower.Drawings2d.ModelFile";
|
||||
private const string ExpectedDefAssembly = "PnPDwg2dDef";
|
||||
private const string ExpectedUtilAssembly = "PnPDwg2dUtil";
|
||||
private const string ExpectedVersion = "0.0.0.0";
|
||||
|
||||
public static bool IsSupported(IDwgViewDef view, out OrthoModelFilesContractDiagnostic diagnostic)
|
||||
{
|
||||
var query = view.DwgQuery;
|
||||
var files = query?.ModelFiles;
|
||||
var valid = HasExpectedType(view, ExpectedViewType, ExpectedDefAssembly) &&
|
||||
query is not null && HasExpectedType(query, ExpectedQueryType, ExpectedDefAssembly) &&
|
||||
files is not null && files.GetType() == typeof(ModelFile[]) &&
|
||||
files.All(file => file is not null && HasExpectedType(file, ExpectedModelFileType, ExpectedUtilAssembly));
|
||||
diagnostic = new OrthoModelFilesContractDiagnostic(
|
||||
valid ? "ORTHO_MODEL_FILES_API_SUPPORTED" : "ORTHO_MODEL_FILES_API_UNSUPPORTED",
|
||||
new Dictionary<string, object?>
|
||||
{
|
||||
["ExpectedViewType"] = ExpectedViewType,
|
||||
["ActualViewType"] = TypeName(view),
|
||||
["ExpectedQueryType"] = ExpectedQueryType,
|
||||
["ActualQueryType"] = query is null ? null : TypeName(query),
|
||||
["ExpectedModelFileType"] = ExpectedModelFileType,
|
||||
["ActualModelFilesType"] = files?.GetType().AssemblyQualifiedName,
|
||||
["ExpectedAssemblyVersion"] = ExpectedVersion,
|
||||
["ActualViewAssemblyVersion"] = view.GetType().Assembly.GetName().Version?.ToString(),
|
||||
["ActualQueryAssemblyVersion"] = query?.GetType().Assembly.GetName().Version?.ToString(),
|
||||
["ActualModelFilesAssemblyVersion"] = files?.GetType().Assembly.GetName().Version?.ToString()
|
||||
});
|
||||
return valid;
|
||||
}
|
||||
|
||||
private static bool HasExpectedType(object value, string expectedType, string expectedAssembly) =>
|
||||
string.Equals(value.GetType().FullName, expectedType, StringComparison.Ordinal) &&
|
||||
string.Equals(value.GetType().Assembly.GetName().Name, expectedAssembly, StringComparison.Ordinal) &&
|
||||
string.Equals(value.GetType().Assembly.GetName().Version?.ToString(), ExpectedVersion, StringComparison.Ordinal);
|
||||
|
||||
private static string TypeName(object value) => $"{value.GetType().FullName}, {value.GetType().Assembly.GetName().Name}, {value.GetType().Assembly.GetName().Version}";
|
||||
}
|
||||
|
||||
internal sealed record OrthoModelFilesContractDiagnostic(string Code, IReadOnlyDictionary<string, object?> Details);
|
||||
|
||||
internal sealed class PlantObjectReader : IPlantObjectReader
|
||||
{
|
||||
public IReadOnlyList<PlantObjectSnapshot> ReadObjects(OrthoViewportInfo viewport, CancellationToken cancellationToken)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(viewport.SourceDrawingName))
|
||||
{
|
||||
WriteOutcome("ORTHO_SOURCE_DRAWING_NOT_RESOLVED", viewport);
|
||||
return Array.Empty<PlantObjectSnapshot>();
|
||||
}
|
||||
|
||||
PipingProject? pipingProject;
|
||||
try { pipingProject = PlantApplication.ProjectPart("Piping") as PipingProject; }
|
||||
catch (Exception exception)
|
||||
{
|
||||
WriteOutcome("PIPING_PROJECT_PART_NOT_FOUND", viewport, exception);
|
||||
return Array.Empty<PlantObjectSnapshot>();
|
||||
}
|
||||
if (pipingProject is null)
|
||||
{
|
||||
WriteOutcome("PIPING_PROJECT_PART_NOT_FOUND", viewport);
|
||||
return Array.Empty<PlantObjectSnapshot>();
|
||||
}
|
||||
|
||||
var sourceDrawing = ResolveProjectDrawing(pipingProject, viewport.SourceDrawingName);
|
||||
if (sourceDrawing is null) return Array.Empty<PlantObjectSnapshot>();
|
||||
|
||||
DataLinksManager? dataLinks;
|
||||
try { dataLinks = pipingProject.DataLinksManager; }
|
||||
catch (Exception exception)
|
||||
{
|
||||
WriteOutcome("SOURCE_DATALINKS_UNAVAILABLE", viewport, exception);
|
||||
return Array.Empty<PlantObjectSnapshot>();
|
||||
}
|
||||
if (dataLinks is null)
|
||||
{
|
||||
WriteOutcome("SOURCE_DATALINKS_UNAVAILABLE", viewport);
|
||||
return Array.Empty<PlantObjectSnapshot>();
|
||||
}
|
||||
|
||||
var snapshots = new List<PlantObjectSnapshot>();
|
||||
try
|
||||
{
|
||||
// Confirmed Plant 3D 2026 contract: resolve the source model to the
|
||||
// Piping project drawing record, then read its DataLinks by drawing Id.
|
||||
// The active Ortho database is deliberately never passed to DataLinks.
|
||||
var rowIds = dataLinks.SelectAcPpRowIds(sourceDrawing.Id);
|
||||
if (rowIds.Count == 0)
|
||||
{
|
||||
WriteOutcome("SOURCE_DATALINKS_NO_ROWS", viewport, details: new Dictionary<string, object?> { ["ProjectDrawingResolved"] = true });
|
||||
return Array.Empty<PlantObjectSnapshot>();
|
||||
}
|
||||
|
||||
var membership = PlantViewportMembershipReader.Read(viewport, dataLinks, rowIds);
|
||||
|
||||
foreach (var rowId in rowIds)
|
||||
{
|
||||
try
|
||||
{
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
var className = dataLinks.GetObjectClassname(rowId);
|
||||
var properties = dataLinks.GetAllProperties(rowId, true)
|
||||
.GroupBy(x => x.Key, StringComparer.OrdinalIgnoreCase)
|
||||
.ToDictionary(x => x.Key, x => x.Last().Value, StringComparer.OrdinalIgnoreCase);
|
||||
string? Value(params string[] names) => properties.FirstOrDefault(x => names.Any(name => string.Equals(name, x.Key, StringComparison.OrdinalIgnoreCase))).Value;
|
||||
snapshots.Add(new PlantObjectSnapshot
|
||||
{
|
||||
SnapshotId = StableId(viewport.SourceDrawingName, rowId, className),
|
||||
ObjectClass = className ?? string.Empty,
|
||||
Tag = Value("Tag", "TAG"),
|
||||
LineNumber = Value("Line Number", "LineNumber", "LINENUMBER"),
|
||||
SupportNumber = Value("Support Number", "SupportNumber"),
|
||||
EquipmentNumber = Value("Equipment Number", "EquipmentNumber"),
|
||||
Geometry = membership.GeometryFor(rowId),
|
||||
Properties = properties.ToDictionary(x => x.Key, x => (string?)x.Value, StringComparer.OrdinalIgnoreCase),
|
||||
Diagnostics = new[] { "GEOMETRY_NOT_MAPPED" },
|
||||
MembershipStatus = membership.StatusFor(rowId),
|
||||
MembershipEvidenceCodes = membership.EvidenceFor(rowId)
|
||||
});
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
RuntimeDiagnostics.Write("SourceDataLinksRowReadFailed", "WARNING", resultStatus: "SOURCE_DATABASE_READ_FAILED", exception: exception);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (DLException exception)
|
||||
{
|
||||
WriteOutcome("SOURCE_DATALINKS_UNAVAILABLE", viewport, exception);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
WriteOutcome("SOURCE_DATABASE_READ_FAILED", viewport, exception);
|
||||
}
|
||||
|
||||
WriteOutcome(snapshots.Count == 0 ? "SOURCE_PIPE_ROWS_NOT_FOUND" : "SOURCE_DATALINKS_READ", viewport,
|
||||
details: new Dictionary<string, object?> { ["SourcePlantObjectsRead"] = snapshots.Count, ["PipeObjectsRead"] = snapshots.Count });
|
||||
return snapshots.OrderBy(x => x.SnapshotId, StringComparer.Ordinal).ToArray();
|
||||
}
|
||||
|
||||
private static PnPProjectDrawing? ResolveProjectDrawing(PipingProject pipingProject, string sourceDrawingPath)
|
||||
{
|
||||
if (!Path.IsPathRooted(sourceDrawingPath))
|
||||
{
|
||||
WriteOutcome("ORTHO_SOURCE_DRAWING_NOT_IN_PROJECT", null);
|
||||
return null;
|
||||
}
|
||||
|
||||
string normalizedSource;
|
||||
try { normalizedSource = Path.GetFullPath(sourceDrawingPath); }
|
||||
catch (Exception exception)
|
||||
{
|
||||
WriteOutcome("ORTHO_SOURCE_DRAWING_NOT_RESOLVED", null, exception);
|
||||
return null;
|
||||
}
|
||||
|
||||
var matches = pipingProject.GetPnPDrawingFiles()
|
||||
.Where(drawing => MatchesSourcePath(drawing, normalizedSource))
|
||||
.OrderBy(drawing => drawing.Id)
|
||||
.ToArray();
|
||||
if (matches.Length == 1)
|
||||
{
|
||||
RuntimeDiagnostics.Write("SourceProjectDrawingResolved", resultStatus: "SOURCE_FROM_PROJECT_DRAWING_ROW", details: new Dictionary<string, object?> { ["ProjectDrawingResolved"] = true });
|
||||
return matches[0];
|
||||
}
|
||||
|
||||
WriteOutcome(matches.Length == 0 ? "ORTHO_SOURCE_DRAWING_NOT_IN_PROJECT" : "ORTHO_SOURCE_DRAWING_AMBIGUOUS", null,
|
||||
details: new Dictionary<string, object?> { ["CandidateCount"] = matches.Length });
|
||||
return null;
|
||||
}
|
||||
|
||||
private static bool MatchesSourcePath(PnPProjectDrawing drawing, string normalizedSource) =>
|
||||
EquivalentPath(drawing.AbsoluteFileName, normalizedSource) ||
|
||||
EquivalentPath(drawing.ResolvedFilePath, normalizedSource);
|
||||
|
||||
private static bool EquivalentPath(string? candidate, string normalizedSource)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(candidate)) return false;
|
||||
try { return string.Equals(Path.GetFullPath(candidate), normalizedSource, StringComparison.OrdinalIgnoreCase); }
|
||||
catch { return false; }
|
||||
}
|
||||
|
||||
private static void WriteOutcome(string code, OrthoViewportInfo? viewport, Exception? exception = null, IReadOnlyDictionary<string, object?>? details = null)
|
||||
{
|
||||
var sanitizedDetails = new Dictionary<string, object?>
|
||||
{
|
||||
["SourceResolved"] = viewport?.SourceDrawingName is not null
|
||||
};
|
||||
if (details is not null) foreach (var detail in details) sanitizedDetails[detail.Key] = detail.Value;
|
||||
RuntimeDiagnostics.Write("SourceDataLinksReadCompleted", code == "SOURCE_DATALINKS_READ" ? "INFO" : "WARNING", resultStatus: code, exception: exception, details: sanitizedDetails);
|
||||
}
|
||||
|
||||
private static string StableId(string drawingName, int rowId, string? className)
|
||||
{
|
||||
var hash = SHA256.HashData(Encoding.UTF8.GetBytes($"{drawingName}|{rowId}|{className}"));
|
||||
return "obj-" + Convert.ToHexString(hash)[..24];
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed class PlantViewportMembershipReader
|
||||
{
|
||||
internal readonly record struct MembershipReadResult(
|
||||
IReadOnlySet<int> SelectedRows,
|
||||
ViewMembershipStatus DefaultStatus,
|
||||
string DefaultCode,
|
||||
IReadOnlyDictionary<int, GeometrySnapshot>? Geometry = null)
|
||||
{
|
||||
public ViewMembershipStatus StatusFor(int rowId) =>
|
||||
DefaultStatus == ViewMembershipStatus.Resolved && !SelectedRows.Contains(rowId)
|
||||
? ViewMembershipStatus.ObjectOutsideView
|
||||
: DefaultStatus;
|
||||
|
||||
public IReadOnlyList<string> EvidenceFor(int rowId) =>
|
||||
DefaultStatus == ViewMembershipStatus.Resolved && !SelectedRows.Contains(rowId)
|
||||
? new[] { "VIEW_MEMBERSHIP_OBJECT_OUTSIDE_CLIP" }
|
||||
: new[] { DefaultCode };
|
||||
|
||||
public GeometrySnapshot GeometryFor(int rowId) =>
|
||||
Geometry is not null && Geometry.TryGetValue(rowId, out var geometry)
|
||||
? geometry
|
||||
: new GeometrySnapshot();
|
||||
}
|
||||
|
||||
internal static MembershipReadResult Read(OrthoViewportInfo viewport, DataLinksManager dataLinks, Autodesk.ProcessPower.DataObjects.PnPRowIdArray sourceRows)
|
||||
{
|
||||
try
|
||||
{
|
||||
var project = PlantApplication.ProjectPart("Ortho") as OrthoProject;
|
||||
if (project is null) return Unsupported("VIEW_MEMBERSHIP_API_UNSUPPORTED");
|
||||
|
||||
var candidates = project.DwgSheetDefinitions.AsArray()
|
||||
.SelectMany(sheet => sheet.DwgViewDefs.AsArray()
|
||||
.Where(view => string.Equals(StableId(sheet.DwgGuid.ToString(), view.ViewName), viewport.Id, StringComparison.Ordinal))
|
||||
.Select(view => (sheet, view)))
|
||||
.ToArray();
|
||||
if (candidates.Length != 1) return Unsupported("VIEW_MEMBERSHIP_API_UNSUPPORTED");
|
||||
|
||||
var view = candidates[0].view;
|
||||
if (!OrthoModelFilesContract.IsSupported(view, out var diagnostic))
|
||||
{
|
||||
RuntimeDiagnostics.Write("ViewportMembershipContractRejected", "WARNING", resultStatus: diagnostic.Code, details: diagnostic.Details);
|
||||
return Unsupported("VIEW_MEMBERSHIP_API_UNSUPPORTED");
|
||||
}
|
||||
|
||||
var selectedRows = new HashSet<int>();
|
||||
var geometry = new Dictionary<int, GeometrySnapshot>();
|
||||
var selected = view.DwgQuery.Execute(new StringCollection(), new StringCollection());
|
||||
for (var index = 0; index < selected.Count; index++)
|
||||
{
|
||||
Autodesk.ProcessPower.Drawings2d.MdObjectId sourceId = default;
|
||||
if (!selected.GetItem(index, ref sourceId) || sourceId.IsNull || sourceId.PrjObjectId.IsNull) continue;
|
||||
try
|
||||
{
|
||||
var rowId = dataLinks.FindAcPpRowId(sourceId.PrjObjectId);
|
||||
if (sourceRows.Contains(rowId))
|
||||
{
|
||||
selectedRows.Add(rowId);
|
||||
if (TryReadPipePlacement(sourceId, dataLinks, out var placement)) geometry[rowId] = placement;
|
||||
}
|
||||
}
|
||||
catch (DLException)
|
||||
{
|
||||
// A generated entity without a Piping DataLinks row is outside this reader's source set.
|
||||
}
|
||||
}
|
||||
|
||||
RuntimeDiagnostics.Write("ViewportMembershipReadCompleted", "INFO", resultStatus: "VIEW_MEMBERSHIP_FROM_CONFIRMED_PNP_ID", details: new Dictionary<string, object?>
|
||||
{
|
||||
["SelectedSourceRows"] = selectedRows.Count,
|
||||
["SourceRows"] = sourceRows.Count
|
||||
});
|
||||
return new MembershipReadResult(selectedRows, ViewMembershipStatus.Resolved, "VIEW_MEMBERSHIP_FROM_CONFIRMED_PNP_ID", geometry);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
RuntimeDiagnostics.Write("ViewportMembershipReadCompleted", "WARNING", resultStatus: "VIEW_MEMBERSHIP_API_UNSUPPORTED", exception: exception);
|
||||
return Unsupported("VIEW_MEMBERSHIP_API_UNSUPPORTED");
|
||||
}
|
||||
}
|
||||
|
||||
private static MembershipReadResult Unsupported(string code) => new(new HashSet<int>(), ViewMembershipStatus.NotResolved, code);
|
||||
|
||||
// Confirmed Plant 3D 2026 linkage: DwgQuery.Execute returns MdObjectId,
|
||||
// whose PrjObjectId identifies the source entity and whose Xform projects
|
||||
// that source entity into the particular Ortho view. This is not a sheet
|
||||
// coordinate heuristic.
|
||||
private static bool TryReadPipePlacement(MdObjectId sourceId, DataLinksManager dataLinks, out GeometrySnapshot geometry)
|
||||
{
|
||||
geometry = new GeometrySnapshot();
|
||||
try
|
||||
{
|
||||
var openedByQuery = false;
|
||||
var sourceDatabase = sourceId.GetDatabase(false, ref openedByQuery);
|
||||
try
|
||||
{
|
||||
using var transaction = sourceDatabase.TransactionManager.StartOpenCloseTransaction();
|
||||
var objectId = dataLinks.MakeAcDbObjectId(sourceId.PrjObjectId, sourceDatabase);
|
||||
if (transaction.GetObject(objectId, OpenMode.ForRead) is not Pipe pipe) return false;
|
||||
var point = pipe.StartPoint.TransformBy(sourceId.Xform);
|
||||
geometry = new GeometrySnapshot
|
||||
{
|
||||
PaperPosition = new Point2Dto(point.X, point.Y),
|
||||
Rotation = 0
|
||||
};
|
||||
return true;
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (openedByQuery) sourceDatabase.Dispose();
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Ortho viewport IDs are generated by PlantOrthoViewportReader from exactly this pair.
|
||||
// Only an exact regenerated ID is accepted; the reader never chooses an arbitrary view.
|
||||
private static string StableId(string sheetId, string? viewName)
|
||||
{
|
||||
var hash = SHA256.HashData(Encoding.UTF8.GetBytes(sheetId + "|" + (viewName ?? string.Empty)));
|
||||
return "vp-" + Convert.ToHexString(hash)[..20];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
internal sealed class RuntimeWriteGuard(PRecAnnotExecutionMode mode) : IRuntimeWriteGuard
|
||||
{
|
||||
public void EnsureWriteAllowed(string operation)
|
||||
{
|
||||
if (mode == PRecAnnotExecutionMode.Apply) return;
|
||||
throw new InvalidOperationException("SMOKE_WRITE_BLOCKED");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
using System.Diagnostics;
|
||||
using System.Text.Json;
|
||||
using Autodesk.AutoCAD.ApplicationServices;
|
||||
using Autodesk.ProcessPower.PlantInstance;
|
||||
|
||||
namespace PRecAnnot.Plant3D2026;
|
||||
|
||||
internal static class RuntimeDiagnostics
|
||||
{
|
||||
private static readonly object Gate = new();
|
||||
private static readonly string LogDirectory = Path.Combine(
|
||||
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
|
||||
"Promhimproekt", "PRecAnnot2026", "Logs");
|
||||
|
||||
public static string RuntimeMode => Environment.GetEnvironmentVariable("P_REC_ANNOT_RUNTIME_MODE") ?? "Normal";
|
||||
|
||||
public static bool IsOrthoStructureDiagnosticsEnabled =>
|
||||
string.Equals(RuntimeMode, "DryRun", StringComparison.OrdinalIgnoreCase) &&
|
||||
string.Equals(Environment.GetEnvironmentVariable("P_REC_ANNOT_DIAGNOSTICS"), "OrthoStructure", StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
public static void Write(
|
||||
string eventType,
|
||||
string level = "INFO",
|
||||
string? operationId = null,
|
||||
string? commandName = null,
|
||||
string? resultStatus = null,
|
||||
System.Exception? exception = null,
|
||||
Document? document = null,
|
||||
IReadOnlyDictionary<string, object?>? details = null)
|
||||
{
|
||||
try
|
||||
{
|
||||
var payload = new Dictionary<string, object?>(StringComparer.Ordinal)
|
||||
{
|
||||
["Timestamp"] = DateTimeOffset.UtcNow,
|
||||
["Level"] = level,
|
||||
["OperationId"] = operationId,
|
||||
["EventType"] = eventType,
|
||||
["AssemblyVersion"] = typeof(EntryPoint).Assembly.GetName().Version?.ToString(),
|
||||
["AutoCADVersion"] = typeof(Document).Assembly.GetName().Version?.ToString(),
|
||||
["PlantVersion"] = typeof(PlantApplication).Assembly.GetName().Version?.ToString(),
|
||||
["ProcessId"] = Environment.ProcessId,
|
||||
["ThreadId"] = Environment.CurrentManagedThreadId,
|
||||
["ApartmentState"] = Thread.CurrentThread.GetApartmentState().ToString(),
|
||||
["ActiveDocumentName"] = SafeDocumentName(document),
|
||||
["CommandName"] = commandName,
|
||||
["ResultStatus"] = resultStatus,
|
||||
["ExceptionType"] = exception?.GetType().FullName,
|
||||
["ExceptionMessage"] = exception?.Message,
|
||||
["StackTrace"] = level.Equals("ERROR", StringComparison.OrdinalIgnoreCase) ? exception?.StackTrace : null,
|
||||
["RuntimeMode"] = RuntimeMode
|
||||
};
|
||||
|
||||
if (details is not null)
|
||||
foreach (var item in details) payload[item.Key] = item.Value;
|
||||
|
||||
var line = JsonSerializer.Serialize(payload) + Environment.NewLine;
|
||||
lock (Gate)
|
||||
{
|
||||
Directory.CreateDirectory(LogDirectory);
|
||||
File.AppendAllText(Path.Combine(LogDirectory, "runtime.jsonl"), line);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Runtime diagnostics must never prevent AutoCAD command execution.
|
||||
}
|
||||
}
|
||||
|
||||
private static string? SafeDocumentName(Document? document)
|
||||
{
|
||||
try { return document is null ? null : Path.GetFileName(document.Name); }
|
||||
catch { return null; }
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed class SmokeWriteBlockedException() : InvalidOperationException("SMOKE_WRITE_BLOCKED");
|
||||
|
||||
internal static class SmokeGuard
|
||||
{
|
||||
public static bool IsSmoke => string.Equals(RuntimeDiagnostics.RuntimeMode, "Smoke", StringComparison.OrdinalIgnoreCase);
|
||||
public static void EnsureReadOnly() { if (IsSmoke) throw new SmokeWriteBlockedException(); }
|
||||
}
|
||||
+141
@@ -0,0 +1,141 @@
|
||||
using System.Text.Json;
|
||||
using Autodesk.AutoCAD.ApplicationServices;
|
||||
using Autodesk.AutoCAD.DatabaseServices;
|
||||
using Autodesk.AutoCAD.Runtime;
|
||||
using Autodesk.ProcessPower.PlantInstance;
|
||||
using Autodesk.ProcessPower.ProjectManager;
|
||||
using AcadApplication = Autodesk.AutoCAD.ApplicationServices.Application;
|
||||
|
||||
namespace PRecAnnot.Plant3D2026;
|
||||
|
||||
// Test-only observer. The AutoCAD /b processor, never this type, drives PXP-OA.
|
||||
internal static class ScriptDrivenFirstApplyAutomation
|
||||
{
|
||||
private sealed record Config(string Phase, string OrthoDrawingPath, string EvidencePath, string FixtureMarkerPath);
|
||||
private sealed record Run(int Sequence, string? PlanId, IReadOnlyList<string> Candidates, string? View, int Create, int Skip, int? DbmodBefore, int? DbmodAfter, AutomationEntityCounts? Before, AutomationEntityCounts? After, bool WillStart, bool Ended, bool Failed, bool Cancelled, int? SourceRows, int? MembershipResolved);
|
||||
private static Config? config;
|
||||
private static Document? fixture;
|
||||
private static Database? database;
|
||||
private static AutomationEntityCounts? baseline;
|
||||
private static int? dbmodBaseline;
|
||||
private static readonly List<Run> runs = [];
|
||||
private static readonly List<string> transitions = [];
|
||||
private static bool prepared;
|
||||
private static bool terminal;
|
||||
|
||||
internal static void Prepare()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (terminal) return;
|
||||
config = ReadConfig();
|
||||
RequireGate(config);
|
||||
var active = AcadApplication.DocumentManager.MdiActiveDocument ?? throw new InvalidOperationException("AUTOMATION_ACTIVE_DOCUMENT_MISSING");
|
||||
if (!SamePath(active.Name, config.OrthoDrawingPath)) throw new InvalidOperationException("AUTOMATION_UNEXPECTED_ACTIVE_FIXTURE");
|
||||
fixture = active;
|
||||
database = active.Database ?? throw new InvalidOperationException("AUTOMATION_FIXTURE_DATABASE_MISSING");
|
||||
fixture.CommandWillStart += OnWillStart;
|
||||
fixture.CommandEnded += OnEnded;
|
||||
fixture.CommandFailed += OnFailed;
|
||||
fixture.CommandCancelled += OnCancelled;
|
||||
var projectXml = Path.Combine(Path.GetDirectoryName(config.FixtureMarkerPath)!, "Project.xml");
|
||||
if (!File.Exists(projectXml)) throw new InvalidOperationException("AUTOMATION_PROJECT_XML_MISSING");
|
||||
var project = PlantProject.LoadProject(projectXml, false, string.Empty, string.Empty);
|
||||
PlantApplication.SetCurrentProject(project, true);
|
||||
var context = new PlantRuntimeContextReader().ReadCurrentContext(fixture);
|
||||
if (!context.HasPlantProject || !context.IsOrthoDrawing || context.Viewports.Count != 1)
|
||||
throw new InvalidOperationException("AUTOMATION_ORTHO_CONTEXT_INVALID");
|
||||
dbmodBaseline = Dbmod();
|
||||
baseline = Counts(database);
|
||||
prepared = true;
|
||||
transitions.Add("Prepared");
|
||||
Write(false, null);
|
||||
}
|
||||
catch (System.Exception exception) { Fail("AUTOMATION_PREPARE_FAILED", exception); }
|
||||
}
|
||||
|
||||
internal static void RecordPxpOa(string? planId, IReadOnlyList<string> candidates, string? view, int create, int skip, bool? permitAccepted, int sourceRows, int membershipResolved)
|
||||
{
|
||||
if (!prepared || terminal || runs.Count == 0) return;
|
||||
var last = runs[^1];
|
||||
if (!last.WillStart || last.PlanId is not null) return;
|
||||
runs[^1] = last with { PlanId = planId, Candidates = candidates, View = view, Create = create, Skip = skip, SourceRows = sourceRows, MembershipResolved = membershipResolved };
|
||||
}
|
||||
|
||||
internal static void FinalizePreview()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!prepared) throw new InvalidOperationException("AUTOMATION_NOT_PREPARED");
|
||||
if (runs.Count != 2) throw new InvalidOperationException("AUTOMATION_EXPECTS_EXACTLY_TWO_PXP_OA");
|
||||
if (runs.Any(x => !x.WillStart || !x.Ended || x.Failed || x.Cancelled)) throw new InvalidOperationException("AUTOMATION_PXP_OA_NOT_ENDED");
|
||||
if (runs.Any(x => string.IsNullOrWhiteSpace(x.PlanId)) || !string.Equals(runs[0].PlanId, runs[1].PlanId, StringComparison.Ordinal)) throw new InvalidOperationException("AUTOMATION_PLAN_IDS_DIFFER");
|
||||
if (runs.Any(x => x.Create != 1)) throw new InvalidOperationException("AUTOMATION_PREVIEW_CREATE_NOT_ONE");
|
||||
if (runs[0].Candidates.Count == 0) throw new InvalidOperationException("AUTOMATION_NO_ELIGIBLE_CANDIDATE");
|
||||
if (Dbmod() != dbmodBaseline || !Equals(Counts(database!), baseline)) throw new InvalidOperationException("AUTOMATION_INSPECTOR_INVARIANCE_FAILED");
|
||||
terminal = true;
|
||||
transitions.Add("PreviewCompleted");
|
||||
Write(true, null);
|
||||
Unsubscribe();
|
||||
}
|
||||
catch (System.Exception exception) { Fail("PREVIEW_ACCEPTANCE_FAILED", exception); }
|
||||
}
|
||||
|
||||
private static void OnWillStart(object sender, CommandEventArgs args)
|
||||
{
|
||||
Guard(() =>
|
||||
{
|
||||
if (!IsFixture(sender) || !IsPxp(args.GlobalCommandName) || runs.Count >= 2) return;
|
||||
runs.Add(new Run(runs.Count + 1, null, [], null, 0, 0, Dbmod(), null, Counts(database!), null, true, false, false, false, null, null));
|
||||
transitions.Add("PxpOaWillStart:" + runs.Count);
|
||||
});
|
||||
}
|
||||
private static void OnEnded(object sender, CommandEventArgs args) => Finish(sender, args, false, false);
|
||||
private static void OnFailed(object sender, CommandEventArgs args) => Finish(sender, args, true, false);
|
||||
private static void OnCancelled(object sender, CommandEventArgs args) => Finish(sender, args, false, true);
|
||||
private static void Finish(object sender, CommandEventArgs args, bool failed, bool cancelled)
|
||||
{
|
||||
Guard(() =>
|
||||
{
|
||||
if (!IsFixture(sender) || !IsPxp(args.GlobalCommandName) || runs.Count == 0) return;
|
||||
var last = runs[^1];
|
||||
if (last.Ended || last.Failed || last.Cancelled) return;
|
||||
runs[^1] = last with { Ended = !failed && !cancelled, Failed = failed, Cancelled = cancelled, DbmodAfter = Dbmod(), After = Counts(database!) };
|
||||
transitions.Add(failed ? "PxpOaFailed" : cancelled ? "PxpOaCancelled" : "PxpOaEnded:" + last.Sequence);
|
||||
Write(false, null);
|
||||
});
|
||||
}
|
||||
private static bool IsFixture(object sender) => !terminal && fixture is not null && ReferenceEquals(sender, fixture) && database is not null && ReferenceEquals(fixture.Database, database);
|
||||
private static bool IsPxp(string name) => string.Equals(name.TrimStart('.', '_'), "PXP-OA", StringComparison.OrdinalIgnoreCase);
|
||||
private static void Guard(Action action) { try { if (!terminal) action(); } catch (System.Exception ex) { Fail("AUTOMATION_EVENT_HANDLER_FAILED", ex); } }
|
||||
private static void Fail(string code, System.Exception exception) { if (terminal) return; terminal = true; transitions.Add("Failed:" + code); try { Write(false, code + ":" + exception); } finally { Unsubscribe(); } }
|
||||
private static void Unsubscribe() { if (fixture is null) return; try { fixture.CommandWillStart -= OnWillStart; fixture.CommandEnded -= OnEnded; fixture.CommandFailed -= OnFailed; fixture.CommandCancelled -= OnCancelled; } catch { } }
|
||||
private static int? Dbmod() { try { return Convert.ToInt32(AcadApplication.GetSystemVariable("DBMOD")); } catch { return null; } }
|
||||
private static AutomationEntityCounts Counts(Database db)
|
||||
{
|
||||
using var tx = db.TransactionManager.StartTransaction();
|
||||
var space = (BlockTableRecord)tx.GetObject(db.CurrentSpaceId, OpenMode.ForRead);
|
||||
var total = 0; var pipes = 0; var xdata = 0; var owned = 0;
|
||||
foreach (ObjectId id in space) { if (tx.GetObject(id, OpenMode.ForRead) is not Entity entity) continue; total++; if (entity is BlockReference br && string.Equals(br.Name, "PIPE", StringComparison.OrdinalIgnoreCase)) pipes++; if (entity.XData is not null) { foreach (TypedValue value in entity.XData) if (value.Value is string text && string.Equals(text, "PXP-OA", StringComparison.OrdinalIgnoreCase)) { xdata++; owned++; break; } } }
|
||||
return new(total, pipes, xdata, owned);
|
||||
}
|
||||
private static Config ReadConfig()
|
||||
{
|
||||
var path = Environment.GetEnvironmentVariable("P_REC_ANNOT_AUTOMATION_CONFIG") ?? throw new InvalidOperationException("AUTOMATION_CONFIG_MISSING");
|
||||
using var json = JsonDocument.Parse(File.ReadAllText(path)); var root = json.RootElement;
|
||||
return new(root.GetProperty("phase").GetString() ?? "Preview", root.GetProperty("orthoDrawingPath").GetString() ?? throw new InvalidOperationException("AUTOMATION_ORTHO_PATH_REQUIRED"), root.GetProperty("evidencePath").GetString() ?? throw new InvalidOperationException("AUTOMATION_EVIDENCE_PATH_REQUIRED"), root.GetProperty("fixtureMarkerPath").GetString() ?? throw new InvalidOperationException("AUTOMATION_MARKER_PATH_REQUIRED"));
|
||||
}
|
||||
private static void RequireGate(Config value)
|
||||
{
|
||||
if (!string.Equals(Environment.GetEnvironmentVariable("P_REC_ANNOT_AUTOMATION"), "FirstLimitedApplyRuntimeTest", StringComparison.Ordinal) || !string.Equals(Environment.GetEnvironmentVariable("P_REC_ANNOT_LAUNCHER_MODE"), "NextPilot", StringComparison.Ordinal) || !File.Exists(value.FixtureMarkerPath)) throw new InvalidOperationException("AUTOMATION_GATE_REJECTED");
|
||||
}
|
||||
private static bool SamePath(string left, string right) => string.Equals(Path.GetFullPath(left), Path.GetFullPath(right), StringComparison.OrdinalIgnoreCase);
|
||||
private static void Write(bool completed, string? error)
|
||||
{
|
||||
if (config is null) return;
|
||||
var first = runs.ElementAtOrDefault(0); var second = runs.ElementAtOrDefault(1);
|
||||
var evidence = new FirstApplyAutomationEvidence { Phase = config.Phase, Completed = completed, Prepared = prepared, FunctionalEvidenceCompleted = completed, ErrorCode = error, DbmodBefore = dbmodBaseline, DbmodAfterCommand1 = first?.DbmodAfter, DbmodAfterCommand2 = second?.DbmodAfter, Baseline = baseline, AfterCommand1 = first?.After, AfterCommand2 = second?.After, CompletedCommands = runs.Where(x => x.Ended).Select(x => "PXP-OA").ToArray(), PlanIdRun1 = first?.PlanId, PlanIdRun2 = second?.PlanId, PlanIdsEqual = first is not null && second is not null ? string.Equals(first.PlanId, second.PlanId, StringComparison.Ordinal) : null, EligibleCandidateCount = first?.Candidates.Count, SelectedCandidateHash = first?.Candidates.OrderBy(x => x, StringComparer.Ordinal).FirstOrDefault(), ViewHash = first?.View, CreateRun1 = first?.Create, CreateRun2 = second?.Create, SkipRun2 = second?.Skip, CommandsCompleted = runs.Count == 2 && runs.All(x => x.Ended), InspectorsCompleted = baseline is not null && first?.After is not null && second?.After is not null, EvidenceFlushed = true, CurrentState = terminal ? (completed ? "Completed" : "Failed") : "Prepared", StateTransitions = transitions };
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(config.EvidencePath)!);
|
||||
var temp = config.EvidencePath + ".tmp"; File.WriteAllText(temp, JsonSerializer.Serialize(evidence)); File.Move(temp, config.EvidencePath, true);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
using System.Text.Json;
|
||||
using PRecAnnot.Abstractions;
|
||||
|
||||
namespace PRecAnnot.Telemetry;
|
||||
|
||||
public sealed class JsonlUsageSink(string path) : ICommandUsageSink
|
||||
{
|
||||
private readonly object _gate = new();
|
||||
public void Record(CommandUsageEvent usageEvent)
|
||||
{
|
||||
var json = JsonSerializer.Serialize(usageEvent);
|
||||
lock (_gate) File.AppendAllText(path, json + Environment.NewLine);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup><TargetFramework>net8.0</TargetFramework></PropertyGroup>
|
||||
<ItemGroup><ProjectReference Include="..\PRecAnnot.Abstractions\PRecAnnot.Abstractions.csproj" /></ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,4 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup><TargetFramework>net8.0-windows</TargetFramework><UseWindowsForms>true</UseWindowsForms></PropertyGroup>
|
||||
<ItemGroup><ProjectReference Include="..\PRecAnnot.Application\PRecAnnot.Application.csproj" /></ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,17 @@
|
||||
using PRecAnnot.Application;
|
||||
|
||||
namespace PRecAnnot.UI;
|
||||
|
||||
public sealed class RibbonRegistration
|
||||
{
|
||||
private readonly HashSet<string> _registered = new(StringComparer.OrdinalIgnoreCase);
|
||||
public bool Register(CommandRegistry registry)
|
||||
{
|
||||
var changed = false;
|
||||
foreach (var item in registry.Commands)
|
||||
changed |= _registered.Add($"{item.RibbonPanel}:{item.CommandName}");
|
||||
return changed;
|
||||
}
|
||||
public void Unregister(CommandRegistry registry) { foreach (var item in registry.Commands) _registered.Remove($"{item.RibbonPanel}:{item.CommandName}"); }
|
||||
public int RegisteredCount => _registered.Count;
|
||||
}
|
||||
@@ -0,0 +1,538 @@
|
||||
using PRecAnnot.Abstractions;
|
||||
using PRecAnnot.Application;
|
||||
using PRecAnnot.Core;
|
||||
using PRecAnnot.UI;
|
||||
|
||||
namespace PRecAnnot.Core.Tests;
|
||||
|
||||
public sealed class FoundationTests
|
||||
{
|
||||
private static string ProjectRoot
|
||||
{
|
||||
get
|
||||
{
|
||||
var directory = new DirectoryInfo(AppContext.BaseDirectory);
|
||||
while (directory is not null && !File.Exists(Path.Combine(directory.FullName, "PRecAnnot2026.sln"))) directory = directory.Parent;
|
||||
return directory?.FullName ?? throw new DirectoryNotFoundException("PRecAnnot2026.sln was not found.");
|
||||
}
|
||||
}
|
||||
|
||||
[Fact] public void Plan_IsDeterministic()
|
||||
{
|
||||
var engine = new AnnotationRuleEngine();
|
||||
var request = new AnnotationRequest { Viewport = new("d", "v"), Objects = new[] { new PlantObjectData { ObjectId = "2", ClassName = "Pipe", LineNumber = "L-2", Position = new(2, 2) }, new PlantObjectData { ObjectId = "1", ClassName = "Pipe", LineNumber = "L-1", Position = new(1, 1) } }, Existing = Array.Empty<ExistingAnnotation>() };
|
||||
var plan = engine.BuildPlan(request);
|
||||
Assert.Equal(new[] { "1", "2" }, plan.Create.Select(x => x.StableKey.Split(':').Last()));
|
||||
}
|
||||
|
||||
[Fact] public void ExistingAnnotation_IsUpdatedNotDuplicated()
|
||||
{
|
||||
var item = new PlantObjectData { ObjectId = "1", ClassName = "Valve", Tag = "V-1", Position = new(0, 0) };
|
||||
var plan = new AnnotationRuleEngine().BuildPlan(new AnnotationRequest { Viewport = new("d", "v"), Objects = new[] { item }, Existing = new[] { new ExistingAnnotation("d:v:1", "old", new(0, 0)) } });
|
||||
Assert.Empty(plan.Create); Assert.Single(plan.Update);
|
||||
}
|
||||
|
||||
[Fact] public void CoreContracts_DoNotExposeAutodeskTypes()
|
||||
{
|
||||
var names = typeof(AnnotationRequest).Assembly.GetReferencedAssemblies().Select(x => x.Name).ToArray();
|
||||
Assert.DoesNotContain(names, x => x is not null && x.StartsWith("Ac", StringComparison.OrdinalIgnoreCase));
|
||||
Assert.DoesNotContain(names, x => x is not null && x.StartsWith("Autodesk", StringComparison.OrdinalIgnoreCase));
|
||||
}
|
||||
|
||||
[Fact] public void RibbonRegistration_IsIdempotent()
|
||||
{
|
||||
var ribbon = new RibbonRegistration(); var registry = CommandRegistry.Foundation();
|
||||
Assert.True(ribbon.Register(registry)); Assert.False(ribbon.Register(registry)); Assert.Equal(3, ribbon.RegisteredCount);
|
||||
}
|
||||
|
||||
[Fact] public void PlantAdapter_LoadsAgainst2026Assemblies()
|
||||
{
|
||||
var adapter = Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "bin", "Release", "net8.0-windows", "PRecAnnot.Plant3D2026.dll");
|
||||
var assembly = System.Reflection.AssemblyName.GetAssemblyName(adapter);
|
||||
var project = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "PRecAnnot.Plant3D2026.csproj"));
|
||||
Assert.NotNull(assembly);
|
||||
Assert.Contains("AcMgd", project);
|
||||
Assert.Contains("PnPProjectManagerMgd", project);
|
||||
}
|
||||
|
||||
[Fact] public void CommandClass_HasCommandMethodAttributes()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "EntryPoint.cs"));
|
||||
Assert.Contains("[CommandMethod(\"PHP_REC_ANNOT\")]", source);
|
||||
Assert.Contains("[CommandMethod(\"PXP-AAV\")]", source);
|
||||
Assert.Contains("[CommandMethod(\"PXP-OA\")]", source);
|
||||
Assert.Contains("PHP_REC_AUTOMATION_READY", source);
|
||||
}
|
||||
|
||||
[Fact] public void AutomationBootstrap_DefersPlantAndDocumentAccessUntilCoordinator()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs"));
|
||||
var bootstrap = source[..source.IndexOf("internal sealed record FirstApplyAutomationEvidence", StringComparison.Ordinal)];
|
||||
Assert.DoesNotContain("PlantProject.LoadProject", bootstrap);
|
||||
Assert.DoesNotContain("MdiActiveDocument", bootstrap);
|
||||
Assert.Contains("AcadApplication.Idle += OnIdle", bootstrap);
|
||||
Assert.Contains("observedIdle = true", bootstrap);
|
||||
Assert.Contains("coordinatorStartCount++", bootstrap);
|
||||
}
|
||||
|
||||
[Fact] public void AutomationLifecycleProbe_CompletesBeforePlantActivation()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs"));
|
||||
Assert.Contains("LifecycleProbe", source);
|
||||
Assert.True(source.IndexOf("CompleteLifecycleProbe", StringComparison.Ordinal) < source.IndexOf("PlantProject.LoadProject", StringComparison.Ordinal));
|
||||
Assert.Contains("PostStartupReady", source);
|
||||
}
|
||||
|
||||
[Fact] public void AutomationProjectActivation_WaitsForFixtureDocumentAndQuiescence()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs"));
|
||||
var activation = source[source.IndexOf("private void TryActivateProjectAndVerifyContext", StringComparison.Ordinal)..];
|
||||
Assert.Contains("!fixtureDocumentActivated", activation);
|
||||
Assert.Contains("!AcadApplication.IsQuiescent", activation);
|
||||
Assert.True(activation.IndexOf("PlantProject.LoadProject", StringComparison.Ordinal) > activation.IndexOf("AutomationBeforeProjectActivation", StringComparison.Ordinal));
|
||||
}
|
||||
|
||||
[Fact] public void AutomationDocumentActivation_IsSubscribedBeforeFixtureOpen()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs"));
|
||||
Assert.True(source.IndexOf("DocumentActivated += OnDocumentActivated", StringComparison.Ordinal) < source.IndexOf("DocumentManager.Open(config.OrthoDrawingPath", StringComparison.Ordinal));
|
||||
Assert.Contains("FixtureDocumentActivated", source);
|
||||
}
|
||||
|
||||
[Fact] public void AutomationDocumentActivation_RecoversSynchronousOpenEvent()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs"));
|
||||
var start = source[source.IndexOf("public void Start()", StringComparison.Ordinal)..source.IndexOf("private void CompleteLifecycleProbe", StringComparison.Ordinal)];
|
||||
Assert.Contains("FixtureDocumentActiveAfterOpen", start);
|
||||
Assert.Contains("fixtureDocumentActivated = true", start);
|
||||
Assert.Contains("QueueReadinessBarrier();", start);
|
||||
Assert.Contains("ReadinessBarrierCompleted", source);
|
||||
Assert.Contains("TryActivateProjectAndVerifyContext();", source);
|
||||
}
|
||||
|
||||
[Fact] public void QueueReadinessBarrier_RequiresActiveFixtureAndUsesSafeDispatch()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs"));
|
||||
var dispatcher = source[source.IndexOf("private async Task DispatchCommandAsync", StringComparison.Ordinal)..source.IndexOf("private void OnCommandEnded", StringComparison.Ordinal)];
|
||||
Assert.Contains("ExecuteInCommandContextAsync", dispatcher);
|
||||
Assert.Contains("MdiActiveDocument", dispatcher);
|
||||
Assert.Contains("AUTOMATION_COMMAND_DOCUMENT_NOT_ACTIVE", dispatcher);
|
||||
Assert.Contains("Editor.CommandAsync", dispatcher);
|
||||
Assert.DoesNotContain("SendStringToExecute", dispatcher);
|
||||
}
|
||||
|
||||
[Fact] public void AutomationControlledExit_QueuesNativeQuitAfterPublicCommand()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs"));
|
||||
Assert.Contains("RequestControlledExit", source);
|
||||
Assert.Contains("AcadApplication.Idle += OnExitIdle", source);
|
||||
Assert.Contains("QuitDispatchAttempted", source);
|
||||
Assert.Contains("exitDocument.SendStringToExecute(\"_.QUIT _N\\n\", true, true, false);", source);
|
||||
Assert.Contains("var exitDocument = AcadApplication.DocumentManager.MdiActiveDocument;", source);
|
||||
}
|
||||
|
||||
[Fact] public void Callback_AfterDocumentDestroyed_DoesNotAccessDocument()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs"));
|
||||
Assert.Contains("if (document is null || e.Document is null) return;", source);
|
||||
Assert.Contains("if (IsTerminal || document is null) return;", source);
|
||||
}
|
||||
|
||||
[Fact] public void Idle_WhenActiveDocumentNull_DoesNotThrow()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs"));
|
||||
Assert.Contains("AUTOMATION_EXIT_DOCUMENT_UNAVAILABLE", source);
|
||||
Assert.Contains("QuitDispatchSkippedNoLiveDocument", source);
|
||||
}
|
||||
|
||||
[Fact] public void TerminalState_IgnoresFurtherCallbacks()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs"));
|
||||
Assert.Contains("private bool IsTerminal", source);
|
||||
Assert.Contains("if (IsTerminal && callback != \"ControlledExitIdle\") return;", source);
|
||||
}
|
||||
|
||||
[Fact] public void HandlerException_ProducesFailedEvidence()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs"));
|
||||
Assert.Contains("exceptionText = exception.ToString();", source);
|
||||
Assert.Contains("ExceptionText = exceptionText", source);
|
||||
Assert.Contains("FailFromCallback", source);
|
||||
}
|
||||
|
||||
[Fact] public void HandlerException_DoesNotEscapeToAutoCad()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs"));
|
||||
Assert.Contains("private void RunCallback", source);
|
||||
Assert.Contains("catch (System.Exception exception) { FailFromCallback", source);
|
||||
Assert.Contains("=> RunCallback(\"Idle\"", source);
|
||||
Assert.Contains("=> RunCallback(\"CommandFailed\"", source);
|
||||
}
|
||||
|
||||
[Fact] public void Unsubscribe_IsIdempotent()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs"));
|
||||
Assert.Contains("private bool documentHandlersSubscribed", source);
|
||||
Assert.Contains("private bool lifecycleHandlersSubscribed", source);
|
||||
Assert.Contains("private void UnsubscribeHandlers()", source);
|
||||
}
|
||||
|
||||
[Fact] public void ControlledExit_DoesNotReuseDestroyedDocument()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs"));
|
||||
var controlledExit = source[source.IndexOf("private void RequestControlledExit", StringComparison.Ordinal)..];
|
||||
Assert.DoesNotContain("document.CloseAndDiscard", controlledExit);
|
||||
Assert.Contains("var exitDocument = AcadApplication.DocumentManager.MdiActiveDocument;", controlledExit);
|
||||
Assert.Contains("document = null;", controlledExit);
|
||||
}
|
||||
|
||||
[Fact] public void FinalCommandCompletion_UsesItsQuiescentExitBoundary()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs"));
|
||||
Assert.Contains("Complete(true, null, safeToExitNow: true)", source);
|
||||
Assert.Contains("RequestControlledExit(safeToExitNow);", source);
|
||||
}
|
||||
|
||||
[Fact] public void TerminalEvidence_IsFlushedBeforeExitAttempt()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs"));
|
||||
var exit = source[source.IndexOf("private void DispatchNativeQuit", StringComparison.Ordinal)..];
|
||||
Assert.True(exit.IndexOf("TryWriteEvidence(functionalCompleted, null);", StringComparison.Ordinal) < exit.IndexOf("SendStringToExecute(\"_.QUIT _N\\n", StringComparison.Ordinal));
|
||||
Assert.Contains("EvidenceFlushed = evidenceFlushed", source);
|
||||
Assert.Contains("CommandsCompleted", source);
|
||||
Assert.Contains("InspectorsCompleted", source);
|
||||
}
|
||||
|
||||
[Fact] public void ExitFailure_DoesNotInvalidateCompletedFunctionalEvidence()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs"));
|
||||
Assert.Contains("if (functionalCompleted)", source);
|
||||
Assert.Contains("ExitFailureCode = exitFailureCode", source);
|
||||
Assert.Contains("TryWriteEvidence(functionalCompleted, null);", source);
|
||||
}
|
||||
|
||||
[Fact] public void ExitDispatch_DoesNotUseUnavailableDocument()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs"));
|
||||
var exit = source[source.IndexOf("private void DispatchNativeQuit", StringComparison.Ordinal)..];
|
||||
Assert.Contains("AcadApplication.IsQuiescent", exit);
|
||||
Assert.Contains("QuitDispatchSkippedNoLiveDocument", exit);
|
||||
Assert.DoesNotContain("document ?? AcadApplication.DocumentManager", exit);
|
||||
}
|
||||
|
||||
[Fact] public void ProductionRuntime_DoesNotEnableForceAfterEvidence()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs"));
|
||||
Assert.DoesNotContain("ForceAfterEvidence", source);
|
||||
Assert.Contains("P_REC_ANNOT_AUTOMATION", source);
|
||||
}
|
||||
|
||||
[Fact] public void PrimaryCommand_IsRegistered() => Assert.Contains("[CommandMethod(\"PHP_REC_ANNOT\")]", File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "EntryPoint.cs")));
|
||||
[Fact] public void LegacyAliases_AreRegistered() => Assert.True(File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "EntryPoint.cs")).Contains("PXP-AAV") && File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "EntryPoint.cs")).Contains("PXP-OA"));
|
||||
[Fact] public void RibbonCommand_ReferencesRegisteredCommand() => Assert.Contains("PHP_REC_ANNOT ", File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "EntryPoint.cs")));
|
||||
|
||||
[Fact] public void AutodeskReferences_AreNotCopyLocal()
|
||||
{
|
||||
var project = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "PRecAnnot.Plant3D2026.csproj"));
|
||||
Assert.DoesNotContain("<Private>true</Private>", project);
|
||||
Assert.DoesNotContain("<CopyLocal>true</CopyLocal>", project);
|
||||
}
|
||||
|
||||
[Fact] public void Bundle_DoesNotContainAutodeskAssemblies()
|
||||
{
|
||||
var root = Path.Combine(ProjectRoot, "artifacts", "P_Rec_Annot.bundle");
|
||||
if (!Directory.Exists(root)) return;
|
||||
Assert.DoesNotContain(Directory.EnumerateFiles(root, "*.dll", SearchOption.AllDirectories), path => Path.GetFileName(path).StartsWith("PnP", StringComparison.OrdinalIgnoreCase) || new[] { "AcMgd.dll", "AcDbMgd.dll", "AcCoreMgd.dll", "AdWindows.dll" }.Contains(Path.GetFileName(path), StringComparer.OrdinalIgnoreCase));
|
||||
}
|
||||
|
||||
[Fact] public void Core_HasNoAutodeskReferences()
|
||||
{
|
||||
var references = typeof(AnnotationRequest).Assembly.GetReferencedAssemblies();
|
||||
Assert.DoesNotContain(references, x => x.Name?.StartsWith("Autodesk", StringComparison.OrdinalIgnoreCase) == true || x.Name?.StartsWith("Ac", StringComparison.OrdinalIgnoreCase) == true);
|
||||
}
|
||||
|
||||
[Fact] public void OrthoDetection_NoPlantProject_ReturnsNotOrtho() => Assert.Equal(OrthoDetectionStatus.NotOrtho, OrthoDetectionClassifier.Classify(false, false, false).Status);
|
||||
[Fact] public void OrthoDetection_NormalDwg_ReturnsNotOrtho() => Assert.Equal(OrthoDetectionStatus.NotOrtho, OrthoDetectionClassifier.Classify(true, true, false).Status);
|
||||
[Fact] public void OrthoDetection_ConfirmedOrtho_ReturnsConfirmed() => Assert.Equal(OrthoDetectionStatus.Confirmed, OrthoDetectionClassifier.Classify(true, true, true).Status);
|
||||
[Fact] public void OrthoDetection_AmbiguousMetadata_ReturnsAmbiguous() => Assert.Equal(OrthoDetectionStatus.Ambiguous, OrthoDetectionClassifier.Classify(true, true, false, true).Status);
|
||||
|
||||
[Fact] public void AnnotationPlan_InputOrderDoesNotChangeResult()
|
||||
{
|
||||
var viewport = new OrthoViewportInfo { Id = "vp", DisplayName = "A", SourceDrawingName = "test.dwg" };
|
||||
var objects = new[] { Snapshot("b", "Pipe", "L-2"), Snapshot("a", "Valve", "V-1") };
|
||||
var builder = new AnnotationPlanBuilder();
|
||||
var first = builder.Build(new AnnotationPlanningRequest { CommandName = "PHP_REC_ANNOT", Viewport = viewport, Objects = objects });
|
||||
var second = builder.Build(new AnnotationPlanningRequest { CommandName = "PHP_REC_ANNOT", Viewport = viewport, Objects = objects.Reverse().ToArray() });
|
||||
Assert.Equal(first.PlanId, second.PlanId);
|
||||
Assert.Equal(first.Summary, second.Summary);
|
||||
Assert.Equal(first.Operations.Select(x => x.SourceSnapshotId), second.Operations.Select(x => x.SourceSnapshotId));
|
||||
}
|
||||
|
||||
[Fact] public void AnnotationPlan_ReversedObjectOrder_HasSamePlanId()
|
||||
{
|
||||
var first = Build(Snapshot("a", "Pipe", "L-1"), Snapshot("b", "Pipe", "L-2"));
|
||||
var second = Build(Snapshot("b", "Pipe", "L-2"), Snapshot("a", "Pipe", "L-1"));
|
||||
Assert.Equal(first.PlanId, second.PlanId);
|
||||
Assert.Equal(first.Summary, second.Summary);
|
||||
}
|
||||
|
||||
[Fact] public void AnnotationPlan_AbsolutePath_DoesNotAffectPlanId()
|
||||
{
|
||||
var builder = new AnnotationPlanBuilder();
|
||||
var item = Snapshot("a", "Pipe", "L-1");
|
||||
var first = builder.Build(new AnnotationPlanningRequest { CommandName = "PHP_REC_ANNOT", Viewport = new OrthoViewportInfo { Id = "v", DisplayName = "v", SourceDrawingName = "C:\\one\\model.dwg" }, Objects = new[] { item } });
|
||||
var second = builder.Build(new AnnotationPlanningRequest { CommandName = "PHP_REC_ANNOT", Viewport = new OrthoViewportInfo { Id = "v", DisplayName = "v", SourceDrawingName = "D:\\two\\model.dwg" }, Objects = new[] { item } });
|
||||
Assert.Equal(first.PlanId, second.PlanId);
|
||||
}
|
||||
|
||||
[Fact] public void AnnotationPlan_ChangedRelevantProperty_ChangesPlanId()
|
||||
{
|
||||
var first = Build(Snapshot("a", "Pipe", "L-1"));
|
||||
var second = Build(Snapshot("a", "Pipe", "L-2"));
|
||||
Assert.NotEqual(first.PlanId, second.PlanId);
|
||||
}
|
||||
|
||||
[Fact] public void AnnotationPlan_UnresolvedMembership_IsStableSkip()
|
||||
{
|
||||
var plan = Build(new PlantObjectSnapshot { SnapshotId = "a", ObjectClass = "Pipe", LineNumber = "L-1", Geometry = new GeometrySnapshot(), MembershipStatus = ViewMembershipStatus.NotResolved });
|
||||
Assert.Equal(AnnotationOperationKind.Skip, Assert.Single(plan.Operations).Kind);
|
||||
Assert.Contains("VIEW_MEMBERSHIP_NOT_RESOLVED", plan.SkipReasons);
|
||||
}
|
||||
|
||||
[Fact] public void ViewportMembership_OutsideClip_IsSkippedWithStableReason()
|
||||
{
|
||||
var plan = Build(new PlantObjectSnapshot { SnapshotId = "a", ObjectClass = "Pipe", LineNumber = "L-1", Geometry = new GeometrySnapshot(), MembershipStatus = ViewMembershipStatus.ObjectOutsideView });
|
||||
Assert.Equal(AnnotationOperationKind.Skip, Assert.Single(plan.Operations).Kind);
|
||||
Assert.Contains("VIEW_MEMBERSHIP_OBJECT_OUTSIDE_CLIP", plan.SkipReasons);
|
||||
}
|
||||
|
||||
[Fact] public void AnnotationPlan_ResolvedMembership_AffectsPlanId()
|
||||
{
|
||||
var resolved = Build(new PlantObjectSnapshot { SnapshotId = "a", ObjectClass = "Pipe", LineNumber = "L-1", Geometry = new GeometrySnapshot(), MembershipStatus = ViewMembershipStatus.Resolved });
|
||||
var outside = Build(new PlantObjectSnapshot { SnapshotId = "a", ObjectClass = "Pipe", LineNumber = "L-1", Geometry = new GeometrySnapshot(), MembershipStatus = ViewMembershipStatus.ObjectOutsideView });
|
||||
Assert.NotEqual(resolved.PlanId, outside.PlanId);
|
||||
}
|
||||
|
||||
[Fact] public void AnnotationPlan_ReorderedMembership_HasSamePlanId()
|
||||
{
|
||||
var first = Build(
|
||||
new PlantObjectSnapshot { SnapshotId = "a", ObjectClass = "Pipe", LineNumber = "L-1", Geometry = new GeometrySnapshot(), MembershipStatus = ViewMembershipStatus.Resolved },
|
||||
new PlantObjectSnapshot { SnapshotId = "b", ObjectClass = "Pipe", LineNumber = "L-2", Geometry = new GeometrySnapshot(), MembershipStatus = ViewMembershipStatus.ObjectOutsideView });
|
||||
var second = Build(
|
||||
new PlantObjectSnapshot { SnapshotId = "b", ObjectClass = "Pipe", LineNumber = "L-2", Geometry = new GeometrySnapshot(), MembershipStatus = ViewMembershipStatus.ObjectOutsideView },
|
||||
new PlantObjectSnapshot { SnapshotId = "a", ObjectClass = "Pipe", LineNumber = "L-1", Geometry = new GeometrySnapshot(), MembershipStatus = ViewMembershipStatus.Resolved });
|
||||
Assert.Equal(first.PlanId, second.PlanId);
|
||||
}
|
||||
|
||||
[Fact] public void AnnotationPlan_MissingLineNumber_IsSkipped()
|
||||
{
|
||||
var plan = Build(Snapshot("a", "Pipe", null, null));
|
||||
Assert.Equal(AnnotationOperationKind.Skip, Assert.Single(plan.Operations).Kind);
|
||||
}
|
||||
|
||||
[Fact] public void AnnotationPlan_UnsupportedObject_IsMarkedUnsupported()
|
||||
{
|
||||
var plan = Build(Snapshot("a", "", "L-1"));
|
||||
Assert.Equal(AnnotationOperationKind.Unsupported, Assert.Single(plan.Operations).Kind);
|
||||
}
|
||||
|
||||
[Fact] public void AnnotationPlan_ExistingAnnotation_BecomesUpdate()
|
||||
{
|
||||
var viewport = new OrthoViewportInfo { Id = "vp", DisplayName = "A", SourceDrawingName = "test.dwg" };
|
||||
var item = Snapshot("a", "Pipe", "L-1");
|
||||
var plan = new AnnotationPlanBuilder().Build(new AnnotationPlanningRequest { CommandName = "PHP_REC_ANNOT", Viewport = viewport, Objects = new[] { item }, Existing = new[] { new ExistingAnnotation("a", "old", new(0, 0)) } });
|
||||
Assert.Equal(AnnotationOperationKind.Update, Assert.Single(plan.Operations).Kind);
|
||||
}
|
||||
|
||||
[Fact] public void AnnotationPlan_DuplicateCandidate_BecomesConflict()
|
||||
{
|
||||
var plan = Build(Snapshot("a", "Pipe", "L-1"), Snapshot("a", "Pipe", "L-1"));
|
||||
Assert.Equal(AnnotationOperationKind.Conflict, plan.Operations.Last().Kind);
|
||||
}
|
||||
|
||||
[Fact] public void OrthoSourceResolver_OneView_ResolvesOneModelDrawing()
|
||||
{
|
||||
var result = new OrthoSourceDrawingResolver().Resolve(new OrthoDrawingSnapshot
|
||||
{
|
||||
StableId = "sheet",
|
||||
Views = new[] { new OrthoViewSourceSnapshot { ViewStableId = "view", ReferencedDrawingPaths = new[] { "Plant 3D Models/TestPipeModel.dwg" } } }
|
||||
});
|
||||
var source = Assert.Single(result);
|
||||
Assert.Equal(SourceDrawingResolutionStatus.Resolved, source.Status);
|
||||
Assert.Equal("TestPipeModel.dwg", source.DisplayName);
|
||||
}
|
||||
|
||||
[Fact] public void OrthoSourceResolver_DuplicateViews_DeduplicatesSource()
|
||||
{
|
||||
var result = new OrthoSourceDrawingResolver().Resolve(new OrthoDrawingSnapshot
|
||||
{
|
||||
StableId = "sheet",
|
||||
Views = new[]
|
||||
{
|
||||
new OrthoViewSourceSnapshot { ViewStableId = "a", ReferencedDrawingPaths = new[] { "models/A.dwg" } },
|
||||
new OrthoViewSourceSnapshot { ViewStableId = "b", ReferencedDrawingPaths = new[] { "models/A.dwg" } }
|
||||
}
|
||||
});
|
||||
Assert.Single(result);
|
||||
}
|
||||
|
||||
[Fact] public void OrthoSourceResolver_MissingSource_ReturnsDiagnostic()
|
||||
{
|
||||
var result = new OrthoSourceDrawingResolver().Resolve(new OrthoDrawingSnapshot { StableId = "sheet" });
|
||||
var source = Assert.Single(result);
|
||||
Assert.Equal(SourceDrawingResolutionStatus.NotReferenced, source.Status);
|
||||
Assert.Contains("ORTHO_SOURCE_DRAWING_NOT_RESOLVED", source.EvidenceCodes);
|
||||
}
|
||||
|
||||
[Fact] public void DwgQueryContract_UsesConfirmedModelFileContract()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "PlantReadPath.cs"));
|
||||
Assert.Contains("view.DwgQuery?.ModelFiles", source);
|
||||
Assert.Contains("file.ModelFileName", source);
|
||||
Assert.Contains("ORTHO_MODEL_FILES_API_UNSUPPORTED", source);
|
||||
}
|
||||
|
||||
[Fact] public void DwgQueryContract_DoesNotGuessAlternativePropertyNames()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "PlantReadPath.cs"));
|
||||
Assert.DoesNotContain("GetProperty(\"ModelFileName\")", source);
|
||||
Assert.DoesNotContain("GetProperty(\"Value\")", source);
|
||||
Assert.DoesNotContain("GetProperty(\"FileName\")", source);
|
||||
}
|
||||
|
||||
[Fact] public void OrthoSourceReader_UsesResolvedPipingProjectDrawingId()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "PlantReadPath.cs"));
|
||||
Assert.Contains("pipingProject.GetPnPDrawingFiles()", source);
|
||||
Assert.Contains("dataLinks.SelectAcPpRowIds(sourceDrawing.Id)", source);
|
||||
}
|
||||
|
||||
[Fact] public void OrthoSourceReader_DoesNotQueryTheActiveOrthoDatabase()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "PlantReadPath.cs"));
|
||||
Assert.DoesNotContain("SelectAcPpRowIds(sourceDatabase)", source);
|
||||
Assert.DoesNotContain("ReadDwgFile(viewport.SourceDrawingName", source);
|
||||
}
|
||||
|
||||
[Fact] public void OrthoSourceReader_ReportsDistinctSourceDiagnostics()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "PlantReadPath.cs"));
|
||||
Assert.Contains("ORTHO_SOURCE_DRAWING_NOT_IN_PROJECT", source);
|
||||
Assert.Contains("SOURCE_DATALINKS_UNAVAILABLE", source);
|
||||
Assert.Contains("SOURCE_DATALINKS_NO_ROWS", source);
|
||||
}
|
||||
|
||||
[Fact] public void ViewportMembership_UsesConfirmedPnpIdentityContract()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "PlantReadPath.cs"));
|
||||
Assert.Contains("view.DwgQuery.Execute", source);
|
||||
Assert.Contains("sourceId.PrjObjectId", source);
|
||||
Assert.Contains("dataLinks.FindAcPpRowId", source);
|
||||
Assert.Contains("VIEW_MEMBERSHIP_FROM_CONFIRMED_PNP_ID", source);
|
||||
}
|
||||
|
||||
[Fact] public void ViewportMembership_DoesNotSelectFirstViewport()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "PlantReadPath.cs"));
|
||||
Assert.DoesNotContain("DwgViewDefs.AsArray().First", source);
|
||||
Assert.Contains("candidates.Length != 1", source);
|
||||
}
|
||||
|
||||
[Fact] public void RuntimeInspector_IsDisabledByDefault()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "RuntimeDiagnostics.cs"));
|
||||
Assert.Contains("P_REC_ANNOT_DIAGNOSTICS", source);
|
||||
Assert.Contains("OrthoStructure", source);
|
||||
}
|
||||
|
||||
[Fact] public void ApplyMode_IsBlocked() => Assert.Throws<InvalidOperationException>(() => new ExecutionModeWriteGuard(PRecAnnotExecutionMode.Apply).EnsureWriteAllowed("test"));
|
||||
|
||||
[Fact] public void FirstLimitedApply_RequiresApplyMode()
|
||||
{
|
||||
var context = FirstApplyContext();
|
||||
Assert.Throws<InvalidOperationException>(() => new FirstLimitedApplyPlanner().Prepare(PRecAnnotExecutionMode.DryRun, context.Plan, context.Viewport, context.Objects, context.Permit));
|
||||
}
|
||||
|
||||
[Fact] public void FirstLimitedApply_RequiresFreshPlan()
|
||||
{
|
||||
var context = FirstApplyContext();
|
||||
var permit = context.Permit with { ExpectedPlanId = "stale" };
|
||||
Assert.Throws<InvalidOperationException>(() => new FirstLimitedApplyPlanner().Prepare(PRecAnnotExecutionMode.Apply, context.Plan, context.Viewport, context.Objects, permit));
|
||||
}
|
||||
|
||||
[Fact] public void FirstLimitedApply_RequiresResolvedMembership()
|
||||
{
|
||||
var context = FirstApplyContext();
|
||||
var objects = new[] { context.Objects[0] with { MembershipStatus = ViewMembershipStatus.NotResolved } };
|
||||
Assert.Throws<InvalidOperationException>(() => new FirstLimitedApplyPlanner().Prepare(PRecAnnotExecutionMode.Apply, context.Plan, context.Viewport, objects, context.Permit));
|
||||
}
|
||||
|
||||
[Fact] public void FirstLimitedApply_RequiresExactlyOneTarget()
|
||||
{
|
||||
var context = FirstApplyContext();
|
||||
var permit = context.Permit with { TargetSnapshotId = "missing" };
|
||||
Assert.Throws<InvalidOperationException>(() => new FirstLimitedApplyPlanner().Prepare(PRecAnnotExecutionMode.Apply, context.Plan, context.Viewport, context.Objects, permit));
|
||||
}
|
||||
|
||||
[Fact] public void FirstLimitedApply_CreatesDeterministicOperation()
|
||||
{
|
||||
var context = FirstApplyContext();
|
||||
var planner = new FirstLimitedApplyPlanner();
|
||||
var first = planner.Prepare(PRecAnnotExecutionMode.Apply, context.Plan, context.Viewport, context.Objects, context.Permit);
|
||||
var second = planner.Prepare(PRecAnnotExecutionMode.Apply, context.Plan, context.Viewport, context.Objects, context.Permit);
|
||||
Assert.Equal(first.Operation.OperationId, second.Operation.OperationId);
|
||||
Assert.Equal(first.Operation.DuplicateKey, second.Operation.DuplicateKey);
|
||||
Assert.DoesNotContain("C:\\", first.Operation.DuplicateKey, StringComparison.OrdinalIgnoreCase);
|
||||
}
|
||||
|
||||
[Fact] public void FirstLimitedApplyPlan_OneResolvedPipeCreatesOnePipeOperation()
|
||||
{
|
||||
var viewport = new OrthoViewportInfo { Id = "vp", DisplayName = "view", SourceDrawingName = "model.dwg" };
|
||||
var plan = new AnnotationPlanBuilder().Build(new AnnotationPlanningRequest
|
||||
{
|
||||
CommandName = "PXP-OA", Viewport = viewport,
|
||||
Objects = new[] { Snapshot("pipe", "Pipe", null), Snapshot("other", "Valve", "TEST") },
|
||||
LimitedApplyTargetSnapshotId = "pipe", LimitedApplyRuleId = FirstLimitedApplyPlanner.RuleId
|
||||
});
|
||||
Assert.Equal(1, plan.Summary.CreateCount);
|
||||
Assert.Equal("PIPE", Assert.Single(plan.Operations.Where(x => x.Kind == AnnotationOperationKind.Create)).AnnotationType);
|
||||
Assert.Contains("APPLY_NOT_SELECTED_TARGET", plan.Operations.Single(x => x.SourceSnapshotId == "other").Reasons);
|
||||
}
|
||||
|
||||
[Fact] public void FirstLimitedApplyPlan_SelectionChangesCanonicalPlanId()
|
||||
{
|
||||
var viewport = new OrthoViewportInfo { Id = "vp", DisplayName = "view", SourceDrawingName = "model.dwg" };
|
||||
var objects = new[] { Snapshot("one", "Pipe", null), Snapshot("two", "Pipe", null) };
|
||||
var builder = new AnnotationPlanBuilder();
|
||||
var one = builder.Build(new AnnotationPlanningRequest { CommandName = "PXP-OA", Viewport = viewport, Objects = objects, LimitedApplyTargetSnapshotId = "one", LimitedApplyRuleId = FirstLimitedApplyPlanner.RuleId });
|
||||
var two = builder.Build(new AnnotationPlanningRequest { CommandName = "PXP-OA", Viewport = viewport, Objects = objects, LimitedApplyTargetSnapshotId = "two", LimitedApplyRuleId = FirstLimitedApplyPlanner.RuleId });
|
||||
Assert.NotEqual(one.PlanId, two.PlanId);
|
||||
}
|
||||
|
||||
[Fact] public void DryRunPath_HasNoForWriteOperations()
|
||||
{
|
||||
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "PlantReadPath.cs"));
|
||||
Assert.DoesNotContain("ForWrite", source);
|
||||
Assert.DoesNotContain("AppendEntity", source);
|
||||
Assert.DoesNotContain("AcceptChanges", source);
|
||||
Assert.DoesNotContain("SetProperties", source);
|
||||
}
|
||||
|
||||
private static (AnnotationPlan Plan, OrthoViewportInfo Viewport, PlantObjectSnapshot[] Objects, FirstLimitedApplyPermit Permit) FirstApplyContext()
|
||||
{
|
||||
var viewport = new OrthoViewportInfo { Id = "vp", DisplayName = "view", SourceDrawingName = "model.dwg" };
|
||||
var objects = new[] { Snapshot("pipe", "Pipe", "TEST") };
|
||||
var plan = new AnnotationPlanBuilder().Build(new AnnotationPlanningRequest
|
||||
{
|
||||
CommandName = "PXP-OA",
|
||||
Viewport = viewport,
|
||||
Objects = objects,
|
||||
LimitedApplyTargetSnapshotId = "pipe",
|
||||
LimitedApplyRuleId = FirstLimitedApplyPlanner.RuleId
|
||||
});
|
||||
return (plan, viewport, objects, new FirstLimitedApplyPermit { FixtureMarker = FirstLimitedApplyPlanner.FixtureMarker, AllowApply = true, TargetSnapshotId = "pipe", ExpectedPlanId = plan.PlanId });
|
||||
}
|
||||
|
||||
private static AnnotationPlan Build(params PlantObjectSnapshot[] objects) => new AnnotationPlanBuilder().Build(new AnnotationPlanningRequest { CommandName = "PHP_REC_ANNOT", Viewport = new OrthoViewportInfo { Id = "vp", DisplayName = "A", SourceDrawingName = "test.dwg" }, Objects = objects });
|
||||
private static PlantObjectSnapshot Snapshot(string id, string type, string? line, string? tag = "TAG") => new() { SnapshotId = id, ObjectClass = type, LineNumber = line, Tag = tag, Geometry = new GeometrySnapshot { PaperPosition = new Point2Dto(1, 2) }, MembershipStatus = ViewMembershipStatus.Resolved };
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup><TargetFramework>net8.0-windows</TargetFramework><IsPackable>false</IsPackable><IsTestProject>true</IsTestProject></PropertyGroup>
|
||||
<ItemGroup><ProjectReference Include="..\..\src\PRecAnnot.Core\PRecAnnot.Core.csproj" /><ProjectReference Include="..\..\src\PRecAnnot.Application\PRecAnnot.Application.csproj" /><ProjectReference Include="..\..\src\PRecAnnot.UI\PRecAnnot.UI.csproj" /></ItemGroup>
|
||||
<ItemGroup><PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" /><PackageReference Include="xunit" Version="2.5.3" /><PackageReference Include="xunit.runner.visualstudio" Version="2.5.3" /></ItemGroup>
|
||||
<ItemGroup><Using Include="Xunit" /></ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,11 @@
|
||||
param([ValidateSet('Debug','Release')][string]$Configuration='Release',[Parameter(Mandatory=$true)][string]$AutoCAD2026ManagedDir,[Parameter(Mandatory=$true)][string]$Plant3D2026ManagedDir)
|
||||
$ErrorActionPreference='Stop'
|
||||
dotnet build (Join-Path $PSScriptRoot '..\PRecAnnot2026.sln') --configuration $Configuration /p:AutoCAD2026ManagedDir=$AutoCAD2026ManagedDir /p:Plant3D2026ManagedDir=$Plant3D2026ManagedDir
|
||||
if($LASTEXITCODE -ne 0){ throw "Build failed: $LASTEXITCODE" }
|
||||
$bundleRoot=Join-Path $PSScriptRoot '..\artifacts\P_Rec_Annot.bundle'
|
||||
$contents=Join-Path $bundleRoot 'Contents\Windows'
|
||||
New-Item -ItemType Directory -Force -Path $contents | Out-Null
|
||||
$output=Join-Path $PSScriptRoot "..\src\PRecAnnot.Plant3D2026\bin\$Configuration\net8.0-windows"
|
||||
Get-ChildItem $output -File -Filter '*.dll' | Copy-Item -Destination $contents -Force
|
||||
Copy-Item (Join-Path $PSScriptRoot '..\bundle\P_Rec_Annot.bundle\PackageContents.xml') $bundleRoot -Force
|
||||
Write-Host 'Bundle assembly build completed; deployment is intentionally not performed.'
|
||||
@@ -0,0 +1,13 @@
|
||||
param([string]$BundleRoot=(Join-Path $PSScriptRoot '..\artifacts\P_Rec_Annot.bundle'))
|
||||
$ErrorActionPreference='Stop'
|
||||
$package=Join-Path $BundleRoot 'PackageContents.xml'
|
||||
[xml]$xml=Get-Content -LiteralPath $package
|
||||
$entry=$xml.ApplicationPackage.Components.ComponentEntry
|
||||
if(@($entry).Count -ne 1){throw 'Bundle must have exactly one entry assembly.'}
|
||||
if($entry.ModuleName -match '_netload|OrthoLoader|Settings.xml'){throw 'Legacy loading chain is forbidden.'}
|
||||
if($entry.ModuleName -notmatch 'PRecAnnot\.Plant3D2026\.dll'){throw 'Unexpected entry assembly.'}
|
||||
if(-not (Test-Path (Join-Path $BundleRoot 'Contents\Windows\PRecAnnot.Plant3D2026.dll'))){throw 'Entry assembly is missing.'}
|
||||
$forbidden='^(AcMgd|AcDbMgd|AcCoreMgd|AdWindows|PnP.*)\.dll$'
|
||||
$forbiddenFiles=Get-ChildItem $BundleRoot -Recurse -File | Where-Object { $_.Name -match $forbidden -or $_.Extension -in '.pdb','.cs' -or $_.FullName -match '\\(bin|obj)\\' }
|
||||
if($forbiddenFiles){throw "Bundle contains forbidden files: $($forbiddenFiles.FullName -join ', ')"}
|
||||
Write-Host 'Bundle manifest is structurally valid.'
|
||||
@@ -0,0 +1,57 @@
|
||||
# Аудит 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](https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-UserGuide/files/GUID-DAD70DC1-32F2-45E4-8685-0C574EF31299.htm). Штатная настройка формата выполняется через Project Setup/Class Definitions: [Annotation Format for Orthographic Drawings](https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-UserGuide/files/GUID-6D5E3975-53AA-4495-B727-BBB2B599B464.htm). Это подтверждает область пересечения, но не доказывает замену корпоративных правил P_Rec_Annot. Autodesk также документирует создание и обновление Ortho, но не эквивалент всего пакетного поведения: [Create an Orthographic View](https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-UserGuide/files/GUID-09E67A9E-45F7-4392-BFB6-EF1ADAB1D46B.htm), [About Updating Orthographic Drawings](https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-UserGuide/files/GUID-EEDF2AA7-B50B-484B-B47F-B48986A51C3D.htm).
|
||||
|
||||
**Нужна ли новая кнопка:** да, на первом этапе миграции нужна одна явная корпоративная кнопка/команда для воспроизводимого сценария `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`.
|
||||
|
||||
## Ограничения
|
||||
|
||||
1. Исходный каталог содержит release DLL, DWG, DOCX, PDF и ZIP, но они не добавляются в Git и не открывались/запускались.
|
||||
2. Без Plant 3D 2019 runtime нельзя подтвердить фактические визуальные результаты, число созданных объектов, undo и семантику внешнего usage-счётчика.
|
||||
3. Сравнение 2026 ограничено официально опубликованными возможностями; полноценная замена требует runtime-сопоставления корпоративных annotation blocks и правил.
|
||||
@@ -0,0 +1,7 @@
|
||||
# Annotation algorithm
|
||||
|
||||
По исходникам функция `Annot` — создание/обновление орто-аннотаций и вспомогательных graphic blocks, а не универсальное 3D/P&ID/Iso annotator. Plant 3D 2026 официально также ограничивает понятие annotations orthographic drawings ([About Annotations](https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-UserGuide/files/GUID-DAD70DC1-32F2-45E4-8685-0C574EF31299.htm)); поэтому область совпадает, но корпоративная логика не считается заменённой.
|
||||
|
||||
Подтверждённые операции: viewport/block selection, поиск DataLinks/PnP rows, чтение line groups и connected parts, transaction writes, block/attribute/MLeader/dimension operations. `AutoAnnotateView/Commands.cs:476-500` сначала удаляет ранее размещённые annotations, затем вызывает `InsertAnnotations()` и пишет count; `AutoLinenumberConnections/Commands.cs:535-558` аналогично удаляет blocks стыков. Это признаки частичной идемпотентности, но не доказательство для всего набора.
|
||||
|
||||
Нужно сохранять в golden test: тип блока, attribute tags/text, layer, scale, rotation, coordinates, XData/DataLinks, number of created/updated/skipped entities. Сырые DWG не включены.
|
||||
@@ -0,0 +1,17 @@
|
||||
# Architecture
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
L[OrthoLoader.dll] --> S[Settings.xml]
|
||||
L --> N[_netload each DLL]
|
||||
N --> R[OrthoLoader.Ribbon]
|
||||
R --> C[AutoCAD command]
|
||||
C --> P[PlantApplication.CurrentProject]
|
||||
P --> D[DataLinksManager/PnPDatabase]
|
||||
D --> A[Ortho/model DB objects]
|
||||
A --> T[Blocks, attributes, MLeader, dimensions, layers]
|
||||
```
|
||||
|
||||
`P_Rec_Annot` — legacy монорешение с отдельными DLL-проектами, общими `Files`/`FilesRelease` и runtime-зависимостями между DLL. Основные функциональные модули: `AnnotateLineNumbers`, `AutoAnnotateView`, `AutoLinenumberConnections`, `AutoElevation`, `InsertElevation`, `OrthoAutoAnnotate`, `UpdateOrthoDrawings`, `UpdateOrthoViewBlocks`, `CheckOrthoView`, `P3DNewMa`, `PHPAnnotations`, `OrthoLoader`.
|
||||
|
||||
Целевая архитектура: `P_Rec_Annot.Core` (DTO, правила текста/позиционирования, duplicate detection), `P_Rec_Annot.Plant3D2026` (команды, DataLinks, transactions, selection), `P_Rec_Annot.UI`, `P_Rec_Annot.Telemetry`, тесты. Telemetry должна быть на уровне явного command scope, не внутри циклов объектов.
|
||||
@@ -0,0 +1,7 @@
|
||||
# Commands and UI
|
||||
|
||||
Актуальные команды, найденные в неархивных проектах: `PXP-LN`, `PXP-ELN`, `PXP-ALC`, `PXP-ULN`, `PXP-ESN`, `PXP-RMP`; `PXP-AAV`; `PXP-AE`; `PXP-IE`; `PXP-OSI`, `PXP-DJ`, `PXP-RA`, `PXP-OA`; `PXP-COV`; `mto-ma`, `CAC1`; `PXP-MA`, `CAC`, `BJ`; `PXP-AC`; `PXP-IOD`; `PXP-UOB`. Полные file/line записи — `evidence/commands.csv`; архивные одноимённые команды там сохранены отдельно.
|
||||
|
||||
Ribbon создаётся программно в `OrthoLoader.Ribbon`, вкладка `PluginsOrtho`, панели: package update, layers, lines/supports, pipe numbering, elevations, annotations, sizes, checks (`Ribbon.cs:18-29`). Кнопки строятся из массивов command id/text/description/icon (`Ribbon.cs:31-145`, `193-377`). UI включает WinForms формы выбора чертежей/аннотаций/операций и palette `P3DNewMa`; автоматическая кнопка `PXP-AAV` заявлена для арматуры, НКР и позиций КИП (`Ribbon.cs:109-129`).
|
||||
|
||||
Кнопки создаются после Ribbon initialization и при открытии проекта. `CurrentProjectOpenedEvent` подключается в `ComponentManager_ItemInitialized` (`Ribbon.cs:159-172`), а кнопки включаются/выключаются в `OpenProjectHandler` (`176-189`). Повторная загрузка и отсутствие отписки в `Terminate()` требуют runtime-проверки.
|
||||
@@ -0,0 +1,12 @@
|
||||
# Plant 3D 2019 → 2026
|
||||
|
||||
| Feature | 2019 implementation | 2026 official capability | Action |
|
||||
|---|---|---|---|
|
||||
| Ortho annotations | custom blocks/DataLinks | штатные orthographic annotations/styles documented | сравнить корпоративные blocks; не списывать плагин |
|
||||
| Annotation formats | custom XML/settings + code | Project Setup/Class Definitions supports annotation styles | перенести правила в configuration where equivalent |
|
||||
| Batch update | `PXP-IOD` session command | official update/create workflows documented, full batch equivalence not proven | KEEP_AFTER_ISOLATION + runtime |
|
||||
| Locate 3D object | `PXP-OSI` custom traversal | official Locate in 3D Model workflow documented | verify native replacement |
|
||||
| Layers/viewport | `PXP-UOB` custom writes | 2026 docs/API comparison required | adapter + golden test |
|
||||
| Line-number connection annotations | `PXP-ALC` custom DataLinks/blocks | no full equivalence established | REIMPLEMENT_SAME_BEHAVIOR |
|
||||
|
||||
Официальные ссылки: [About Annotations](https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-UserGuide/files/GUID-DAD70DC1-32F2-45E4-8685-0C574EF31299.htm), [Annotation Format](https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-UserGuide/files/GUID-6D5E3975-53AA-4495-B727-BBB2B599B464.htm), [Create Ortho](https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-UserGuide/files/GUID-09E67A9E-45F7-4392-BFB6-EF1ADAB1D46B.htm), [Locate 3D counterpart](https://help.autodesk.com/cloudhelp/2026/ENU/Plant3D-UserGuide/files/GUID-E49E4523-05AD-4F33-8535-EAC721B620EB.htm). Утверждение о полноценной замене запрещено до runtime-сопоставления.
|
||||
@@ -0,0 +1,5 @@
|
||||
# Configuration and paths
|
||||
|
||||
`Settings.xml` перечисляет DLL для загрузки. `annotation_settings.xml` и `users_indexes_list.xml` находятся в сетевом project support tree; README описывает `_System\Plant 3D_2019\Applications` и `_Data\Plant 3D_2019\AddAnnotationText` (`README.md:68-80`). `Template.dwg` и icons используются как deployment resources.
|
||||
|
||||
Абсолютные Autodesk 2019 HintPath и сетевые/локальные пути агрегированы в `evidence/external-paths.csv` с маскированием значений. Секретов в опубликованные evidence не включать; значения путей/реквизитов проектов не публиковать повторно.
|
||||
@@ -0,0 +1,5 @@
|
||||
# Dependencies
|
||||
|
||||
Проекты — legacy `.NET Framework 4.7`, `x64`, `OutputType=Library`. Autodesk references: `acCoreMgd`, `acDbMgd`, `acMgd`, `PnPProjectManagerMgd`, `PnPDataLinks`, `PnPDataObjects`, `PnP3dObjectsMgd`, `PnP3dPartsRepository`, `PnP3dOrtho*`, `PnPDwg2d*`, AutoCAD Interop. В HintPath присутствует `C:\Program Files\Autodesk\AutoCAD 2019\...`; подробности в `evidence/project-references.csv`.
|
||||
|
||||
Сторонние/внутренние DLL: deployment assemblies в `FilesRelease`, `UpdateOrthoDrawings/Libraries`, `lib/Excel.dll`, `lib/ICSharpCode.SharpZipLib.dll`. Office automation в актуальном исходном комплекте не доказана. Риск 2026 — API/binary binding, x64, assembly load order и внутренние Ortho assemblies.
|
||||
@@ -0,0 +1,7 @@
|
||||
# Drawing modifications
|
||||
|
||||
Исходник содержит многочисленные `StartTransaction`, `OpenMode.ForWrite`, `UpgradeOpen`, `AppendEntity`, `Erase`, `SetXData`, `BlockReference`, `AttributeReference`, `MLeader`, `MText`, `DBText`, `Table` и `Viewport`. Полный агрегированный список — `evidence/drawing-write-operations.csv`.
|
||||
|
||||
Из этого следует подтверждённая возможность записи DWG. Прямой записи DCF или `Project.xml` статическим поиском не доказано; DataLinks/PnP operations могут менять связанные данные как побочный эффект и требуют runtime/golden проверок. Для каждой операции transaction обычно используется, но единый undo scope пакетного действия не гарантирован.
|
||||
|
||||
Риск частичной записи: исключение после части transaction/между несколькими открытыми drawings, особенно в batch update. Следующий шаг — disposable test project, сравнение before/after и проверка восстановления/rollback.
|
||||
@@ -0,0 +1,5 @@
|
||||
# Error handling
|
||||
|
||||
Загрузчик использует MessageBox и `finally` для восстановления `FILEDIA`/`CMDECHO` (`OrthoLoader/Loader.cs:62-100`). Команды содержат многочисленные `try/catch`, включая пустые catch при получении drawing id (`OrthoAutoAnnotate/Commands.cs:360-366`, `6474-6480`). Это повышает риск silent failure и неполного результата.
|
||||
|
||||
Классы риска: WRONG_ANNOTATION, DUPLICATE_ANNOTATION, UI_FREEZE в batch, RESOURCE_LEAK при открытии нескольких drawings, SILENT_FAILURE из пустых catch, частичная запись DWG/связей. Нужны structured error/result, cancellation, progress и тесты исключений.
|
||||
@@ -0,0 +1,5 @@
|
||||
# Event handlers and automatic calls
|
||||
|
||||
Найдены `ComponentManager.ItemInitialized`, `PlantApplication.CurrentProjectOpenedEvent`, `AssemblyResolve`, WinForms UI events и временные `Editor.PointMonitor`. `Ribbon.cs:153-172` показывает subscribe/unsubscribe для Ribbon item, но `Ribbon.Terminate()` пуст (`Ribbon.cs:147-149`); project-open handler явно не отписывается. В `AnnotateLineNumbers/Commands.cs:1017-1044` PointMonitor отписывается в рамках операции.
|
||||
|
||||
Статически не подтверждены обработчики `CommandWillStart`, `ObjectModified`, `ObjectAppended`, `Idle`, которые автоматически аннотируют каждый объект. Поэтому нельзя объяснить 218 796 как event storm по этому исходнику. Риск повторной подписки на project-open event и UI re-entry сохраняется.
|
||||
@@ -0,0 +1,5 @@
|
||||
SourceRoot=C:\dev\autodesk\link\P_Rec_Annot\v1.0.4\repo
|
||||
FileCount=271
|
||||
ProjectCount=25
|
||||
SourceCodeFileCount=120
|
||||
ReadOnlyAnalysis=TRUE
|
||||
@@ -0,0 +1,50 @@
|
||||
"File","Line","Command","Flags","Class","Method","Purpose","Selection","PlantProject","ReadsDrawing","WritesDrawing","Telemetry"
|
||||
"AnnotateLineNumbers\Commands.cs","705","PXP-ESN",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"AnnotateLineNumbers\Commands.cs","845","PXP-ELN",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"AnnotateLineNumbers\Commands.cs","1655","PXP-RMP",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"AnnotateLineNumbers\Commands.cs","1709","PXP-LN",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"AnnotateLineNumbers\Commands.cs","2439","PXP-ULN",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"AutoAnnotateView\Commands.cs","546","PXP-AAV",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"AutoElevation\Commands.cs","404","PXP-AE",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"AutoLinenumberConnections\Commands.cs","882","PXP-ALC",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"CheckOrthoView\Commands.cs","156","PXP-COV",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"ExtentsIntersect\Commands.cs","17","PXP-GIT",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"InsertElevation\Commands.cs","1040","PXP-IE",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"OrthoAutoAnnotate\Commands.cs","336","PXP-OSI","CommandFlags.Session","see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"OrthoAutoAnnotate\Commands.cs","795","PXP-DJ",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"OrthoAutoAnnotate\Commands.cs","1308","PXP-RA",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"OrthoAutoAnnotate\Commands.cs","6444","PXP-OA",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"P3DNewMa\Commands.cs","17","mto-ma",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"P3DNewMa\NewMaControl.cs","176","CAC1",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"P3DNewMa\NewMaControl.cs","1047","mto-ma1",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"PHPAnnotations\PHPAnnotations.cs","164","PXP-MA","CommandFlags.Redraw | CommandFlags.UsePickSet","see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"PHPAnnotations\PHPAnnotations.cs","287","CAC",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"PHPAnnotations\PHPAnnotations.cs","1701","CreateAnnotationCommand",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"PHPAnnotations\PHPBlockJig.cs","209","BJ",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"SwapAttributesMenuItem\Commands.cs","40","PXP-AC","CommandFlags.UsePickSet","see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"UpdateOrthoDrawings\Commands.cs","519","PXP-IOD","CommandFlags.Session","see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"UpdateOrthoViewBlocks\Commands.cs","585","PXP-UOB",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Class1.cs","139","TestEntityJigger15",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","167","PXP-LN",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","783","PointMonitorSelection",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","902","KA",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","162","PXP-LN",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","679","PointMonitorSelection",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","798","KA",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","168","PXP-LN",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","679","PointMonitorSelection",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","798","KA",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","230","attbackgrhide","CommandFlags.UsePickSet","see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","274","PXP-TEST",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","340","PXP-RMP",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","355","PXP-LN",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия.cs","118","PXP-LN",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","162","PXP-LN",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","679","PointMonitorSelection",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","798","KA",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","168","PXP-LN",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","679","PointMonitorSelection",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","798","KA",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\LineNumberMarker - копия.cs","488","BJ",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\Commands.cs","1044","PXP-IE",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
"_archive\2019_PHPAnnotations\2019_PHPAnnotations\Class1.cs","20","MyCreateAnnotation",,"see source","see source","registered AutoCAD command","unknown","verify body","yes","unknown","not evidenced"
|
||||
|
@@ -0,0 +1,37 @@
|
||||
"File","Line","KeyOrFile","Purpose","Risk"
|
||||
"AnnotateLineNumbers\XMLFile.cs","31"," XDocument xDocument = XDocument.Load(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + ""\\Settings.xml"");","configuration/deployment","path coupling"
|
||||
"AutoAnnotateView\ViewPorts.cs","1058"," // dDatabaseSource.ReadDwgFile(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + ""\\Template.dwg"", System.IO.FileShare.Read, true, """");","configuration/deployment","path coupling"
|
||||
"AutoAnnotateView\XMLFile.cs","21"," XDocument xDocument = XDocument.Load(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + ""\\Settings.xml"");","configuration/deployment","path coupling"
|
||||
"AutoAnnotateView\XMLFile.cs","61"," // Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + ""\\Settings.xml"" +","configuration/deployment","path coupling"
|
||||
"AutoElevation\Annotations.cs","613"," // dDatabaseSource.ReadDwgFile(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + ""\\Template.dwg"", System.IO.FileShare.Read, true, """");","configuration/deployment","path coupling"
|
||||
"AutoElevation\Commands.cs","171"," // dDatabaseSource.ReadDwgFile(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + ""\\Template.dwg"", System.IO.FileShare.Read, true, """");","configuration/deployment","path coupling"
|
||||
"AutoElevation\XMLFile.cs","21"," XDocument xDocument = XDocument.Load(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + ""\\Settings.xml"");","configuration/deployment","path coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2013"," // dDatabaseSource.ReadDwgFile(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + ""\\Template.dwg"", System.IO.FileShare.Read, true, """");","configuration/deployment","path coupling"
|
||||
"AutoLinenumberConnections\XMLFile.cs","21"," XDocument xDocument = XDocument.Load(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + ""\\Settings.xml"");","configuration/deployment","path coupling"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","179"," string path_settings = path_Result + ""\\annotation_settings.xml"";","configuration/deployment","path coupling"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","209"," string path_users_indexes = path_Result + ""\\users_indexes_list.xml"";","configuration/deployment","path coupling"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","237"," error_message = ""В файле users_indexes_list.xml указан некорректный индекс.\n"" +","configuration/deployment","path coupling"
|
||||
"GetPlantScriptFolderPath\Commands.cs","27"," XDocument xDocument = XDocument.Load(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + ""\\Settings.xml"");","configuration/deployment","path coupling"
|
||||
"InsertElevation\Commands.cs","688"," // dDatabaseSource.ReadDwgFile(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + ""\\Template.dwg"", System.IO.FileShare.Read, true, """");","configuration/deployment","path coupling"
|
||||
"InsertElevation\Commands.cs","808"," // dDatabaseSource.ReadDwgFile(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + ""\\Template.dwg"", System.IO.FileShare.Read, true, """");","configuration/deployment","path coupling"
|
||||
"InsertElevation\XMLFile.cs","21"," XDocument xDocument = XDocument.Load(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + ""\\Settings.xml"");","configuration/deployment","path coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","236"," static string sBlocksDWGSourceFileName = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + ""\\Template.dwg"";","configuration/deployment","path coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","629"," // dDatabaseSource.ReadDwgFile(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + ""\\Template.dwg"", FileShare.Read, true, """");","configuration/deployment","path coupling"
|
||||
"OrthoAutoAnnotate\XMLFile.cs","28"," XDocument xDocument = XDocument.Load(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + ""\\Settings.xml"");","configuration/deployment","path coupling"
|
||||
"OrthoAutoAnnotate\XMLFile.cs","164"," Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + ""\\Settings.xml"" +","configuration/deployment","path coupling"
|
||||
"OrthoLoader\Loader.cs","111"," XDocument xDocument = XDocument.Load(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + ""\\Settings.xml"");","configuration/deployment","path coupling"
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\Commands.cs","27"," // из чертежа-шаблона ""Template.dwg"" ","configuration/deployment","path coupling"
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\Commands.cs","39"," // из чертежа-шаблона ""Template.dwg"" ","configuration/deployment","path coupling"
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\Commands.cs","44"," // перегрузка workPath: путь до папки с файлом настроек Settings.xml и файлом-источником Template.dwg","configuration/deployment","path coupling"
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\CopyObjects.cs","146"," dDatabaseSource.ReadDwgFile(workPath + ""\\Template.dwg"", FileShare.Read, true, """");","configuration/deployment","path coupling"
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\XMLFile.cs","21"," XDocument xDocument = XDocument.Load(workPath + ""\\Settings.xml"");","configuration/deployment","path coupling"
|
||||
"P3DNewMa\XMLFile.cs","17"," XDocument xDocument = XDocument.Load(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + ""\\Settings.xml"");","configuration/deployment","path coupling"
|
||||
"UpdateOrthoViewBlocks\XMLFile.cs","23"," System.Reflection.Assembly.GetExecutingAssembly().Location) + ""\\Settings.xml"");","configuration/deployment","path coupling"
|
||||
"UpdateOrthoViewBlocks\XMLFile.cs","30"," // оставляем только один вариант настройки в [Settings.xml]","configuration/deployment","path coupling"
|
||||
"UpdateOrthoViewBlocks\XMLFile.cs","31"," // сам файл [Settings.xml] в каждом проекте свой","configuration/deployment","path coupling"
|
||||
"UpdateOrthoViewBlocks\XMLFile.cs","34"," // прямо в файл [Settings.xml] проекта","configuration/deployment","path coupling"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\Commands.cs","692"," // dDatabaseSource.ReadDwgFile(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + ""\\Template.dwg"", System.IO.FileShare.Read, true, """");","configuration/deployment","path coupling"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\Commands.cs","812"," // dDatabaseSource.ReadDwgFile(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + ""\\Template.dwg"", System.IO.FileShare.Read, true, """");","configuration/deployment","path coupling"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\XMLFile.cs","21"," XDocument xDocument = XDocument.Load(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + ""\\Settings.xml"");","configuration/deployment","path coupling"
|
||||
"_archive\2019_UpdateOrthoDrawings\2019_UpdateOrthoDrawings\XMLFile.cs","17"," XDocument xDocument = XDocument.Load(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + ""\\Settings.xml"");","configuration/deployment","path coupling"
|
||||
"_archive\2019_UpdateOrthoDrawings\2019_UpdateOrthoDrawings\XMLFile.cs","61"," Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + ""\\Settings.xml"" +","configuration/deployment","path coupling"
|
||||
|
@@ -0,0 +1,439 @@
|
||||
"File","Line","Database","Table","Operation","ReadOrWrite","Risk"
|
||||
"AnnotateLineNumbers\Commands.cs","83","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"AnnotateLineNumbers\Commands.cs","85","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"AnnotateLineNumbers\Commands.cs","1170","Plant PnP/DCF","PnPDatalinks","access","read/unknown","version/API coupling"
|
||||
"AnnotateLineNumbers\Commands.cs","1172","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"AnnotateLineNumbers\Commands.cs","1175","Plant PnP/DCF","PnPDatalinks","access","read/unknown","version/API coupling"
|
||||
"AnnotateLineNumbers\Commands.cs","1202","Plant PnP/DCF","PnPDatalinks","access","read/unknown","version/API coupling"
|
||||
"AnnotateLineNumbers\Commands.cs","1205","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"AnnotateLineNumbers\Commands.cs","1205","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"AnnotateLineNumbers\Commands.cs","1235","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"AnnotateLineNumbers\Commands.cs","1631","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"AnnotateLineNumbers\Commands.cs","1632","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"AnnotateLineNumbers\Commands.cs","1634","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"AnnotateLineNumbers\Commands.cs","1635","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"AnnotateLineNumbers\Commands.cs","2404","Plant PnP/DCF","PnPDatalinks","access","read/unknown","version/API coupling"
|
||||
"AnnotateLineNumbers\Commands.cs","2405","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"AnnotateLineNumbers\Commands.cs","2592","Plant PnP/DCF","PnPDrawings","read","read/unknown","version/API coupling"
|
||||
"AnnotateLineNumbers\Commands.cs","2599","Plant PnP/DCF","PnPDrawings","access","read/unknown","version/API coupling"
|
||||
"AnnotateLineNumbers\Commands.cs","2601","Plant PnP/DCF","PnPDrawings","read","read/unknown","version/API coupling"
|
||||
"AutoAnnotateView\Commands.cs","43","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"AutoAnnotateView\Commands.cs","45","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"AutoAnnotateView\Commands.cs","182","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"AutoAnnotateView\Commands.cs","183","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"AutoAnnotateView\Commands.cs","185","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"AutoAnnotateView\Commands.cs","186","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"AutoAnnotateView\ViewPorts.cs","341","Plant PnP/DCF","PnPDrawings","read","read/unknown","version/API coupling"
|
||||
"AutoAnnotateView\ViewPorts.cs","1304","Plant PnP/DCF","PnPDatalinks","access","read/unknown","version/API coupling"
|
||||
"AutoAnnotateView\ViewPorts.cs","1305","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"AutoAnnotateView\ViewPorts.cs","1323","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"AutoAnnotateView\ViewPorts.cs","1326","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"AutoAnnotateView\ViewPorts.cs","1344","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"AutoAnnotateView\ViewPorts.cs","1444","Plant PnP/DCF","PnPDatalinks","access","read/unknown","version/API coupling"
|
||||
"AutoElevation\Annotations.cs","292","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"AutoElevation\Annotations.cs","294","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"AutoElevation\Commands.cs","41","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"AutoElevation\Commands.cs","43","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"AutoElevation\Commands.cs","343","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"AutoElevation\Commands.cs","344","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"AutoElevation\Commands.cs","346","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"AutoElevation\Commands.cs","347","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","101","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","103","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","291","Plant PnP/DCF","PnPDrawings","access","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","292","Plant PnP/DCF","PnPDrawings","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","596","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","618","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","627","Plant PnP/DCF","P3dPartConnection","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","628","Plant PnP/DCF","P3dPartConnection","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","634","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","634","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","635","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","635","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","678","Plant PnP/DCF","PnPDrawings","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","682","Plant PnP/DCF","PnPDrawings","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","1255","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","1277","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","1285","Plant PnP/DCF","P3dPartConnection","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","1286","Plant PnP/DCF","P3dPartConnection","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","1291","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","1291","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","1292","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","1292","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","1333","Plant PnP/DCF","PnPDrawings","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","1336","Plant PnP/DCF","PnPDrawings","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2074","Plant PnP/DCF","P3dPartConnection","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2075","Plant PnP/DCF","P3dPartConnection","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2077","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2082","Plant PnP/DCF","P3dPartConnection","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2083","Plant PnP/DCF","P3dPartConnection","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2088","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2088","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2093","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2103","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2103","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2108","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2116","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2121","Plant PnP/DCF","P3dPartConnection","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2122","Plant PnP/DCF","P3dPartConnection","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2127","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2127","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2132","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2143","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2143","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2148","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2161","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2162","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2164","Plant PnP/DCF","P3dLineGroup","access","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2165","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2165","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2166","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2178","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2179","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2180","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2285","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2285","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2286","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2286","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2287","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2288","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2289","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2290","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2291","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2410","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2411","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2413","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"AutoLinenumberConnections\Commands.cs","2414","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"CheckOrthoView\CheckOrthoView.cs","161","Plant PnP/DCF","PnPDrawings","access","read/unknown","version/API coupling"
|
||||
"CheckOrthoView\CheckOrthoView.cs","162","Plant PnP/DCF","PnPDrawings","read","read/unknown","version/API coupling"
|
||||
"CheckOrthoView\CheckOrthoView.cs","188","Plant PnP/DCF","PnPDatalinks","access","read/unknown","version/API coupling"
|
||||
"CheckOrthoView\CheckOrthoView.cs","189","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"CheckOrthoView\Commands.cs","35","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"CheckOrthoView\Commands.cs","37","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"CheckOrthoView\Commands.cs","91","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"CheckOrthoView\Commands.cs","92","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"CheckOrthoView\Commands.cs","94","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"CheckOrthoView\Commands.cs","95","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"CheckOrthoView\Commands.cs","181","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"CheckOrthoView\Commands.cs","182","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","17","Plant PnP/DCF","PnPDatalinks","access","read/unknown","version/API coupling"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","33","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","57","Plant PnP/DCF","DataLinksManager","read","read/unknown","version/API coupling"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","66","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","66","Plant PnP/DCF","P3dLineGroup","access","read/unknown","version/API coupling"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","67","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","68","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","68","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","69","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","74","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","82","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","98","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","362","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","366","Plant PnP/DCF","P3dLineGroup","access","read/unknown","version/API coupling"
|
||||
"InsertElevation\Commands.cs","536","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"InsertElevation\Commands.cs","538","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"InsertElevation\Commands.cs","980","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"InsertElevation\Commands.cs","981","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"InsertElevation\Commands.cs","983","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"InsertElevation\Commands.cs","984","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","192","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","194","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","1122","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","1123","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","1125","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","1126","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","1574","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","1575","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","1813","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","1814","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","1911","Plant PnP/DCF","P3dPartConnection","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","1941","Plant PnP/DCF","P3dPartConnection","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","1965","Plant PnP/DCF","PnPDatalinks","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","1966","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","1987","Plant PnP/DCF","P3dPartConnection","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","2109","Plant PnP/DCF","P3dPartConnection","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","2141","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","2142","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","2185","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","2186","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","2193","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","2214","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","2235","Plant PnP/DCF","P3dPartConnection","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","2248","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","2260","Plant PnP/DCF","P3dPartConnection","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","2276","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","2277","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","2304","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","2410","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","2923","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","2924","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","2933","Plant PnP/DCF","P3dPartConnection","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","2939","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","2942","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","2943","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","2951","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","2954","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","2955","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","3280","Plant PnP/DCF","P3dPartConnection","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","3288","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","3297","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","3305","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","3579","Plant PnP/DCF","P3dPartConnection","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","3586","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","3595","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","3632","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","3633","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","3858","Plant PnP/DCF","P3dPartConnection","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","3891","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","3892","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","4060","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","4061","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","4681","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","4682","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","4984","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","4985","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","5552","Plant PnP/DCF","PnPDrawings","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","5553","Plant PnP/DCF","PnPDrawings","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","5561","Plant PnP/DCF","PnPDatalinks","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","5563","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","5570","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","5575","Plant PnP/DCF","PnPDatalinks","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","5576","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","5581","Plant PnP/DCF","P3dPartConnection","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","5582","Plant PnP/DCF","P3dPartConnection","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","5602","Plant PnP/DCF","P3dPartConnection","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","5613","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","5614","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","5616","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","5634","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","5657","Plant PnP/DCF","PnPDatalinks","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","5658","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","5693","Plant PnP/DCF","PnPDatalinks","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","5694","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","5702","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","5703","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","5706","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","5916","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","6058","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","6070","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","6082","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","6094","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","6106","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","6120","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","6135","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","6149","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","6191","Plant PnP/DCF","PnPDrawings","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","6211","Plant PnP/DCF","PnPDrawings","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","6215","Plant PnP/DCF","PnPDrawings","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","6392","Plant PnP/DCF","PnPDrawings","access","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\Commands.cs","6393","Plant PnP/DCF","PnPDrawings","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\HighlightAndZoomPnPId.cs","161","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"OrthoAutoAnnotate\HighlightAndZoomPnPId.cs","170","Plant PnP/DCF","PnPDrawings","read","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","36","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","37","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","1076","Plant PnP/DCF","PnPDrawings","read","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","1099","Plant PnP/DCF","PnPDrawings","read","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","1446","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","1478","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","1479","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","1587","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","1588","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","1620","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","2230","Plant PnP/DCF","PnPDatalinks","access","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","2231","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","2304","Plant PnP/DCF","PnPDatalinks","access","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","2305","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","2310","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","2345","Plant PnP/DCF","PnPDatalinks","access","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","2346","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","2398","Plant PnP/DCF","PnPDatalinks","access","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","2399","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","2451","Plant PnP/DCF","PnPDatalinks","access","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","2452","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","2457","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","2509","Plant PnP/DCF","PnPDatalinks","access","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","2510","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","2565","Plant PnP/DCF","PnPDatalinks","access","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","2566","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","2611","Plant PnP/DCF","PnPDatalinks","access","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","2612","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","3549","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","3550","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","3551","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","3552","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","3825","Plant PnP/DCF","PnPDrawings","read","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","5714","Plant PnP/DCF","PnPDrawings","read","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","5833","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"P3DNewMa\NewMaControl.cs","5834","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"PHPAnnotations\PHPAnnotations.cs","47","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"PHPAnnotations\PHPAnnotations.cs","75","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"PHPAnnotations\PHPAnnotations.cs","90","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"PHPAnnotations\PHPAnnotations.cs","91","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"PHPAnnotations\PHPAnnotations.cs","1108","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"PHPAnnotations\PHPAnnotations.cs","1109","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"PHPAnnotations\PHPAnnotations.cs","1119","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"PHPAnnotations\PHPAnnotations.cs","1122","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"PHPAnnotations\PHPAnnotations.cs","1499","Plant PnP/DCF","PnPDrawings","read","read/unknown","version/API coupling"
|
||||
"PHPAnnotations\PHPAnnotations.cs","1597","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"PHPAnnotations\PHPAnnotations.cs","1623","Plant PnP/DCF","P3dLineGroupPartRelationship","access","read/unknown","version/API coupling"
|
||||
"PHPAnnotations\PHPAnnotations.cs","1623","Plant PnP/DCF","P3dLineGroup","access","read/unknown","version/API coupling"
|
||||
"PHPAnnotations\PHPAnnotations.cs","1644","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"PHPAnnotations\PHPAnnotations.cs","1706","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"PHPAnnotations\PHPAnnotations.cs","1709","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"PHPAnnotations\PHPAnnotations.cs","1745","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"PHPAnnotations\PHPAnnotations.cs","1748","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"UpdateOrthoDrawings\Commands.cs","156","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"UpdateOrthoDrawings\Commands.cs","159","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"UpdateOrthoDrawings\Commands.cs","217","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"UpdateOrthoDrawings\Commands.cs","218","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"UpdateOrthoDrawings\Commands.cs","241","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"UpdateOrthoDrawings\Commands.cs","242","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"UpdateOrthoDrawings\Commands.cs","326","Plant PnP/DCF","PnPDrawings","read","read/unknown","version/API coupling"
|
||||
"UpdateOrthoDrawings\Commands.cs","334","Plant PnP/DCF","PnPDrawings","access","read/unknown","version/API coupling"
|
||||
"UpdateOrthoDrawings\Commands.cs","336","Plant PnP/DCF","PnPDrawings","read","read/unknown","version/API coupling"
|
||||
"UpdateOrthoDrawings\Commands.cs","627","Plant PnP/DCF","PnPDrawings","access","read/unknown","version/API coupling"
|
||||
"UpdateOrthoDrawings\Commands.cs","628","Plant PnP/DCF","PnPDrawings","read","read/unknown","version/API coupling"
|
||||
"UpdateOrthoDrawings\Commands.cs","1085","Plant PnP/DCF","PnPDrawings","access","read/unknown","version/API coupling"
|
||||
"UpdateOrthoDrawings\Commands.cs","1086","Plant PnP/DCF","PnPDrawings","read","read/unknown","version/API coupling"
|
||||
"UpdateOrthoViewBlocks\Commands.cs","225","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"UpdateOrthoViewBlocks\Commands.cs","291","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"UpdateOrthoViewBlocks\Commands.cs","292","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"UpdateOrthoViewBlocks\Commands.cs","433","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"UpdateOrthoViewBlocks\Commands.cs","434","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"UpdateOrthoViewBlocks\Commands.cs","516","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","81","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","143","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","144","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","384","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","386","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","387","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","387","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","388","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","388","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","389","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","80","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","138","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","139","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","536","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","538","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","539","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","539","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","540","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","540","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","541","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","80","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","144","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","145","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","534","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","536","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","537","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","537","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","538","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","538","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","539","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","68","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","211","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","212","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","702","Plant PnP/DCF","PnPDatalinks","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","703","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","708","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","709","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","711","Plant PnP/DCF","P3dLineGroup","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","712","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","712","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","713","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","725","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","726","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","727","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия.cs","65","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия.cs","94","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия.cs","95","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия.cs","323","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","80","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","138","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","139","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","536","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","538","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","539","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","539","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","540","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","540","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","541","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","80","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","144","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","145","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","534","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","536","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","537","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","537","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","538","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","538","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","539","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","11","Plant PnP/DCF","PnPDatalinks","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","20","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","27","Plant PnP/DCF","DataLinksManager","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","34","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","35","Plant PnP/DCF","P3dLineGroup","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","36","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","37","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","37","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","38","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","42","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","47","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","274","Plant PnP/DCF","P3dPartConnection","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","275","Plant PnP/DCF","P3dPartConnection","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","278","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","284","Plant PnP/DCF","P3dPartConnection","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","285","Plant PnP/DCF","P3dPartConnection","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","292","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","292","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","298","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","311","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","311","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","317","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","327","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","333","Plant PnP/DCF","P3dPartConnection","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","334","Plant PnP/DCF","P3dPartConnection","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","341","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","341","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","347","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","360","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","360","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","366","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","11","Plant PnP/DCF","PnPDatalinks","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","20","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","27","Plant PnP/DCF","DataLinksManager","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","34","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","35","Plant PnP/DCF","P3dLineGroup","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","36","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","37","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","37","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","38","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","42","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","47","Plant PnP/DCF","EngineeringItems","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","271","Plant PnP/DCF","P3dPartConnection","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","272","Plant PnP/DCF","P3dPartConnection","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","275","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","281","Plant PnP/DCF","P3dPartConnection","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","282","Plant PnP/DCF","P3dPartConnection","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","289","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","289","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","295","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","308","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","308","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","314","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","324","Plant PnP/DCF","PnPDatalinks","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","330","Plant PnP/DCF","P3dPartConnection","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","331","Plant PnP/DCF","P3dPartConnection","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","338","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","338","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","344","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","357","Plant PnP/DCF","P3dLineGroupPartRelationship","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","357","Plant PnP/DCF","P3dLineGroup","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","363","Plant PnP/DCF","EngineeringItems","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\Commands.cs","540","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\Commands.cs","542","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\Commands.cs","984","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\Commands.cs","985","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\Commands.cs","987","Plant PnP/DCF","DataLinksManager","access","read/unknown","version/API coupling"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\Commands.cs","988","Plant PnP/DCF","GetPnPDatabase","read","read/unknown","version/API coupling"
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,119 @@
|
||||
"Publisher","Event","Subscriber","Line","Unsubscribe","CallsAnnotation","CanRepeat","Risk"
|
||||
"AutoCAD/Plant/UI","PointMonitor","AnnotateLineNumbers\Commands.cs","1016","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","AnnotateLineNumbers\Commands.cs","1017","unknown","possible","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","AnnotateLineNumbers\Commands.cs","1043","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","AnnotateLineNumbers\Commands.cs","1044","unknown","possible","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","AnnotateLineNumbers\Commands.cs","1436","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","AnnotateLineNumbers\Commands.cs","1441","unknown","possible","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","AnnotateLineNumbers\Commands.cs","1981","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","AnnotateLineNumbers\Commands.cs","1987","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","AnnotateLineNumbers\Commands.cs","1988","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","AnnotateLineNumbers\Commands.cs","1999","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","AnnotateLineNumbers\Commands.cs","2000","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","AnnotateLineNumbers\Commands.cs","2639","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","AnnotateLineNumbers\Commands.cs","2644","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","CurrentProjectOpenedEvent","OrthoLoader\Ribbon.cs","170","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","SystemVariableChanged","P3DNewMa\NewMaControl.cs","96","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","SystemVariableChanged","P3DNewMa\NewMaControl.cs","97","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","SystemVariableChanged","P3DNewMa\NewMaControl.cs","104","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","418","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","427","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","428","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","464","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","465","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","854","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","855","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","881","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","882","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","2658","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","2663","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","2788","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","2892","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","2998","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","3103","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","3208","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","3312","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","5188","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","5189","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","5213","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","5214","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","5337","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","5338","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","5362","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","5363","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","5485","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","5486","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","5510","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","5511","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","5644","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","5645","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","5669","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","5670","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","5950","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","5951","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","5975","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","5976","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","6110","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","6111","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","6135","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","P3DNewMa\NewMaControl.cs","6136","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","246","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","286","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","443","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","783","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","785","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","801","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","803","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","843","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","845","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","853","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","240","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","257","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","369","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","679","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","681","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","697","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","699","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","739","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","741","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","749","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","270","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","304","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","366","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","679","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","681","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","697","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","699","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","739","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","741","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","749","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","520","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","521","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","533","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","546","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","548","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","754","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","764","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия.cs","179","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия.cs","183","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия.cs","233","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","240","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","257","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","369","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","679","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","681","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","697","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","699","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","739","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","741","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","749","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","270","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","304","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","366","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","679","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","681","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","697","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","699","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","739","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","741","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
"AutoCAD/Plant/UI","PointMonitor","_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","749","unknown","unknown","yes/unknown","lifecycle/repeat check"
|
||||
|
@@ -0,0 +1,165 @@
|
||||
"File","Line","ValueMasked","Purpose","Network","Writable","Risk2026"
|
||||
"AnnotateLineNumbers\Commands.cs","2456","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AnnotateLineNumbers\Commands.cs","2759","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"AnnotateLineNumbers\Commands.cs","2769","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"AnnotateLineNumbers\LineNumberList.cs","543","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AnnotateLineNumbers\LineNumberList.cs","641","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AnnotateLineNumbers\LineNumberList.cs","1006","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AnnotateLineNumbers\LineNumberList.cs","1042","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AnnotateLineNumbers\OrthoDrawings.cs","749","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AnnotateLineNumbers\OrthoDrawings.cs","862","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AnnotateLineNumbers\OrthoDrawings.cs","931","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AnnotateLineNumbers\Utils.cs","283","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AnnotateLineNumbers\Utils.cs","378","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AnnotateLineNumbers\Utils.cs","661","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AnnotateLineNumbers\Utils.cs","677","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AnnotateLineNumbers\XMLFile.cs","31","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AutoAnnotateView\Commands.cs","244","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AutoAnnotateView\Commands.cs","779","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"AutoAnnotateView\Commands.cs","789","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"AutoAnnotateView\ViewPorts.cs","519","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AutoAnnotateView\ViewPorts.cs","537","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AutoAnnotateView\ViewPorts.cs","551","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AutoAnnotateView\ViewPorts.cs","1058","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AutoAnnotateView\ViewPorts.cs","1326","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AutoAnnotateView\ViewPorts.cs","1344","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AutoAnnotateView\ViewPorts.cs","1351","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AutoAnnotateView\ViewPorts.cs","1380","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AutoAnnotateView\ViewPorts.cs","1387","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AutoAnnotateView\ViewPorts.cs","1422","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AutoAnnotateView\ViewPorts.cs","1428","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AutoAnnotateView\ViewPorts.cs","1435","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AutoAnnotateView\XMLFile.cs","21","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AutoAnnotateView\XMLFile.cs","61","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AutoElevation\Annotations.cs","613","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AutoElevation\Commands.cs","171","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AutoElevation\Commands.cs","600","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"AutoElevation\Commands.cs","610","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"AutoElevation\XMLFile.cs","21","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AutoLinenumberConnections\Commands.cs","826","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AutoLinenumberConnections\Commands.cs","2013","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"AutoLinenumberConnections\Commands.cs","2432","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"AutoLinenumberConnections\Commands.cs","2442","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"AutoLinenumberConnections\XMLFile.cs","21","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"CheckOrthoView\Commands.cs","257","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"CheckOrthoView\Commands.cs","267","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","167","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","169","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","179","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","209","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"GetPlantScriptFolderPath\Commands.cs","27","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"InsertElevation\Commands.cs","688","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"InsertElevation\Commands.cs","808","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"InsertElevation\Commands.cs","1364","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"InsertElevation\Commands.cs","1374","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"InsertElevation\XMLFile.cs","21","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoAutoAnnotate\Commands.cs","236","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoAutoAnnotate\Commands.cs","629","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoAutoAnnotate\Commands.cs","4432","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoAutoAnnotate\Commands.cs","5312","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoAutoAnnotate\Commands.cs","6744","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"OrthoAutoAnnotate\Commands.cs","6754","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"OrthoAutoAnnotate\XMLFile.cs","28","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoAutoAnnotate\XMLFile.cs","164","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoLoader\Loader.cs","111","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoLoader\Ribbon.cs","36","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoLoader\Ribbon.cs","43","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoLoader\Ribbon.cs","58","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoLoader\Ribbon.cs","59","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoLoader\Ribbon.cs","60","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoLoader\Ribbon.cs","88","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoLoader\Ribbon.cs","89","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoLoader\Ribbon.cs","90","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoLoader\Ribbon.cs","91","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoLoader\Ribbon.cs","92","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoLoader\Ribbon.cs","93","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoLoader\Ribbon.cs","94","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoLoader\Ribbon.cs","105","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoLoader\Ribbon.cs","106","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoLoader\Ribbon.cs","125","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoLoader\Ribbon.cs","126","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoLoader\Ribbon.cs","127","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoLoader\Ribbon.cs","128","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoLoader\Ribbon.cs","136","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoLoader\Ribbon.cs","144","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"OrthoLoader\Ribbon.cs","380","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"OrthoLoader\Ribbon.cs","390","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\CopyObjects.cs","146","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\XMLFile.cs","21","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","1098","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","1347","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","1391","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","1449","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","1481","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","1510","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","1583","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","1590","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","1593","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","1632","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","2730","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","2834","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","2938","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","3044","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","3149","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","3254","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","3358","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","3824","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","3970","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","4011","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","4051","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","5255","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","5404","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","5550","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","5552","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","5709","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","5819","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","5836","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","5839","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","5869","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","6017","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\NewMaControl.cs","6177","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"P3DNewMa\XMLFile.cs","17","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"PHPAnnotations\PHPAnnotations.cs","909","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"PHPAnnotations\PHPAnnotations.cs","910","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"PHPAnnotations\PHPAnnotations.cs","911","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"PHPAnnotations\PHPAnnotations.cs","912","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"PHPAnnotations\PHPAnnotations.cs","921","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"PHPAnnotations\PHPAnnotations.cs","923","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"PHPAnnotations\PHPAnnotations.cs","924","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"PHPAnnotations\PHPAnnotations.cs","978","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"PHPAnnotations\PHPAnnotations.cs","1258","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"PHPAnnotations\PHPAnnotations.cs","1327","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"PHPAnnotations\PHPAnnotations.cs","1358","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"PHPAnnotations\PHPAnnotations.cs","1380","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"PHPAnnotations\PHPAnnotations.cs","1415","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"PHPAnnotations\PHPAnnotations.cs","1442","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"PHPAnnotations\PHPAnnotations.cs","1498","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"PHPAnnotations\PHPAnnotations.cs","1764","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"PHPAnnotations\PHPAnnotations.cs","1784","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"PHPAnnotations\PHPAnnotations.cs","1794","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"SwapAttributesMenuItem\Commands.cs","178","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"SwapAttributesMenuItem\Commands.cs","188","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"UpdateOrthoDrawings\Commands.cs","543","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"UpdateOrthoDrawings\Commands.cs","1004","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"UpdateOrthoDrawings\Commands.cs","1008","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"UpdateOrthoDrawings\Commands.cs","1023","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"UpdateOrthoDrawings\Commands.cs","1136","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"UpdateOrthoDrawings\Commands.cs","1146","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"UpdateOrthoDrawings\OperationProgress.cs","41","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"UpdateOrthoViewBlocks\Commands.cs","680","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"UpdateOrthoViewBlocks\Commands.cs","690","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"UpdateOrthoViewBlocks\XMLFile.cs","23","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\LineNumberList - копия.cs","346","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\LineNumberList - копия.cs","421","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\LineNumberList - копия.cs","487","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\LineNumberList - копия.cs","633","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\LineNumberList - копия.cs","637","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","84","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","84","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\Commands.cs","692","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\Commands.cs","812","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\Commands.cs","1368","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\Commands.cs","1378","<path redacted>","hard-coded path","no","unknown","review"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\XMLFile.cs","21","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"_archive\2019_UpdateOrthoDrawings\2019_UpdateOrthoDrawings\XMLFile.cs","17","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
"_archive\2019_UpdateOrthoDrawings\2019_UpdateOrthoDrawings\XMLFile.cs","61","<path redacted>","hard-coded path","yes","unknown","review"
|
||||
|
@@ -0,0 +1,272 @@
|
||||
"RelativePath","Extension","SizeBytes","LastWriteTime","Sha256","Classification"
|
||||
".editorconfig",".editorconfig","1154","2024-12-13T10:41:34.0000000+03:00","91579407CC1BF063A08E286BDEB02EE2836978AB0F247B9D66E6D73063D226AF","data/other"
|
||||
".gitattributes",".gitattributes","1663","2024-12-13T10:41:34.0000000+03:00","AD78EDB5DFD7802DC618E3586DA0DCEFD2A4F311A64A359CC16398DCD06025C9","data/other"
|
||||
".gitignore",".gitignore","6691","2024-12-13T10:41:34.0000000+03:00","8C9C0295BD5EC252C29DD594776F306E60362DBFA357342E219EB6D357B09B16","data/other"
|
||||
"CHANGELOG.md",".md","7368","2024-12-13T10:41:34.0000000+03:00","030F5E89D0570D34E6047F592A2C389CC74DED906B12ACAD5745875BF7623F06","data/other"
|
||||
"P_Rec_Annot.sln",".sln","15727","2024-12-13T10:41:34.0000000+03:00","8C6B34F53ABA8B3628BECD3678B6AA7B4BB295F6C261BF7AAA9FC1BEE0C646F7","project/config"
|
||||
"README.md",".md","7110","2024-12-13T10:41:34.0000000+03:00","8CA7925F1911537BFB0BCEAC6D5CFC0B5B8B4A3A6E15A810F89C4DB8B095BD09","data/other"
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj",".csproj","6945","2024-12-13T10:41:34.0000000+03:00","6755BE78B5EB1CF3A88D008A46C9CE9DE504F637CDEE77981CBAF6CBC7BDB378","project/config"
|
||||
"AnnotateLineNumbers\ArxImports.cs",".cs","2291","2024-12-13T10:41:34.0000000+03:00","D8723EE15525950B9020AAA6E1296919BEB22D5BF825D729D68FE82EDEBA28EB","source"
|
||||
"AnnotateLineNumbers\CheckResults.cs",".cs","22873","2024-12-13T10:41:34.0000000+03:00","7C84D69FFD865ACC026195F774409170CB6B9F4602FD921A4F809EFED763CC1F","source"
|
||||
"AnnotateLineNumbers\CheckResults.Designer.cs",".cs","6820","2024-12-13T10:41:34.0000000+03:00","EB925164B219545379974C1C58A629043BDC44A1C0711004C21F551AA6429DA4","source"
|
||||
"AnnotateLineNumbers\CheckResults.resx",".resx","12829","2024-12-13T10:41:34.0000000+03:00","3FB0758FBDBE178B1794E446CA50637192F21A55498E91F66E57F5C6B2356B36","ui/resource"
|
||||
"AnnotateLineNumbers\Commands.cs",".cs","173778","2024-12-13T10:41:34.0000000+03:00","91BA6E1F095E6F846459A721AD84EEFA44495117724465721D4E77851456FD59","source"
|
||||
"AnnotateLineNumbers\LineNumberList.cs",".cs","78210","2024-12-13T10:41:34.0000000+03:00","88773296C0AF4AF4A55564B02E309DB3E0632816F38A5EE7D16B5044093949B9","source"
|
||||
"AnnotateLineNumbers\LineNumberMarker.cs",".cs","25092","2024-12-13T10:41:34.0000000+03:00","8FA0E1AC7DBA024AB9493D13DDB6638A409B6A4DFA5F1C6849A843B5658FC71B","source"
|
||||
"AnnotateLineNumbers\LN.jpg",".jpg","887","2024-12-13T10:41:34.0000000+03:00","EF21F64D179E1B6271824821DB7CA7CA8006FC2D3241D01EA2018811B7B177B1","ui/resource"
|
||||
"AnnotateLineNumbers\OrthoDrawings.cs",".cs","56672","2024-12-13T10:41:34.0000000+03:00","C79795533271B339E2467F7720EF4C1E8DD76C5AF740B26043456174934FA7F2","source"
|
||||
"AnnotateLineNumbers\SelectDrawings.cs",".cs","3029","2024-12-13T10:41:34.0000000+03:00","0A652A3A980EA8E497CD305CFFB01E58C3AFD098341DC85EA2F2872B8669E859","source"
|
||||
"AnnotateLineNumbers\SelectDrawings.Designer.cs",".cs","6521","2024-12-13T10:41:34.0000000+03:00","E82E5125D41505476B3162C180E5A111BD5A2F3326D56A32C1823EF0A7BE38B9","source"
|
||||
"AnnotateLineNumbers\SelectDrawings.resx",".resx","12505","2024-12-13T10:41:34.0000000+03:00","B970C32FA1863FF2F9052C44BFA526176DE74B12E154B0831FB78C012BD55830","ui/resource"
|
||||
"AnnotateLineNumbers\Utils.cs",".cs","50306","2024-12-13T10:41:34.0000000+03:00","1BD79E8008C7142803C511630E34D4057D563F0360EC24E2F8FD45FCDBD06858","source"
|
||||
"AnnotateLineNumbers\XMLFile.cs",".cs","10103","2024-12-13T10:41:34.0000000+03:00","AAA9F13E021E2987247B6A899B4AAC0CF589C06DD02E8FA8E6504DF618AFC837","source"
|
||||
"AnnotateLineNumbers\Properties\AssemblyInfo.cs",".cs","1501","2024-12-13T10:41:34.0000000+03:00","29293C12D3EE3ED9B68B9E81FD0709368C8E1AF5A201798453191E06106EB643","source"
|
||||
"AnnotateLineNumbers\Properties\Resources.Designer.cs",".cs","3617","2024-12-13T10:41:34.0000000+03:00","7D5142ADDCDB23818C3943043E01B16CA7D840DC89E60F08B0EDB10BCDE1E629","source"
|
||||
"AnnotateLineNumbers\Properties\Resources.resx",".resx","6443","2024-12-13T10:41:34.0000000+03:00","B5445CBFFA4AFA742BFDEB8FAB1706E3CDE5EEBEB56ECF073B68957E0CB94247","ui/resource"
|
||||
"AnnotateLineNumbers\Resources\drawing.png",".png","298","2024-12-13T10:41:34.0000000+03:00","7A6AC1F97278F8E79D9DAE52DB7D9833C516F6E5FCF554508A01323736542154","ui/resource"
|
||||
"AnnotateLineNumbers\Resources\folder.png",".png","210","2024-12-13T10:41:34.0000000+03:00","87E56D1EDDEA45CE0588CF848406F981BAAE7713717B9FFAAB40881546836863","ui/resource"
|
||||
"AutoAnnotateView\ArxImports.cs",".cs","1211","2024-12-13T10:41:34.0000000+03:00","6251A1C19599444EC4617965B47B39C1C7AE909CF294D6D4754560E83CC22A72","source"
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj",".csproj","5351","2024-12-13T10:41:34.0000000+03:00","6AAD00298D36AB118F8A611AE9E27175F0D15B6E93420ACBF4BA54BE0D910A21","project/config"
|
||||
"AutoAnnotateView\Commands.cs",".cs","49015","2024-12-13T10:41:34.0000000+03:00","4B22A43CE772309AFCAF41D59BACC4734C7F34D7D6EC76BA6F914FD78628F98A","source"
|
||||
"AutoAnnotateView\SelectAnnotationsToUpdate.cs",".cs","1582","2024-12-13T10:41:34.0000000+03:00","3B387F93287BE2AB84D9003E6AE78944192A5F8C896135AA21573C73F342C649","source"
|
||||
"AutoAnnotateView\SelectAnnotationsToUpdate.Designer.cs",".cs","7368","2024-12-13T10:41:34.0000000+03:00","9E15FCE6D0025EC857246FD473437B6017084CC671390BFFB0A75F9DA6A0B1A9","source"
|
||||
"AutoAnnotateView\SelectAnnotationsToUpdate.resx",".resx","5817","2024-12-13T10:41:34.0000000+03:00","4363CD7D5B8671C72442CE1A1BFC10D64EBD24B2D718B54BD4FCD025E4967298","ui/resource"
|
||||
"AutoAnnotateView\ViewPorts.cs",".cs","97633","2024-12-13T10:41:34.0000000+03:00","874EAD5EC8F92D626F55143534B9E572C810AC0EEAFC1A0CD0C53492E04ED0A6","source"
|
||||
"AutoAnnotateView\XMLFile.cs",".cs","4374","2024-12-13T10:41:34.0000000+03:00","2F0DD0AACD69B24E0BEA693F02C6837723C61C18B7BECF79AC21D8DF6DDFFC7E","source"
|
||||
"AutoAnnotateView\Properties\AssemblyInfo.cs",".cs","1495","2024-12-13T10:41:34.0000000+03:00","0E7808712B45F7E7EC5ADADEBD21243E89544844627477BA8FAECB4127794499","source"
|
||||
"AutoElevation\Annotations.cs",".cs","45868","2024-12-13T10:41:34.0000000+03:00","C8558FBBDEEA72322816601CC97B16326F72269BD085F23268F6813FEB4B7E32","source"
|
||||
"AutoElevation\ArxImports.cs",".cs","1198","2024-12-13T10:41:34.0000000+03:00","4E135D772B855E3F5B9A80FCDE7F18C1E6A4B2B03056E4A1452C9E8C7B0A3BC5","source"
|
||||
"AutoElevation\AutoElevation.csproj",".csproj","5609","2024-12-13T10:41:34.0000000+03:00","086F17ECED970E2E028283343C037F41C9949FFDEAA9C406952A62AB9E902AF7","project/config"
|
||||
"AutoElevation\Commands.cs",".cs","35132","2024-12-13T10:41:34.0000000+03:00","206CFE54EC5D0CAC890D0DB9B8F0A0B9C2AF67F508E2F1058C8BC09B974A5EB3","source"
|
||||
"AutoElevation\XMLFile.cs",".cs","3785","2024-12-13T10:41:34.0000000+03:00","088194497E833A39F3BCB0E2D7F2BB7C2B4FC90006D068390D6EDE76CF67318E","source"
|
||||
"AutoElevation\Properties\AssemblyInfo.cs",".cs","1489","2024-12-13T10:41:34.0000000+03:00","6002ED0209919EF12328DB3B7437605B800382B0ACD31D483EF5FC5DCB4AF5A6","source"
|
||||
"AutoLinenumberConnections\ArxImports.cs",".cs","1926","2024-12-13T10:41:34.0000000+03:00","EE1AD62A04861EBC65C16590F70F208FBF688BC6AB8FD696A7A45356748CDC78","source"
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj",".csproj","5211","2024-12-13T10:41:34.0000000+03:00","3B9427F7E3DED8E28E1BBE8C74B2DE1AC78BE757D18FFF5A2107E4790B88817B","project/config"
|
||||
"AutoLinenumberConnections\Commands.cs",".cs","180443","2024-12-13T10:41:34.0000000+03:00","837D7E138A80C0106E8275571453B9BFB9243504AD6A405E6C1286DB534E6895","source"
|
||||
"AutoLinenumberConnections\XMLFile.cs",".cs","4266","2024-12-13T10:41:34.0000000+03:00","21B71FE3BF0CC7462F994EDFD70A92FD9D0E109FD6C4B1C2921FF74F2A9781EC","source"
|
||||
"AutoLinenumberConnections\Properties\AssemblyInfo.cs",".cs","1513","2024-12-13T10:41:34.0000000+03:00","2A02E1DA20CC09DDEC54ACC995FF95B41C1F76F427FBA1D3A675F29954FF3F5B","source"
|
||||
"CheckOrthoView\ArxImports.cs",".cs","1199","2024-12-13T10:41:34.0000000+03:00","0962B1F8A18BA3099F806F7C7BCDB2E534D7D3D5C76EDCF6321FC8F7DBE6B566","source"
|
||||
"CheckOrthoView\CheckOrthoView.cs",".cs","15817","2024-12-13T10:41:34.0000000+03:00","DF2EFE5C9C2283610C228D278AB03ED6A7BC55A114A2AEEC21FF30141DA5FB0A","source"
|
||||
"CheckOrthoView\CheckOrthoView.csproj",".csproj","4311","2024-12-13T10:41:34.0000000+03:00","3CC579EC4060DE558C73F752917F094D761FA5DF4A208D5E4A0D757BB6E628AC","project/config"
|
||||
"CheckOrthoView\Commands.cs",".cs","14992","2024-12-13T10:41:34.0000000+03:00","70CCFDF61E2D46FD062C649E75900DA592D524AE116DF4EE7F81CF675B7ECDEF","source"
|
||||
"CheckOrthoView\Properties\AssemblyInfo.cs",".cs","1491","2024-12-13T10:41:34.0000000+03:00","5A1FB57CBD150869B0DFE6D41F3681A39FA3681F16F6354A4C351BB0D1D594A5","source"
|
||||
"EnablerLoader\EnablerLoader.cs",".cs","3170","2024-12-13T10:41:34.0000000+03:00","01649BACBAD733D6A655EAE87DC7B3781F62B8B8079409C5AD56A010A657F248","source"
|
||||
"EnablerLoader\EnablerLoader.csproj",".csproj","3115","2024-12-13T10:41:34.0000000+03:00","99A5FC20BD13E491A50361CF6F89BD1593DDDBAC81C90F582EC42EE797915F3A","project/config"
|
||||
"EnablerLoader\Properties\AssemblyInfo.cs",".cs","1489","2024-12-13T10:41:34.0000000+03:00","8B646438A0D870826168DC48F480B54D519DF9D3EA3E5B9152E3D42BEFCE9E71","source"
|
||||
"ExtentsIntersect\Commands.cs",".cs","7245","2024-12-13T10:41:34.0000000+03:00","29EDC0C1FC1DDA546EC1B9E5A1D7E044F413C5628A447EDF80347BBD4CE9FE1A","source"
|
||||
"ExtentsIntersect\ExtentsIntersect.csproj",".csproj","3300","2024-12-13T10:41:34.0000000+03:00","6B0B3241EE38C0019FFB61976125BB606A9E43A090366875E4CF006D0528D84D","project/config"
|
||||
"ExtentsIntersect\Properties\AssemblyInfo.cs",".cs","1495","2024-12-13T10:41:34.0000000+03:00","445B83D172EBA8BF83E465E42E948C266B45C51549D262BA967065C59D068C57","source"
|
||||
"Files\.gitkeep",".gitkeep","0","2024-12-13T10:41:34.0000000+03:00","E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855","data/other"
|
||||
"FilesRelease\AnnotateLineNumbers.dll",".dll","126976","2024-12-13T10:41:34.0000000+03:00","799BC277ED98BD870F01824180B5A945B24F016DFD9956A8CCC630AFE80FDFA4","autodesk/binary"
|
||||
"FilesRelease\AutoAnnotateView.dll",".dll","40960","2024-12-13T10:41:34.0000000+03:00","E625DD3F01DC1B9C578D87FA03C6A5E10607601032CA78B22B8488C02E3D7B77","autodesk/binary"
|
||||
"FilesRelease\AutoElevation.dll",".dll","28160","2024-12-13T10:41:34.0000000+03:00","3980E98D98D507A46212C8E711E11E8569DEB550B76947948BAF85BFB0A44311","autodesk/binary"
|
||||
"FilesRelease\AutoLinenumberConnections.dll",".dll","41472","2024-12-13T10:41:34.0000000+03:00","0F6B2A759F2A63B9152B480B6968BDA20F42AD1D922F67CA6E6BFD31A0715F35","autodesk/binary"
|
||||
"FilesRelease\CheckOrthoView.dll",".dll","14848","2024-12-13T10:41:34.0000000+03:00","89DB5E537C2BAEC292CDD8A0A43819119850119D54958E8CC3C43E2136AB24A0","autodesk/binary"
|
||||
"FilesRelease\EnablerLoader.dll",".dll","6144","2024-12-13T10:41:34.0000000+03:00","745D625C27F92842F2EFF3C515DB48BB9FC0FE59B6E4559ACD696BCC93FF4C51","autodesk/binary"
|
||||
"FilesRelease\ExtentsIntersect.dll",".dll","6656","2024-12-13T10:41:34.0000000+03:00","59D2776E083D4BE2FBFBE4F43009EAA9CE0E81A1752815B45C510F80654169D9","autodesk/binary"
|
||||
"FilesRelease\GetComponentGeometry.dll",".dll","10240","2024-12-13T10:41:34.0000000+03:00","9EA8C48FEC4D36D32CC6AC88B78C434662C16D4484F86EFAA46ECC309E9F9142","autodesk/binary"
|
||||
"FilesRelease\GetComponentGeometry.xml",".xml","1239","2024-12-13T10:41:34.0000000+03:00","70169C3A3AAAFE5A2282E01D5B9B7C99F2F4FF9B7514553434302674ABE46C98","data/other"
|
||||
"FilesRelease\GetLinenumberAnnotationText.dll",".dll","23040","2024-12-13T10:41:34.0000000+03:00","047E721DBE380061D9ABDD92BC5475440E3B7ADB2BD0F544D538BA24B121D30E","autodesk/binary"
|
||||
"FilesRelease\GetPlantScriptFolderPath.dll",".dll","4608","2024-12-13T10:41:34.0000000+03:00","5080A167A1DAF6C19BE08F6CAB678D490736B5E07E121A918A2915F0D9D8BF65","autodesk/binary"
|
||||
"FilesRelease\GetScriptParameters.dll",".dll","6656","2024-12-13T10:41:34.0000000+03:00","7FF7B0D26BE8D89FF4A5A4FA1C6EC17BDA1506BCCB78AFE0E650137CD7BA5E87","autodesk/binary"
|
||||
"FilesRelease\InsertElevation.dll",".dll","24576","2024-12-13T10:41:34.0000000+03:00","9C1690F2D1096603568A979EED162E5C93095634A8205916F7E989FDBE263411","autodesk/binary"
|
||||
"FilesRelease\LoadedAssemblies.dll",".dll","4608","2024-12-13T10:41:34.0000000+03:00","277EB83C587A984DC2F558B8A7C86AA98E195A77AFA6FADD7DB83F2B801C0E4E","autodesk/binary"
|
||||
"FilesRelease\OrthoAutoAnnotate.dll",".dll","104448","2024-12-13T10:41:34.0000000+03:00","70019D38BFEBA60978DEB18C10E4419A2308DEC71D73EB91F1F70CA59ED7503A","autodesk/binary"
|
||||
"FilesRelease\OrthoLoader.dll",".dll","19968","2024-12-13T10:41:34.0000000+03:00","DB56886F2B217487F3EB97A22B6300F8FD4EDAF65DDFC2055E539073ED99D96B","autodesk/binary"
|
||||
"FilesRelease\P3DCopyMissingObjectsToOrthoDrawing.dll",".dll","14336","2024-12-13T10:41:34.0000000+03:00","6C879AFC7F35EC25E5E2FFF9FF0EE6EFEB155670DBFD5D0CDE9A0F629C5727B2","autodesk/binary"
|
||||
"FilesRelease\P3DNewMa.dll",".dll","115712","2024-12-13T10:41:34.0000000+03:00","C15E9626ABA24FB22DF4ABC849970B92F0B79552A77FB2E796CC3EEE87C5F0A6","autodesk/binary"
|
||||
"FilesRelease\P3DSetLayerForViewport.dll",".dll","4608","2024-12-13T10:41:34.0000000+03:00","A28E58FDE4EBAA26450CA646C5A85F98C1A04AA42C0BFC5413D718243ACBF42B","autodesk/binary"
|
||||
"FilesRelease\PHPAnnotations.dll",".dll","69120","2024-12-13T10:41:34.0000000+03:00","816A693F1B775C5506043DD0461055F248D3897E96AC8285DAE29C5B71FFCA73","autodesk/binary"
|
||||
"FilesRelease\Settings.xml",".xml","105735","2024-12-13T10:41:34.0000000+03:00","C1D4D6D38C691826390755C68E2FA2ED9A46B48CC547FBB02186796D96021FFC","data/other"
|
||||
"FilesRelease\SwapAttributesMenuItem.dll",".dll","11264","2024-12-13T10:41:34.0000000+03:00","674C865E34F9C877561E03E2077F7F2C6852C3C8B6A0503ACAA7619F3E80A460","autodesk/binary"
|
||||
"FilesRelease\Template.dwg",".dwg","149935","2024-12-13T10:41:34.0000000+03:00","22CAAD35CE9C55891CF91042ED9B2C23BA4D5A0745AA40D69F41C1F609DAADB3","document/binary"
|
||||
"FilesRelease\UpdateOrthoDrawings.dll",".dll","45568","2024-12-13T10:41:34.0000000+03:00","69FD3ED5996C8DABF111A1FC69F99DBA7C401C5FF2A74C7F855E6912AA03B84F","autodesk/binary"
|
||||
"FilesRelease\UpdateOrthoViewBlocks.dll",".dll","15360","2024-12-13T10:41:34.0000000+03:00","5022D4D66D79E7E7D82F9FCB647DF8E1FE658A4694EB7794E363D5EA5517F5A9","autodesk/binary"
|
||||
"FilesRelease\Справка по работе с палитрой.docx",".docx","850952","2024-12-13T10:41:34.0000000+03:00","870F2181A2BA417FB4EEE92D1A3D2CE560EDBA21CC579FE3F4E7CF9F4B9F2008","document/binary"
|
||||
"FilesRelease\Справка по работе с палитрой.pdf",".pdf","742814","2024-12-13T10:41:34.0000000+03:00","0A7053E3613804B819458082A7F74EDC8FAD0DC4F117AEF8389C1E2D054E6CAB","document/binary"
|
||||
"FilesRelease\ico\button_BJ.png",".png","1235","2024-12-13T10:41:34.0000000+03:00","414F0A23E917D41A82C697B0E9CDDDF9BFCACD1627310BD5717AEA172418AA51","ui/resource"
|
||||
"FilesRelease\ico\button_CAC.png",".png","1943","2024-12-13T10:41:34.0000000+03:00","FA2B8877F8B41C70BA62C737C40374394D6840A53DFE2D0B0F83463C4817C138","ui/resource"
|
||||
"FilesRelease\ico\button_PXP-AAV.png",".png","1905","2024-12-13T10:41:34.0000000+03:00","6AB171963B553B434B5AA4BFBE91993B1782606AAF9B486FA23BB27BC1F0E4AA","ui/resource"
|
||||
"FilesRelease\ico\button_PXP-AC.png",".png","1751","2024-12-13T10:41:34.0000000+03:00","60A6BD62EF3E50BDDCD00D9C281F2399E6C9D42E0C2DAA1742273C0DC48FE9C3","ui/resource"
|
||||
"FilesRelease\ico\button_PXP-AE.png",".png","2001","2024-12-13T10:41:34.0000000+03:00","F1DCF0E908F5AF38CCD13ABA58B824E5B186430414499C0F623C1D5EEAD8DAD7","ui/resource"
|
||||
"FilesRelease\ico\button_PXP-ALC.png",".png","1740","2024-12-13T10:41:34.0000000+03:00","19DB2449B66B95965155E6E3BC313BD52000FE38C95B0FAD90EF07DF53EA9CC9","ui/resource"
|
||||
"FilesRelease\ico\button_PXP-COV.png",".png","2007","2024-12-13T10:41:34.0000000+03:00","529BDD045961C244FBD0DE177B899AF9E7CE0F4506B3463C56D2704B3BF207B5","ui/resource"
|
||||
"FilesRelease\ico\button_PXP-DJ.png",".png","1470","2024-12-13T10:41:34.0000000+03:00","127957752DC2B6573CD2FD9A2791914BA22802E07E9B7E23CD3AE1FFF9E4FFC4","ui/resource"
|
||||
"FilesRelease\ico\button_PXP-ELN.png",".png","1927","2024-12-13T10:41:34.0000000+03:00","DF32E6A465D5C196A17F3F96473315590DF2D71995F63D2D241D7599B62C99BB","ui/resource"
|
||||
"FilesRelease\ico\button_PXP-ESN.png",".png","1636","2024-12-13T10:41:34.0000000+03:00","0F089184CFD428DA3620F9C0AD2DCBFC21B31ED34FA301E8D5D45923783C0CC7","ui/resource"
|
||||
"FilesRelease\ico\button_PXP-IE.png",".png","1885","2024-12-13T10:41:34.0000000+03:00","F1C6373BFAF82E1908AF371D5F21133D27E0B84AFC706A703530855A2046FE43","ui/resource"
|
||||
"FilesRelease\ico\button_PXP-IOD.png",".png","1942","2024-12-13T10:41:34.0000000+03:00","494E90C899A0BB5BB365B0E1452E92A68359610C5A38A37D09F520A39BDB3899","ui/resource"
|
||||
"FilesRelease\ico\button_PXP-LN.png",".png","2024","2024-12-13T10:41:34.0000000+03:00","F3305ED6D266E29FA475D4C8A7DF38D2D2A1776A4CE379B876B6CFA278B2FE5D","ui/resource"
|
||||
"FilesRelease\ico\button_PXP-MA.png",".png","1907","2024-12-13T10:41:34.0000000+03:00","9386249121644DCF4B9C70491F561E8B6E5BAAE87EBB2C76A84E46B10A60C8C3","ui/resource"
|
||||
"FilesRelease\ico\button_PXP-OA.png",".png","1999","2024-12-13T10:41:34.0000000+03:00","EAA2AD7EE5C6B7F3716AF1D7690C76AE59229AE9B6BA02009F5009CD9307F4E8","ui/resource"
|
||||
"FilesRelease\ico\button_PXP-OSI.png",".png","1508","2024-12-13T10:41:34.0000000+03:00","422D10B6EBDD76085CF9C5985391CCA060464B200D6792D604658AAE47F12CEE","ui/resource"
|
||||
"FilesRelease\ico\button_PXP-RA.png",".png","1826","2024-12-13T10:41:34.0000000+03:00","1DB3F39C6CCA4EABE79D81DE6DCF9900649CDC9064F2EBF5E45F9AD849B8317F","ui/resource"
|
||||
"FilesRelease\ico\button_PXP-RMP.png",".png","1759","2024-12-13T10:41:34.0000000+03:00","156026EC6DEB7BDBE720047409E9A25615D650D8634C2F0BAF49A71E27135258","ui/resource"
|
||||
"FilesRelease\ico\button_PXP-ULN.png",".png","1928","2024-12-13T10:41:34.0000000+03:00","B37EBB460691EAA7BC3A91DF05C27FE7CC1F0E9F9D69BDA7703956EAA7AA785C","ui/resource"
|
||||
"FilesRelease\ico\button_PXP-UOB.png",".png","1569","2024-12-13T10:41:34.0000000+03:00","3BC16B9923CCD34CF10F403CD65732B217E255E89539174841E7F30D9DFD2DCD","ui/resource"
|
||||
"GetComponentGeometry\GetComponentGeometry.cs",".cs","18173","2024-12-13T10:41:34.0000000+03:00","A86E56F225F704386ACB3E13AEB16B646EB29202FBFEB5A25D23ED17B9E658B8","source"
|
||||
"GetComponentGeometry\GetComponentGeometry.csproj",".csproj","4919","2024-12-13T10:41:34.0000000+03:00","77207EFAE162733A1ED1CF2592719D62E145547FCB0E000EAAC8A40834D611FF","project/config"
|
||||
"GetComponentGeometry\Properties\AssemblyInfo.cs",".cs","1503","2024-12-13T10:41:34.0000000+03:00","99A54031E3977882A24ECFBFD5D993853F74119FDE6E897F4D20A1D9B47DC7F4","source"
|
||||
"GetLinenumberAnnotationText\F2_Xml.cs",".cs","5429","2024-12-13T10:41:34.0000000+03:00","C33DE1D612E7BC59A9D6B025CCA8182C08E125D8F75499457D904A75CC9E56DA","source"
|
||||
"GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj",".csproj","4412","2024-12-13T10:41:34.0000000+03:00","0FECA68B7453D60838C28DADF27B94DAF5B4C691085C41268B5144629C0F1F00","project/config"
|
||||
"GetLinenumberAnnotationText\Index_Xml.cs",".cs","2156","2024-12-13T10:41:34.0000000+03:00","B5F7E79E3E636BA52D7BB77E56FD5C72E9DE249836311A29D649C811078000CF","source"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs",".cs","41350","2024-12-13T10:41:34.0000000+03:00","B440F0FADEC59F2FDD43FCBDAABC5D629508BC56466EEA273967033B4190F76C","source"
|
||||
"GetLinenumberAnnotationText\Processing_Xml.cs",".cs","5031","2024-12-13T10:41:34.0000000+03:00","06FD4D781F09A299046489335272948E2307D0DAD2751950B4D80229A111379C","source"
|
||||
"GetLinenumberAnnotationText\Properties\AssemblyInfo.cs",".cs","2124","2024-12-13T10:41:34.0000000+03:00","FDF01977657A695602DB09679D8E38D4F26DFFE5602AF2092DCF8B519F4CC700","source"
|
||||
"GetLinenumberAnnotationText\Properties\Resources.Designer.cs",".cs","3465","2024-12-13T10:41:34.0000000+03:00","273713640025B94734F36313273823890B9FBA6303259EE53EF8A235D9491054","source"
|
||||
"GetLinenumberAnnotationText\Properties\Resources.resx",".resx","5817","2024-12-13T10:41:34.0000000+03:00","4363CD7D5B8671C72442CE1A1BFC10D64EBD24B2D718B54BD4FCD025E4967298","ui/resource"
|
||||
"GetPlantScriptFolderPath\Commands.cs",".cs","1072","2024-12-13T10:41:34.0000000+03:00","5A24605C7EEC3F14EDAC7310BC414B6DCB6F1E8CB4CD7F9DF8BB091FDDDCFC92","source"
|
||||
"GetPlantScriptFolderPath\GetPlantScriptFolderPath.csproj",".csproj","3011","2024-12-13T10:41:34.0000000+03:00","96877CED79F6BE7A1B3BF776AEBBAAE237C6A09580A371509C2D76BB3BCB02E1","project/config"
|
||||
"GetPlantScriptFolderPath\Properties\AssemblyInfo.cs",".cs","1511","2024-12-13T10:41:34.0000000+03:00","0399DF6ED28EED87D3CCA6C980B84249595F2C2CDDB3341D507674A82BD62677","source"
|
||||
"GetScriptParameters\GetScriptParameters.cs",".cs","4074","2024-12-13T10:41:34.0000000+03:00","899B6DDECC1461D0AFEB4A5D15B91EE72240358FB8D27EF362DB4D4419C10A86","source"
|
||||
"GetScriptParameters\GetScriptParameters.csproj",".csproj","2599","2024-12-13T10:41:34.0000000+03:00","49401A4BD4620A1FFD736EE7BD341F3AD8A1B1460F9421A037FF77C5311E9285","project/config"
|
||||
"GetScriptParameters\Properties\AssemblyInfo.cs",".cs","1501","2024-12-13T10:41:34.0000000+03:00","680FF1614A7FB07B3F98CB26F9133A899AB7DF635623BD66AD71ADAC54A47FEC","source"
|
||||
"InsertElevation\ArxImports.cs",".cs","1200","2024-12-13T10:41:34.0000000+03:00","4EBFB98999589A71765D29AAF5B61078836E6060046C26B3D69FA404C5A9ACF5","source"
|
||||
"InsertElevation\Commands.cs",".cs","73527","2024-12-13T10:41:34.0000000+03:00","057A9A3123DEFE6358CE8B1D06852E048DB7A6C3D308563BEC4DEB506E210925","source"
|
||||
"InsertElevation\InsertElevation.csproj",".csproj","4496","2024-12-13T10:41:34.0000000+03:00","E9D2C81E14D2349F527987BA3EC9B1F82E16796E13B51A6986DC7CDA2AD8FFBC","project/config"
|
||||
"InsertElevation\XMLFile.cs",".cs","3781","2024-12-13T10:41:34.0000000+03:00","FEFD5410F45CB8E5D888A739F9D7B91126C4041FF12C7BC000D4A6B89781ED23","source"
|
||||
"InsertElevation\Properties\AssemblyInfo.cs",".cs","1493","2024-12-13T10:41:34.0000000+03:00","5959F8AF302F040DA55277FB3C81F6715DE1AA966B8D837FD833D7AD36F85AFA","source"
|
||||
"lib\Excel.dll",".dll","64000","2024-12-13T10:41:34.0000000+03:00","67E0A592F5AABF78E6602F3CEBDEEE9B8D668CF4F928A3E784A3685C9076172C","autodesk/binary"
|
||||
"lib\ICSharpCode.SharpZipLib.dll",".dll","192512","2024-12-13T10:41:34.0000000+03:00","CFC2A838569A48D16A15269BB701DE87B81B3D2BC303BB7C4C3724CC3BBA0C50","autodesk/binary"
|
||||
"LoadedAssemblies\LoadedAssemblies.cs",".cs","1983","2024-12-13T10:41:34.0000000+03:00","ECC1D1925E2274731885E4B0A33553D88DF5CE26F715F53DECDC86417E07CBEA","source"
|
||||
"LoadedAssemblies\LoadedAssemblies.csproj",".csproj","2919","2024-12-13T10:41:34.0000000+03:00","6592FFEFB904C2A6390960073D6B1C5AC10A8323A7F44BF74365F6948F3BAF16","project/config"
|
||||
"LoadedAssemblies\Properties\AssemblyInfo.cs",".cs","1495","2024-12-13T10:41:34.0000000+03:00","20584E02ED3005AE9C767C466B042D05AA1092CA74FB317830C5A0F2292D90EA","source"
|
||||
"OrthoAutoAnnotate\Commands.cs",".cs","543454","2024-12-13T10:41:34.0000000+03:00","7A1D6C65AFC619AB5EF39CB0E65D16E4EA8615712A789709937BB8C2CC9283C9","source"
|
||||
"OrthoAutoAnnotate\DimensionsJig.cs",".cs","29130","2024-12-13T10:41:34.0000000+03:00","C1AA5D7A05F87E35AA414898A1A277678F8CDDB4F78BEDF2E286261003365119","source"
|
||||
"OrthoAutoAnnotate\HighlightAndZoomPnPId.cs",".cs","10918","2024-12-13T10:41:34.0000000+03:00","533FACB562F598B7E8DEDC636F9E91F17858C9A577573A6CC3EF1AC1750743EC","source"
|
||||
"OrthoAutoAnnotate\OrthoAutoAnnotate.csproj",".csproj","4996","2024-12-13T10:41:34.0000000+03:00","BBC3E9A0B32BF79A53FBDAD3F0C2D4A0408EBED99C42941548F17A5EDD0BC623","project/config"
|
||||
"OrthoAutoAnnotate\SulphurSupport.cs",".cs","2646","2024-12-13T10:41:34.0000000+03:00","BED1B60B154BAFC5388EAC8DABA1C72309A5FDB30344C0A8FEFE02F14FF0B380","source"
|
||||
"OrthoAutoAnnotate\XMLFile.cs",".cs","11270","2024-12-13T10:41:34.0000000+03:00","CC0E527AB65B3ECBFA5D0CE8AF82A1968280F2EA0CA492B9C19EB5C3E5394072","source"
|
||||
"OrthoAutoAnnotate\Properties\AssemblyInfo.cs",".cs","1344","2024-12-13T10:41:34.0000000+03:00","137C070DA2C2681CBEAD842E1D35BD2F355282BE1D1F4D2586B3117DB8F6460E","source"
|
||||
"OrthoLoader\Loader.cs",".cs","6996","2024-12-13T10:41:34.0000000+03:00","84503CDA2BD1A0E520E78878AB19786A65AB14193D3FF979463B481EBA42B38F","source"
|
||||
"OrthoLoader\OrthoLoader.csproj",".csproj","3924","2024-12-13T10:41:34.0000000+03:00","5E32F54CA6F6E6EF13EBF23396198F25063DAA2AFE5812DC6F57DAC8B8161E1E","project/config"
|
||||
"OrthoLoader\Ribbon.cs",".cs","29366","2024-12-13T10:41:34.0000000+03:00","10F305AFF461B94F1D58E01E066459EE1D11E3AECC34A4997735A498564C8F61","source"
|
||||
"OrthoLoader\ico\button_BJ.png",".png","1235","2024-12-13T10:41:34.0000000+03:00","414F0A23E917D41A82C697B0E9CDDDF9BFCACD1627310BD5717AEA172418AA51","ui/resource"
|
||||
"OrthoLoader\ico\button_CAC.png",".png","1943","2024-12-13T10:41:34.0000000+03:00","FA2B8877F8B41C70BA62C737C40374394D6840A53DFE2D0B0F83463C4817C138","ui/resource"
|
||||
"OrthoLoader\ico\button_PXP-AAV.png",".png","1905","2024-12-13T10:41:34.0000000+03:00","6AB171963B553B434B5AA4BFBE91993B1782606AAF9B486FA23BB27BC1F0E4AA","ui/resource"
|
||||
"OrthoLoader\ico\button_PXP-AC.png",".png","1751","2024-12-13T10:41:34.0000000+03:00","60A6BD62EF3E50BDDCD00D9C281F2399E6C9D42E0C2DAA1742273C0DC48FE9C3","ui/resource"
|
||||
"OrthoLoader\ico\button_PXP-AE.png",".png","2001","2024-12-13T10:41:34.0000000+03:00","F1DCF0E908F5AF38CCD13ABA58B824E5B186430414499C0F623C1D5EEAD8DAD7","ui/resource"
|
||||
"OrthoLoader\ico\button_PXP-ALC.png",".png","1740","2024-12-13T10:41:34.0000000+03:00","19DB2449B66B95965155E6E3BC313BD52000FE38C95B0FAD90EF07DF53EA9CC9","ui/resource"
|
||||
"OrthoLoader\ico\button_PXP-COV.png",".png","2007","2024-12-13T10:41:34.0000000+03:00","529BDD045961C244FBD0DE177B899AF9E7CE0F4506B3463C56D2704B3BF207B5","ui/resource"
|
||||
"OrthoLoader\ico\button_PXP-DJ.png",".png","1470","2024-12-13T10:41:34.0000000+03:00","127957752DC2B6573CD2FD9A2791914BA22802E07E9B7E23CD3AE1FFF9E4FFC4","ui/resource"
|
||||
"OrthoLoader\ico\button_PXP-ELN.png",".png","1927","2024-12-13T10:41:34.0000000+03:00","DF32E6A465D5C196A17F3F96473315590DF2D71995F63D2D241D7599B62C99BB","ui/resource"
|
||||
"OrthoLoader\ico\button_PXP-ESN.png",".png","1636","2024-12-13T10:41:34.0000000+03:00","0F089184CFD428DA3620F9C0AD2DCBFC21B31ED34FA301E8D5D45923783C0CC7","ui/resource"
|
||||
"OrthoLoader\ico\button_PXP-IE.png",".png","1885","2024-12-13T10:41:34.0000000+03:00","F1C6373BFAF82E1908AF371D5F21133D27E0B84AFC706A703530855A2046FE43","ui/resource"
|
||||
"OrthoLoader\ico\button_PXP-IOD.png",".png","1942","2024-12-13T10:41:34.0000000+03:00","494E90C899A0BB5BB365B0E1452E92A68359610C5A38A37D09F520A39BDB3899","ui/resource"
|
||||
"OrthoLoader\ico\button_PXP-LN.png",".png","2024","2024-12-13T10:41:34.0000000+03:00","F3305ED6D266E29FA475D4C8A7DF38D2D2A1776A4CE379B876B6CFA278B2FE5D","ui/resource"
|
||||
"OrthoLoader\ico\button_PXP-MA.png",".png","1907","2024-12-13T10:41:34.0000000+03:00","9386249121644DCF4B9C70491F561E8B6E5BAAE87EBB2C76A84E46B10A60C8C3","ui/resource"
|
||||
"OrthoLoader\ico\button_PXP-OA.png",".png","1999","2024-12-13T10:41:34.0000000+03:00","EAA2AD7EE5C6B7F3716AF1D7690C76AE59229AE9B6BA02009F5009CD9307F4E8","ui/resource"
|
||||
"OrthoLoader\ico\button_PXP-OSI.png",".png","1508","2024-12-13T10:41:34.0000000+03:00","422D10B6EBDD76085CF9C5985391CCA060464B200D6792D604658AAE47F12CEE","ui/resource"
|
||||
"OrthoLoader\ico\button_PXP-RA.png",".png","1826","2024-12-13T10:41:34.0000000+03:00","1DB3F39C6CCA4EABE79D81DE6DCF9900649CDC9064F2EBF5E45F9AD849B8317F","ui/resource"
|
||||
"OrthoLoader\ico\button_PXP-RMP.png",".png","1759","2024-12-13T10:41:34.0000000+03:00","156026EC6DEB7BDBE720047409E9A25615D650D8634C2F0BAF49A71E27135258","ui/resource"
|
||||
"OrthoLoader\ico\button_PXP-ULN.png",".png","1928","2024-12-13T10:41:34.0000000+03:00","B37EBB460691EAA7BC3A91DF05C27FE7CC1F0E9F9D69BDA7703956EAA7AA785C","ui/resource"
|
||||
"OrthoLoader\ico\button_PXP-UOB.png",".png","1569","2024-12-13T10:41:34.0000000+03:00","3BC16B9923CCD34CF10F403CD65732B217E255E89539174841E7F30D9DFD2DCD","ui/resource"
|
||||
"OrthoLoader\Properties\AssemblyInfo.cs",".cs","1483","2024-12-13T10:41:34.0000000+03:00","3BA048D1ADD87ECBD1EB1D60E6C737B3B81920755B77828C1084B239990B126D","source"
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\Commands.cs",".cs","5914","2024-12-13T10:41:34.0000000+03:00","A3AB868B3DD5FAE9CF374B9409431D7785E9F3E1D7EEB909FF84E47D7219A715","source"
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\CopyObjects.cs",".cs","23350","2024-12-13T10:41:34.0000000+03:00","D9D4DDEC93877CD65C008BB3C34320063DB601CF63836573042140538AA7291B","source"
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\P3DCopyMissingObjectsToOrthoDrawing.csproj",".csproj","3895","2024-12-13T10:41:34.0000000+03:00","70E636B328BBF14650C945855898543F563098F9A7FBF47EB5D57318C1B21871","project/config"
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\XMLFile.cs",".cs","2097","2024-12-13T10:41:34.0000000+03:00","5EEC3947B34240108C498361E625E40B32B4C8B2850184D5B558CFED2CF9400F","source"
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\Properties\AssemblyInfo.cs",".cs","1527","2024-12-13T10:41:34.0000000+03:00","2273D6F54DB31EFA129884F66621A75CA4352D71D3C73C9CAF2AC5F0AFBD0CBA","source"
|
||||
"P3DNewMa\.refsignored",".refsignored","0","2024-12-13T10:41:34.0000000+03:00","E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855","data/other"
|
||||
"P3DNewMa\ARXImports.cs",".cs","1949","2024-12-13T10:41:34.0000000+03:00","F0176472FBA507CFDAF9FE15BA1C05C9722930BC44E6695F074299679A517B84","source"
|
||||
"P3DNewMa\Commands.cs",".cs","532","2024-12-13T10:41:34.0000000+03:00","784ACB7240C55E667160D91563487A8877540689221D7EA7BBBE49E2C9B7A39F","source"
|
||||
"P3DNewMa\EditorExtension.cs",".cs","515","2024-12-13T10:41:34.0000000+03:00","1C0586965D6F3F43E403FBFED2F5F4910EAA1CC26ADAE31F72EFE4BF2D69FD56","source"
|
||||
"P3DNewMa\Extensions.cs",".cs","3075","2024-12-13T10:41:34.0000000+03:00","136921BBEFD42BAF87C168B993B76EB123B5270551A50A8A1A54C6671D761541","source"
|
||||
"P3DNewMa\MewMaPalette.cs",".cs","2022","2024-12-13T10:41:34.0000000+03:00","44FF61D3C142DC1D424ABBC4085093474545CE799FAD358BC85C9A1D32F95918","source"
|
||||
"P3DNewMa\NewMaControl.cs",".cs","374174","2024-12-13T10:41:34.0000000+03:00","2FD74A326834A23778BB528B148B4352015475F9955F137F347D948E49BBAAE8","source"
|
||||
"P3DNewMa\NewMaControl.Designer.cs",".cs","22411","2024-12-13T10:41:34.0000000+03:00","B159C05CC0BC79DF83665BE9E47EECCE10EAD1CD0A83DF3FD44EDCAE392FF94F","source"
|
||||
"P3DNewMa\NewMaControl.resx",".resx","21835","2024-12-13T10:41:34.0000000+03:00","CF838E8CB3A2F89B76EA20D62545ACECE9ABBD47E48454F71B7D544AD6110C85","ui/resource"
|
||||
"P3DNewMa\P3DNewMa.csproj",".csproj","5472","2024-12-13T10:41:34.0000000+03:00","A2A6F225A7B376DE556E1561FA03BC8AED04ECC4A39FE107040EAD9742B6475B","project/config"
|
||||
"P3DNewMa\XMLFile.cs",".cs","3172","2024-12-13T10:41:34.0000000+03:00","0F51989F6C1D522CBB621B71A72DC1AEA95CC6CF8567C570DE8C38D7B5E7F0ED","source"
|
||||
"P3DNewMa\Properties\AssemblyInfo.cs",".cs","1474","2024-12-13T10:41:34.0000000+03:00","2F82DF350FD4AEB3CCDCF04F34D838374A2820F1F9C6A726450C33FDF8007AB7","source"
|
||||
"P3DSetLayerForViewport\Commands.cs",".cs","1096","2024-12-13T10:41:34.0000000+03:00","A0E692C03F9CA1B7517146EE7E94E34A98E69B54FE28BD45BF554083583810A5","source"
|
||||
"P3DSetLayerForViewport\P3DSetLayerForViewport.csproj",".csproj","3412","2024-12-13T10:41:34.0000000+03:00","330DE9D5089E7CEB960172815C06A902ACDD78222FDD7454533187B8554E23A9","project/config"
|
||||
"P3DSetLayerForViewport\Properties\AssemblyInfo.cs",".cs","1507","2024-12-13T10:41:34.0000000+03:00","E31F7720110696842ECF302DA5EFE0A9AF070FD4A43FCCD6BACFF582351C9E2A","source"
|
||||
"PHPAnnotations\PHPAnnotations.cs",".cs","95089","2024-12-13T10:41:34.0000000+03:00","2A897CC8D0DED5820AE442409F8CCCDC019B46EF2466A6B45F57C3E7A927D6ED","source"
|
||||
"PHPAnnotations\PHPAnnotations.csproj",".csproj","4665","2024-12-13T10:41:34.0000000+03:00","ED276F12610076E2C372112E94050FA1DEDE62F57C072834209028AF6D6DEFF1","project/config"
|
||||
"PHPAnnotations\PHPAnnotationsForm.cs",".cs","36321","2024-12-13T10:41:34.0000000+03:00","40613C0A98E67EC441643848BD54FBFC1D4E2B157E6C2C1FF8DD1B30E9D4C926","source"
|
||||
"PHPAnnotations\PHPAnnotationsForm.Designer.cs",".cs","31207","2024-12-13T10:41:34.0000000+03:00","164894CD2A2A138583488931149BA69A0D72AE34BED59FD375DAD723978D8FFF","source"
|
||||
"PHPAnnotations\PHPAnnotationsForm.resx",".resx","5817","2024-12-13T10:41:34.0000000+03:00","4363CD7D5B8671C72442CE1A1BFC10D64EBD24B2D718B54BD4FCD025E4967298","ui/resource"
|
||||
"PHPAnnotations\PHPBlockJig.cs",".cs","112795","2024-12-13T10:41:34.0000000+03:00","2E960188918EE74BD1D45E15D3C42430A63BB026CAB6FFA72A90180CC4077DA3","source"
|
||||
"PHPAnnotations\Properties\AssemblyInfo.cs",".cs","1491","2024-12-13T10:41:34.0000000+03:00","32D45C44A55881BED443865DE3B30C66AF6485B42ACB7728450CA3ED377A35FD","source"
|
||||
"SwapAttributesMenuItem\Commands.cs",".cs","15246","2024-12-13T10:41:34.0000000+03:00","67F465BE64805F8312E8A993464CCB575CE7090FF3AE194F59F78EB431C4C1F6","source"
|
||||
"SwapAttributesMenuItem\SwapAttributesMenuItem.csproj",".csproj","3459","2024-12-13T10:41:34.0000000+03:00","3ECE76B8449AE9C26AE33001390ABFAF270AD899F69E17B7E717252A803B84C3","project/config"
|
||||
"SwapAttributesMenuItem\Properties\AssemblyInfo.cs",".cs","1507","2024-12-13T10:41:34.0000000+03:00","5124A7D8538EF1AF115AC79430C0B52E2A0C029E5CAF9A3228202148A78D9DF2","source"
|
||||
"UpdateOrthoDrawings\Back.jpg",".jpg","852","2024-12-13T10:41:34.0000000+03:00","E586854785E04F60E0C38205EB0C9C32737F1AF1D3C4CAE9BE6053FBC27011C8","ui/resource"
|
||||
"UpdateOrthoDrawings\Bottom.jpg",".jpg","872","2024-12-13T10:41:34.0000000+03:00","3703170ABBA78E89B3B1E5D80A2DB7A54B855554672FB74EE38E9D81850CC76A","ui/resource"
|
||||
"UpdateOrthoDrawings\Commands.cs",".cs","67491","2024-12-13T10:41:34.0000000+03:00","39F19BD5C8A41A3A61E305919EFBEF2C76B895649D4E24B426149F4AEAD18DF4","source"
|
||||
"UpdateOrthoDrawings\CSV.cs",".cs","2144","2024-12-13T10:41:34.0000000+03:00","EB8624430DB53F9151DFAC99895ECF30D3550D1EE2ACC4428E509BDF6851303D","source"
|
||||
"UpdateOrthoDrawings\Drawing.jpg",".jpg","890","2024-12-13T10:41:34.0000000+03:00","8050397CC041E17984D9989F5DF836A2F14D67FCE5907265F4FCB526EBDECE4D","ui/resource"
|
||||
"UpdateOrthoDrawings\Folder.jpg",".jpg","852","2024-12-13T10:41:34.0000000+03:00","F8413955CEA5F7D0EE562490BA289D6FC36FB645977A2DA719E0E0D010639C39","ui/resource"
|
||||
"UpdateOrthoDrawings\Front.jpg",".jpg","849","2024-12-13T10:41:34.0000000+03:00","A8EB3DBB3802A6F7F769E7670F3B7647E83190A4237BF1301A88CF579E85FDBF","ui/resource"
|
||||
"UpdateOrthoDrawings\Left.jpg",".jpg","872","2024-12-13T10:41:34.0000000+03:00","53E677ACA5E020276A9E04FD17B5EF467CF80E334ACA3DBA7DECBC900713FD93","ui/resource"
|
||||
"UpdateOrthoDrawings\OperationProgress.cs",".cs","2253","2024-12-13T10:41:34.0000000+03:00","56253C2521E2E025DACC59264B7F6D10E0AC0CDADDB8C26F7E96042FD388322F","source"
|
||||
"UpdateOrthoDrawings\OperationProgress.designer.cs",".cs","4969","2024-12-13T10:41:34.0000000+03:00","F5759895842BF2D1D6C5E2B37ECD0B6BEBD914D65D7DD1AB82C08AEF73719056","source"
|
||||
"UpdateOrthoDrawings\OperationProgress.resx",".resx","5817","2024-12-13T10:41:34.0000000+03:00","4363CD7D5B8671C72442CE1A1BFC10D64EBD24B2D718B54BD4FCD025E4967298","ui/resource"
|
||||
"UpdateOrthoDrawings\Ortho.jpg",".jpg","909","2024-12-13T10:41:34.0000000+03:00","9BC9BB2644C41DA07A6EA26A0E3AA808A9B362CADAFC11AD25D4BE7B22A2598E","ui/resource"
|
||||
"UpdateOrthoDrawings\RCDATA_16_DWG.ico",".ico","1150","2024-12-13T10:41:34.0000000+03:00","0799E5EC07964EBA52692F37FFB1C9DDFE19AFE6A16305246B7703E14CA3F009","ui/resource"
|
||||
"UpdateOrthoDrawings\RCDATA_16_VIEBAC.ico",".ico","1150","2024-12-13T10:41:34.0000000+03:00","009659E2831F480E97981A0FAA3B52A3E9BA5D46005F324F4EECE95F66CD462A","ui/resource"
|
||||
"UpdateOrthoDrawings\RCDATA_16_VIEBOT.ico",".ico","1150","2024-12-13T10:41:34.0000000+03:00","9263E25E56BAB1EEAAC23E239D476A5D5C21D4DB7932AF0123FBFB9F857168E9","ui/resource"
|
||||
"UpdateOrthoDrawings\RCDATA_16_VIEFRO.ico",".ico","1150","2024-12-13T10:41:34.0000000+03:00","83AFB03C33F2E7789451BEDF45A2C42A5179B039AAEF43D78783F001ACFB43AE","ui/resource"
|
||||
"UpdateOrthoDrawings\RCDATA_16_VIELEF.ico",".ico","1150","2024-12-13T10:41:34.0000000+03:00","BAAD02C63DA2563B7AD34E4FF1BD8AA5C3B35D0C5703C5F7DB7ECF9490970C1F","ui/resource"
|
||||
"UpdateOrthoDrawings\RCDATA_16_VIERIG.ico",".ico","1150","2024-12-13T10:41:34.0000000+03:00","FE4914F3ABEFBE2749A446438FAB8C50AAECDE98767DBFA917271917559FBB40","ui/resource"
|
||||
"UpdateOrthoDrawings\RCDATA_16_VIETOP.ico",".ico","1150","2024-12-13T10:41:34.0000000+03:00","625CCD960C3FD80A1ADC61B47F589652A359E9446FC1722B583ACDE2F60DD544","ui/resource"
|
||||
"UpdateOrthoDrawings\Right.jpg",".jpg","866","2024-12-13T10:41:34.0000000+03:00","F064FC75EA6D46D9B3D24FADC3253AC1ECF2AB595BC03866BD411C116D19D227","ui/resource"
|
||||
"UpdateOrthoDrawings\SelectAdditionalOperations.cs",".cs","1563","2024-12-13T10:41:34.0000000+03:00","F0C1B064779AA5AC7061D64C39A80D5BDBF7E52BCAEF458FA012141535F607C7","source"
|
||||
"UpdateOrthoDrawings\SelectAdditionalOperations.designer.cs",".cs","8525","2024-12-13T10:41:34.0000000+03:00","884C92DFB0E9CAC5EE5CED340AF908E2BBF9D8B42CA4D7AAE835DCC754FD5F40","source"
|
||||
"UpdateOrthoDrawings\SelectAdditionalOperations.resx",".resx","12505","2024-12-13T10:41:34.0000000+03:00","CF3A92172710A6DF9381EE336C1023AD17B72A33A2D124790F64E95059359409","ui/resource"
|
||||
"UpdateOrthoDrawings\SelectDrawings.cs",".cs","4128","2024-12-13T10:41:34.0000000+03:00","0AE10FC1752C25415B3213C394CACA464DF5F0C6C3FEE8DDA54DB43B411D965F","source"
|
||||
"UpdateOrthoDrawings\SelectDrawings.designer.cs",".cs","7414","2024-12-13T10:41:34.0000000+03:00","CDBDA90059F071995CE8EB0F831EFFA50EFF87A23C366C223494EDAEF7B49AAF","source"
|
||||
"UpdateOrthoDrawings\SelectDrawings.resx",".resx","12505","2024-12-13T10:41:34.0000000+03:00","58D46EA851C7363136B7D690DA11307C0319D1ABEA44659D584B27BAC0533D31","ui/resource"
|
||||
"UpdateOrthoDrawings\Up.jpg",".jpg","866","2024-12-13T10:41:34.0000000+03:00","ED7621550E663306DEDEFE54B09CF3C62D895A3D0FFC8A527A16660BD7254750","ui/resource"
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj",".csproj","7597","2024-12-13T10:41:34.0000000+03:00","5F54220442CEE919A35022B8152C90C502F0FF9998BB9AD0A8788422989F5B47","project/config"
|
||||
"UpdateOrthoDrawings\Libraries\PnP3dOrthoDrawingsUI.dll",".dll","362968","2024-12-13T10:41:34.0000000+03:00","A8A88996DD1F2FD89520785C7006923B36B005A3F38D845F3AA6DE85E0CB6C63","autodesk/binary"
|
||||
"UpdateOrthoDrawings\Libraries\PnP3dOrthoProjectPart.dll",".dll","39384","2024-12-13T10:41:34.0000000+03:00","CD908D9332FF3AEDB5694DEF4331F217AE653C19A122B87C4D121ECFD3D8E157","autodesk/binary"
|
||||
"UpdateOrthoDrawings\Libraries\PnP3dOrthoUtilMgd.dll",".dll","72152","2024-12-13T10:41:34.0000000+03:00","42C4103445EB5757DD21CBEF25255348F207F4F4C54FF7DD14F0C7F763CD95BE","autodesk/binary"
|
||||
"UpdateOrthoDrawings\Libraries\PnPDwg2dAnno.dll",".dll","280536","2024-12-13T10:41:34.0000000+03:00","D662C2B24CE1CDF444A0C34926D29DEB5193D587D97DB3B9EB68E6E762D95B03","autodesk/binary"
|
||||
"UpdateOrthoDrawings\Libraries\PnPDwg2dDbx.dll",".dll","244696","2024-12-13T10:41:34.0000000+03:00","375D8CCBDCE6CBB72B28AC23DFAE9201CC014F8D98ACEDF0A4AD512F038DB028","autodesk/binary"
|
||||
"UpdateOrthoDrawings\Libraries\PnPDwg2dDef.dll",".dll","98264","2024-12-13T10:41:34.0000000+03:00","AD0A27CF6B3EDD7BFECC78FE622B180D397D74E5A359AB4A9630130CBF2B42B8","autodesk/binary"
|
||||
"UpdateOrthoDrawings\Libraries\PnPDwg2dGen.dll",".dll","127960","2024-12-13T10:41:34.0000000+03:00","FC749B8E17760D9BDEFB65A54E263B8D1352C1892073C4DD60E69CC8302F5ABB","autodesk/binary"
|
||||
"UpdateOrthoDrawings\Libraries\PnPDwg2dUtil.dll",".dll","143832","2024-12-13T10:41:34.0000000+03:00","43B1317D4F23BCC2D41C05695C04044A283E2B967E998E4B5644FD2B6FDBC937","autodesk/binary"
|
||||
"UpdateOrthoDrawings\Properties\AssemblyInfo.cs",".cs","1501","2024-12-13T10:41:34.0000000+03:00","BC650E3D163407D7215CEA893BB8520B665BBCC3E321A32606357E84C45B8755","source"
|
||||
"UpdateOrthoViewBlocks\Commands.cs",".cs","38266","2024-12-13T10:41:34.0000000+03:00","D517CB29E8D5776FFBCFA5996FF23B4561F7EFDA1770CEF7598EF2111A81EAC1","source"
|
||||
"UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj",".csproj","5221","2024-12-13T10:41:34.0000000+03:00","CA2A88302437BE2FA8FFF9B96CD961DBC44A70715EC6F79FE9654F749FD72E6E","project/config"
|
||||
"UpdateOrthoViewBlocks\XMLFile.cs",".cs","4244","2024-12-13T10:41:34.0000000+03:00","DCF9353EB9686C4D31CA5944F1CEA2EB6DF9B1C43EDF2946EAA10195662492A6","source"
|
||||
"UpdateOrthoViewBlocks\Properties\AssemblyInfo.cs",".cs","1505","2024-12-13T10:41:34.0000000+03:00","66AE8EFD9E1D614FBDE58D2C0173F1775F1CACA16EDE5DE0A9459A72F1371A6C","source"
|
||||
"_archive\2019_AnnotateLineNumbers\drawing.png",".png","298","2024-12-13T10:41:34.0000000+03:00","7A6AC1F97278F8E79D9DAE52DB7D9833C516F6E5FCF554508A01323736542154","ui/resource"
|
||||
"_archive\2019_AnnotateLineNumbers\folder.png",".png","210","2024-12-13T10:41:34.0000000+03:00","87E56D1EDDEA45CE0588CF848406F981BAAE7713717B9FFAAB40881546836863","ui/resource"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Class1.cs",".cs","8299","2024-12-13T10:41:34.0000000+03:00","C4AA842DA6991DE2AD4D0A3573E844D21291A1E12570818859455F70DD7CB7EF","source"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs",".cs","67834","2024-12-13T10:41:34.0000000+03:00","969B85134832574C61A5026DECFB27D891FBC5CB4E7EB711B9309FFE0A1D8E6B","source"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs",".cs","63203","2024-12-13T10:41:34.0000000+03:00","F0D9865776CD53C604FE9E36FE6578A6196D5FC1C8FCBB0E6F2456136BB7F258","source"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs",".cs","64114","2024-12-13T10:41:34.0000000+03:00","96B19B37501ACCC8E0B6A93A3C7492C5971C8074F1A47EA74EC6052CA7EB9F1C","source"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs",".cs","53835","2024-12-13T10:41:34.0000000+03:00","73CF65197CD51A57B52392EB817C7B9E5B08180138218786FD5D191BB2312664","source"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия.cs",".cs","19693","2024-12-13T10:41:34.0000000+03:00","E7E0AD9331F74063D499F6B89619AF790DCE8774BD16BCCCC7F7B1CA8554AF52","source"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs",".cs","63203","2024-12-13T10:41:34.0000000+03:00","F0D9865776CD53C604FE9E36FE6578A6196D5FC1C8FCBB0E6F2456136BB7F258","source"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs",".cs","64114","2024-12-13T10:41:34.0000000+03:00","96B19B37501ACCC8E0B6A93A3C7492C5971C8074F1A47EA74EC6052CA7EB9F1C","source"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\LineNumberList - копия.cs",".cs","41978","2024-12-13T10:41:34.0000000+03:00","827C2FD40E56A86E25FAB78320EE30336F87D4178388C04055638AA68BFE831D","source"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\LineNumberMarker - копия (2).cs",".cs","13778","2024-12-13T10:41:34.0000000+03:00","73E123A42D2C4C72DE73F5632F8BEF4328212D5ABC6A819AD91AA4AD57312F72","source"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\LineNumberMarker - копия.cs",".cs","22961","2024-12-13T10:41:34.0000000+03:00","F3FA711BCBE61D3EBAF2E1EC5E01AA3C205FFA63930F4B17DB8259B978ED7A75","source"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText.sln",".sln","1184","2024-12-13T10:41:34.0000000+03:00","EE337ED7C38FA3FB31C2ACCB8933A2330FD50845A8A910817495250F3B9A9A2A","project/config"
|
||||
"_archive\2019_GetLinenumberAnnotationText\Источник.txt",".txt","634","2024-12-13T10:41:34.0000000+03:00","5F3F9FFAAAA4FE9534F5A1A16C7C42132D7CD6D335DA38C33F0206525388B607","data/other"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj",".csproj","2950","2024-12-13T10:41:34.0000000+03:00","DCFEC303EE6E7D30FC8D72CCC7CE72CF8DB1805DDBDFF2124DCEDC76B08C60B9","project/config"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs",".cs","21786","2024-12-13T10:41:34.0000000+03:00","48F7356657E95073A4E95CE96A24537B3C06EC06AD769A44913499CE4B641BA7","source"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\Properties\AssemblyInfo.cs",".cs","1484","2024-12-13T10:41:34.0000000+03:00","2B39009C8957250249193361237ABD33ACCED1521072F9B620DBDBCDDA3C3003","source"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText.sln",".sln","1184","2024-12-13T10:41:34.0000000+03:00","EE337ED7C38FA3FB31C2ACCB8933A2330FD50845A8A910817495250F3B9A9A2A","project/config"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\Источник.txt",".txt","634","2024-12-13T10:41:34.0000000+03:00","5F3F9FFAAAA4FE9534F5A1A16C7C42132D7CD6D335DA38C33F0206525388B607","data/other"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj",".csproj","2950","2024-12-13T10:41:34.0000000+03:00","DCFEC303EE6E7D30FC8D72CCC7CE72CF8DB1805DDBDFF2124DCEDC76B08C60B9","project/config"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs",".cs","21164","2024-12-13T10:41:34.0000000+03:00","A1CABEF6F902127B2754B40688113851496835A4044F186BE63037D371AF8EB0","source"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\Properties\AssemblyInfo.cs",".cs","1484","2024-12-13T10:41:34.0000000+03:00","2B39009C8957250249193361237ABD33ACCED1521072F9B620DBDBCDDA3C3003","source"
|
||||
"_archive\2019_InsertElevation_ОЗХ\Описание.txt",".txt","118","2024-12-13T10:41:34.0000000+03:00","31CD2F60B359A436BF3547BF861E1145813351944D38AF23953A55EFC29AD604","data/other"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation.sln",".sln","1148","2024-12-13T10:41:34.0000000+03:00","620BE31B6E7111F38DC85469C1023F06D575B35CC4C474E043A98C28A0A038A1","project/config"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\Источник.txt",".txt","581","2024-12-13T10:41:34.0000000+03:00","086DF20E3A352FBCC8FEDE6A555AF5B1DD91278E60062DFC64A4F218DC6C793E","data/other"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\ArxImports.cs",".cs","1200","2024-12-13T10:41:34.0000000+03:00","4EBFB98999589A71765D29AAF5B61078836E6060046C26B3D69FA404C5A9ACF5","source"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\Commands.cs",".cs","73682","2024-12-13T10:41:34.0000000+03:00","89801F75BA5A90ACC385BBFF006B39A9AEAB74EE3CFBC0A1383D7FD140578E5F","source"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\InsertElevation.csproj",".csproj","4435","2024-12-13T10:41:34.0000000+03:00","352C66A2482BF7683A7D09E0602A5DE7033F1150597DF22875629AF1299E1E8C","project/config"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\XMLFile.cs",".cs","3781","2024-12-13T10:41:34.0000000+03:00","FEFD5410F45CB8E5D888A739F9D7B91126C4041FF12C7BC000D4A6B89781ED23","source"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\Properties\AssemblyInfo.cs",".cs","1460","2024-12-13T10:41:34.0000000+03:00","3955628FF4B5AFE33562777E0274A89EBAFF130713129E637EA899A5E8E68D8B","source"
|
||||
"_archive\2019_PHPAnnotations\2019_PHPAnnotations\Class1.cs",".cs","3133","2024-12-13T10:41:34.0000000+03:00","CEC5435EF13ABD59E194C9CD81C3A2A9D58CF97B74D65E3FCD918690D1417E44","source"
|
||||
"_archive\2019_PHPAnnotations\2019_PHPAnnotations\Class2.cs",".cs","159","2024-12-13T10:41:34.0000000+03:00","8DF997EC4D1589E64E447EB82729040B46C9B45D239BEFB16BFDC7DD71EFD1DB","source"
|
||||
"_archive\2019_UpdateOrthoDrawings\2019_UpdateOrthoDrawings\XMLFile.cs",".cs","4732","2024-12-13T10:41:34.0000000+03:00","8DA91EDC6DFB4C16BF1A238FBF7887E9B6210849BA128935467352435AA8A1FC","source"
|
||||
"_archive\GetLinenumberAnnotationText\test\ATest_p-clat.zip",".zip","15181842","2024-12-13T10:41:34.0000000+03:00","43D7159D0C20B6C1BA82FB68DB186D1A33D824CF9C01D9991E17D17D0F2C0AD1","document/binary"
|
||||
"_archive\GetLinenumberAnnotationText\test\Тесты на аннотации.docx",".docx","173939","2024-12-13T10:41:34.0000000+03:00","DE7811BDE239CEBD2B24E9D47CCD5214FC92A7E40109E321E78693B9029D49AE","document/binary"
|
||||
"_archive\GetLinenumberAnnotationText\test\Тесты на ошибки.docx",".docx","213774","2024-12-13T10:41:34.0000000+03:00","D8212979B1D23F6012040C580E2916063FB995780824EBFBAF8F70DFB9A486A5","document/binary"
|
||||
|
@@ -0,0 +1,272 @@
|
||||
"RelativePath","SizeBytes","Sha256"
|
||||
".editorconfig","1154","91579407CC1BF063A08E286BDEB02EE2836978AB0F247B9D66E6D73063D226AF"
|
||||
".gitattributes","1663","AD78EDB5DFD7802DC618E3586DA0DCEFD2A4F311A64A359CC16398DCD06025C9"
|
||||
".gitignore","6691","8C9C0295BD5EC252C29DD594776F306E60362DBFA357342E219EB6D357B09B16"
|
||||
"CHANGELOG.md","7368","030F5E89D0570D34E6047F592A2C389CC74DED906B12ACAD5745875BF7623F06"
|
||||
"P_Rec_Annot.sln","15727","8C6B34F53ABA8B3628BECD3678B6AA7B4BB295F6C261BF7AAA9FC1BEE0C646F7"
|
||||
"README.md","7110","8CA7925F1911537BFB0BCEAC6D5CFC0B5B8B4A3A6E15A810F89C4DB8B095BD09"
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","6945","6755BE78B5EB1CF3A88D008A46C9CE9DE504F637CDEE77981CBAF6CBC7BDB378"
|
||||
"AnnotateLineNumbers\ArxImports.cs","2291","D8723EE15525950B9020AAA6E1296919BEB22D5BF825D729D68FE82EDEBA28EB"
|
||||
"AnnotateLineNumbers\CheckResults.cs","22873","7C84D69FFD865ACC026195F774409170CB6B9F4602FD921A4F809EFED763CC1F"
|
||||
"AnnotateLineNumbers\CheckResults.Designer.cs","6820","EB925164B219545379974C1C58A629043BDC44A1C0711004C21F551AA6429DA4"
|
||||
"AnnotateLineNumbers\CheckResults.resx","12829","3FB0758FBDBE178B1794E446CA50637192F21A55498E91F66E57F5C6B2356B36"
|
||||
"AnnotateLineNumbers\Commands.cs","173778","91BA6E1F095E6F846459A721AD84EEFA44495117724465721D4E77851456FD59"
|
||||
"AnnotateLineNumbers\LineNumberList.cs","78210","88773296C0AF4AF4A55564B02E309DB3E0632816F38A5EE7D16B5044093949B9"
|
||||
"AnnotateLineNumbers\LineNumberMarker.cs","25092","8FA0E1AC7DBA024AB9493D13DDB6638A409B6A4DFA5F1C6849A843B5658FC71B"
|
||||
"AnnotateLineNumbers\LN.jpg","887","EF21F64D179E1B6271824821DB7CA7CA8006FC2D3241D01EA2018811B7B177B1"
|
||||
"AnnotateLineNumbers\OrthoDrawings.cs","56672","C79795533271B339E2467F7720EF4C1E8DD76C5AF740B26043456174934FA7F2"
|
||||
"AnnotateLineNumbers\SelectDrawings.cs","3029","0A652A3A980EA8E497CD305CFFB01E58C3AFD098341DC85EA2F2872B8669E859"
|
||||
"AnnotateLineNumbers\SelectDrawings.Designer.cs","6521","E82E5125D41505476B3162C180E5A111BD5A2F3326D56A32C1823EF0A7BE38B9"
|
||||
"AnnotateLineNumbers\SelectDrawings.resx","12505","B970C32FA1863FF2F9052C44BFA526176DE74B12E154B0831FB78C012BD55830"
|
||||
"AnnotateLineNumbers\Utils.cs","50306","1BD79E8008C7142803C511630E34D4057D563F0360EC24E2F8FD45FCDBD06858"
|
||||
"AnnotateLineNumbers\XMLFile.cs","10103","AAA9F13E021E2987247B6A899B4AAC0CF589C06DD02E8FA8E6504DF618AFC837"
|
||||
"AnnotateLineNumbers\Properties\AssemblyInfo.cs","1501","29293C12D3EE3ED9B68B9E81FD0709368C8E1AF5A201798453191E06106EB643"
|
||||
"AnnotateLineNumbers\Properties\Resources.Designer.cs","3617","7D5142ADDCDB23818C3943043E01B16CA7D840DC89E60F08B0EDB10BCDE1E629"
|
||||
"AnnotateLineNumbers\Properties\Resources.resx","6443","B5445CBFFA4AFA742BFDEB8FAB1706E3CDE5EEBEB56ECF073B68957E0CB94247"
|
||||
"AnnotateLineNumbers\Resources\drawing.png","298","7A6AC1F97278F8E79D9DAE52DB7D9833C516F6E5FCF554508A01323736542154"
|
||||
"AnnotateLineNumbers\Resources\folder.png","210","87E56D1EDDEA45CE0588CF848406F981BAAE7713717B9FFAAB40881546836863"
|
||||
"AutoAnnotateView\ArxImports.cs","1211","6251A1C19599444EC4617965B47B39C1C7AE909CF294D6D4754560E83CC22A72"
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj","5351","6AAD00298D36AB118F8A611AE9E27175F0D15B6E93420ACBF4BA54BE0D910A21"
|
||||
"AutoAnnotateView\Commands.cs","49015","4B22A43CE772309AFCAF41D59BACC4734C7F34D7D6EC76BA6F914FD78628F98A"
|
||||
"AutoAnnotateView\SelectAnnotationsToUpdate.cs","1582","3B387F93287BE2AB84D9003E6AE78944192A5F8C896135AA21573C73F342C649"
|
||||
"AutoAnnotateView\SelectAnnotationsToUpdate.Designer.cs","7368","9E15FCE6D0025EC857246FD473437B6017084CC671390BFFB0A75F9DA6A0B1A9"
|
||||
"AutoAnnotateView\SelectAnnotationsToUpdate.resx","5817","4363CD7D5B8671C72442CE1A1BFC10D64EBD24B2D718B54BD4FCD025E4967298"
|
||||
"AutoAnnotateView\ViewPorts.cs","97633","874EAD5EC8F92D626F55143534B9E572C810AC0EEAFC1A0CD0C53492E04ED0A6"
|
||||
"AutoAnnotateView\XMLFile.cs","4374","2F0DD0AACD69B24E0BEA693F02C6837723C61C18B7BECF79AC21D8DF6DDFFC7E"
|
||||
"AutoAnnotateView\Properties\AssemblyInfo.cs","1495","0E7808712B45F7E7EC5ADADEBD21243E89544844627477BA8FAECB4127794499"
|
||||
"AutoElevation\Annotations.cs","45868","C8558FBBDEEA72322816601CC97B16326F72269BD085F23268F6813FEB4B7E32"
|
||||
"AutoElevation\ArxImports.cs","1198","4E135D772B855E3F5B9A80FCDE7F18C1E6A4B2B03056E4A1452C9E8C7B0A3BC5"
|
||||
"AutoElevation\AutoElevation.csproj","5609","086F17ECED970E2E028283343C037F41C9949FFDEAA9C406952A62AB9E902AF7"
|
||||
"AutoElevation\Commands.cs","35132","206CFE54EC5D0CAC890D0DB9B8F0A0B9C2AF67F508E2F1058C8BC09B974A5EB3"
|
||||
"AutoElevation\XMLFile.cs","3785","088194497E833A39F3BCB0E2D7F2BB7C2B4FC90006D068390D6EDE76CF67318E"
|
||||
"AutoElevation\Properties\AssemblyInfo.cs","1489","6002ED0209919EF12328DB3B7437605B800382B0ACD31D483EF5FC5DCB4AF5A6"
|
||||
"AutoLinenumberConnections\ArxImports.cs","1926","EE1AD62A04861EBC65C16590F70F208FBF688BC6AB8FD696A7A45356748CDC78"
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj","5211","3B9427F7E3DED8E28E1BBE8C74B2DE1AC78BE757D18FFF5A2107E4790B88817B"
|
||||
"AutoLinenumberConnections\Commands.cs","180443","837D7E138A80C0106E8275571453B9BFB9243504AD6A405E6C1286DB534E6895"
|
||||
"AutoLinenumberConnections\XMLFile.cs","4266","21B71FE3BF0CC7462F994EDFD70A92FD9D0E109FD6C4B1C2921FF74F2A9781EC"
|
||||
"AutoLinenumberConnections\Properties\AssemblyInfo.cs","1513","2A02E1DA20CC09DDEC54ACC995FF95B41C1F76F427FBA1D3A675F29954FF3F5B"
|
||||
"CheckOrthoView\ArxImports.cs","1199","0962B1F8A18BA3099F806F7C7BCDB2E534D7D3D5C76EDCF6321FC8F7DBE6B566"
|
||||
"CheckOrthoView\CheckOrthoView.cs","15817","DF2EFE5C9C2283610C228D278AB03ED6A7BC55A114A2AEEC21FF30141DA5FB0A"
|
||||
"CheckOrthoView\CheckOrthoView.csproj","4311","3CC579EC4060DE558C73F752917F094D761FA5DF4A208D5E4A0D757BB6E628AC"
|
||||
"CheckOrthoView\Commands.cs","14992","70CCFDF61E2D46FD062C649E75900DA592D524AE116DF4EE7F81CF675B7ECDEF"
|
||||
"CheckOrthoView\Properties\AssemblyInfo.cs","1491","5A1FB57CBD150869B0DFE6D41F3681A39FA3681F16F6354A4C351BB0D1D594A5"
|
||||
"EnablerLoader\EnablerLoader.cs","3170","01649BACBAD733D6A655EAE87DC7B3781F62B8B8079409C5AD56A010A657F248"
|
||||
"EnablerLoader\EnablerLoader.csproj","3115","99A5FC20BD13E491A50361CF6F89BD1593DDDBAC81C90F582EC42EE797915F3A"
|
||||
"EnablerLoader\Properties\AssemblyInfo.cs","1489","8B646438A0D870826168DC48F480B54D519DF9D3EA3E5B9152E3D42BEFCE9E71"
|
||||
"ExtentsIntersect\Commands.cs","7245","29EDC0C1FC1DDA546EC1B9E5A1D7E044F413C5628A447EDF80347BBD4CE9FE1A"
|
||||
"ExtentsIntersect\ExtentsIntersect.csproj","3300","6B0B3241EE38C0019FFB61976125BB606A9E43A090366875E4CF006D0528D84D"
|
||||
"ExtentsIntersect\Properties\AssemblyInfo.cs","1495","445B83D172EBA8BF83E465E42E948C266B45C51549D262BA967065C59D068C57"
|
||||
"Files\.gitkeep","0","E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855"
|
||||
"FilesRelease\AnnotateLineNumbers.dll","126976","799BC277ED98BD870F01824180B5A945B24F016DFD9956A8CCC630AFE80FDFA4"
|
||||
"FilesRelease\AutoAnnotateView.dll","40960","E625DD3F01DC1B9C578D87FA03C6A5E10607601032CA78B22B8488C02E3D7B77"
|
||||
"FilesRelease\AutoElevation.dll","28160","3980E98D98D507A46212C8E711E11E8569DEB550B76947948BAF85BFB0A44311"
|
||||
"FilesRelease\AutoLinenumberConnections.dll","41472","0F6B2A759F2A63B9152B480B6968BDA20F42AD1D922F67CA6E6BFD31A0715F35"
|
||||
"FilesRelease\CheckOrthoView.dll","14848","89DB5E537C2BAEC292CDD8A0A43819119850119D54958E8CC3C43E2136AB24A0"
|
||||
"FilesRelease\EnablerLoader.dll","6144","745D625C27F92842F2EFF3C515DB48BB9FC0FE59B6E4559ACD696BCC93FF4C51"
|
||||
"FilesRelease\ExtentsIntersect.dll","6656","59D2776E083D4BE2FBFBE4F43009EAA9CE0E81A1752815B45C510F80654169D9"
|
||||
"FilesRelease\GetComponentGeometry.dll","10240","9EA8C48FEC4D36D32CC6AC88B78C434662C16D4484F86EFAA46ECC309E9F9142"
|
||||
"FilesRelease\GetComponentGeometry.xml","1239","70169C3A3AAAFE5A2282E01D5B9B7C99F2F4FF9B7514553434302674ABE46C98"
|
||||
"FilesRelease\GetLinenumberAnnotationText.dll","23040","047E721DBE380061D9ABDD92BC5475440E3B7ADB2BD0F544D538BA24B121D30E"
|
||||
"FilesRelease\GetPlantScriptFolderPath.dll","4608","5080A167A1DAF6C19BE08F6CAB678D490736B5E07E121A918A2915F0D9D8BF65"
|
||||
"FilesRelease\GetScriptParameters.dll","6656","7FF7B0D26BE8D89FF4A5A4FA1C6EC17BDA1506BCCB78AFE0E650137CD7BA5E87"
|
||||
"FilesRelease\InsertElevation.dll","24576","9C1690F2D1096603568A979EED162E5C93095634A8205916F7E989FDBE263411"
|
||||
"FilesRelease\LoadedAssemblies.dll","4608","277EB83C587A984DC2F558B8A7C86AA98E195A77AFA6FADD7DB83F2B801C0E4E"
|
||||
"FilesRelease\OrthoAutoAnnotate.dll","104448","70019D38BFEBA60978DEB18C10E4419A2308DEC71D73EB91F1F70CA59ED7503A"
|
||||
"FilesRelease\OrthoLoader.dll","19968","DB56886F2B217487F3EB97A22B6300F8FD4EDAF65DDFC2055E539073ED99D96B"
|
||||
"FilesRelease\P3DCopyMissingObjectsToOrthoDrawing.dll","14336","6C879AFC7F35EC25E5E2FFF9FF0EE6EFEB155670DBFD5D0CDE9A0F629C5727B2"
|
||||
"FilesRelease\P3DNewMa.dll","115712","C15E9626ABA24FB22DF4ABC849970B92F0B79552A77FB2E796CC3EEE87C5F0A6"
|
||||
"FilesRelease\P3DSetLayerForViewport.dll","4608","A28E58FDE4EBAA26450CA646C5A85F98C1A04AA42C0BFC5413D718243ACBF42B"
|
||||
"FilesRelease\PHPAnnotations.dll","69120","816A693F1B775C5506043DD0461055F248D3897E96AC8285DAE29C5B71FFCA73"
|
||||
"FilesRelease\Settings.xml","105735","C1D4D6D38C691826390755C68E2FA2ED9A46B48CC547FBB02186796D96021FFC"
|
||||
"FilesRelease\SwapAttributesMenuItem.dll","11264","674C865E34F9C877561E03E2077F7F2C6852C3C8B6A0503ACAA7619F3E80A460"
|
||||
"FilesRelease\Template.dwg","149935","22CAAD35CE9C55891CF91042ED9B2C23BA4D5A0745AA40D69F41C1F609DAADB3"
|
||||
"FilesRelease\UpdateOrthoDrawings.dll","45568","69FD3ED5996C8DABF111A1FC69F99DBA7C401C5FF2A74C7F855E6912AA03B84F"
|
||||
"FilesRelease\UpdateOrthoViewBlocks.dll","15360","5022D4D66D79E7E7D82F9FCB647DF8E1FE658A4694EB7794E363D5EA5517F5A9"
|
||||
"FilesRelease\Справка по работе с палитрой.docx","850952","870F2181A2BA417FB4EEE92D1A3D2CE560EDBA21CC579FE3F4E7CF9F4B9F2008"
|
||||
"FilesRelease\Справка по работе с палитрой.pdf","742814","0A7053E3613804B819458082A7F74EDC8FAD0DC4F117AEF8389C1E2D054E6CAB"
|
||||
"FilesRelease\ico\button_BJ.png","1235","414F0A23E917D41A82C697B0E9CDDDF9BFCACD1627310BD5717AEA172418AA51"
|
||||
"FilesRelease\ico\button_CAC.png","1943","FA2B8877F8B41C70BA62C737C40374394D6840A53DFE2D0B0F83463C4817C138"
|
||||
"FilesRelease\ico\button_PXP-AAV.png","1905","6AB171963B553B434B5AA4BFBE91993B1782606AAF9B486FA23BB27BC1F0E4AA"
|
||||
"FilesRelease\ico\button_PXP-AC.png","1751","60A6BD62EF3E50BDDCD00D9C281F2399E6C9D42E0C2DAA1742273C0DC48FE9C3"
|
||||
"FilesRelease\ico\button_PXP-AE.png","2001","F1DCF0E908F5AF38CCD13ABA58B824E5B186430414499C0F623C1D5EEAD8DAD7"
|
||||
"FilesRelease\ico\button_PXP-ALC.png","1740","19DB2449B66B95965155E6E3BC313BD52000FE38C95B0FAD90EF07DF53EA9CC9"
|
||||
"FilesRelease\ico\button_PXP-COV.png","2007","529BDD045961C244FBD0DE177B899AF9E7CE0F4506B3463C56D2704B3BF207B5"
|
||||
"FilesRelease\ico\button_PXP-DJ.png","1470","127957752DC2B6573CD2FD9A2791914BA22802E07E9B7E23CD3AE1FFF9E4FFC4"
|
||||
"FilesRelease\ico\button_PXP-ELN.png","1927","DF32E6A465D5C196A17F3F96473315590DF2D71995F63D2D241D7599B62C99BB"
|
||||
"FilesRelease\ico\button_PXP-ESN.png","1636","0F089184CFD428DA3620F9C0AD2DCBFC21B31ED34FA301E8D5D45923783C0CC7"
|
||||
"FilesRelease\ico\button_PXP-IE.png","1885","F1C6373BFAF82E1908AF371D5F21133D27E0B84AFC706A703530855A2046FE43"
|
||||
"FilesRelease\ico\button_PXP-IOD.png","1942","494E90C899A0BB5BB365B0E1452E92A68359610C5A38A37D09F520A39BDB3899"
|
||||
"FilesRelease\ico\button_PXP-LN.png","2024","F3305ED6D266E29FA475D4C8A7DF38D2D2A1776A4CE379B876B6CFA278B2FE5D"
|
||||
"FilesRelease\ico\button_PXP-MA.png","1907","9386249121644DCF4B9C70491F561E8B6E5BAAE87EBB2C76A84E46B10A60C8C3"
|
||||
"FilesRelease\ico\button_PXP-OA.png","1999","EAA2AD7EE5C6B7F3716AF1D7690C76AE59229AE9B6BA02009F5009CD9307F4E8"
|
||||
"FilesRelease\ico\button_PXP-OSI.png","1508","422D10B6EBDD76085CF9C5985391CCA060464B200D6792D604658AAE47F12CEE"
|
||||
"FilesRelease\ico\button_PXP-RA.png","1826","1DB3F39C6CCA4EABE79D81DE6DCF9900649CDC9064F2EBF5E45F9AD849B8317F"
|
||||
"FilesRelease\ico\button_PXP-RMP.png","1759","156026EC6DEB7BDBE720047409E9A25615D650D8634C2F0BAF49A71E27135258"
|
||||
"FilesRelease\ico\button_PXP-ULN.png","1928","B37EBB460691EAA7BC3A91DF05C27FE7CC1F0E9F9D69BDA7703956EAA7AA785C"
|
||||
"FilesRelease\ico\button_PXP-UOB.png","1569","3BC16B9923CCD34CF10F403CD65732B217E255E89539174841E7F30D9DFD2DCD"
|
||||
"GetComponentGeometry\GetComponentGeometry.cs","18173","A86E56F225F704386ACB3E13AEB16B646EB29202FBFEB5A25D23ED17B9E658B8"
|
||||
"GetComponentGeometry\GetComponentGeometry.csproj","4919","77207EFAE162733A1ED1CF2592719D62E145547FCB0E000EAAC8A40834D611FF"
|
||||
"GetComponentGeometry\Properties\AssemblyInfo.cs","1503","99A54031E3977882A24ECFBFD5D993853F74119FDE6E897F4D20A1D9B47DC7F4"
|
||||
"GetLinenumberAnnotationText\F2_Xml.cs","5429","C33DE1D612E7BC59A9D6B025CCA8182C08E125D8F75499457D904A75CC9E56DA"
|
||||
"GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","4412","0FECA68B7453D60838C28DADF27B94DAF5B4C691085C41268B5144629C0F1F00"
|
||||
"GetLinenumberAnnotationText\Index_Xml.cs","2156","B5F7E79E3E636BA52D7BB77E56FD5C72E9DE249836311A29D649C811078000CF"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","41350","B440F0FADEC59F2FDD43FCBDAABC5D629508BC56466EEA273967033B4190F76C"
|
||||
"GetLinenumberAnnotationText\Processing_Xml.cs","5031","06FD4D781F09A299046489335272948E2307D0DAD2751950B4D80229A111379C"
|
||||
"GetLinenumberAnnotationText\Properties\AssemblyInfo.cs","2124","FDF01977657A695602DB09679D8E38D4F26DFFE5602AF2092DCF8B519F4CC700"
|
||||
"GetLinenumberAnnotationText\Properties\Resources.Designer.cs","3465","273713640025B94734F36313273823890B9FBA6303259EE53EF8A235D9491054"
|
||||
"GetLinenumberAnnotationText\Properties\Resources.resx","5817","4363CD7D5B8671C72442CE1A1BFC10D64EBD24B2D718B54BD4FCD025E4967298"
|
||||
"GetPlantScriptFolderPath\Commands.cs","1072","5A24605C7EEC3F14EDAC7310BC414B6DCB6F1E8CB4CD7F9DF8BB091FDDDCFC92"
|
||||
"GetPlantScriptFolderPath\GetPlantScriptFolderPath.csproj","3011","96877CED79F6BE7A1B3BF776AEBBAAE237C6A09580A371509C2D76BB3BCB02E1"
|
||||
"GetPlantScriptFolderPath\Properties\AssemblyInfo.cs","1511","0399DF6ED28EED87D3CCA6C980B84249595F2C2CDDB3341D507674A82BD62677"
|
||||
"GetScriptParameters\GetScriptParameters.cs","4074","899B6DDECC1461D0AFEB4A5D15B91EE72240358FB8D27EF362DB4D4419C10A86"
|
||||
"GetScriptParameters\GetScriptParameters.csproj","2599","49401A4BD4620A1FFD736EE7BD341F3AD8A1B1460F9421A037FF77C5311E9285"
|
||||
"GetScriptParameters\Properties\AssemblyInfo.cs","1501","680FF1614A7FB07B3F98CB26F9133A899AB7DF635623BD66AD71ADAC54A47FEC"
|
||||
"InsertElevation\ArxImports.cs","1200","4EBFB98999589A71765D29AAF5B61078836E6060046C26B3D69FA404C5A9ACF5"
|
||||
"InsertElevation\Commands.cs","73527","057A9A3123DEFE6358CE8B1D06852E048DB7A6C3D308563BEC4DEB506E210925"
|
||||
"InsertElevation\InsertElevation.csproj","4496","E9D2C81E14D2349F527987BA3EC9B1F82E16796E13B51A6986DC7CDA2AD8FFBC"
|
||||
"InsertElevation\XMLFile.cs","3781","FEFD5410F45CB8E5D888A739F9D7B91126C4041FF12C7BC000D4A6B89781ED23"
|
||||
"InsertElevation\Properties\AssemblyInfo.cs","1493","5959F8AF302F040DA55277FB3C81F6715DE1AA966B8D837FD833D7AD36F85AFA"
|
||||
"lib\Excel.dll","64000","67E0A592F5AABF78E6602F3CEBDEEE9B8D668CF4F928A3E784A3685C9076172C"
|
||||
"lib\ICSharpCode.SharpZipLib.dll","192512","CFC2A838569A48D16A15269BB701DE87B81B3D2BC303BB7C4C3724CC3BBA0C50"
|
||||
"LoadedAssemblies\LoadedAssemblies.cs","1983","ECC1D1925E2274731885E4B0A33553D88DF5CE26F715F53DECDC86417E07CBEA"
|
||||
"LoadedAssemblies\LoadedAssemblies.csproj","2919","6592FFEFB904C2A6390960073D6B1C5AC10A8323A7F44BF74365F6948F3BAF16"
|
||||
"LoadedAssemblies\Properties\AssemblyInfo.cs","1495","20584E02ED3005AE9C767C466B042D05AA1092CA74FB317830C5A0F2292D90EA"
|
||||
"OrthoAutoAnnotate\Commands.cs","543454","7A1D6C65AFC619AB5EF39CB0E65D16E4EA8615712A789709937BB8C2CC9283C9"
|
||||
"OrthoAutoAnnotate\DimensionsJig.cs","29130","C1AA5D7A05F87E35AA414898A1A277678F8CDDB4F78BEDF2E286261003365119"
|
||||
"OrthoAutoAnnotate\HighlightAndZoomPnPId.cs","10918","533FACB562F598B7E8DEDC636F9E91F17858C9A577573A6CC3EF1AC1750743EC"
|
||||
"OrthoAutoAnnotate\OrthoAutoAnnotate.csproj","4996","BBC3E9A0B32BF79A53FBDAD3F0C2D4A0408EBED99C42941548F17A5EDD0BC623"
|
||||
"OrthoAutoAnnotate\SulphurSupport.cs","2646","BED1B60B154BAFC5388EAC8DABA1C72309A5FDB30344C0A8FEFE02F14FF0B380"
|
||||
"OrthoAutoAnnotate\XMLFile.cs","11270","CC0E527AB65B3ECBFA5D0CE8AF82A1968280F2EA0CA492B9C19EB5C3E5394072"
|
||||
"OrthoAutoAnnotate\Properties\AssemblyInfo.cs","1344","137C070DA2C2681CBEAD842E1D35BD2F355282BE1D1F4D2586B3117DB8F6460E"
|
||||
"OrthoLoader\Loader.cs","6996","84503CDA2BD1A0E520E78878AB19786A65AB14193D3FF979463B481EBA42B38F"
|
||||
"OrthoLoader\OrthoLoader.csproj","3924","5E32F54CA6F6E6EF13EBF23396198F25063DAA2AFE5812DC6F57DAC8B8161E1E"
|
||||
"OrthoLoader\Ribbon.cs","29366","10F305AFF461B94F1D58E01E066459EE1D11E3AECC34A4997735A498564C8F61"
|
||||
"OrthoLoader\ico\button_BJ.png","1235","414F0A23E917D41A82C697B0E9CDDDF9BFCACD1627310BD5717AEA172418AA51"
|
||||
"OrthoLoader\ico\button_CAC.png","1943","FA2B8877F8B41C70BA62C737C40374394D6840A53DFE2D0B0F83463C4817C138"
|
||||
"OrthoLoader\ico\button_PXP-AAV.png","1905","6AB171963B553B434B5AA4BFBE91993B1782606AAF9B486FA23BB27BC1F0E4AA"
|
||||
"OrthoLoader\ico\button_PXP-AC.png","1751","60A6BD62EF3E50BDDCD00D9C281F2399E6C9D42E0C2DAA1742273C0DC48FE9C3"
|
||||
"OrthoLoader\ico\button_PXP-AE.png","2001","F1DCF0E908F5AF38CCD13ABA58B824E5B186430414499C0F623C1D5EEAD8DAD7"
|
||||
"OrthoLoader\ico\button_PXP-ALC.png","1740","19DB2449B66B95965155E6E3BC313BD52000FE38C95B0FAD90EF07DF53EA9CC9"
|
||||
"OrthoLoader\ico\button_PXP-COV.png","2007","529BDD045961C244FBD0DE177B899AF9E7CE0F4506B3463C56D2704B3BF207B5"
|
||||
"OrthoLoader\ico\button_PXP-DJ.png","1470","127957752DC2B6573CD2FD9A2791914BA22802E07E9B7E23CD3AE1FFF9E4FFC4"
|
||||
"OrthoLoader\ico\button_PXP-ELN.png","1927","DF32E6A465D5C196A17F3F96473315590DF2D71995F63D2D241D7599B62C99BB"
|
||||
"OrthoLoader\ico\button_PXP-ESN.png","1636","0F089184CFD428DA3620F9C0AD2DCBFC21B31ED34FA301E8D5D45923783C0CC7"
|
||||
"OrthoLoader\ico\button_PXP-IE.png","1885","F1C6373BFAF82E1908AF371D5F21133D27E0B84AFC706A703530855A2046FE43"
|
||||
"OrthoLoader\ico\button_PXP-IOD.png","1942","494E90C899A0BB5BB365B0E1452E92A68359610C5A38A37D09F520A39BDB3899"
|
||||
"OrthoLoader\ico\button_PXP-LN.png","2024","F3305ED6D266E29FA475D4C8A7DF38D2D2A1776A4CE379B876B6CFA278B2FE5D"
|
||||
"OrthoLoader\ico\button_PXP-MA.png","1907","9386249121644DCF4B9C70491F561E8B6E5BAAE87EBB2C76A84E46B10A60C8C3"
|
||||
"OrthoLoader\ico\button_PXP-OA.png","1999","EAA2AD7EE5C6B7F3716AF1D7690C76AE59229AE9B6BA02009F5009CD9307F4E8"
|
||||
"OrthoLoader\ico\button_PXP-OSI.png","1508","422D10B6EBDD76085CF9C5985391CCA060464B200D6792D604658AAE47F12CEE"
|
||||
"OrthoLoader\ico\button_PXP-RA.png","1826","1DB3F39C6CCA4EABE79D81DE6DCF9900649CDC9064F2EBF5E45F9AD849B8317F"
|
||||
"OrthoLoader\ico\button_PXP-RMP.png","1759","156026EC6DEB7BDBE720047409E9A25615D650D8634C2F0BAF49A71E27135258"
|
||||
"OrthoLoader\ico\button_PXP-ULN.png","1928","B37EBB460691EAA7BC3A91DF05C27FE7CC1F0E9F9D69BDA7703956EAA7AA785C"
|
||||
"OrthoLoader\ico\button_PXP-UOB.png","1569","3BC16B9923CCD34CF10F403CD65732B217E255E89539174841E7F30D9DFD2DCD"
|
||||
"OrthoLoader\Properties\AssemblyInfo.cs","1483","3BA048D1ADD87ECBD1EB1D60E6C737B3B81920755B77828C1084B239990B126D"
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\Commands.cs","5914","A3AB868B3DD5FAE9CF374B9409431D7785E9F3E1D7EEB909FF84E47D7219A715"
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\CopyObjects.cs","23350","D9D4DDEC93877CD65C008BB3C34320063DB601CF63836573042140538AA7291B"
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\P3DCopyMissingObjectsToOrthoDrawing.csproj","3895","70E636B328BBF14650C945855898543F563098F9A7FBF47EB5D57318C1B21871"
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\XMLFile.cs","2097","5EEC3947B34240108C498361E625E40B32B4C8B2850184D5B558CFED2CF9400F"
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\Properties\AssemblyInfo.cs","1527","2273D6F54DB31EFA129884F66621A75CA4352D71D3C73C9CAF2AC5F0AFBD0CBA"
|
||||
"P3DNewMa\.refsignored","0","E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855"
|
||||
"P3DNewMa\ARXImports.cs","1949","F0176472FBA507CFDAF9FE15BA1C05C9722930BC44E6695F074299679A517B84"
|
||||
"P3DNewMa\Commands.cs","532","784ACB7240C55E667160D91563487A8877540689221D7EA7BBBE49E2C9B7A39F"
|
||||
"P3DNewMa\EditorExtension.cs","515","1C0586965D6F3F43E403FBFED2F5F4910EAA1CC26ADAE31F72EFE4BF2D69FD56"
|
||||
"P3DNewMa\Extensions.cs","3075","136921BBEFD42BAF87C168B993B76EB123B5270551A50A8A1A54C6671D761541"
|
||||
"P3DNewMa\MewMaPalette.cs","2022","44FF61D3C142DC1D424ABBC4085093474545CE799FAD358BC85C9A1D32F95918"
|
||||
"P3DNewMa\NewMaControl.cs","374174","2FD74A326834A23778BB528B148B4352015475F9955F137F347D948E49BBAAE8"
|
||||
"P3DNewMa\NewMaControl.Designer.cs","22411","B159C05CC0BC79DF83665BE9E47EECCE10EAD1CD0A83DF3FD44EDCAE392FF94F"
|
||||
"P3DNewMa\NewMaControl.resx","21835","CF838E8CB3A2F89B76EA20D62545ACECE9ABBD47E48454F71B7D544AD6110C85"
|
||||
"P3DNewMa\P3DNewMa.csproj","5472","A2A6F225A7B376DE556E1561FA03BC8AED04ECC4A39FE107040EAD9742B6475B"
|
||||
"P3DNewMa\XMLFile.cs","3172","0F51989F6C1D522CBB621B71A72DC1AEA95CC6CF8567C570DE8C38D7B5E7F0ED"
|
||||
"P3DNewMa\Properties\AssemblyInfo.cs","1474","2F82DF350FD4AEB3CCDCF04F34D838374A2820F1F9C6A726450C33FDF8007AB7"
|
||||
"P3DSetLayerForViewport\Commands.cs","1096","A0E692C03F9CA1B7517146EE7E94E34A98E69B54FE28BD45BF554083583810A5"
|
||||
"P3DSetLayerForViewport\P3DSetLayerForViewport.csproj","3412","330DE9D5089E7CEB960172815C06A902ACDD78222FDD7454533187B8554E23A9"
|
||||
"P3DSetLayerForViewport\Properties\AssemblyInfo.cs","1507","E31F7720110696842ECF302DA5EFE0A9AF070FD4A43FCCD6BACFF582351C9E2A"
|
||||
"PHPAnnotations\PHPAnnotations.cs","95089","2A897CC8D0DED5820AE442409F8CCCDC019B46EF2466A6B45F57C3E7A927D6ED"
|
||||
"PHPAnnotations\PHPAnnotations.csproj","4665","ED276F12610076E2C372112E94050FA1DEDE62F57C072834209028AF6D6DEFF1"
|
||||
"PHPAnnotations\PHPAnnotationsForm.cs","36321","40613C0A98E67EC441643848BD54FBFC1D4E2B157E6C2C1FF8DD1B30E9D4C926"
|
||||
"PHPAnnotations\PHPAnnotationsForm.Designer.cs","31207","164894CD2A2A138583488931149BA69A0D72AE34BED59FD375DAD723978D8FFF"
|
||||
"PHPAnnotations\PHPAnnotationsForm.resx","5817","4363CD7D5B8671C72442CE1A1BFC10D64EBD24B2D718B54BD4FCD025E4967298"
|
||||
"PHPAnnotations\PHPBlockJig.cs","112795","2E960188918EE74BD1D45E15D3C42430A63BB026CAB6FFA72A90180CC4077DA3"
|
||||
"PHPAnnotations\Properties\AssemblyInfo.cs","1491","32D45C44A55881BED443865DE3B30C66AF6485B42ACB7728450CA3ED377A35FD"
|
||||
"SwapAttributesMenuItem\Commands.cs","15246","67F465BE64805F8312E8A993464CCB575CE7090FF3AE194F59F78EB431C4C1F6"
|
||||
"SwapAttributesMenuItem\SwapAttributesMenuItem.csproj","3459","3ECE76B8449AE9C26AE33001390ABFAF270AD899F69E17B7E717252A803B84C3"
|
||||
"SwapAttributesMenuItem\Properties\AssemblyInfo.cs","1507","5124A7D8538EF1AF115AC79430C0B52E2A0C029E5CAF9A3228202148A78D9DF2"
|
||||
"UpdateOrthoDrawings\Back.jpg","852","E586854785E04F60E0C38205EB0C9C32737F1AF1D3C4CAE9BE6053FBC27011C8"
|
||||
"UpdateOrthoDrawings\Bottom.jpg","872","3703170ABBA78E89B3B1E5D80A2DB7A54B855554672FB74EE38E9D81850CC76A"
|
||||
"UpdateOrthoDrawings\Commands.cs","67491","39F19BD5C8A41A3A61E305919EFBEF2C76B895649D4E24B426149F4AEAD18DF4"
|
||||
"UpdateOrthoDrawings\CSV.cs","2144","EB8624430DB53F9151DFAC99895ECF30D3550D1EE2ACC4428E509BDF6851303D"
|
||||
"UpdateOrthoDrawings\Drawing.jpg","890","8050397CC041E17984D9989F5DF836A2F14D67FCE5907265F4FCB526EBDECE4D"
|
||||
"UpdateOrthoDrawings\Folder.jpg","852","F8413955CEA5F7D0EE562490BA289D6FC36FB645977A2DA719E0E0D010639C39"
|
||||
"UpdateOrthoDrawings\Front.jpg","849","A8EB3DBB3802A6F7F769E7670F3B7647E83190A4237BF1301A88CF579E85FDBF"
|
||||
"UpdateOrthoDrawings\Left.jpg","872","53E677ACA5E020276A9E04FD17B5EF467CF80E334ACA3DBA7DECBC900713FD93"
|
||||
"UpdateOrthoDrawings\OperationProgress.cs","2253","56253C2521E2E025DACC59264B7F6D10E0AC0CDADDB8C26F7E96042FD388322F"
|
||||
"UpdateOrthoDrawings\OperationProgress.designer.cs","4969","F5759895842BF2D1D6C5E2B37ECD0B6BEBD914D65D7DD1AB82C08AEF73719056"
|
||||
"UpdateOrthoDrawings\OperationProgress.resx","5817","4363CD7D5B8671C72442CE1A1BFC10D64EBD24B2D718B54BD4FCD025E4967298"
|
||||
"UpdateOrthoDrawings\Ortho.jpg","909","9BC9BB2644C41DA07A6EA26A0E3AA808A9B362CADAFC11AD25D4BE7B22A2598E"
|
||||
"UpdateOrthoDrawings\RCDATA_16_DWG.ico","1150","0799E5EC07964EBA52692F37FFB1C9DDFE19AFE6A16305246B7703E14CA3F009"
|
||||
"UpdateOrthoDrawings\RCDATA_16_VIEBAC.ico","1150","009659E2831F480E97981A0FAA3B52A3E9BA5D46005F324F4EECE95F66CD462A"
|
||||
"UpdateOrthoDrawings\RCDATA_16_VIEBOT.ico","1150","9263E25E56BAB1EEAAC23E239D476A5D5C21D4DB7932AF0123FBFB9F857168E9"
|
||||
"UpdateOrthoDrawings\RCDATA_16_VIEFRO.ico","1150","83AFB03C33F2E7789451BEDF45A2C42A5179B039AAEF43D78783F001ACFB43AE"
|
||||
"UpdateOrthoDrawings\RCDATA_16_VIELEF.ico","1150","BAAD02C63DA2563B7AD34E4FF1BD8AA5C3B35D0C5703C5F7DB7ECF9490970C1F"
|
||||
"UpdateOrthoDrawings\RCDATA_16_VIERIG.ico","1150","FE4914F3ABEFBE2749A446438FAB8C50AAECDE98767DBFA917271917559FBB40"
|
||||
"UpdateOrthoDrawings\RCDATA_16_VIETOP.ico","1150","625CCD960C3FD80A1ADC61B47F589652A359E9446FC1722B583ACDE2F60DD544"
|
||||
"UpdateOrthoDrawings\Right.jpg","866","F064FC75EA6D46D9B3D24FADC3253AC1ECF2AB595BC03866BD411C116D19D227"
|
||||
"UpdateOrthoDrawings\SelectAdditionalOperations.cs","1563","F0C1B064779AA5AC7061D64C39A80D5BDBF7E52BCAEF458FA012141535F607C7"
|
||||
"UpdateOrthoDrawings\SelectAdditionalOperations.designer.cs","8525","884C92DFB0E9CAC5EE5CED340AF908E2BBF9D8B42CA4D7AAE835DCC754FD5F40"
|
||||
"UpdateOrthoDrawings\SelectAdditionalOperations.resx","12505","CF3A92172710A6DF9381EE336C1023AD17B72A33A2D124790F64E95059359409"
|
||||
"UpdateOrthoDrawings\SelectDrawings.cs","4128","0AE10FC1752C25415B3213C394CACA464DF5F0C6C3FEE8DDA54DB43B411D965F"
|
||||
"UpdateOrthoDrawings\SelectDrawings.designer.cs","7414","CDBDA90059F071995CE8EB0F831EFFA50EFF87A23C366C223494EDAEF7B49AAF"
|
||||
"UpdateOrthoDrawings\SelectDrawings.resx","12505","58D46EA851C7363136B7D690DA11307C0319D1ABEA44659D584B27BAC0533D31"
|
||||
"UpdateOrthoDrawings\Up.jpg","866","ED7621550E663306DEDEFE54B09CF3C62D895A3D0FFC8A527A16660BD7254750"
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","7597","5F54220442CEE919A35022B8152C90C502F0FF9998BB9AD0A8788422989F5B47"
|
||||
"UpdateOrthoDrawings\Libraries\PnP3dOrthoDrawingsUI.dll","362968","A8A88996DD1F2FD89520785C7006923B36B005A3F38D845F3AA6DE85E0CB6C63"
|
||||
"UpdateOrthoDrawings\Libraries\PnP3dOrthoProjectPart.dll","39384","CD908D9332FF3AEDB5694DEF4331F217AE653C19A122B87C4D121ECFD3D8E157"
|
||||
"UpdateOrthoDrawings\Libraries\PnP3dOrthoUtilMgd.dll","72152","42C4103445EB5757DD21CBEF25255348F207F4F4C54FF7DD14F0C7F763CD95BE"
|
||||
"UpdateOrthoDrawings\Libraries\PnPDwg2dAnno.dll","280536","D662C2B24CE1CDF444A0C34926D29DEB5193D587D97DB3B9EB68E6E762D95B03"
|
||||
"UpdateOrthoDrawings\Libraries\PnPDwg2dDbx.dll","244696","375D8CCBDCE6CBB72B28AC23DFAE9201CC014F8D98ACEDF0A4AD512F038DB028"
|
||||
"UpdateOrthoDrawings\Libraries\PnPDwg2dDef.dll","98264","AD0A27CF6B3EDD7BFECC78FE622B180D397D74E5A359AB4A9630130CBF2B42B8"
|
||||
"UpdateOrthoDrawings\Libraries\PnPDwg2dGen.dll","127960","FC749B8E17760D9BDEFB65A54E263B8D1352C1892073C4DD60E69CC8302F5ABB"
|
||||
"UpdateOrthoDrawings\Libraries\PnPDwg2dUtil.dll","143832","43B1317D4F23BCC2D41C05695C04044A283E2B967E998E4B5644FD2B6FDBC937"
|
||||
"UpdateOrthoDrawings\Properties\AssemblyInfo.cs","1501","BC650E3D163407D7215CEA893BB8520B665BBCC3E321A32606357E84C45B8755"
|
||||
"UpdateOrthoViewBlocks\Commands.cs","38266","D517CB29E8D5776FFBCFA5996FF23B4561F7EFDA1770CEF7598EF2111A81EAC1"
|
||||
"UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","5221","CA2A88302437BE2FA8FFF9B96CD961DBC44A70715EC6F79FE9654F749FD72E6E"
|
||||
"UpdateOrthoViewBlocks\XMLFile.cs","4244","DCF9353EB9686C4D31CA5944F1CEA2EB6DF9B1C43EDF2946EAA10195662492A6"
|
||||
"UpdateOrthoViewBlocks\Properties\AssemblyInfo.cs","1505","66AE8EFD9E1D614FBDE58D2C0173F1775F1CACA16EDE5DE0A9459A72F1371A6C"
|
||||
"_archive\2019_AnnotateLineNumbers\drawing.png","298","7A6AC1F97278F8E79D9DAE52DB7D9833C516F6E5FCF554508A01323736542154"
|
||||
"_archive\2019_AnnotateLineNumbers\folder.png","210","87E56D1EDDEA45CE0588CF848406F981BAAE7713717B9FFAAB40881546836863"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Class1.cs","8299","C4AA842DA6991DE2AD4D0A3573E844D21291A1E12570818859455F70DD7CB7EF"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","67834","969B85134832574C61A5026DECFB27D891FBC5CB4E7EB711B9309FFE0A1D8E6B"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","63203","F0D9865776CD53C604FE9E36FE6578A6196D5FC1C8FCBB0E6F2456136BB7F258"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","64114","96B19B37501ACCC8E0B6A93A3C7492C5971C8074F1A47EA74EC6052CA7EB9F1C"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","53835","73CF65197CD51A57B52392EB817C7B9E5B08180138218786FD5D191BB2312664"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия.cs","19693","E7E0AD9331F74063D499F6B89619AF790DCE8774BD16BCCCC7F7B1CA8554AF52"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","63203","F0D9865776CD53C604FE9E36FE6578A6196D5FC1C8FCBB0E6F2456136BB7F258"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","64114","96B19B37501ACCC8E0B6A93A3C7492C5971C8074F1A47EA74EC6052CA7EB9F1C"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\LineNumberList - копия.cs","41978","827C2FD40E56A86E25FAB78320EE30336F87D4178388C04055638AA68BFE831D"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\LineNumberMarker - копия (2).cs","13778","73E123A42D2C4C72DE73F5632F8BEF4328212D5ABC6A819AD91AA4AD57312F72"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\LineNumberMarker - копия.cs","22961","F3FA711BCBE61D3EBAF2E1EC5E01AA3C205FFA63930F4B17DB8259B978ED7A75"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText.sln","1184","EE337ED7C38FA3FB31C2ACCB8933A2330FD50845A8A910817495250F3B9A9A2A"
|
||||
"_archive\2019_GetLinenumberAnnotationText\Источник.txt","634","5F3F9FFAAAA4FE9534F5A1A16C7C42132D7CD6D335DA38C33F0206525388B607"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","2950","DCFEC303EE6E7D30FC8D72CCC7CE72CF8DB1805DDBDFF2124DCEDC76B08C60B9"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","21786","48F7356657E95073A4E95CE96A24537B3C06EC06AD769A44913499CE4B641BA7"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\Properties\AssemblyInfo.cs","1484","2B39009C8957250249193361237ABD33ACCED1521072F9B620DBDBCDDA3C3003"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText.sln","1184","EE337ED7C38FA3FB31C2ACCB8933A2330FD50845A8A910817495250F3B9A9A2A"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\Источник.txt","634","5F3F9FFAAAA4FE9534F5A1A16C7C42132D7CD6D335DA38C33F0206525388B607"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","2950","DCFEC303EE6E7D30FC8D72CCC7CE72CF8DB1805DDBDFF2124DCEDC76B08C60B9"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","21164","A1CABEF6F902127B2754B40688113851496835A4044F186BE63037D371AF8EB0"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\Properties\AssemblyInfo.cs","1484","2B39009C8957250249193361237ABD33ACCED1521072F9B620DBDBCDDA3C3003"
|
||||
"_archive\2019_InsertElevation_ОЗХ\Описание.txt","118","31CD2F60B359A436BF3547BF861E1145813351944D38AF23953A55EFC29AD604"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation.sln","1148","620BE31B6E7111F38DC85469C1023F06D575B35CC4C474E043A98C28A0A038A1"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\Источник.txt","581","086DF20E3A352FBCC8FEDE6A555AF5B1DD91278E60062DFC64A4F218DC6C793E"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\ArxImports.cs","1200","4EBFB98999589A71765D29AAF5B61078836E6060046C26B3D69FA404C5A9ACF5"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\Commands.cs","73682","89801F75BA5A90ACC385BBFF006B39A9AEAB74EE3CFBC0A1383D7FD140578E5F"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\InsertElevation.csproj","4435","352C66A2482BF7683A7D09E0602A5DE7033F1150597DF22875629AF1299E1E8C"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\XMLFile.cs","3781","FEFD5410F45CB8E5D888A739F9D7B91126C4041FF12C7BC000D4A6B89781ED23"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\Properties\AssemblyInfo.cs","1460","3955628FF4B5AFE33562777E0274A89EBAFF130713129E637EA899A5E8E68D8B"
|
||||
"_archive\2019_PHPAnnotations\2019_PHPAnnotations\Class1.cs","3133","CEC5435EF13ABD59E194C9CD81C3A2A9D58CF97B74D65E3FCD918690D1417E44"
|
||||
"_archive\2019_PHPAnnotations\2019_PHPAnnotations\Class2.cs","159","8DF997EC4D1589E64E447EB82729040B46C9B45D239BEFB16BFDC7DD71EFD1DB"
|
||||
"_archive\2019_UpdateOrthoDrawings\2019_UpdateOrthoDrawings\XMLFile.cs","4732","8DA91EDC6DFB4C16BF1A238FBF7887E9B6210849BA128935467352435AA8A1FC"
|
||||
"_archive\GetLinenumberAnnotationText\test\ATest_p-clat.zip","15181842","43D7159D0C20B6C1BA82FB68DB186D1A33D824CF9C01D9991E17D17D0F2C0AD1"
|
||||
"_archive\GetLinenumberAnnotationText\test\Тесты на аннотации.docx","173939","DE7811BDE239CEBD2B24E9D47CCD5214FC92A7E40109E321E78693B9029D49AE"
|
||||
"_archive\GetLinenumberAnnotationText\test\Тесты на ошибки.docx","213774","D8212979B1D23F6012040C580E2916063FB995780824EBFBAF8F70DFB9A486A5"
|
||||
|
@@ -0,0 +1,400 @@
|
||||
"Project","Reference","HintPath","Private","Category","Specific2019","Risk2026"
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","accoremgd","C:\Program Files\Autodesk\AutoCAD 2019\accoremgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","acdbmgd","C:\Program Files\Autodesk\AutoCAD 2019\acdbmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","acmgd","C:\Program Files\Autodesk\AutoCAD 2019\acmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","Autodesk.AutoCAD.Interop, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL","C:\Program Files\Autodesk\AutoCAD 2019\Autodesk.AutoCAD.Interop.dll","","Autodesk API","True","hard-coded 2019 path"
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","Autodesk.AutoCAD.Interop.Common, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL","C:\Program Files\Autodesk\AutoCAD 2019\Autodesk.AutoCAD.Interop.Common.dll","","Autodesk API","True","hard-coded 2019 path"
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","EnablerLoader","..\Files\EnablerLoader.dll","False","framework/other","False",""
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","GetLinenumberAnnotationText","..\Files\GetLinenumberAnnotationText.dll","False","framework/other","False",""
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","P3DCopyMissingObjectsToOrthoDrawing","..\Files\P3DCopyMissingObjectsToOrthoDrawing.dll","False","framework/other","False",""
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","P3DSetLayerForViewport","..\Files\P3DSetLayerForViewport.dll","False","framework/other","False",""
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","PnPDataLinks","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataLinks.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","PnPDataObjects","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataObjects.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","PnPProjectManagerMgd","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnPProjectManagerMgd.DLL","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","System","","","framework/other","False",""
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","System.Core","","","framework/other","False",""
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","System.DirectoryServices","","","framework/other","False",""
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","System.Drawing","","","framework/other","False",""
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","System.Windows.Forms","","","framework/other","False",""
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","System.Xml.Linq","","","framework/other","False",""
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","System.Data.DataSetExtensions","","","framework/other","False",""
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","Microsoft.CSharp","","","framework/other","False",""
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","System.Data","","","framework/other","False",""
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","System.Xml","","","framework/other","False",""
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","","","","framework/other","False",""
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","","","","framework/other","False",""
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","","","","framework/other","False",""
|
||||
"AnnotateLineNumbers\AnnotateLineNumbers.csproj","","","","framework/other","False",""
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj","accoremgd","C:\Program Files\Autodesk\AutoCAD 2019\accoremgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj","acdbmgd","C:\Program Files\Autodesk\AutoCAD 2019\acdbmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj","acmgd","C:\Program Files\Autodesk\AutoCAD 2019\acmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj","CheckOrthoView","..\Files\CheckOrthoView.dll","False","framework/other","False",""
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj","EnablerLoader","..\Files\EnablerLoader.dll","False","framework/other","False",""
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj","ExtentsIntersect","..\Files\ExtentsIntersect.dll","False","framework/other","False",""
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj","P3DCopyMissingObjectsToOrthoDrawing","..\Files\P3DCopyMissingObjectsToOrthoDrawing.dll","False","framework/other","False",""
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj","P3DSetLayerForViewport","..\Files\P3DSetLayerForViewport.dll","False","framework/other","False",""
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj","PnPDataLinks","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataLinks.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj","PnPDataObjects","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataObjects.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj","PnPProjectManagerMgd","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnPProjectManagerMgd.DLL","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj","System","","","framework/other","False",""
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj","System.Core","","","framework/other","False",""
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj","System.DirectoryServices","","","framework/other","False",""
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj","System.Drawing","","","framework/other","False",""
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj","System.Windows.Forms","","","framework/other","False",""
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj","System.Xml.Linq","","","framework/other","False",""
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj","System.Data.DataSetExtensions","","","framework/other","False",""
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj","Microsoft.CSharp","","","framework/other","False",""
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj","System.Data","","","framework/other","False",""
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj","System.Xml","","","framework/other","False",""
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj","","","","framework/other","False",""
|
||||
"AutoAnnotateView\AutoAnnotateView.csproj","","","","framework/other","False",""
|
||||
"AutoElevation\AutoElevation.csproj","accoremgd","C:\Program Files\Autodesk\AutoCAD 2019\accoremgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AutoElevation\AutoElevation.csproj","acdbmgd","C:\Program Files\Autodesk\AutoCAD 2019\acdbmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AutoElevation\AutoElevation.csproj","acmgd","C:\Program Files\Autodesk\AutoCAD 2019\acmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AutoElevation\AutoElevation.csproj","CheckOrthoView","..\Files\CheckOrthoView.dll","False","framework/other","False",""
|
||||
"AutoElevation\AutoElevation.csproj","EnablerLoader","..\Files\EnablerLoader.dll","False","framework/other","False",""
|
||||
"AutoElevation\AutoElevation.csproj","GetComponentGeometry","..\Files\GetComponentGeometry.dll","False","framework/other","False",""
|
||||
"AutoElevation\AutoElevation.csproj","P3DCopyMissingObjectsToOrthoDrawing","..\Files\P3DCopyMissingObjectsToOrthoDrawing.dll","False","framework/other","False",""
|
||||
"AutoElevation\AutoElevation.csproj","P3DSetLayerForViewport","..\Files\P3DSetLayerForViewport.dll","False","framework/other","False",""
|
||||
"AutoElevation\AutoElevation.csproj","PnP3dObjectsMgd","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnP3dObjectsMgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AutoElevation\AutoElevation.csproj","PnP3dPartsRepository","C:\Program Files\Autodesk\AutoCAD 2019\PnP3dPartsRepository.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AutoElevation\AutoElevation.csproj","PnPDataLinks","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataLinks.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AutoElevation\AutoElevation.csproj","PnPDataObjects","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataObjects.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AutoElevation\AutoElevation.csproj","PnPDwg2dUtil","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnPDwg2dUtil.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AutoElevation\AutoElevation.csproj","PnPProjectManagerMgd","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnPProjectManagerMgd.DLL","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AutoElevation\AutoElevation.csproj","System","","","framework/other","False",""
|
||||
"AutoElevation\AutoElevation.csproj","System.Core","","","framework/other","False",""
|
||||
"AutoElevation\AutoElevation.csproj","System.DirectoryServices","","","framework/other","False",""
|
||||
"AutoElevation\AutoElevation.csproj","System.Windows.Forms","","","framework/other","False",""
|
||||
"AutoElevation\AutoElevation.csproj","System.Xml.Linq","","","framework/other","False",""
|
||||
"AutoElevation\AutoElevation.csproj","System.Data.DataSetExtensions","","","framework/other","False",""
|
||||
"AutoElevation\AutoElevation.csproj","Microsoft.CSharp","","","framework/other","False",""
|
||||
"AutoElevation\AutoElevation.csproj","System.Data","","","framework/other","False",""
|
||||
"AutoElevation\AutoElevation.csproj","System.Xml","","","framework/other","False",""
|
||||
"AutoElevation\AutoElevation.csproj","","","","framework/other","False",""
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj","accoremgd","C:\Program Files\Autodesk\AutoCAD 2019\accoremgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj","acdbmgd","C:\Program Files\Autodesk\AutoCAD 2019\acdbmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj","acmgd","C:\Program Files\Autodesk\AutoCAD 2019\acmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj","CheckOrthoView","..\Files\CheckOrthoView.dll","False","framework/other","False",""
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj","EnablerLoader","..\Files\EnablerLoader.dll","False","framework/other","False",""
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj","ExtentsIntersect","..\Files\ExtentsIntersect.dll","False","framework/other","False",""
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj","GetLinenumberAnnotationText","..\Files\GetLinenumberAnnotationText.dll","False","framework/other","False",""
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj","P3DCopyMissingObjectsToOrthoDrawing","..\Files\P3DCopyMissingObjectsToOrthoDrawing.dll","False","framework/other","False",""
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj","P3DSetLayerForViewport","..\Files\P3DSetLayerForViewport.dll","False","framework/other","False",""
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj","PnP3dObjectsMgd","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnP3dObjectsMgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj","PnPDataLinks","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataLinks.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj","PnPDataObjects","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataObjects.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj","PnPProjectManagerMgd","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnPProjectManagerMgd.DLL","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj","System","","","framework/other","False",""
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj","System.Core","","","framework/other","False",""
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj","System.DirectoryServices","","","framework/other","False",""
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj","System.Windows.Forms","","","framework/other","False",""
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj","System.Xml.Linq","","","framework/other","False",""
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj","System.Data.DataSetExtensions","","","framework/other","False",""
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj","Microsoft.CSharp","","","framework/other","False",""
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj","System.Data","","","framework/other","False",""
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj","System.Xml","","","framework/other","False",""
|
||||
"AutoLinenumberConnections\AutoLinenumberConnections.csproj","","","","framework/other","False",""
|
||||
"CheckOrthoView\CheckOrthoView.csproj","accoremgd","C:\Program Files\Autodesk\AutoCAD 2019\accoremgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"CheckOrthoView\CheckOrthoView.csproj","acdbmgd","C:\Program Files\Autodesk\AutoCAD 2019\acdbmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"CheckOrthoView\CheckOrthoView.csproj","acmgd","C:\Program Files\Autodesk\AutoCAD 2019\acmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"CheckOrthoView\CheckOrthoView.csproj","EnablerLoader","..\Files\EnablerLoader.dll","False","framework/other","False",""
|
||||
"CheckOrthoView\CheckOrthoView.csproj","PnPDataLinks","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataLinks.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"CheckOrthoView\CheckOrthoView.csproj","PnPDataObjects","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataObjects.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"CheckOrthoView\CheckOrthoView.csproj","PnPProjectManagerMgd","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnPProjectManagerMgd.DLL","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"CheckOrthoView\CheckOrthoView.csproj","System","","","framework/other","False",""
|
||||
"CheckOrthoView\CheckOrthoView.csproj","System.Core","","","framework/other","False",""
|
||||
"CheckOrthoView\CheckOrthoView.csproj","System.DirectoryServices","","","framework/other","False",""
|
||||
"CheckOrthoView\CheckOrthoView.csproj","System.Windows.Forms","","","framework/other","False",""
|
||||
"CheckOrthoView\CheckOrthoView.csproj","System.Xml.Linq","","","framework/other","False",""
|
||||
"CheckOrthoView\CheckOrthoView.csproj","System.Data.DataSetExtensions","","","framework/other","False",""
|
||||
"CheckOrthoView\CheckOrthoView.csproj","Microsoft.CSharp","","","framework/other","False",""
|
||||
"CheckOrthoView\CheckOrthoView.csproj","System.Data","","","framework/other","False",""
|
||||
"CheckOrthoView\CheckOrthoView.csproj","System.Xml","","","framework/other","False",""
|
||||
"CheckOrthoView\CheckOrthoView.csproj","","","","framework/other","False",""
|
||||
"EnablerLoader\EnablerLoader.csproj","accoremgd","C:\Program Files\Autodesk\AutoCAD 2019\accoremgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"EnablerLoader\EnablerLoader.csproj","acdbmgd","C:\Program Files\Autodesk\AutoCAD 2019\acdbmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"EnablerLoader\EnablerLoader.csproj","LoadedAssemblies","..\Files\LoadedAssemblies.dll","False","framework/other","False",""
|
||||
"EnablerLoader\EnablerLoader.csproj","System","","","framework/other","False",""
|
||||
"EnablerLoader\EnablerLoader.csproj","Microsoft.CSharp","","","framework/other","False",""
|
||||
"EnablerLoader\EnablerLoader.csproj","System.Windows.Forms","","","framework/other","False",""
|
||||
"EnablerLoader\EnablerLoader.csproj","","","","framework/other","False",""
|
||||
"ExtentsIntersect\ExtentsIntersect.csproj","accoremgd","C:\Program Files\Autodesk\AutoCAD 2019\accoremgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"ExtentsIntersect\ExtentsIntersect.csproj","acdbmgd","C:\Program Files\Autodesk\AutoCAD 2019\acdbmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"ExtentsIntersect\ExtentsIntersect.csproj","acmgd","C:\Program Files\Autodesk\AutoCAD 2019\acmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"ExtentsIntersect\ExtentsIntersect.csproj","System","","","framework/other","False",""
|
||||
"ExtentsIntersect\ExtentsIntersect.csproj","System.Core","","","framework/other","False",""
|
||||
"ExtentsIntersect\ExtentsIntersect.csproj","System.Xml.Linq","","","framework/other","False",""
|
||||
"ExtentsIntersect\ExtentsIntersect.csproj","System.Data.DataSetExtensions","","","framework/other","False",""
|
||||
"ExtentsIntersect\ExtentsIntersect.csproj","Microsoft.CSharp","","","framework/other","False",""
|
||||
"ExtentsIntersect\ExtentsIntersect.csproj","System.Data","","","framework/other","False",""
|
||||
"ExtentsIntersect\ExtentsIntersect.csproj","System.Xml","","","framework/other","False",""
|
||||
"ExtentsIntersect\ExtentsIntersect.csproj","","","","framework/other","False",""
|
||||
"GetComponentGeometry\GetComponentGeometry.csproj","accoremgd","C:\Program Files\Autodesk\AutoCAD 2019\accoremgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"GetComponentGeometry\GetComponentGeometry.csproj","acdbmgd","C:\Program Files\Autodesk\AutoCAD 2019\acdbmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"GetComponentGeometry\GetComponentGeometry.csproj","acmgd","C:\Program Files\Autodesk\AutoCAD 2019\acmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"GetComponentGeometry\GetComponentGeometry.csproj","Autodesk.AutoCAD.Interop, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL","C:\Program Files\Autodesk\AutoCAD 2019\Autodesk.AutoCAD.Interop.dll","","Autodesk API","True","hard-coded 2019 path"
|
||||
"GetComponentGeometry\GetComponentGeometry.csproj","Autodesk.AutoCAD.Interop.Common, Version=17.0.54.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b, processorArchitecture=MSIL","C:\Program Files\Autodesk\AutoCAD 2019\Autodesk.AutoCAD.Interop.Common.dll","","Autodesk API","True","hard-coded 2019 path"
|
||||
"GetComponentGeometry\GetComponentGeometry.csproj","GetPlantScriptFolderPath","..\Files\GetPlantScriptFolderPath.dll","False","framework/other","False",""
|
||||
"GetComponentGeometry\GetComponentGeometry.csproj","GetScriptParameters","..\Files\GetScriptParameters.dll","False","framework/other","False",""
|
||||
"GetComponentGeometry\GetComponentGeometry.csproj","PnP3dObjectsMgd","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnP3dObjectsMgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"GetComponentGeometry\GetComponentGeometry.csproj","PnP3dPartsRepository","C:\Program Files\Autodesk\AutoCAD 2019\PnP3dPartsRepository.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"GetComponentGeometry\GetComponentGeometry.csproj","System","","","framework/other","False",""
|
||||
"GetComponentGeometry\GetComponentGeometry.csproj","Microsoft.CSharp","","","framework/other","False",""
|
||||
"GetComponentGeometry\GetComponentGeometry.csproj","","","","framework/other","False",""
|
||||
"GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","accoremgd","C:\Program Files\Autodesk\AutoCAD 2019\accoremgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","acdbmgd","C:\Program Files\Autodesk\AutoCAD 2019\acdbmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","acmgd","C:\Program Files\Autodesk\AutoCAD 2019\acmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","PnPDataLinks","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataLinks.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","PnPDataObjects","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataObjects.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","PnPProjectManagerMgd","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnPProjectManagerMgd.DLL","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","System","","","framework/other","False",""
|
||||
"GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","System.Core","","","framework/other","False",""
|
||||
"GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","System.Drawing","","","framework/other","False",""
|
||||
"GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","System.Windows.Forms","","","framework/other","False",""
|
||||
"GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","System.Xml.Linq","","","framework/other","False",""
|
||||
"GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","System.Data.DataSetExtensions","","","framework/other","False",""
|
||||
"GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","Microsoft.CSharp","","","framework/other","False",""
|
||||
"GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","System.Data","","","framework/other","False",""
|
||||
"GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","System.Net.Http","","","framework/other","False",""
|
||||
"GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","System.Xml","","","framework/other","False",""
|
||||
"GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","","","","framework/other","False",""
|
||||
"GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","","","","framework/other","False",""
|
||||
"GetPlantScriptFolderPath\GetPlantScriptFolderPath.csproj","accoremgd","C:\Program Files\Autodesk\AutoCAD 2019\accoremgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"GetPlantScriptFolderPath\GetPlantScriptFolderPath.csproj","acmgd","C:\Program Files\Autodesk\AutoCAD 2019\acmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"GetPlantScriptFolderPath\GetPlantScriptFolderPath.csproj","System","","","framework/other","False",""
|
||||
"GetPlantScriptFolderPath\GetPlantScriptFolderPath.csproj","Microsoft.CSharp","","","framework/other","False",""
|
||||
"GetPlantScriptFolderPath\GetPlantScriptFolderPath.csproj","System.XML","","","framework/other","False",""
|
||||
"GetPlantScriptFolderPath\GetPlantScriptFolderPath.csproj","System.Xml.Linq","","","framework/other","False",""
|
||||
"GetPlantScriptFolderPath\GetPlantScriptFolderPath.csproj","","","","framework/other","False",""
|
||||
"GetScriptParameters\GetScriptParameters.csproj","System","","","framework/other","False",""
|
||||
"GetScriptParameters\GetScriptParameters.csproj","Microsoft.CSharp","","","framework/other","False",""
|
||||
"GetScriptParameters\GetScriptParameters.csproj","","","","framework/other","False",""
|
||||
"InsertElevation\InsertElevation.csproj","accoremgd","C:\Program Files\Autodesk\AutoCAD 2019\accoremgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"InsertElevation\InsertElevation.csproj","acdbmgd","C:\Program Files\Autodesk\AutoCAD 2019\acdbmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"InsertElevation\InsertElevation.csproj","acmgd","C:\Program Files\Autodesk\AutoCAD 2019\acmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"InsertElevation\InsertElevation.csproj","EnablerLoader","..\Files\EnablerLoader.dll","False","framework/other","False",""
|
||||
"InsertElevation\InsertElevation.csproj","P3DCopyMissingObjectsToOrthoDrawing","..\Files\P3DCopyMissingObjectsToOrthoDrawing.dll","False","framework/other","False",""
|
||||
"InsertElevation\InsertElevation.csproj","PnPDataLinks","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataLinks.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"InsertElevation\InsertElevation.csproj","PnPDataObjects","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataObjects.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"InsertElevation\InsertElevation.csproj","PnPProjectManagerMgd","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnPProjectManagerMgd.DLL","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"InsertElevation\InsertElevation.csproj","System","","","framework/other","False",""
|
||||
"InsertElevation\InsertElevation.csproj","System.Core","","","framework/other","False",""
|
||||
"InsertElevation\InsertElevation.csproj","System.DirectoryServices","","","framework/other","False",""
|
||||
"InsertElevation\InsertElevation.csproj","System.Windows.Forms","","","framework/other","False",""
|
||||
"InsertElevation\InsertElevation.csproj","System.Xml.Linq","","","framework/other","False",""
|
||||
"InsertElevation\InsertElevation.csproj","System.Data.DataSetExtensions","","","framework/other","False",""
|
||||
"InsertElevation\InsertElevation.csproj","Microsoft.CSharp","","","framework/other","False",""
|
||||
"InsertElevation\InsertElevation.csproj","System.Data","","","framework/other","False",""
|
||||
"InsertElevation\InsertElevation.csproj","System.Xml","","","framework/other","False",""
|
||||
"InsertElevation\InsertElevation.csproj","","","","framework/other","False",""
|
||||
"LoadedAssemblies\LoadedAssemblies.csproj","accoremgd","C:\Program Files\Autodesk\AutoCAD 2019\accoremgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"LoadedAssemblies\LoadedAssemblies.csproj","acdbmgd","C:\Program Files\Autodesk\AutoCAD 2019\acdbmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"LoadedAssemblies\LoadedAssemblies.csproj","System","","","framework/other","False",""
|
||||
"LoadedAssemblies\LoadedAssemblies.csproj","Microsoft.CSharp","","","framework/other","False",""
|
||||
"LoadedAssemblies\LoadedAssemblies.csproj","","","","framework/other","False",""
|
||||
"OrthoAutoAnnotate\OrthoAutoAnnotate.csproj","","","","framework/other","False",""
|
||||
"OrthoAutoAnnotate\OrthoAutoAnnotate.csproj","accoremgd","C:\Program Files\Autodesk\AutoCAD 2019\accoremgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"OrthoAutoAnnotate\OrthoAutoAnnotate.csproj","acdbmgd","C:\Program Files\Autodesk\AutoCAD 2019\acdbmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"OrthoAutoAnnotate\OrthoAutoAnnotate.csproj","acmgd","C:\Program Files\Autodesk\AutoCAD 2019\acmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"OrthoAutoAnnotate\OrthoAutoAnnotate.csproj","CheckOrthoView","..\Files\CheckOrthoView.dll","False","framework/other","False",""
|
||||
"OrthoAutoAnnotate\OrthoAutoAnnotate.csproj","EnablerLoader","..\Files\EnablerLoader.dll","False","framework/other","False",""
|
||||
"OrthoAutoAnnotate\OrthoAutoAnnotate.csproj","GetComponentGeometry","..\Files\GetComponentGeometry.dll","False","framework/other","False",""
|
||||
"OrthoAutoAnnotate\OrthoAutoAnnotate.csproj","P3DCopyMissingObjectsToOrthoDrawing","..\Files\P3DCopyMissingObjectsToOrthoDrawing.dll","False","framework/other","False",""
|
||||
"OrthoAutoAnnotate\OrthoAutoAnnotate.csproj","P3DSetLayerForViewport","..\Files\P3DSetLayerForViewport.dll","False","framework/other","False",""
|
||||
"OrthoAutoAnnotate\OrthoAutoAnnotate.csproj","PnP3dObjectsMgd","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnP3dObjectsMgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"OrthoAutoAnnotate\OrthoAutoAnnotate.csproj","PnP3dPartsRepository","C:\Program Files\Autodesk\AutoCAD 2019\PnP3dPartsRepository.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"OrthoAutoAnnotate\OrthoAutoAnnotate.csproj","PnPDataLinks","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataLinks.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"OrthoAutoAnnotate\OrthoAutoAnnotate.csproj","PnPDataObjects","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataObjects.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"OrthoAutoAnnotate\OrthoAutoAnnotate.csproj","PnPDwg2dUtil","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnPDwg2dUtil.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"OrthoAutoAnnotate\OrthoAutoAnnotate.csproj","PnPProjectManagerMgd","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnPProjectManagerMgd.DLL","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"OrthoAutoAnnotate\OrthoAutoAnnotate.csproj","System","","","framework/other","False",""
|
||||
"OrthoAutoAnnotate\OrthoAutoAnnotate.csproj","System.DirectoryServices","","","framework/other","False",""
|
||||
"OrthoAutoAnnotate\OrthoAutoAnnotate.csproj","System.Windows.Forms","","","framework/other","False",""
|
||||
"OrthoAutoAnnotate\OrthoAutoAnnotate.csproj","System.XML","","","framework/other","False",""
|
||||
"OrthoAutoAnnotate\OrthoAutoAnnotate.csproj","System.Xml.Linq","","","framework/other","False",""
|
||||
"OrthoLoader\OrthoLoader.csproj","accoremgd","C:\Program Files\Autodesk\AutoCAD 2019\accoremgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"OrthoLoader\OrthoLoader.csproj","acdbmgd","C:\Program Files\Autodesk\AutoCAD 2019\acdbmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"OrthoLoader\OrthoLoader.csproj","acmgd","C:\Program Files\Autodesk\AutoCAD 2019\acmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"OrthoLoader\OrthoLoader.csproj","AdWindows","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\AdWindows.dll","False","framework/other","True","hard-coded 2019 path"
|
||||
"OrthoLoader\OrthoLoader.csproj","PnPProjectManagerMgd","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnPProjectManagerMgd.DLL","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"OrthoLoader\OrthoLoader.csproj","PresentationCore","","","framework/other","False",""
|
||||
"OrthoLoader\OrthoLoader.csproj","PresentationFramework","","","framework/other","False",""
|
||||
"OrthoLoader\OrthoLoader.csproj","System","","","framework/other","False",""
|
||||
"OrthoLoader\OrthoLoader.csproj","System.Core","","","framework/other","False",""
|
||||
"OrthoLoader\OrthoLoader.csproj","System.Windows.Forms","","","framework/other","False",""
|
||||
"OrthoLoader\OrthoLoader.csproj","System.XML","","","framework/other","False",""
|
||||
"OrthoLoader\OrthoLoader.csproj","System.Xml.Linq","","","framework/other","False",""
|
||||
"OrthoLoader\OrthoLoader.csproj","Microsoft.CSharp","","","framework/other","False",""
|
||||
"OrthoLoader\OrthoLoader.csproj","WindowsBase","","","framework/other","False",""
|
||||
"OrthoLoader\OrthoLoader.csproj","","","","framework/other","False",""
|
||||
"OrthoLoader\OrthoLoader.csproj","","","","framework/other","False",""
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\P3DCopyMissingObjectsToOrthoDrawing.csproj","accoremgd","C:\Program Files\Autodesk\AutoCAD 2019\accoremgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\P3DCopyMissingObjectsToOrthoDrawing.csproj","acdbmgd","C:\Program Files\Autodesk\AutoCAD 2019\acdbmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\P3DCopyMissingObjectsToOrthoDrawing.csproj","acmgd","C:\Program Files\Autodesk\AutoCAD 2019\acmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\P3DCopyMissingObjectsToOrthoDrawing.csproj","PnPProjectManagerMgd","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnPProjectManagerMgd.DLL","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\P3DCopyMissingObjectsToOrthoDrawing.csproj","System","","","framework/other","False",""
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\P3DCopyMissingObjectsToOrthoDrawing.csproj","System.Core","","","framework/other","False",""
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\P3DCopyMissingObjectsToOrthoDrawing.csproj","System.Windows.Forms","","","framework/other","False",""
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\P3DCopyMissingObjectsToOrthoDrawing.csproj","System.Xml.Linq","","","framework/other","False",""
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\P3DCopyMissingObjectsToOrthoDrawing.csproj","System.Data.DataSetExtensions","","","framework/other","False",""
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\P3DCopyMissingObjectsToOrthoDrawing.csproj","Microsoft.CSharp","","","framework/other","False",""
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\P3DCopyMissingObjectsToOrthoDrawing.csproj","System.Data","","","framework/other","False",""
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\P3DCopyMissingObjectsToOrthoDrawing.csproj","System.Xml","","","framework/other","False",""
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\P3DCopyMissingObjectsToOrthoDrawing.csproj","","","","framework/other","False",""
|
||||
"P3DNewMa\P3DNewMa.csproj","accoremgd","C:\Program Files\Autodesk\AutoCAD 2019\accoremgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"P3DNewMa\P3DNewMa.csproj","acdbmgd, Version=23.0.0.0, Culture=neutral, processorArchitecture=AMD64","C:\Program Files\Autodesk\AutoCAD 2019\acdbmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"P3DNewMa\P3DNewMa.csproj","acmgd","C:\Program Files\Autodesk\AutoCAD 2019\acmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"P3DNewMa\P3DNewMa.csproj","EnablerLoader, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL","..\Files\EnablerLoader.dll","False","framework/other","False",""
|
||||
"P3DNewMa\P3DNewMa.csproj","GetLinenumberAnnotationText, Version=1.0.2.0, Culture=neutral, processorArchitecture=MSIL","..\Files\GetLinenumberAnnotationText.dll","False","framework/other","False",""
|
||||
"P3DNewMa\P3DNewMa.csproj","P3DCopyMissingObjectsToOrthoDrawing","..\Files\P3DCopyMissingObjectsToOrthoDrawing.dll","False","framework/other","False",""
|
||||
"P3DNewMa\P3DNewMa.csproj","P3DSetLayerForViewport, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL","..\Files\P3DSetLayerForViewport.dll","False","framework/other","False",""
|
||||
"P3DNewMa\P3DNewMa.csproj","PnPDataLinks","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataLinks.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"P3DNewMa\P3DNewMa.csproj","PnPDataObjects","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataObjects.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"P3DNewMa\P3DNewMa.csproj","PnPProjectManagerMgd","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnPProjectManagerMgd.DLL","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"P3DNewMa\P3DNewMa.csproj","PresentationCore","","","framework/other","False",""
|
||||
"P3DNewMa\P3DNewMa.csproj","System","","","framework/other","False",""
|
||||
"P3DNewMa\P3DNewMa.csproj","System.Drawing","","","framework/other","False",""
|
||||
"P3DNewMa\P3DNewMa.csproj","System.Windows.Forms","","","framework/other","False",""
|
||||
"P3DNewMa\P3DNewMa.csproj","System.Xml.Linq","","","framework/other","False",""
|
||||
"P3DNewMa\P3DNewMa.csproj","System.Data","","","framework/other","False",""
|
||||
"P3DNewMa\P3DNewMa.csproj","System.Xml","","","framework/other","False",""
|
||||
"P3DNewMa\P3DNewMa.csproj","","","","framework/other","False",""
|
||||
"P3DNewMa\P3DNewMa.csproj","","","","framework/other","False",""
|
||||
"P3DSetLayerForViewport\P3DSetLayerForViewport.csproj","accoremgd","C:\Program Files\Autodesk\AutoCAD 2019\accoremgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"P3DSetLayerForViewport\P3DSetLayerForViewport.csproj","acdbmgd","C:\Program Files\Autodesk\AutoCAD 2019\acdbmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"P3DSetLayerForViewport\P3DSetLayerForViewport.csproj","acmgd","C:\Program Files\Autodesk\AutoCAD 2019\acmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"P3DSetLayerForViewport\P3DSetLayerForViewport.csproj","System","","","framework/other","False",""
|
||||
"P3DSetLayerForViewport\P3DSetLayerForViewport.csproj","System.Core","","","framework/other","False",""
|
||||
"P3DSetLayerForViewport\P3DSetLayerForViewport.csproj","System.Xml.Linq","","","framework/other","False",""
|
||||
"P3DSetLayerForViewport\P3DSetLayerForViewport.csproj","System.Data.DataSetExtensions","","","framework/other","False",""
|
||||
"P3DSetLayerForViewport\P3DSetLayerForViewport.csproj","Microsoft.CSharp","","","framework/other","False",""
|
||||
"P3DSetLayerForViewport\P3DSetLayerForViewport.csproj","System.Data","","","framework/other","False",""
|
||||
"P3DSetLayerForViewport\P3DSetLayerForViewport.csproj","System.Xml","","","framework/other","False",""
|
||||
"P3DSetLayerForViewport\P3DSetLayerForViewport.csproj","","","","framework/other","False",""
|
||||
"PHPAnnotations\PHPAnnotations.csproj","accoremgd","C:\Program Files\Autodesk\AutoCAD 2019\accoremgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"PHPAnnotations\PHPAnnotations.csproj","acdbmgd","C:\Program Files\Autodesk\AutoCAD 2019\acdbmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"PHPAnnotations\PHPAnnotations.csproj","acmgd","C:\Program Files\Autodesk\AutoCAD 2019\acmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"PHPAnnotations\PHPAnnotations.csproj","GetLinenumberAnnotationText","..\Files\GetLinenumberAnnotationText.dll","False","framework/other","False",""
|
||||
"PHPAnnotations\PHPAnnotations.csproj","PnPCommonDbxMgd","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnPCommonDbxMgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"PHPAnnotations\PHPAnnotations.csproj","PnPDataLinks","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataLinks.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"PHPAnnotations\PHPAnnotations.csproj","PnPDataObjects","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataObjects.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"PHPAnnotations\PHPAnnotations.csproj","PnPProjectManagerMgd","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnPProjectManagerMgd.DLL","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"PHPAnnotations\PHPAnnotations.csproj","System","","","framework/other","False",""
|
||||
"PHPAnnotations\PHPAnnotations.csproj","System.Core","","","framework/other","False",""
|
||||
"PHPAnnotations\PHPAnnotations.csproj","System.Drawing","","","framework/other","False",""
|
||||
"PHPAnnotations\PHPAnnotations.csproj","System.Windows.Forms","","","framework/other","False",""
|
||||
"PHPAnnotations\PHPAnnotations.csproj","System.Xml.Linq","","","framework/other","False",""
|
||||
"PHPAnnotations\PHPAnnotations.csproj","System.Data.DataSetExtensions","","","framework/other","False",""
|
||||
"PHPAnnotations\PHPAnnotations.csproj","Microsoft.CSharp","","","framework/other","False",""
|
||||
"PHPAnnotations\PHPAnnotations.csproj","System.Data","","","framework/other","False",""
|
||||
"PHPAnnotations\PHPAnnotations.csproj","System.Xml","","","framework/other","False",""
|
||||
"PHPAnnotations\PHPAnnotations.csproj","","","","framework/other","False",""
|
||||
"PHPAnnotations\PHPAnnotations.csproj","","","","framework/other","False",""
|
||||
"SwapAttributesMenuItem\SwapAttributesMenuItem.csproj","accoremgd","C:\Program Files\Autodesk\AutoCAD 2019\accoremgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"SwapAttributesMenuItem\SwapAttributesMenuItem.csproj","acdbmgd","C:\Program Files\Autodesk\AutoCAD 2019\acdbmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"SwapAttributesMenuItem\SwapAttributesMenuItem.csproj","acmgd","C:\Program Files\Autodesk\AutoCAD 2019\acmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"SwapAttributesMenuItem\SwapAttributesMenuItem.csproj","PnPProjectManagerMgd","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnPProjectManagerMgd.DLL","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"SwapAttributesMenuItem\SwapAttributesMenuItem.csproj","System","","","framework/other","False",""
|
||||
"SwapAttributesMenuItem\SwapAttributesMenuItem.csproj","System.Core","","","framework/other","False",""
|
||||
"SwapAttributesMenuItem\SwapAttributesMenuItem.csproj","System.Windows.Forms","","","framework/other","False",""
|
||||
"SwapAttributesMenuItem\SwapAttributesMenuItem.csproj","System.Xml.Linq","","","framework/other","False",""
|
||||
"SwapAttributesMenuItem\SwapAttributesMenuItem.csproj","Microsoft.CSharp","","","framework/other","False",""
|
||||
"SwapAttributesMenuItem\SwapAttributesMenuItem.csproj","System.Xml","","","framework/other","False",""
|
||||
"SwapAttributesMenuItem\SwapAttributesMenuItem.csproj","","","","framework/other","False",""
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","accoremgd","C:\Program Files\Autodesk\AutoCAD 2019\accoremgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","acdbmgd","C:\Program Files\Autodesk\AutoCAD 2019\acdbmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","acmgd","C:\Program Files\Autodesk\AutoCAD 2019\acmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","AutoAnnotateView","..\Files\AutoAnnotateView.dll","False","framework/other","False",""
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","AutoLinenumberConnections","..\Files\AutoLinenumberConnections.dll","False","framework/other","False",""
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","OrthoAutoAnnotate","..\Files\OrthoAutoAnnotate.dll","False","framework/other","False",""
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","P3DCopyMissingObjectsToOrthoDrawing","..\Files\P3DCopyMissingObjectsToOrthoDrawing.dll","False","framework/other","False",""
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","P3DSetLayerForViewport","..\Files\P3DSetLayerForViewport.dll","False","framework/other","False",""
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","PnP3dOrthoDrawingsUI","Libraries\PnP3dOrthoDrawingsUI.dll","False","Autodesk API","False","verify 2026 API/reference"
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","PnP3dOrthoProjectPart","Libraries\PnP3dOrthoProjectPart.dll","False","Autodesk API","False","verify 2026 API/reference"
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","PnP3dOrthoUtilMgd","Libraries\PnP3dOrthoUtilMgd.dll","False","Autodesk API","False","verify 2026 API/reference"
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","PnPDataLinks","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataLinks.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","PnPDataObjects","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataObjects.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","PnPDwg2dAnno","Libraries\PnPDwg2dAnno.dll","False","Autodesk API","False","verify 2026 API/reference"
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","PnPDwg2dDbx","Libraries\PnPDwg2dDbx.dll","False","Autodesk API","False","verify 2026 API/reference"
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","PnPDwg2dDef","Libraries\PnPDwg2dDef.dll","False","Autodesk API","False","verify 2026 API/reference"
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","PnPDwg2dGen","Libraries\PnPDwg2dGen.dll","False","Autodesk API","False","verify 2026 API/reference"
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","PnPDwg2dUtil","Libraries\PnPDwg2dUtil.dll","False","Autodesk API","False","verify 2026 API/reference"
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","PnPProjectManagerMgd","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnPProjectManagerMgd.DLL","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","PresentationCore","","","framework/other","False",""
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","System","","","framework/other","False",""
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","System.Core","","","framework/other","False",""
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","System.DirectoryServices","","","framework/other","False",""
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","System.Drawing","","","framework/other","False",""
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","System.Windows.Forms","","","framework/other","False",""
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","System.Xml.Linq","","","framework/other","False",""
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","System.Data.DataSetExtensions","","","framework/other","False",""
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","Microsoft.CSharp","","","framework/other","False",""
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","System.Data","","","framework/other","False",""
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","System.Xml","","","framework/other","False",""
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","UpdateOrthoViewBlocks","..\Files\UpdateOrthoViewBlocks.dll","False","framework/other","False",""
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","WindowsBase","","","framework/other","False",""
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","","","","framework/other","False",""
|
||||
"UpdateOrthoDrawings\UpdateOrthoDrawings.csproj","","","","framework/other","False",""
|
||||
"UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","accoremgd","C:\Program Files\Autodesk\AutoCAD 2019\accoremgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","acdbmgd","C:\Program Files\Autodesk\AutoCAD 2019\acdbmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","acmgd","C:\Program Files\Autodesk\AutoCAD 2019\acmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","P3DCopyMissingObjectsToOrthoDrawing","..\Files\P3DCopyMissingObjectsToOrthoDrawing.dll","False","framework/other","False",""
|
||||
"UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","P3DSetLayerForViewport","..\Files\P3DSetLayerForViewport.dll","False","framework/other","False",""
|
||||
"UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","PnP3dOrthoDrawingsUI","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnP3dOrthoDrawingsUI.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","PnPDataLinks","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataLinks.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","PnPDataObjects","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataObjects.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","PnPDwg2dDbx","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnPDwg2dDbx.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","PnPDwg2dDef","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnPDwg2dDef.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","PnPDwg2dUtil","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnPDwg2dUtil.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","PnPProjectManagerMgd","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnPProjectManagerMgd.DLL","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","System","","","framework/other","False",""
|
||||
"UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","System.Core","","","framework/other","False",""
|
||||
"UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","System.DirectoryServices","","","framework/other","False",""
|
||||
"UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","System.Windows.Forms","","","framework/other","False",""
|
||||
"UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","System.Xml.Linq","","","framework/other","False",""
|
||||
"UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","System.Data.DataSetExtensions","","","framework/other","False",""
|
||||
"UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","Microsoft.CSharp","","","framework/other","False",""
|
||||
"UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","System.Data","","","framework/other","False",""
|
||||
"UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","System.Xml","","","framework/other","False",""
|
||||
"UpdateOrthoViewBlocks\UpdateOrthoViewBlocks.csproj","","","","framework/other","False",""
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","Excel","..\..\Files\Excel.dll","False","external","False",""
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","PnPDataLinks","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataLinks.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","PnPDataObjects","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataObjects.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","System","","","framework/other","False",""
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","System.Core","","","framework/other","False",""
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","System.Xml.Linq","","","framework/other","False",""
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","System.Data.DataSetExtensions","","","framework/other","False",""
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","Microsoft.CSharp","","","framework/other","False",""
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","System.Data","","","framework/other","False",""
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","System.Xml","","","framework/other","False",""
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","","","","framework/other","False",""
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","Excel","..\..\Files\Excel.dll","False","external","False",""
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","PnPDataLinks","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataLinks.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","PnPDataObjects","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataObjects.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","System","","","framework/other","False",""
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","System.Core","","","framework/other","False",""
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","System.Xml.Linq","","","framework/other","False",""
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","System.Data.DataSetExtensions","","","framework/other","False",""
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","Microsoft.CSharp","","","framework/other","False",""
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","System.Data","","","framework/other","False",""
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","System.Xml","","","framework/other","False",""
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\GetLinenumberAnnotationText.csproj","","","","framework/other","False",""
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\InsertElevation.csproj","accoremgd","C:\Program Files\Autodesk\AutoCAD 2019\accoremgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\InsertElevation.csproj","acdbmgd","C:\Program Files\Autodesk\AutoCAD 2019\acdbmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\InsertElevation.csproj","acmgd","C:\Program Files\Autodesk\AutoCAD 2019\acmgd.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\InsertElevation.csproj","EnablerLoader, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL","..\..\..\Files\EnablerLoader.dll","False","framework/other","False",""
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\InsertElevation.csproj","P3DCopyMissingObjectsToOrthoDrawing, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL","..\..\..\Files\P3DCopyMissingObjectsToOrthoDrawing.dll","False","framework/other","False",""
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\InsertElevation.csproj","PnPDataLinks","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataLinks.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\InsertElevation.csproj","PnPDataObjects","C:\Program Files\Autodesk\AutoCAD 2019\PnPDataObjects.dll","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\InsertElevation.csproj","PnPProjectManagerMgd","C:\Program Files\Autodesk\AutoCAD 2019\PLNT3D\PnPProjectManagerMgd.DLL","False","Autodesk API","True","hard-coded 2019 path"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\InsertElevation.csproj","System","","","framework/other","False",""
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\InsertElevation.csproj","System.Core","","","framework/other","False",""
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\InsertElevation.csproj","System.DirectoryServices","","","framework/other","False",""
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\InsertElevation.csproj","System.Windows.Forms","","","framework/other","False",""
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\InsertElevation.csproj","System.Xml.Linq","","","framework/other","False",""
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\InsertElevation.csproj","System.Data.DataSetExtensions","","","framework/other","False",""
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\InsertElevation.csproj","Microsoft.CSharp","","","framework/other","False",""
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\InsertElevation.csproj","System.Data","","","framework/other","False",""
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\InsertElevation.csproj","System.Xml","","","framework/other","False",""
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\InsertElevation.csproj","","","","framework/other","False",""
|
||||
|
@@ -0,0 +1,30 @@
|
||||
"File","Line","Element","Context","Action"
|
||||
"OrthoLoader\Ribbon.cs","154","ComponentManager"," Autodesk.Windows.ComponentManager.ItemInitialized += new System.EventHandler<Autodesk.Windows.RibbonItemEventArgs>(ComponentManager_ItemInitialized);","subscribe/create"
|
||||
"OrthoLoader\Ribbon.cs","159","ComponentManager"," public static void ComponentManager_ItemInitialized(object sender, Autodesk.Windows.RibbonItemEventArgs e)","use"
|
||||
"OrthoLoader\Ribbon.cs","162","ComponentManager"," if (Autodesk.Windows.ComponentManager.Ribbon != null)","use"
|
||||
"OrthoLoader\Ribbon.cs","170","CurrentProjectOpenedEvent"," PlantApplication.CurrentProjectOpenedEvent += new PlantApplication.CurrentProjectOpenedEventHandler(OpenProjectHandler);","subscribe/create"
|
||||
"OrthoLoader\Ribbon.cs","172","ComponentManager"," Autodesk.Windows.ComponentManager.ItemInitialized -= new EventHandler<RibbonItemEventArgs>(ComponentManager_ItemInitialized);","unsubscribe"
|
||||
"OrthoLoader\Ribbon.cs","196","RibbonTab"," RibbonTab tab = ComponentManager.Ribbon.FindTab(tab_id);","use"
|
||||
"OrthoLoader\Ribbon.cs","202","ComponentManager"," ComponentManager.Ribbon.Tabs.Add(tab);","use"
|
||||
"OrthoLoader\Ribbon.cs","208","RibbonPanel"," RibbonPanel panel = null;","use"
|
||||
"OrthoLoader\Ribbon.cs","209","RibbonPanel"," foreach (RibbonPanel panel_tmp in tab.Panels)","use"
|
||||
"OrthoLoader\Ribbon.cs","234","RibbonButton"," RibbonButton button = Button_create(button_id_pack[j], button_text_pack[j], button_description_pack[j], button_icon_file_path_pack[j]);","use"
|
||||
"OrthoLoader\Ribbon.cs","245","RibbonButton"," RibbonButton button = Button_create(button_id_layers[j], button_text_layers[j], button_description_layers[j], button_icon_file_path_layers[j]);","use"
|
||||
"OrthoLoader\Ribbon.cs","256","RibbonButton"," RibbonButton button = Button_create(button_id_linesup[j], button_text_linesup[j], button_description_linesup[j], button_icon_file_path_linesup[j]);","use"
|
||||
"OrthoLoader\Ribbon.cs","267","RibbonButton"," RibbonButton button = Button_create(button_id_pipenum[j], button_text_pipenum[j], button_description_pipenum[j], button_icon_file_path_pipenum[j]);","use"
|
||||
"OrthoLoader\Ribbon.cs","278","RibbonButton"," RibbonButton button = Button_create(button_id_elevation[j], button_text_elevation[j], button_description_elevation[j], button_icon_file_path_elevation[j]);","use"
|
||||
"OrthoLoader\Ribbon.cs","289","RibbonButton"," RibbonButton button = Button_create(button_id_annotations[j], button_text_annotations[j], button_description_annotations[j], button_icon_file_path_annotations[j]);","use"
|
||||
"OrthoLoader\Ribbon.cs","300","RibbonButton"," RibbonButton button = Button_create(button_id_sizes[j], button_text_sizes[j], button_description_sizes[j], button_icon_file_path_sizes[j]);","use"
|
||||
"OrthoLoader\Ribbon.cs","311","RibbonButton"," RibbonButton button = Button_create(button_id_check[j], button_text_check[j], button_description_check[j], button_icon_file_path_check[j]);","use"
|
||||
"OrthoLoader\Ribbon.cs","324","RibbonTab"," public static RibbonTab Tab_create()","use"
|
||||
"OrthoLoader\Ribbon.cs","326","RibbonTab"," RibbonTab tab = new RibbonTab","use"
|
||||
"OrthoLoader\Ribbon.cs","334","RibbonPanel"," public static RibbonPanel Panel_create(int i)","use"
|
||||
"OrthoLoader\Ribbon.cs","337","RibbonPanel"," RibbonPanelSource panel_source = new RibbonPanelSource();","use"
|
||||
"OrthoLoader\Ribbon.cs","342","RibbonPanel"," RibbonPanel panel = new RibbonPanel()","use"
|
||||
"OrthoLoader\Ribbon.cs","350","RibbonButton"," public static RibbonButton Button_create(string button_id, string button_text, string button_description, string button_icon_file_path)","use"
|
||||
"OrthoLoader\Ribbon.cs","362","RibbonButton"," RibbonButton button = new RibbonButton()","use"
|
||||
"OrthoLoader\Ribbon.cs","414","RibbonTab"," RibbonTab tab = ComponentManager.Ribbon.FindTab(tab_id);","use"
|
||||
"OrthoLoader\Ribbon.cs","422","RibbonPanel"," RibbonPanel panel = null;","use"
|
||||
"OrthoLoader\Ribbon.cs","423","RibbonPanel"," foreach (RibbonPanel panel_tmp in tab.Panels)","use"
|
||||
"OrthoLoader\Ribbon.cs","491","RibbonButton"," RibbonButton button = panel.FindItem(btn_id) as RibbonButton;","use"
|
||||
"OrthoLoader\Ribbon.cs","503","RibbonPanel"," } //foreach (RibbonPanel panel_tmp in tab.Panels)","use"
|
||||
|
@@ -0,0 +1,57 @@
|
||||
"File","Line","Token","Trigger","PluginName","Count","Computer","User","Project","Aggregation"
|
||||
"AnnotateLineNumbers\Commands.cs","1253","WriteAllText","unknown","not evidenced","not evidenced","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"AnnotateLineNumbers\Commands.cs","1625","Environment.UserName","unknown","not evidenced","not evidenced","not evidenced","possible","possible","not determined"
|
||||
"AutoAnnotateView\Commands.cs","177","Environment.UserName","unknown","not evidenced","not evidenced","not evidenced","possible","possible","not determined"
|
||||
"AutoAnnotateView\Commands.cs","476","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"AutoAnnotateView\Commands.cs","489","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"AutoAnnotateView\Commands.cs","495","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"AutoAnnotateView\Commands.cs","499","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"AutoAnnotateView\Commands.cs","500","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"AutoAnnotateView\ViewPorts.cs","259","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"AutoAnnotateView\ViewPorts.cs","380","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"AutoAnnotateView\ViewPorts.cs","387","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"AutoAnnotateView\ViewPorts.cs","770","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"AutoAnnotateView\ViewPorts.cs","788","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"AutoAnnotateView\ViewPorts.cs","791","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"AutoAnnotateView\ViewPorts.cs","922","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"AutoAnnotateView\ViewPorts.cs","956","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"AutoAnnotateView\ViewPorts.cs","959","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"AutoElevation\Commands.cs","337","Environment.UserName","unknown","not evidenced","not evidenced","not evidenced","possible","possible","not determined"
|
||||
"AutoLinenumberConnections\Commands.cs","536","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"AutoLinenumberConnections\Commands.cs","551","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"AutoLinenumberConnections\Commands.cs","558","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"AutoLinenumberConnections\Commands.cs","1856","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"AutoLinenumberConnections\Commands.cs","1874","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"AutoLinenumberConnections\Commands.cs","1877","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"AutoLinenumberConnections\Commands.cs","2404","Environment.UserName","unknown","not evidenced","not evidenced","not evidenced","possible","possible","not determined"
|
||||
"CheckOrthoView\Commands.cs","85","Environment.UserName","unknown","not evidenced","not evidenced","not evidenced","possible","possible","not determined"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","6","Excel","unknown","not evidenced","not evidenced","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","18","Excel","unknown","not evidenced","not evidenced","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","226","Environment.MachineName","unknown","not evidenced","not evidenced","yes","not evidenced","not evidenced","not determined"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","567","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","577","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"GetLinenumberAnnotationText\LinenumberAnnotation.cs","588","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"InsertElevation\Commands.cs","974","Environment.UserName","unknown","not evidenced","not evidenced","not evidenced","possible","possible","not determined"
|
||||
"OrthoAutoAnnotate\Commands.cs","1116","Environment.UserName","unknown","not evidenced","not evidenced","not evidenced","possible","possible","not determined"
|
||||
"P3DCopyMissingObjectsToOrthoDrawing\Commands.cs","136","Environment.UserName","unknown","not evidenced","not evidenced","not evidenced","possible","possible","not determined"
|
||||
"UpdateOrthoDrawings\Commands.cs","235","Environment.UserName","unknown","not evidenced","not evidenced","not evidenced","possible","possible","not determined"
|
||||
"UpdateOrthoDrawings\Commands.cs","602","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"UpdateOrthoDrawings\Commands.cs","761","Counter","unknown","not evidenced","possible","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"UpdateOrthoDrawings\Commands.cs","969","Environment.UserName","unknown","not evidenced","not evidenced","not evidenced","possible","possible","not determined"
|
||||
"UpdateOrthoViewBlocks\Commands.cs","285","Environment.UserName","unknown","not evidenced","not evidenced","not evidenced","possible","possible","not determined"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (2).cs","137","Environment.UserName","unknown","not evidenced","not evidenced","not evidenced","possible","possible","not determined"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (3).cs","132","Environment.UserName","unknown","not evidenced","not evidenced","not evidenced","possible","possible","not determined"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (4).cs","138","Environment.UserName","unknown","not evidenced","not evidenced","not evidenced","possible","possible","not determined"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия (5).cs","205","Environment.UserName","unknown","not evidenced","not evidenced","not evidenced","possible","possible","not determined"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands - копия.cs","88","Environment.UserName","unknown","not evidenced","not evidenced","not evidenced","possible","possible","not determined"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands1.cs","132","Environment.UserName","unknown","not evidenced","not evidenced","not evidenced","possible","possible","not determined"
|
||||
"_archive\2019_AnnotateLineNumbers\2019_AnnotateLineNumbers\Commands2.cs","138","Environment.UserName","unknown","not evidenced","not evidenced","not evidenced","possible","possible","not determined"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","6","Excel","unknown","not evidenced","not evidenced","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","382","Excel","unknown","not evidenced","not evidenced","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","384","Excel","unknown","not evidenced","not evidenced","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"_archive\2019_GetLinenumberAnnotationText\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","385","Excel","unknown","not evidenced","not evidenced","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","6","Excel","unknown","not evidenced","not evidenced","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","379","Excel","unknown","not evidenced","not evidenced","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","381","Excel","unknown","not evidenced","not evidenced","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"_archive\2019_GetLinenumberAnnotationText_ТАИФ\2019_GetLinenumberAnnotationText\LinenumberAnnotation.cs","382","Excel","unknown","not evidenced","not evidenced","not evidenced","not evidenced","not evidenced","not determined"
|
||||
"_archive\2019_InsertElevation_ОЗХ\2019_InsertElevation\2019_InsertElevation\Commands.cs","978","Environment.UserName","unknown","not evidenced","not evidenced","not evidenced","possible","possible","not determined"
|
||||
|
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"auditId": "p-rec-annot-v1.0.4",
|
||||
"sourceRoot": "C:\\dev\\autodesk\\link\\P_Rec_Annot\\v1.0.4\\repo",
|
||||
"sourceHead": null,
|
||||
"findings": [
|
||||
{"id":"ANNOT-001","category":"Architecture","severity":"HIGH","title":"Legacy multi-project loader binds to Plant 3D 2019","description":"25 x64 .NET Framework 4.7 projects and HintPath references target AutoCAD 2019 assemblies.","evidence":[{"file":"AnnotateLineNumbers/AnnotateLineNumbers.csproj","startLine":1,"endLine":100}],"impact":"Rebuild and adapter work required for 2026.","recommendation":"Separate Core from Plant3D2026 adapter.","migrationAction":"REIMPLEMENT_SAME_BEHAVIOR"},
|
||||
{"id":"ANNOT-002","category":"Loading","severity":"HIGH","title":"Runtime loads sibling DLLs through _netload","description":"Settings.xml controls a sequential Editor.Command _netload chain.","evidence":[{"file":"OrthoLoader/Loader.cs","startLine":24,"endLine":118}],"impact":"Deployment/order/path failures.","recommendation":"Replace with supported manifest and explicit dependency loading.","migrationAction":"REIMPLEMENT_SAME_BEHAVIOR"},
|
||||
{"id":"ANNOT-003","category":"DrawingWrite","severity":"HIGH","title":"Custom operations write many DWG entities","description":"Transactions and write-open entity operations create/update/delete annotation blocks and attributes.","evidence":[{"file":"AutoAnnotateView/Commands.cs","startLine":476,"endLine":500},{"file":"AutoLinenumberConnections/Commands.cs","startLine":535,"endLine":558}],"impact":"Partial writes and visual divergence possible.","recommendation":"Golden DWG, rollback and idempotency tests.","migrationAction":"REIMPLEMENT_SAME_BEHAVIOR"},
|
||||
{"id":"ANNOT-004","category":"UI","severity":"MEDIUM","title":"Ribbon project event lifecycle is incomplete","description":"CurrentProjectOpenedEvent is subscribed during Ribbon initialization; Terminate is empty and project handler unsubscribe is not evidenced.","evidence":[{"file":"OrthoLoader/Ribbon.cs","startLine":147,"endLine":189}],"impact":"Duplicate callbacks or stale UI state.","recommendation":"Central subscription guard and deterministic unsubscribe.","migrationAction":"REIMPLEMENT_SAME_BEHAVIOR"},
|
||||
{"id":"ANNOT-005","category":"UsageTelemetry","severity":"HIGH","title":"218796 cannot be proven as manual launches from this source","description":"The source contains machine-name lookup for annotation settings but no confirmed writer for the external usage counter.","evidence":[{"file":"GetLinenumberAnnotationText/LinenumberAnnotation.cs","startLine":225,"endLine":250}],"impact":"Usage matrix may overcount operations/objects.","recommendation":"Audit the producer of the XLSX and trace one command end-to-end.","migrationAction":"RETEST_WORKAROUND"}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
# Migration plan
|
||||
|
||||
| Stage | Scope | Size | Exit criterion |
|
||||
|---|---|---|---|
|
||||
| 1 | Freeze commands, UI, golden DWG, telemetry semantics | L | repeatable 2019 baseline |
|
||||
| 2 | Extract DTO/rules/positioning/duplicate detection | L | Core tests without AutoCAD |
|
||||
| 3 | Implement Plant 3D 2026 adapter and transaction service | XL | compile/runtime on test project |
|
||||
| 4 | Add one Ribbon command with project-aware enablement | M | explicit command scope, no duplicate registration |
|
||||
| 5 | Compare DWG objects/text/coordinates/layers/styles/undo | XL | golden equivalence and performance |
|
||||
| 6 | Replace telemetry with event + separate object counters | M | 1 command = 1 usage event |
|
||||
|
||||
First implementation slice: `PXP-AAV`/`PXP-OA` on one controlled Ortho viewport, then `PXP-ALC` line connections. Do not start with batch `PXP-IOD`.
|
||||
@@ -0,0 +1,7 @@
|
||||
# Plant 3D data access
|
||||
|
||||
Используется официальный managed Plant API: `PlantApplication.CurrentProject`, `ProjectManager.Project`, `DataLinksManager`, `PnPDatabase`, `PnPTable.Select`, `PnPRow`, `GetRelatedRowIds`. README указывает `ProcessPower.dcf`, `EngineeringItems`, `P3dLineGroupPartRelationship` и `P3dLineGroup` (`README.md:96-101`).
|
||||
|
||||
Типичные таблицы/связи: `PnPDrawings`, `PnPDatalinks`, `EngineeringItems`, `P3dLineGroup`, `P3dLineGroupPartRelationship`, `P3dPartConnection`, а также классы `Support`, `Elbow`, `Pipe`, `Valve`, `TapWeld`. Прямого `SQLiteConnection`/SQL `UPDATE/INSERT/DELETE` writer-а в C# исходниках не найдено. `database-access.csv` содержит агрегированные file/line tokens.
|
||||
|
||||
Необходимо вынести adapter: project activation, drawing id/handle mapping, related rows, safe read/write transactions. Прямые ссылки на 2019 SDK нельзя переносить без официальной проверки API 2026.
|
||||
@@ -0,0 +1,13 @@
|
||||
# Reusable components
|
||||
|
||||
| Component | Classification | Recommendation |
|
||||
|---|---|---|
|
||||
| Rules for annotation text/filters | KEEP_AFTER_ISOLATION | выделить pure Core и unit tests |
|
||||
| Plant row/relationship traversal | REIMPLEMENT_SAME_BEHAVIOR | adapter for 2026 API |
|
||||
| AutoCAD transaction/entity creation | REIMPLEMENT_SAME_BEHAVIOR | typed service, golden DWG tests |
|
||||
| WinForms/palette UI | KEEP_AFTER_ISOLATION | redesign commands/state/errors |
|
||||
| Ribbon loader and `_netload` | DO_NOT_REUSE | заменить supported deployment |
|
||||
| `Settings.xml` deployment model | USE_AS_REFERENCE_ONLY | new manifest/config |
|
||||
| `FilesRelease` binaries | DO_NOT_REUSE | rebuild from source/SDK |
|
||||
| Telemetry | REIMPLEMENT_SAME_BEHAVIOR | one event per explicit command |
|
||||
| archive projects | REMOVE from product / archive | retain only as historical evidence |
|
||||
@@ -0,0 +1,11 @@
|
||||
# Risks
|
||||
|
||||
1. **CRITICAL to migration confidence:** semantics of 218 796 are not present in this source tree.
|
||||
2. **HIGH:** 25 projects bind to AutoCAD/Plant 3D 2019 assemblies and hard-coded HintPath.
|
||||
3. **HIGH:** batch operations touch multiple drawings and many entities; partial write/undo behavior is unverified.
|
||||
4. **HIGH:** programmatic Ribbon/project event lifecycle has incomplete unsubscribe and possible duplicate registration.
|
||||
5. **HIGH:** custom blocks/settings and external network support files are part of behavior but not versioned with a safe contract.
|
||||
6. **MEDIUM:** archive and release copies duplicate commands and can confuse static inventory.
|
||||
7. **MEDIUM:** empty catches and MessageBox-based errors make failures difficult to audit.
|
||||
|
||||
No conclusion that the plugin is obsolete is justified by this static audit.
|
||||
@@ -0,0 +1,9 @@
|
||||
# Source inventory
|
||||
|
||||
Источник: `C:\dev\autodesk\link\P_Rec_Annot\v1.0.4\repo`.
|
||||
|
||||
`link` — symbolic link (`ReparsePoint`, tag `0xa000000c`) на `\\phpsrv03\NBIM\code\CS`; `repo` — обычный каталог. Внутреннего `.git` не найдено, поэтому source Git branch/HEAD отсутствуют. Source modified before/after audit: не обнаружено изменений; анализ выполнялся только чтением.
|
||||
|
||||
Инвентарь и SHA-256 находятся в `evidence/file-inventory.csv` и `evidence/hashes.csv`. Всего 271 файл: 120 `.cs`, 25 `.csproj`, 32 DLL, 3 DOCX, 1 DWG, 1 ZIP и ресурсы/настройки. `FilesRelease` — собранный deployment snapshot, `_archive` — исторические копии; ни то ни другое не считать актуальным исходным модулем без проверки.
|
||||
|
||||
Актуальная версия по корневым README/CHANGELOG — v1.0.4 (релиз 2024-12-10), при этом changelog содержит v1.0.4.2 от 2024-12-13. В отчёте аудируется указанная пользователем папка `v1.0.4`; архивы не объединены с актуальными проектами.
|
||||
@@ -0,0 +1,7 @@
|
||||
# Startup and loading
|
||||
|
||||
`OrthoLoader.Ribbon.Initialize()` подписывает Ribbon item event и вызывает `OrthoLoader.Initialize()` (`OrthoLoader/Ribbon.cs:151-157`). `OrthoLoader.Initialize()` читает `Settings.xml`, формирует путь относительно `Assembly.GetExecutingAssembly().Location`, временно меняет `CMDECHO`/`FILEDIA` и выполняет `._netload` для каждой перечисленной DLL (`OrthoLoader/Loader.cs:24-29`, `48-100`). Это plugin DLL + loader DLL, не standalone EXE и не `.bundle`.
|
||||
|
||||
`Settings.xml` является deployment contract. Список assemblies загружается по XML `LoadAssembly/@assemblyname` (`OrthoLoader/Loader.cs:105-118`). При ошибке показывается MessageBox; rollback системных переменных выполняется в `finally`, но lifecycle всех загруженных DLL централизованно не управляется.
|
||||
|
||||
Риски: порядок загрузки, поиск соседних DLL, ручная публикация `FilesRelease`, вызов командной строки из API и зависимость от локального deployment path. `_archive` и `FilesRelease` не являются доказательством отдельной загрузочной цепочки.
|
||||
@@ -0,0 +1,16 @@
|
||||
# Usage counter analysis
|
||||
|
||||
## Доказанный результат
|
||||
|
||||
Внешний агрегат Plant3D XLSX содержит `P_Rec_Annot = 218796` в поле `Количество запусков`. В исследуемом `v1.0.4` найдено 56 telemetry-related token matches, но нет доказанного вызова записи XLSX/CSV/DB с полем `Количество запусков`, `UsageCount` или эквивалентным инкрементом. `GetLinenumberAnnotationText/LinenumberAnnotation.cs:225-250` читает `Environment.MachineName` и выбирает индекс из `users_indexes_list.xml`; это не usage writer.
|
||||
|
||||
Следовательно:
|
||||
|
||||
* фактическая строка, увеличивающая 218 796, в этом репозитории не установлена;
|
||||
* один ручной запуск не может считаться равным одной единице без telemetry source;
|
||||
* один запуск потенциально может обрабатывать сотни объектов, но связь с внешним счётчиком не доказана;
|
||||
* 218 796 — агрегат использования/операций неизвестной семантики, не достоверное число ручных запусков.
|
||||
|
||||
## Что проверить
|
||||
|
||||
Нужен исходник/сервис, который формирует XLSX, и runtime trace одной команды: before/after `Количество запусков`, число обработанных объектов, число annotations, event log, user/computer/project fields. Целевой контракт миграции: один явный command invocation = один usage event; object counters хранить отдельно.
|
||||
@@ -0,0 +1,15 @@
|
||||
# User workflows
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
U[Пользователь выбирает кнопку Ribbon] --> V[Проверка активного Plant project]
|
||||
V --> Q[Проверка орто-чертежа/viewport]
|
||||
Q --> R[Чтение PnPDrawings, PnPDatalinks, EngineeringItems]
|
||||
R --> X[Расчёт текста/позиции/фильтров]
|
||||
X --> W[Transaction: удалить/создать/обновить blocks и annotations]
|
||||
W --> O[Editor message, форма результата, сохранение DWG]
|
||||
```
|
||||
|
||||
Подтверждённые сценарии: `PXP-OA` проверяет проект, enabler, рабочее окружение и зарегистрированный ortho DWG (`OrthoAutoAnnotate/Commands.cs:6444-6488`); `PXP-OSI` выбирает графические осевые примитивы и переводит к объекту модели (`OrthoAutoAnnotate/Commands.cs:336-380`); `PXP-IOD` пакетно обновляет drawings и вызывает связанные операции (`OrthoLoader/Ribbon.cs:31-36`). Для line-number workflow README описывает получение/редактирование списка, соединения, обновление и замену атрибутов (`README.md:12-17`, `63-85`).
|
||||
|
||||
Отдельная runtime-проверка нужна для точных входных selection sets, отмены формы, числа объектов и повторного запуска.
|
||||
@@ -0,0 +1,19 @@
|
||||
XLSX files: 151
|
||||
Unique workbooks by SHA-256: 148
|
||||
Duplicate workbooks: 3
|
||||
Rows examined: 16710
|
||||
Valid aggregate rows: 16574
|
||||
Rejected rows: 139
|
||||
Unique plugins: 25
|
||||
Date range: 2024-06-13 .. 2026-07-30
|
||||
Total launches: 227974
|
||||
Most used plugin: P_Rec_Annot
|
||||
Most active month: 2026-05
|
||||
Computer field available: NO
|
||||
Computer matrix generated: NO
|
||||
|
||||
Only Plant3D sheets were analyzed. Source files are anonymized as source-0001.xlsx; project numbers, names, users and paths are not published.
|
||||
|
||||
The semantic of File was not used for deduplication: rows with same plugin/date/count were retained because File may represent separate aggregate dimensions.
|
||||
|
||||
Repeat: .\tools\plugin-usage\Build-Plant3DPluginUsageAggregate.ps1 -SourceRoot C:\dev\TEMP\CheckPlugin -SheetName Plant3D -OutputDirectory .\migration\audits\plugin-usage-plant3d-aggregate-20260731
|
||||
@@ -0,0 +1,3 @@
|
||||
# Computer data availability
|
||||
|
||||
The source workbooks do not contain an explicit computer-name column. Explicit ComputerName/MachineName/HostName properties in core, custom and app properties: 0. The User field is not a reliable substitute and was not used. A plugin x computer matrix cannot be built from this XLSX set without an additional source: MachineName log, computer name in workbook name, explicit workbook property, User-to-computer mapping, or the source database.
|
||||
@@ -0,0 +1,4 @@
|
||||
"SourceId","CanonicalSourceId","SHA256","Status"
|
||||
"source-0052.xlsx","source-0047.xlsx","170D835A968A0590ACEA2909AE9DD204A8A7B2B01FD4254FBFD30F7216B2D4C4","DUPLICATE_WORKBOOK"
|
||||
"source-0101.xlsx","source-0029.xlsx","5F8D42AD0580CFD7F4CB407B45A1B7E4D4F26D9A04A2ADF7DDA7028499BD2146","DUPLICATE_WORKBOOK"
|
||||
"source-0109.xlsx","source-0034.xlsx","205F5F22C7E7DD5C9F04B9CA730BC3E79A23A561E280838C62AC4B79741462D5","DUPLICATE_WORKBOOK"
|
||||
|
+16575
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,15 @@
|
||||
# Правила агрегации Plant3D XLSX
|
||||
|
||||
Обрабатываются только файлы `*.xlsx`, исключая временные `~$*.xlsx`, и только лист `Plant3D` без учёта регистра. Остальные листы не читаются.
|
||||
|
||||
Заголовки обнаруживаются по именам столбцов, а не по заранее заданным номерам. Фактическая модель источника: `Плагин`, `Дата`, `Количество запусков`; поля `Файл`, `Пользователь`, `Номер проекта` не публикуются. `Пользователь` не используется как компьютер.
|
||||
|
||||
`Дата` поддерживает Excel serial date, `dd.MM.yyyy`, `dd.MM.yyyy HH:mm`, `dd.MM.yyyy HH:mm:ss`, `yyyy-MM-dd`, `yyyy-MM-dd HH:mm:ss`, ISO-подобные и русские даты. Дата без времени допустима и нормализуется к `UsageDate`; время не выдумывается.
|
||||
|
||||
`Количество запусков` разбирается как числовая мера. Принимаются целые числа, в том числе строковые числовые значения, ноль и кэшированное числовое значение формулы. Отрицательные, дробные, пустые, нечисловые и некэшированные значения отклоняются как `INVALID_LAUNCH_COUNT`.
|
||||
|
||||
Итоговая мера — сумма `Количество запусков`, а не количество строк. Побайтово одинаковые книги группируются по SHA-256; канонический экземпляр анализируется один раз, копии фиксируются как `DUPLICATE_WORKBOOK`. Одинаковые строки внутри одной книги не удаляются автоматически: столбец `Файл` может представлять отдельное измерение исходного агрегата.
|
||||
|
||||
`SourceId` обезличен (`source-0001.xlsx`) и назначается в стабильном порядке полного пути только внутри read-only анализа. Фактические имена файлов, пользователей, проектов и пути в результаты не записываются.
|
||||
|
||||
Проверены `docProps/core.xml`, `docProps/custom.xml`, `docProps/app.xml`; явных свойств `ComputerName`, `MachineName`, `HostName` нет.
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,26 @@
|
||||
"Плагин","2024-06","2024-11","2024-12","2025-01","2025-02","2025-03","2025-04","2025-05","2025-06","2025-07","2025-08","2025-09","2025-10","2025-11","2025-12","2026-01","2026-02","2026-03","2026-04","2026-05","2026-06","2026-07"
|
||||
"ProjectSnapshot.2018","5","0","21","28","25","55","14","4","5","11","8","12","113","42","23","6","14","49","32","32","21","54"
|
||||
"P_Rec_Annot","0","5","370","1620","3178","5776","13225","8135","10074","8690","12251","21471","7975","15953","7254","10127","16386","12168","16516","35426","8299","3897"
|
||||
"P_Serv_CreateLineGroupAnnotationText","0","0","6","9","15","9","12","10","1","13","17","10","6","19","11","4","11","12","8","31","7","14"
|
||||
"P3DSetOrthoLayers","0","0","1","3","108","26","10","0","0","57","40","114","130","396","408","18","56","253","40","141","2","19"
|
||||
"P_Check_Pipe","0","0","50","313","69","20","54","61","34","22","24","34","59","27","14","35","33","16","52","42","30","17"
|
||||
"P_Rec_Print","0","0","11","3","69","44","46","7","25","9","33","41","40","37","45","17","50","66","64","118","105","106"
|
||||
"P_Serv_CompP3D","0","0","9","29","36","55","41","28","5","16","16","26","11","63","44","60","129","217","169","14","25","16"
|
||||
"P_Check_Project","0","0","8","10","19","20","24","5","10","6","14","39","193","66","8","13","25","11","14","23","6","7"
|
||||
"P_Rec_Update","0","0","22","28","22","33","33","29","11","11","11","25","96","73","8","13","18","33","83","71","47","62"
|
||||
"P_Check_CompP3D","0","0","6","3","5","13","46","4","1","19","0","1","16","3","2","10","17","31","2","9","2","1"
|
||||
"P_Task_MO07","0","0","1","0","0","3","4","0","0","0","1","1","1","1","3","0","22","12","5","0","39","19"
|
||||
"P_Serv_Supports_Highlight","0","0","0","0","0","0","1","12","0","1","0","1","5","9","4","5","21","14","2","4","23","39"
|
||||
"P_Imp_FromPTH","0","0","25","7","70","26","26","23","20","29","20","63","127","129","18","58","127","71","28","31","69","49"
|
||||
"P_Exp_ToHydra","0","0","3","5","9","20","16","0","0","11","0","0","0","0","0","0","4","0","1","0","1","4"
|
||||
"P_Check_VtIsoChanges","0","0","0","1","7","1","3","2","1","1","1","7","2","5","7","0","0","5","5","27","0","9"
|
||||
"P3DCommands v.0.0.1","0","0","0","31","17","17","15","6","5","18","20","22","19","23","6","3","6","4","60","91","76","97"
|
||||
"P_Serv_IsoMaster_Update","0","0","0","7","1","0","3","0","0","1","2","2","1","0","0","0","1","2","0","5","0","1"
|
||||
"--P3DUpdateFlanges","0","0","1","0","0","2","2","1","0","0","0","0","0","0","0","2","0","0","0","0","0","0"
|
||||
"--P_Rec_Brac","0","0","1","0","0","1","2","1","0","0","1","0","0","0","0","0","0","0","0","0","0","0"
|
||||
"--P_Serv_ActualizeProjectBySpec","0","0","1","0","0","2","4","1","1","1","2","0","0","0","0","2","0","0","1","0","0","0"
|
||||
"--P_Serv_UpdateLinearWeight","0","0","1","0","0","2","4","1","1","1","2","0","0","0","0","2","0","0","1","0","0","0"
|
||||
"P3DUpdateFixedPipeLengths","0","0","2","4","3","4","1","2","0","0","1","1","1","2","0","2","0","1","3","4","1","1"
|
||||
"A_Imp_FromNavis_Selection","0","0","0","0","1","2","2","22","0","6","6","0","7","2","0","4","3","3","0","0","2","2"
|
||||
"P_Exp_ToStart","0","0","10","0","0","0","0","10","0","0","0","12","0","1","1","1","0","0","0","0","1","0"
|
||||
"--GetSelectionLengthAndWeight","0","0","0","0","0","1","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0"
|
||||
|
@@ -0,0 +1,26 @@
|
||||
"PluginName","PluginNameNormalized","RecordCount","TotalLaunches","FirstUsage","LastUsage","ActiveDays","ActiveMonths","AverageLaunchesPerActiveDay","MaxLaunchesPerDay","MaxUsageMonth","MaxMonthLaunches","ShareOfAllLaunches"
|
||||
"P_Rec_Annot","P_REC_ANNOT","12363","218796","2024-11-14","2026-07-30","497","21","440,2334","16406","2026-05","35426","0,959741"
|
||||
"P3DSetOrthoLayers","P3DSETORTHOLAYERS","502","1822","2024-12-23","2026-07-27","176","18","10,3523","121","2025-12","408","0,007992"
|
||||
"P_Imp_FromPTH","P_IMP_FROMPTH","401","1016","2024-12-02","2026-07-30","208","20","4,8846","78","2026-02","127","0,004457"
|
||||
"P_Serv_CompP3D","P_SERV_COMPP3D","460","1009","2024-12-03","2026-07-27","268","20","3,7649","32","2026-04","169","0,004426"
|
||||
"P_Check_Pipe","P_CHECK_PIPE","592","1006","2024-12-02","2026-07-30","322","20","3,1242","192","2025-01","313","0,004413"
|
||||
"P_Rec_Print","P_REC_PRINT","470","936","2024-12-04","2026-07-30","269","20","3,4796","34","2026-07","106","0,004106"
|
||||
"P_Rec_Update","P_REC_UPDATE","367","729","2024-12-02","2026-07-30","203","20","3,5911","33","2025-10","96","0,003198"
|
||||
"ProjectSnapshot.2018","PROJECTSNAPSHOT.2018","271","574","2024-06-13","2026-07-30","164","21","3,5","63","2025-10","113","0,002518"
|
||||
"P3DCommands v.0.0.1","P3DCOMMANDS V.0.0.1","303","536","2025-01-21","2026-07-30","177","19","3,0282","30","2026-05","91","0,002351"
|
||||
"P_Check_Project","P_CHECK_PROJECT","239","521","2024-12-04","2026-07-28","136","20","3,8309","62","2025-10","193","0,002285"
|
||||
"P_Serv_CreateLineGroupAnnotationText","P_SERV_CREATELINEGROUPANNOTATIONTEXT","185","225","2024-12-04","2026-07-29","141","20","1,5957","13","2026-05","31","0,000987"
|
||||
"P_Check_CompP3D","P_CHECK_COMPP3D","65","191","2024-12-10","2026-07-17","44","19","4,3409","39","2026-03","31","0,000838"
|
||||
"P_Serv_Supports_Highlight","P_SERV_SUPPORTS_HIGHLIGHT","81","141","2025-04-24","2026-07-24","57","14","2,4737","20","2026-07","39","0,000618"
|
||||
"P_Task_MO07","P_TASK_MO07","54","112","2024-12-04","2026-07-24","35","13","3,2","25","2026-07","19","0,000491"
|
||||
"P_Check_VtIsoChanges","P_CHECK_VTISOCHANGES","50","84","2025-01-27","2026-07-29","40","16","2,1","16","2026-05","27","0,000368"
|
||||
"P_Exp_ToHydra","P_EXP_TOHYDRA","25","74","2024-12-19","2026-07-03","16","10","4,625","15","2025-04","16","0,000325"
|
||||
"A_Imp_FromNavis_Selection","A_IMP_FROMNAVIS_SELECTION","45","62","2025-02-27","2026-07-28","39","13","1,5897","9","2025-05","22","0,000272"
|
||||
"P_Exp_ToStart","P_EXP_TOSTART","11","36","2024-12-19","2026-06-29","7","7","5,1429","12","2025-09","12","0,000158"
|
||||
"P3DUpdateFixedPipeLengths","P3DUPDATEFIXEDPIPELENGTHS","28","33","2024-12-20","2026-07-10","26","16","1,2692","4","2025-03","4","0,000145"
|
||||
"P_Serv_IsoMaster_Update","P_SERV_ISOMASTER_UPDATE","20","26","2025-01-23","2026-07-14","19","11","1,3684","3","2026-05","5","0,000114"
|
||||
"--P_Serv_UpdateLinearWeight","--P_SERV_UPDATELINEARWEIGHT","14","15","2024-12-12","2026-04-17","14","9","1,0714","2","2025-04","4","6,6E-05"
|
||||
"--P_Serv_ActualizeProjectBySpec","--P_SERV_ACTUALIZEPROJECTBYSPEC","14","15","2024-12-12","2026-04-17","14","9","1,0714","2","2025-04","4","6,6E-05"
|
||||
"--P3DUpdateFlanges","--P3DUPDATEFLANGES","7","8","2024-12-12","2026-01-30","7","5","1,1429","2","2026-01","2","3,5E-05"
|
||||
"--P_Rec_Brac","--P_REC_BRAC","6","6","2024-12-12","2025-08-07","6","5","1","1","2025-04","2","2,6E-05"
|
||||
"--GetSelectionLengthAndWeight","--GETSELECTIONLENGTHANDWEIGHT","1","1","2025-03-27","2025-03-27","1","1","1","1","2025-03","1","4E-06"
|
||||
|
Binary file not shown.
@@ -0,0 +1,140 @@
|
||||
"SourceId","SourceSheet","SourceRow","ReasonCode","DetectedPlugin","DetectedDateTime","DetectedLaunchCount","RowHash"
|
||||
"source-0001.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","860EC73FD00172E6F77108124B655D6D361885E7C78B26753BA02EC2C83AEF57"
|
||||
"source-0002.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","8EAF1B95C5F95E0C66245F1697A0F9BBDCBF3EE9B1B9268E0AEF28BDCF095AC4"
|
||||
"source-0003.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","C1097E00A6D5E7F56A7CD33E531369E89CED361928D2B0B4A85612B6491E941B"
|
||||
"source-0004.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","A003FF2ED46380957A9D4072B97D7F62DD4A76093131F404968FF7C14BA03271"
|
||||
"source-0005.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","C034BCBDD5DA8AFC0E0802AD35ED6BAC46334A9BF5F53CE32BC5F26EE4CE3A69"
|
||||
"source-0006.xlsx","","","SHEET_NOT_FOUND","",,"","376BA6599E836ED1AE8D44E559A0A7DDD7F8574E2CC072EC5677A004EA15129C"
|
||||
"source-0007.xlsx","","","SHEET_NOT_FOUND","",,"","DDE2DC8E5C51C4C3200C993B99C9C4EDF13C5C6C01843B9F06C5F61736BED4A5"
|
||||
"source-0008.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","F3E0D9166D1F4356C91168A819532E238A1073EDF04D9255F40A8FF0BDE3D15A"
|
||||
"source-0011.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","26576E8F31CEE13BDB0D48D23C12EE45A8AAF2F661D445940ADE8F4FCC19D0D4"
|
||||
"source-0012.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","2ACF2FFD81FB50D32AC0C89D433655D4550FC3684224961D125D710F7FAC5B7B"
|
||||
"source-0013.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","6F5768BAFFF77E40E5C0039DF42C5BB11E0E1EBDAD94A050319450E2EEE26CFD"
|
||||
"source-0014.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","2C10F752FFC3779DB61EBFEE9C66713778B27619E355CBB1EB26E0A588D4CD2E"
|
||||
"source-0015.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","00DD317ED0077BF42A0778EA1BEBB2011C2134AE544BD33A4CB44652B901FAE1"
|
||||
"source-0016.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","17502E16AA077ED9F2164E694E2329AF6208FEF828884879D3F57E78A5697015"
|
||||
"source-0017.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","208AB234BF3D33C5B26F90D4314716AE92B69A4CDD9691BEE9CA039DD5DE099D"
|
||||
"source-0018.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","545535354305B2B94A34B304C8C2531ECCE863DEC85DED670D3E3810D6D94E27"
|
||||
"source-0019.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","665C064018A5D6889136960D14BC51A59C8FB1DC287698EE6238025BB27A0ADF"
|
||||
"source-0020.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","3C1FC135CEB932DC1E6EFC1EFB0BA0216F313035A9556B082EC07823A7309B25"
|
||||
"source-0022.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","CFC9A679301CAA8CE9F38B278A44D75C861F4E83D2EBE82A2E0E1698352F9B19"
|
||||
"source-0023.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","FD055CCC3B4AEB8E3B4E0EE1146F1045F2AACDE6E6519405093263F2E78686A1"
|
||||
"source-0024.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","03C07412010FC6F521F7DFC0DF38B9227C052B753227224B8661DDEB9A77F4CD"
|
||||
"source-0025.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","D5B6A804CEAAD5496840FF3FD4FFCB34B7B26D8B6B27A75C16F8D323FEB4BA26"
|
||||
"source-0026.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","D7AF2BE9C585402C3F3110821D7327938B43D9FBEF6F2743AFA77E2635A13B01"
|
||||
"source-0027.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","5EEA3F79ACA2C856DE2A9EF891CFD99C43C01CDC0A22139746ACB53AC42877E0"
|
||||
"source-0029.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","F962E34492069EEC738C96331B8EF2D965605DBE073C48795713143B7E1BD0B5"
|
||||
"source-0030.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","19E62ECA2E6C603CF36DCBF4B1126627FA033694591532839C76E1A471D3B907"
|
||||
"source-0031.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","5E8719804B8AC348EC3CA897BFBF924537550301E1CB69E6A63829F5D01D2959"
|
||||
"source-0032.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","56AC0DEE211042771BAD302A74ED6DA1DAB6AE3449B97DC62314055DDE05005D"
|
||||
"source-0033.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","7BC29958A7476FED88736D6194DC526CD34AE30C05B4DBD9C613700E38EC9448"
|
||||
"source-0034.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","AA24D035F36DBAE6A9D1F45B111B47C8CBEC644CF403F0B2238D6B2598503076"
|
||||
"source-0036.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","22E4B4AD5871EAA8649C3A83B9ED087216A15063BD316F920B77FE631CD8601D"
|
||||
"source-0037.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","2612B3FF98320AC4EEA29159C3A17AE77EF05E3532BFEB8E68DEC813AB55B83B"
|
||||
"source-0038.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","650576F96F3D50590F7992757E60F1293C916AE0014DD353005D4EC08431D96A"
|
||||
"source-0039.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","03CD98EC8E8AE9E92F5223BF47BCE2033BE5F8D9BD8B5644A224796C0C6E45D9"
|
||||
"source-0040.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","9204C3C038A988C010CCA0E48DE167C436D6775D7BE0B502F0095F48966F283B"
|
||||
"source-0041.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","0B8E19153E9D0084701731AF1ADA29F99054016CD893CE77110983AC25093CD4"
|
||||
"source-0042.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","0F3B53298A3CFBA92EEDC4B49E4A642CF0755EC999720480C18ACFDD2D467A5B"
|
||||
"source-0043.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","AAC95DDD9A62B94234254106D6EE37E95E3FD4227B0AD94E327E025C8282C660"
|
||||
"source-0044.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","9FA7D5F8CA5E1A9344A9700EA3605035080D635C4E225D4EF9350E16CD5B518B"
|
||||
"source-0045.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","1A28F0D2D3C53BE9BEC7C016307327C5C222FF867F43AE5420A755DFA32D396B"
|
||||
"source-0046.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","8B26E8E5DDD8101924198D6AA16D37DB5DFCA2864C8F4EA1B7C251AEDA06CD4D"
|
||||
"source-0047.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","C6EFA356369C7D06DF90817ACE6D971D9944423712391699477640DDE2A88D53"
|
||||
"source-0048.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","5AC3D9D8EF5BAA99E00849BFD0CA2354ACBE2CE4B4895C37A24D625670F6B133"
|
||||
"source-0049.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","68272BD50AA263E08987ED982E3DDDB6132D8FEED0D4E2C57820B8EE5A43C904"
|
||||
"source-0050.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","994D122515FA8FD4AA48378D0B8760432CA346518A01415EDF5C4F8DF91E0A71"
|
||||
"source-0051.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","83A80E0285027BEB367A3C04237AEE0350A929D871ADF151D3E7020B09265469"
|
||||
"source-0053.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","B7A496F928F2005125AEB6A86BA74F96C6968F50831535CE9FE2E61DA94ED68C"
|
||||
"source-0054.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","D172BE258326A1E36A65229F589A2653D3D7CEEBC6F71C9404892D9CE8A2EE5F"
|
||||
"source-0055.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","6C052A3B028D375C0AF2F27A69375617BE0932A1767FC6659EE47DAE79B1D73D"
|
||||
"source-0056.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","2D838798D2A29D88A3CF9D520A6850A6EEEE3103E6F9EA8B56C7171D50AF0AC0"
|
||||
"source-0057.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","22B15721ECAD00B795D6A8E6586A21C414F87F54C8711AD2DD121ECF70E6BC05"
|
||||
"source-0058.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","2ED89B5B5FC7721F626E70DBDB32A951AC2BA1CF2CA98855008056389ED5DBB1"
|
||||
"source-0059.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","6B38514847036D64D3ADEA60827E0106F91453874E26F23A0E346ABD69CD9168"
|
||||
"source-0060.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","4BF30610DB2455E4609F38AF2A3119E3BE6C158D249CAA5CB2B0CECDE3572E6F"
|
||||
"source-0061.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","BF9B620D380262C17720B9F79C8F4710940F3E7A694DC1487582747C43A6EFBF"
|
||||
"source-0062.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","C6ED208D19EE59675819B9EB1101437AF9F09B297826545B63D837B28476938B"
|
||||
"source-0063.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","C3EC9168E732EF52BB81FEF37445FD7EF80BF8A9132E14E921C88BEE7A622FDC"
|
||||
"source-0064.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","E321E0A62A8EF8394814800348635ED7409F8C29BBB77982BB605B0E40283191"
|
||||
"source-0065.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","59522EBF2D08EE7B4B73E8CD4F0DDDCAA54E6BCBADBDAD82E47CC4043EE1E0A6"
|
||||
"source-0066.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","ED460B2F82C49A91E61B8F4E962BC7F3BD409D8BDE8F8A409558F1E16344A54C"
|
||||
"source-0067.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","C3F967DFE2AF1740389216CC4A4FFAB36EEA0649D6D8D97B7C830128952C30D1"
|
||||
"source-0068.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","ACBCAFE4E2C64CA0B933D560784F6F7BB1BE777737AA912780847BA7951A91E9"
|
||||
"source-0069.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","0C1257176B0BF385322498F99C38877E79AA6DBAB2282E4CA85B27123456DBDE"
|
||||
"source-0070.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","BE5E9E2ED02A38A2A5FAA5F458A226103E44BB1E10E661F8471DF87497BA6193"
|
||||
"source-0071.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","CCFD47992D6871A0D1A3C3D0FABB5469716A84BE685607D1F48D3F59D15C0B59"
|
||||
"source-0072.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","D99F7CFC5C845B8A9240D76442B1C8290BB884C25A65C292E661B3C038E53595"
|
||||
"source-0074.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","7100543975AFBC048D1D3DA5F0FA3082C238D572D1C5017B3D66FD51FE9FC0A9"
|
||||
"source-0075.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","ED16C384412EEBA6CEB8AD6EEB5E65636E45335442C7B3AEDDF4B1D274378E93"
|
||||
"source-0076.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","534E8133938434DEB4B0F66479C5777C1BAC9BD7845F6AAF7976ADC22B84DBE8"
|
||||
"source-0077.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","B2AA6B11A49B4860D109B32930A9CC4A1E1595C760FF76F2623F55989449974D"
|
||||
"source-0078.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","574A3D111E5B2763D573D109E0057FE10C89BB31350003D98CF83A597468CDBD"
|
||||
"source-0079.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","6211DC9082F415546E5A302783FB377AE4F2E9F3DC2C2512AC052B6B197A36F5"
|
||||
"source-0080.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","88EED7D7E099EBC65366EC7786172E4AAB3F508656BE1C64E7DC6A5262E7674C"
|
||||
"source-0081.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","D7CC897DC2479C84B7B1BBA7BAF47FC7889FEAFD1036E1859574ADB409130829"
|
||||
"source-0082.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","FF5D172A737374956F63F38A26B9AAF64BDAE499291AA6AC0CF26B2570ECC94F"
|
||||
"source-0083.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","A448B38E9A54DE558EE9C8FDDE4C9633035C8654D023C7E9D3ABF7586F039F61"
|
||||
"source-0084.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","6609016A6D620744BBBA52562F5CC6BA68007BD68332218880D648B57ABCAE53"
|
||||
"source-0085.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","F17FA2DBEFA4FFF9518249E112C79D1087661A5EF3A58923DCEBECB38A1C66E8"
|
||||
"source-0086.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","CFBE9CEDCA5E52EE3E43C0D860F7D3126743B2E94677B6F2DE85E3726C102825"
|
||||
"source-0087.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","B1D7148DDE7ECC3F01F139633BFC779EBAE93620870435F5837B294DF275803A"
|
||||
"source-0088.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","4FB32F8097D32CA110552BE58782D1F179A4D23FCFDA43B6BAEC4FE0FAAE531F"
|
||||
"source-0089.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","ABD98873D82E3035420F242BFDD407637FAE5C974AAEF045C2F2679811302616"
|
||||
"source-0090.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","B34431BC7D30426ECB96B662BD4765B689B9BAF1DA9C30B31A0DEF68575A0FF8"
|
||||
"source-0091.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","15E62439999BF71C70B3644C69FE86E00B9AC03BFFD3444212FAEBE1052469F5"
|
||||
"source-0092.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","DC78F48FA293BABE2A2D94537F30177BF0C084FFB5B50E575AB50E44D4D717DA"
|
||||
"source-0094.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","8099D96A67B58BC19E77F51F0457E80168D4C3CBE0B79B23F0E781FF7785F67E"
|
||||
"source-0095.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","7F7992CB1E792BC576BBD5B20B130677632CD44F6060D484A02336492E83A3C3"
|
||||
"source-0096.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","596DB4EDD92725EBDAC04ECDB729FCA186B12E39769A4685F61F4121FD2BB694"
|
||||
"source-0097.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","C3D2DB743ED28D3ACD6F2DF785106E0A9888E85CB33F69A76E7580EBCE7281FE"
|
||||
"source-0098.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","2759ED2BB2AF7FF853A68B8E5560960CE1842A2ECBFA3B0CA769074DB20E3829"
|
||||
"source-0099.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","0E1D5A1943C0FFABC7C732D951F9AD6FCFE123C05E50E26135B732A1DFA1C18C"
|
||||
"source-0100.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","CFE999149CDCB6173F71840267E2BA5A36156629CEAF99D50B2E418260AA2153"
|
||||
"source-0102.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","513D086B680B4E32918A18524D83D0EEAE926B4AB99559A182AAA8E632E47929"
|
||||
"source-0103.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","A65F108E7C9DB797544430354AB865CA9416AD2911F6F63E595E63FF91E008F9"
|
||||
"source-0104.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","B6C9ABA619690B1F23328F6ED31C69A9AD1817D5B43A8148102078909E179902"
|
||||
"source-0105.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","2B78926AA1E6E42DC8A377D0BACFC30938D19945D0A5D1688FB92065877BC397"
|
||||
"source-0106.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","31D909B21E267912C85E379E5960CFD01CEA6871BC025B3AE9538C77B782F13E"
|
||||
"source-0107.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","2B32C8018EADE5DEFA550872D29E4C9C8A3AF02B61BC925FB435DEF216282A2F"
|
||||
"source-0108.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","BDD050F3A5AEC5BF33054707DE15381A35FAEB782E30577AB50A1D7E63066D0E"
|
||||
"source-0110.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","FC29A6E3D6F543B03DC5086710E6C005D2EDF22074CC8A7159C87468D5355F17"
|
||||
"source-0111.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","0218D4054568B4C443FE921C2D8E6F3374E9C655A10DC7A621A48C318EB9A466"
|
||||
"source-0112.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","72EBB93761E599565D3C812BDFDA39899C92B0426868C58D45545EAB2A37E5DB"
|
||||
"source-0113.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","EDE794F1BBBF6A143D9E2257D880E33EE07E7DB08C5A1196FA00BD348616D499"
|
||||
"source-0114.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","F2CFA1D7785BFABFD92D7AE481BB05D15F333B3A84781E77774F59CE8C406CA3"
|
||||
"source-0115.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","113F2E535C02F09F72EDB3D9C6866C1AA0A92DE73F3D2494A7D72F4EAA994C5F"
|
||||
"source-0116.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","1D141E7D56E5F5BB8983A0AC847C3FCF814B77F024A4B480B2ABC98F18A4840A"
|
||||
"source-0117.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","74E7B5BE9B7D8BF619D86FE4BCA3655032E63E95E4B8BF5CB6B1715C95B5138A"
|
||||
"source-0118.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","6ED798747A1895356038F8C1E5E2662F92630D25A1A3A482B70614445F405FF7"
|
||||
"source-0120.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","362393B89E34C480B6AE53067E1BE0CDB035BD6A10FB90BD622FE3E1585C230B"
|
||||
"source-0121.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","9A73143888DD86251C70689DBF563BE1A809F8B5027E497C5623024D117E89B6"
|
||||
"source-0122.xlsx","","","SHEET_NOT_FOUND","",,"","C1FFEC2601913497A598ED8C731F772B428D6059A89906AD9AE1339CE12B6AAC"
|
||||
"source-0123.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","ECE8E6491DA1F8FBC12A334AE883D877D045958F36FB30A0B2CBEC628F3C2142"
|
||||
"source-0124.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","032A89D380099D929673B6F83F686E91B654D832BAC301282AC22E96FF114A9A"
|
||||
"source-0125.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","5853D45EFC24752A28261946E5BAB2A26A1BDD1295322F7AA1E6373976DF7E34"
|
||||
"source-0126.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","88041DDE1F7E8411F4934738DFB3E20B30E769DB89520AB2982ADA72711F3AA9"
|
||||
"source-0127.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","6391D1EEF934A4279875F2ED6C942E988995DC80E719DFE51E330C3628A92716"
|
||||
"source-0129.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","D27440A199F781AF988A1D14BEA60CBDDE363B80DE4C4BC88543614C845951A5"
|
||||
"source-0130.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","C9D9E56D3F51AD8D70265F367FBAB4AF48DDA31825E68BDCAB785FB33CC59046"
|
||||
"source-0131.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","AE6D3956FC2EB1E8C4448638F20E47E6558E530D19CD6B1E00738EE11B3E5D98"
|
||||
"source-0132.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","1F52993E37BAA7634248FA6C89215DEFE08A1357AF554FE9D4FA54853FF150FC"
|
||||
"source-0133.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","EDD189ADABE78F0E0CD35D6B566E28232C9230DADAB91E00C3D9A7EF5ED0D559"
|
||||
"source-0134.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","FB9EB6C311BB2D8FFD1505515DAF230041BF17935A2C77886853CE7531A73BE1"
|
||||
"source-0135.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","0AC6D4C6590688F3CD7C80178E83CF9F33267DBC4F984AC39A9878064952AB06"
|
||||
"source-0136.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","8EDDB15D53361B21AE22084405558B1EEFFF2AB87A58E2C495B44CEC3563666C"
|
||||
"source-0137.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","14E0D757F490A3D6AEB4810BC34209FB96F7170273786D7F94F9D5EBCA502F95"
|
||||
"source-0138.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","058C34DC42DCCCCBB91523C3572F8690B4DDE226B5BD100526E172E50ABC0D24"
|
||||
"source-0139.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","3D51E207FE8FB925D1771E4ECF613D4895A556D45FED57B93E583AB0D2BABF31"
|
||||
"source-0140.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","5C7666C397C18FCE173E751F17C32DF331C343F891D0855F29943C1568CFE0CC"
|
||||
"source-0141.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","A2E8AC2E7E456290A9C32A2B98A835C7030E293A1F4E8CFF28A89A3429AB2B32"
|
||||
"source-0142.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","04FFDB2BB5CB4E9A8287BEFB730251094330313DC12ACB630BABF465231C57BE"
|
||||
"source-0143.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","73B1FF45373FEEC8254A2F1921684635B3157870D84C02D97F10D9D936D4FFA4"
|
||||
"source-0144.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","DCC75631518A738FED6A026387DC5EA835E97AE38B3C613310F980D721D4FA21"
|
||||
"source-0145.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","8671CD26610C700E4508C9D6B96CBFD822FBB326622EFAE8776032E3C2D512A2"
|
||||
"source-0146.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","A95FC3902BA956E5B01D80419740EA47B5FF28A18ED7EC7DDFC8B4CD83204956"
|
||||
"source-0147.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","07A92B9570D275034C945D516530FF7A7B099F7B95614FCC5F8B1A93627F9972"
|
||||
"source-0148.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","0C9451087D7BA8FC6B2B32842CBC6CBD3693DCB7D02F65EBA3A7E652A2AD8B3B"
|
||||
"source-0149.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","AB647149DB8B76A7F74997EE8443AA70FDC3EBEA902D086618E63DE0FFDF6043"
|
||||
"source-0150.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","D3F4F23ECFBB62C02CF9322DDC8703016FFCD7540FFAC9A5616A821AA384843B"
|
||||
"source-0151.xlsx","Plant3D","2","AMBIGUOUS_RECORD","Плагин","Дата","Количество запусков","129EB34B94ACE3F15434F6251495B1AE60C910D35E90BCBBAB9BE83D27290301"
|
||||
|
@@ -0,0 +1,152 @@
|
||||
"SourceId","SHA256","HasPlant3DSheet","ActualSheetName","RowCount","ColumnCount","Headers","ParseResult","RejectedRows"
|
||||
"source-0001.xlsx","A15A619FCBD036043644B235D1B5116C019838A42091CA6A451CD82DFCC41749","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0002.xlsx","A5B3F1451F88798417B3621F6BC6690BC0B1BA94E8F69B75BB4C6CB961B29BFB","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0003.xlsx","1DAA47089E28D62C9DF05541266ECEF512AACF87248BDA4576F42346EA6BE543","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0004.xlsx","B5AA0708B2C97B8F6AA13E4DA09C9FC4B205BB2A44D6A6993E7DB0ED26F9CEA5","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0005.xlsx","310124BF67ED7185513C834FBF3BC96A0AB243CF5114A41E2F78CE383D04F15F","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0006.xlsx","484B6D563FFC782565DE9FE7AFBA18406017627D192CA2C3789EF8CEA63E20CE","False","","0","0","","SHEET_NOT_FOUND","1"
|
||||
"source-0007.xlsx","E5C9642AEA336BB0040B2FA290AAFD723AB6CE6F04519C5A003AAB927270F6C3","False","","0","0","","SHEET_NOT_FOUND","1"
|
||||
"source-0008.xlsx","0323A416C468D838726E5792D887A7F9A381B2A1C13C65A340C57D472CCD8441","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0009.xlsx","3CE17A1F2C385F2D3E8FC288D4342026FA329894C2FFD292521A94F8ECEC5FE8","True","Plant3D","6","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","0"
|
||||
"source-0010.xlsx","A28C34A53E3D3342A20E013F1C8ECB0535369386C8A384F72DC2FB8A8EE22028","True","Plant3D","414","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","0"
|
||||
"source-0011.xlsx","F1B81195DA589C392940461EFFB4241A1531B1DA70BFC547896366AB94626473","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0012.xlsx","2C3506BA50204A3E8A1E42E0B466587103F80C8F8BEE692F27ED1FD2A7977E43","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0013.xlsx","BF74975CF82BB0CEB2CE6BF005A679BE2514D33A9E7F145DFCF91ED261A875B6","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0014.xlsx","7D2AE6636424016E60AF73B6826F4D9992A0A20356593C7D5D1034E3EBA47173","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0015.xlsx","D60671EADF93813991C84959F6C3E9CFEEB60F8F44522A6DB27FE64C0CCD8B7A","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0016.xlsx","A2B3F6E746DF732AA7FF721BCEE5A4C44442FC74851AE8ECA112B19D87671774","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0017.xlsx","B9430EC9C2BD7E6231F1A27390F63241111844956B6A32C01FADA6E8C0CB33AA","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0018.xlsx","1945DBF7EDD39F7F66605465E72C61FD405A1196D66DEA146E49D04DB8C2BF39","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0019.xlsx","1432526CC6D04A23B0AFFD7F0D7758D95CBC801ECC80CC868100A9849B8DFA05","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0020.xlsx","EF46F7969E767613029508068B0389A70F78B7781DEB1B1D5B57A55368CE14BF","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0021.xlsx","2661112A136177954233F1D2AAD0ADA66DFBF0F8BC4FDF7845DF8B4C4604F431","True","Plant3D",,"0","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","0"
|
||||
"source-0022.xlsx","32637F9E79E4DD99E894B0920945135A3CB17A140A82596E1D02C9309F73FC39","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0023.xlsx","9E4660630442D118F09FCB11DBE975E25433197A8A5DFB12CC612C153E0F725E","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0024.xlsx","2BBF8C9E52E7B98ACE642BB19D16F3E3CC2F376E39A05E53BF992FF9050B8A1E","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0025.xlsx","A1325DC1797468286A02EDE3733DF8219B254E916154D31F34F4B461B6D2BC80","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0026.xlsx","FB1E886E31C2FB3D52CA0DBBD9E74CD091938B57E7C6F6FCF4966A7FE704392C","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0027.xlsx","C4FEC6A05FB2720D6C4341B8735C85900A8AA15805C5CE245E551C5FFA4EEBF8","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0028.xlsx","66B28C7AB727BE7F77491313B75FB62F498C39500DE1CFB41C54A78EB184DFA1","True","Plant3D","56","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","0"
|
||||
"source-0029.xlsx","5F8D42AD0580CFD7F4CB407B45A1B7E4D4F26D9A04A2ADF7DDA7028499BD2146","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0030.xlsx","F512D38F97E6848FFA80D30D226E8E79B6422AE96096D3B137A8D18D9C7283DD","True","Plant3D","90","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0031.xlsx","670D5DA7859B4FAE24EB4F5929939786865CD2B32C7FE829B8C553A74AAF82F8","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0032.xlsx","F08A03A625EBE9807A89BDD9357C92A1475AE7F19A5A3B488B3E8D7356A0D981","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0033.xlsx","0532B42C2AB5F10B2900A137D8C72745DACDE4EDF8C9612628E07CD388C9FC92","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0034.xlsx","205F5F22C7E7DD5C9F04B9CA730BC3E79A23A561E280838C62AC4B79741462D5","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0035.xlsx","7A93BB9B4F04A534D1ABE7B36118288A5B6BA799E829B75B73C8DECAAD78D22C","True","Plant3D","252","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","0"
|
||||
"source-0036.xlsx","AB6211135C2391355AEB089B4893A2485869B94D9D4AFFE73936ED59C458676D","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0037.xlsx","08EFD4B8B47E13F5F7F1621B884EE7D75CA060C28F7D6521C0D5BC4EABC79A32","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0038.xlsx","514E2773029F9D5F827A3CDE7EC28F1F466C98ACBAABD65729FE69CE586DE0A8","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0039.xlsx","C199078B83D9FE0D78DF631A1534B6308CE801E4CE1AB61404BE33F039C728F6","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0040.xlsx","C7BF9E922FF6813037E20C4AFF1B37FA6CEFB275F628BC15E5CFAC8DF374F89E","True","Plant3D","3","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0041.xlsx","BE31C9D8AC380F283989D5BA048ECB803111AB9599B8E2698834B5B4891E623C","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0042.xlsx","2865FF71486B4BD98B0B6B30D92E05F21E483DC71C52C7D77C00760D889CDDB4","True","Plant3D","586","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0043.xlsx","3F73CDB5FB6F42172E1D23AC7B63EAB3764E8A97A6000B7D3678F896CBDD58BF","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0044.xlsx","FDD351196C3D124CCA31AFDBEF582DCBFE76C88E4119CF3601BB7D1D0B9EAAFE","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0045.xlsx","7DA92F660D6F73EC0333B4E637819DB88ADC6E40A7D2E2E9D780D1E7851D4025","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0046.xlsx","EF3485449D9F5CEF104B14FE4D16BFDC3A27199C6117732D15CFC994F361F32F","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0047.xlsx","170D835A968A0590ACEA2909AE9DD204A8A7B2B01FD4254FBFD30F7216B2D4C4","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0048.xlsx","AAC46741C97CA9D5DBBADA8815D0D894F99F37F1CF6CD0FF6E2D1F090D3AD920","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0049.xlsx","F49CD86C04D7CFDA8F1FE0FB6131F9F28A86916A6C9012D54B116E9F272C8ABE","True","Plant3D","734","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0050.xlsx","A024F33FD3CD408C7FC62C59D6511F2FB8CA257DF5872A3C793875AD700F0623","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0051.xlsx","63FC0734C4B58165B3C53E06320ACC86A8D9B11F1B71EE4796071E462C291794","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0052.xlsx","170D835A968A0590ACEA2909AE9DD204A8A7B2B01FD4254FBFD30F7216B2D4C4","UNKNOWN_DUPLICATE","","0","0","","DUPLICATE_WORKBOOK","0"
|
||||
"source-0053.xlsx","86AF67FAC7778F3EAEBF51BCF0C643387CCBFADA9020D48B0C0B7403E52E45C4","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0054.xlsx","76EDCFF3616F370F7EBAF4917EB430B9C606DCAC88B2782A11511B725ED30E84","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0055.xlsx","1C1116CDE1D4D33F5B5C03710999EB74D546E9FD21780DF4F8BFA51F7683FFD1","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0056.xlsx","CBAA90125E90F981FC9C9E7C1866C4D7A4AC80020D02B939E3010BA76D5889A5","True","Plant3D","25","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0057.xlsx","F50FF129D9F408BD431DC7D9997F675037E3822ED0A2F3EEDDDC37D2E783A2C2","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0058.xlsx","6B378A5C23A90C23762B9257C36E5DFC6357A7A924E8A435BFA97CD438E94B66","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0059.xlsx","E4736511A4CE16692ADCF5DF17C006A0CA6BD10E135DFFC4770EA1CCA1FB9EF0","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0060.xlsx","DCE700252D4065DF7A03B22FED55E36D75B468DA6207439E968DAEFDB05270F8","True","Plant3D","895","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0061.xlsx","F1221EBEAA1FAEFFCCC41A921F55378B1E301806DE862A71A30EC101B37A74E9","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0062.xlsx","7727E99AC47171CDA1F590B2E6380BC96F7DED676AA335637CE1436612B52D56","True","Plant3D","460","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0063.xlsx","CA8F71B9B2ECF4B27B7B581E3E4BA770873B1E73EEEFEB538ED441C5C8757A0B","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0064.xlsx","C7A1E4C8CB9CB27D05C62D89133A40665F791484431B192A73F59B8F9A6DB29E","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0065.xlsx","89A2AD33216311E5982DE7D311A4B7BBA5F9120B74B3F45EE480512BDACA650B","True","Plant3D","237","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0066.xlsx","AAEA49E5B294B77A9C1ABD2530E84BCE3B5814CEAA8D43638D921D03ADB0B3D7","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0067.xlsx","23AD7BE9E3CD38A6141171BC7848CA024AD9DDEA1613719781F8E4F0A695A4EB","True","Plant3D","117","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0068.xlsx","ADE70DE40D2ECBBDF6C92CAFAC598A4E79FB1EF4B42B7FD29B86358EDFB882FB","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0069.xlsx","9F995F5F40ABAD9FA72913BD8CD66D4D94252A247ABA1B6AAF1F618C02CC8807","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0070.xlsx","954F040E98D6D0AB8DA5E3D9226C2F2DDC1320CFA25FA84355346406E89A5562","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0071.xlsx","861D3B078EE1520FAC14F8BAB765C804DA233545B46C548EACC0894FED45CECF","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0072.xlsx","7CC2D143DCDA82A368F478D246086934AE20BC21B8EBCD19B17488D6A1B5C9DA","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0073.xlsx","658B087B7CDB15130678A5F58E4FA1B1FA5688457FA2FA03DFA7A218D3EA0CCC","True","Plant3D",,"0","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","0"
|
||||
"source-0074.xlsx","D8039752750039DD7A8DA647C21087A12944F4ACDCD636D27BD8624D86375125","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0075.xlsx","CC9C45987C6DA9646FC4FD771F8D8B6C2F3F466C609203C2AAE31C1AD79C595B","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0076.xlsx","9FE880A33CA691260B76A025145339D1757B8295942323DC1A24020B9D2E1BE1","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0077.xlsx","69233E373BA94FF1D0F5BEBAE67880BD34BA873992875344E1458254B64B9E8A","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0078.xlsx","D7C5B3583FA52CF6D4DDB4B8D673BE12ECFA7C18C40CED86679D691E3D6E32B6","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0079.xlsx","EFD4FC75BDED4E45A774945511D527F71433C58EC86C4F20275AC2D97CE7AAA1","True","Plant3D","697","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0080.xlsx","222E65CCAB8CA101B3DA836BB2D87FBC77A46B309066270A5A13D48C5FDC8E00","True","Plant3D","287","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0081.xlsx","35044B7D3E03E7C67E7C04AA532E307522226A4CE7D50A51107B4CC2B7AE3117","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0082.xlsx","BF54E9EC75A0716BC4AD71E310AC8558E3EA7FF4FF1AE7616FB6C546F3D05D75","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0083.xlsx","C2D6E13731016E523F582D065480F385E3D8EFC9379C6CB20A8FEC288330BD33","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0084.xlsx","ED0BC02534ECB9636BE0C2268926942C8DEB9ADDC75823CF6A1E241E188E96DF","True","Plant3D","1860","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0085.xlsx","30B54423173405FB2179C2F0C1532DEF28A292A7E3249C5483CED353F692691A","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0086.xlsx","BE7148B01F6BF466650D93ED1A1CFF736AFC5DF43567FA4D62C319ED0739863B","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0087.xlsx","27EA9A83CEDB02328F8E99D914CAB7EC9325313458D36678FC14994F028A7C66","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0088.xlsx","35C2F37E1453CC52B85BFAA335695931D469844C660CDBE8356FF60FA5EDC094","True","Plant3D","152","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0089.xlsx","FF6B2808D71FD697AC2AD83400152E258EE428FF50CF00D22915AE70CA4F2D19","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0090.xlsx","4C5AB590CDC6F764326B8DCE845E0DBFB51C9A8710DCA65671173A06B1F4C8BE","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0091.xlsx","9A68D1C2B05E2A1AE7DC08F56A203F12094064DC90CF4A753E6B024944058953","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0092.xlsx","AA4CF707135416550D390D59275F4EF96597CA413553ED998BAD249266C1BB0C","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0093.xlsx","6E9634C35B174D2CA2BF67E7E5D5A5D322E8E33366231D419927335D67118158","True","Plant3D","60","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","0"
|
||||
"source-0094.xlsx","7826F33C15EA6164E46A9BB762DDA073ED113B918F81E3BFF9BACBD4F9E9862A","True","Plant3D","810","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0095.xlsx","4FE1B8234D58BB533E118659489AD5497E17EC58C935FB467B78FE00AE868782","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0096.xlsx","AC2B780B38BBF7B0BDFC6F3134633536A4A64DB3A2C71F010079A99ABC698EBF","True","Plant3D","3","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0097.xlsx","FF6A99D2F4042CDEDC0D8AB2863FCA5B74128D9CD39A6FF42E4DCA3CFC8CF62B","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0098.xlsx","CFDF4380ABFF2899C15963155D1AC991CFDC2E0F6F5615191DC983F7CE8E3708","True","Plant3D","91","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0099.xlsx","ACF37ECD1F508F39F352C3112113F6214741032F642012233F7C0EB71D57FAE3","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0100.xlsx","BE19C25F151B4525E0058F7C974B250AFEC651585F71A2B0BC9A28C6D2639521","True","Plant3D","1039","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0101.xlsx","5F8D42AD0580CFD7F4CB407B45A1B7E4D4F26D9A04A2ADF7DDA7028499BD2146","UNKNOWN_DUPLICATE","","0","0","","DUPLICATE_WORKBOOK","0"
|
||||
"source-0102.xlsx","219ACB4310303A5EE9E5A825998AF9012AD80F597F693B730583ACEC5856B935","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0103.xlsx","96074CB9DECE06172FD88185CF379830582046A83C7405AD7B41D7F6196BD0C0","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0104.xlsx","16D424D7B51535AFF74B02F1FAA113E35A501E7A5C6E991382853FAB0F14AB02","True","Plant3D","74","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0105.xlsx","2BD63E06782C45CAF3A77C301F980ABE6421C098E549DDD639918894987CFD4B","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0106.xlsx","23F20D79B82DA3BE0E979AB55939B308F5CE35264C687A13FAF0B0EFA31912C9","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0107.xlsx","1843EDAF7DBFB71036D62B9C80DBC256199969EF64B1881E9E5A051B1EADEDD5","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0108.xlsx","BE04A1D538CB18E1F909E0F0F911AC7D8DE0C614FD107E5F9209E843F2AE1311","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0109.xlsx","205F5F22C7E7DD5C9F04B9CA730BC3E79A23A561E280838C62AC4B79741462D5","UNKNOWN_DUPLICATE","","0","0","","DUPLICATE_WORKBOOK","0"
|
||||
"source-0110.xlsx","1A04C1D1FEC0D6DE24AE5B59A303FAC8617D6DCB7C79BA61F493797E249F6BE7","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0111.xlsx","69D6ECE741A1CE49B9188F9191F04DD49B8FB1D36AE79492D302DAF8BC55DE0D","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0112.xlsx","67E4B2F304BD98BC953742C319AD9FDC60E1DDF809317D264AB92B5DD496D153","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0113.xlsx","5207B2F0DC0DB9C5399A32A1505310665180EC74D6A26015475986DCBF379563","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0114.xlsx","BB0EA311890606D735E090E3CC009275EE1EA0430A861A36E1B5B887619FB9BB","True","Plant3D","107","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0115.xlsx","90AF2345A620F5735BA47A7B0A6355CF1FC6ACD508DD566123B20F7FD3E40BCF","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0116.xlsx","B5B54A5399281FE2F6439D499496EF27B110BBB1DE8008428F80BD5E3FE9B6E7","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0117.xlsx","777C7A38D2F97998426FB4E6A39AA7C4ADA7343D48C00427DEA58FBA915B3D67","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0118.xlsx","AC66A34DA4BA02E8452B1CA0CDCFF381AA7F56C2ECF206C6D3E39DC49DFD8B86","True","Plant3D","3","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0119.xlsx","630481E3722EF0E4F271C812FCB686BFEC679EC2A90B1CE60929FA178276B746","True","Plant3D","703","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","0"
|
||||
"source-0120.xlsx","217E8F2CE5C0E50FFECDFDC69C99629EFF86F8F1C5820B804472CCBB96C83693","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0121.xlsx","606068897D6B8B66ABABDF0F123679A46864CCD8D3D8F7A64C5DB8242B910AA7","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0122.xlsx","775B72ABA7A5F3277F857C4431A9795192451621DDDA9E568952EE5FC4B818E2","False","","0","0","","SHEET_NOT_FOUND","1"
|
||||
"source-0123.xlsx","77C0DBDA49BCF2A61E1E8661FE56069B13F5CD76372B60CCBCB4FED4D9FCC300","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0124.xlsx","11E3CB994067C2944C72783818094A3B0070E9B20F16E65E4DF5EEC4BC7D4BEF","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0125.xlsx","A8D15E45344B4F9914F28EB471C74B90F4C8AB09F588C5932ADEC6A69EF3A1F1","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0126.xlsx","973258780339702C9EAF6E67B69C8835B5585E00D21764598B619A8490EF6334","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0127.xlsx","B276743CAB8202E42B5E6578DCFD33FAC968CC809EF258D3D083D1858D42FF9A","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0128.xlsx","88200AC6044F16B2B18F5448F6B4BC5BAF6E1F9EE5446E1FD30EB321AC2B8BDC","True","Plant3D","3128","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","0"
|
||||
"source-0129.xlsx","78A70F71CF77C11855ADA80A805FAD5F04FF8B5D55516FC6565C1FB86E46D4D5","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0130.xlsx","D934BC7DB6C68A6458FFFE801C61B622BDCB10979CCB3B22431867A346DF3559","True","Plant3D","65","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0131.xlsx","E0192943F2454E18F72092D794D3E73A55536B7757269638BAD922BBF7E58DCF","True","Plant3D","1027","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0132.xlsx","10EB6F3BB853E29C25D5C7781F7DBE32AB66DEFCF74F33A0E041326DB3E058C1","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0133.xlsx","013EBC9D96D0A2330A708C04C715A97830337DF0E85A13A46B9CEB46B641A662","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0134.xlsx","480B287CB70F44135B538D406934BC84D48A9907EAC15BCDBE566606F9459814","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0135.xlsx","6213EE80A8303E74E0C5D8D0706F4BF18BA8C66CF7D521269D83342DC129456C","True","Plant3D","1970","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0136.xlsx","F2351A9EE055766BA23389341EDE4F646EF93A6F4EC5D643FABDC938D6856741","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0137.xlsx","7BF721DA2ACE12EEBEAE8B810BB36E1609A716312D57123AB8DE5E3AB88A2C67","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0138.xlsx","B5EFA1E2A03AD1E58DE3A8BD8E654DAE2D6D3BEE25ABD83A1F2DAAA7D1ACBBA0","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0139.xlsx","D01E5620808DC870F30C7A2F8FBB142989BC64B47ACA75C33EB8891261210D61","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0140.xlsx","1E4BA218B03A56523525B6B62FCFA2381CC6C142018426EFB8BC12FD8B5B248E","True","Plant3D","499","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0141.xlsx","B39C734C901C75D4E297A7F1044068B28FA2459A2ECD3518BB9FE4B325052344","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0142.xlsx","A69931EA29521E1AB9CE9EEFAD29E07687B57A6B35CBC0023FD8CEAB706BF2AA","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0143.xlsx","6BF892D6DB59C80850AD3FD316CBC6B6BAAB93AD54D1B7273C525C26141405EE","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0144.xlsx","4940E6C9CBB4C3B8D327F463A3EADA1FEBD622E8065D038D97364CA99D1D2D7F","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0145.xlsx","106F64274F9146D16FC5915A19FE112C287CB91FBE1F466C25D535746A3398AE","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0146.xlsx","EFF26E58F20FCEE544B341129C608788C6A3D96C1BDCD22AF34B6D10BE220492","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0147.xlsx","55846ECDE3A730B781564A2059D3DAC56536EC3AAEF69B09BB07178AC8720212","True","Plant3D","181","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0148.xlsx","94278E1422D937D2C6D365036C35732C5D9C24BF70AB51ED78606668D848AB9D","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0149.xlsx","85B5D8D2537326FA82CFCBA6158AE0F852E0FB7DA4D342C1507CEC4F233D9681","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0150.xlsx","CF4DB120F80B11598077A842CD458703C2938D010C773D5A5C6E41AE707950C3","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
"source-0151.xlsx","F6DE7BCCBCC3B6B4CEC6FA81F0C5F17DE7E0725E8AE7BF6384798429C431A38D","True","Plant3D","2","6","Файл;Пользователь;Плагин;Дата;Количество запусков;Номер проекта","PARSED","1"
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user