| 1 | # Fundamentals: модели расширений CAD (v1) |
| 2 | |
| 3 | **Мир:** `engineering.cad` |
| 4 | |
| 5 | --- |
| 6 | |
| 7 | ## Scope |
| 8 | |
| 9 | Как **типы API** соотносятся с языком, деплоем и отладкой — обобщённо для multi-CAD .NET-плагинов. |
| 10 | |
| 11 | --- |
| 12 | |
| 13 | ## Core concepts |
| 14 | |
| 15 | ### 1) Managed .NET plugin (основной контур) |
| 16 | |
| 17 | - **Class library** (DLL), загружаемая хостом САПР. |
| 18 | - Ссылки на interop/API DLL вендора (`HintPath`). |
| 19 | - Конфигурации MSBuild: `Debug_<ProductVer>`, `Release_<ProductVer>` + define (`E3D310`, `ADM19`, `NC26.0`, …). |
| 20 | - Отладка: attach к процессу САПР, подготовка окружения (addins path, env vars). |
| 21 | |
| 22 | ### 2) ObjectARX (native, AutoCAD) |
| 23 | |
| 24 | - C++ проекты, заголовки в `ObjectArx/<year>/inc`. |
| 25 | - Отдельный toolchain, версия ARX **жёстко** привязана к версии AutoCAD. |
| 26 | - Не смешивать с managed без явной границы (mixed mode — редко и сложно). |
| 27 | |
| 28 | ### 3) AVEVA PML / .NET mix |
| 29 | |
| 30 | - **PML** — макросы/скрипты в среде AVEVA. |
| 31 | - **.NET addins** — `Aveva.Core`, UI framework, database filters. |
| 32 | - Константы `AVEVA_CORE_LIBS`, `ADM`, `E3D` в csproj выбирают **набор ссылок**. |
| 33 | |
| 34 | ### 4) Tekla Open API |
| 35 | |
| 36 | - NuGet-пакет с набором `Tekla.Structures.*.dll`. |
| 37 | - Версия пакета ↔ год Tekla (`2020.0.2` ↔ TS 2020). |
| 38 | - Плагины Model / Drawing / Catalog — разные entry points, общие NuGet. |
| 39 | |
| 40 | ### 5) Self-contained утилиты рядом с плагином |
| 41 | |
| 42 | - Иногда отдельный **exe/dll** (например SQL logging) выносится из общей библиотеки, чтобы не тянуть зависимости в основной addin. |
| 43 | - Деплой: набор файлов рядом с addin + опциональный **внешний** config для строки подключения *(не публиковать в KB)*. |
| 44 | |
| 45 | --- |
| 46 | |
| 47 | ## Anti-patterns |
| 48 | |
| 49 | - Копировать NuGet Tekla в «общий References» без версии — конфликт с другими годами TS. |
| 50 | - Один `AnyCPU` для всех AVEVA addins — многие продукты **x86**. |
| 51 | - Хардкодить секреты в репозиторий вместо локального config-файла в деплое. |
| 52 | |
| 53 | --- |
| 54 | |
| 55 | ## Links |
| 56 | |
| 57 | - [kb-cad-platforms-fundamentals-v1.md](kb-cad-platforms-fundamentals-v1.md) |
| 58 | - [kb-cad-build-references-fundamentals-v1.md](kb-cad-build-references-fundamentals-v1.md) |
| 59 | |
| 60 | **Версия:** v1.0 · 2026-06-04 |
| 61 | |