Гайд: Как исправить сбои перевода DWG в APS и потерю выбора у сотен одинаковых блоков - Часть 4
8. Что попробовать в первую очередь конкретно в вашем случае
Я бы рекомендовал такой порядок:
Шаг 1. Проверить, не грузите ли вы лист вместо модели
Найдите в манифесте все role: "2d" узлы и попробуйте:
- Model;
- Layout;
- Sheet.
Если в Model выбор работает лучше, используйте его.
Шаг 2. Найти отличие 5 выбираемых кранов
Проверьте в AutoCAD:
LIST
QSELECT
PROPERTIES
Особое внимание:
MINSERT;- array;
- nested block;
- dynamic block state;
- layer;
- attributes;
- paper space.
Шаг 3. Сделать тестовый минимальный файл
Создайте пустой DWG и вставьте:
- 20 кранов;
- 50 кранов;
- 100 кранов;
- 120 кранов;
- 150 кранов.
Без штриховки.
Затем варианты:
- обычный статический блок без атрибутов;
- статический блок с уникальными атрибутами;
- статический блок на уникальных слоях;
- уникальные имена блоков.
Это даст вам четкую матрицу поведения.
Шаг 4. Проверить файл с уникальными атрибутами
- Если 120 кранов с уникальными
CRANE_IDвыбираются все — это ваш рабочий путь. - Если уникальные атрибуты не помогают — вероятнее всего, транслятор все равно инстансит/упрощает 2D-блоки, и лучше переходить к гибридной схеме.
Шаг 5. Удалить или сильно упростить штриховку
Сделайте отдельный тест:
файл только с кранами
файл с кранами + штриховка
Если без штриховки перевод быстрее и выбор лучше — причина в ней.
Шаг 6. Попробовать разделение
Создайте:
plan_background.dwg
plan_cranes.dwg
Переведите их отдельно. Проверьте, выбираются ли краны в отдельном файле.
9. Пример полезного задания на перевод
Для одиночного DWG:
{
"input": {
"urn": "BASE64_URN"
},
"output": {
"formats": [
{
"type": "svf2",
"views": ["2d"]
}
]
}
}
Если вы загружаете ZIP с несколькими файлами и внутри есть главный файл:
{
"input": {
"urn": "BASE64_URN",
"rootFilename": "plan.dwg",
"compressedUrn": true
},
"output": {
"formats": [
{
"type": "svf2",
"views": ["2d"]
}
]
}
}
Для диагностики можно попробовать отдельное задание на svf, если сервис это позволяет:
{
"input": {
"urn": "BASE64_URN"
},
"output": {
"formats": [
{
"type": "svf",
"views": ["2d"]
}
]
}
}
Но не стоит ожидать, что смена формата гарантированно решит проблему выбора.
10. Что делать, если нужно оставить динамические блоки в AutoCAD
Если в вашей рабочей цепочке динамические блоки нужны инженерам, используйте разделение:
master.dwg → рабочий файл с динамическими блоками
export_for_aps.dwg → упрощенный/статический/атрибутированный файл
Экспорт можно автоматизировать через:
- AutoCAD script;
- AutoLISP;
- .NET plugin;
- APS Design Automation for AutoCAD.
Например, пайплайн:
взять мастер-файл
→ зафиксировать состояния динамических блоков
→ добавить/обновить атрибуты
→ очистить неиспользуемые элементы
→ упростить штриховку
→ удалить ненужные layout'ы
→ сохранить отдельный DWG для APS
11. Что делать, если кранов станет сотни или тысячи
Для 120 кранов еще можно бороться средствами DWG.
Для 500–5000 одинаковых объектов я бы уже настоятельно рекомендовал:
подложка + маркеры/оверлеи + внешняя база объектов
Причины:
- стабильность;
- производительность;
- независимость от внутренней логики транслятора;
- возможность фильтровать;
- возможность раскрашивать по статусу;
- возможность показывать/скрывать группы;
- возможность хранить свойства вне DWG.
В такой схеме dbId перестает быть главным идентификатором. Главный идентификатор — ваш craneId.
12. Важное замечание про dbId
dbId в APS Viewer — это идентификатор в рамках конкретной производной модели.
Он может измениться:
- после повторного перевода;
- после изменения исходника;
- после смены формата вывода;
- после смены версии транслятора.
Если вам нужна долговременная идентификация кранов, используйте:
атрибут блока
внешний ID
GUID
имя объекта в вашей БД
Например:
CRANE_ID = CR-017
А dbId используйте только как временный мост в текущей загруженной модели.
13. Когда писать в Autodesk/APS поддержку
Обязательно пишите, если:
- файл после очистки все равно падает с
Tr worker fail to download; - корень манифеста
failed, хотя дочерние элементыsuccess; - перевод длится больше часа и завершается ошибкой;
- вы сделали минимальный воспроизводимый файл, где видно пороговое поведение;
- уникальные атрибуты не помогают;
- вам нужен официальный ответ по поведению транслятора для повторяющихся 2D-блоков.
Что приложить:
urn.- Регион.
- Дату и время запуска перевода.
- Ответ манифеста полностью.
- Пример
messages. - Исходный файл или уменьшенный воспроизводимый файл.
- Описание: сколько блоков, какой блок, динамический или нет.
- Что пробовали:
x-ads-force, удаление манифеста,svf2,svf. - Скриншоты: где блоки видны, но не выбираются.
- Список 5 выбираемых и 5 невыбираемых объектов, если можно идентифицировать.
Формулировка для поддержки может быть такой:
We have a large 2D DWG file containing many repeated identical block insertions.
After Model Derivative translation, most block instances are rendered but are not selectable and have no dbId.
Only a small subset of instances returns dbId.
We need to know whether the translator intentionally batches/merges repeated 2D block instances and whether there is a supported way to preserve per-instance selection.
Also, translation sometimes fails with "Tr worker fail to download" even though some geometry children are successful.
14. Чек-лист
Перевод
- [ ] Файл не поврежден,
AUDIT/RECOVERчистые. - [ ]
-PURGEвыполнен для блоков, слоев, стилей, regapps. - [ ]
OVERKILLдля дублей/наложений. - [ ] Штриховка упрощена или удалена.
- [ ] Динамические блоки переведены в статические.
- [ ] Нет
MINSERT, массивов, групп, вложенных контейнеров. - [ ] Краны находятся в Model Space.
- [ ] Лишние layout'ы удалены.
- [ ] Файл сохранен без лишних прокси-объектов.
- [ ] Попробована загрузка под новым именем/новым URN.
- [ ] Проверены
messagesманифеста. - [ ] При необходимости файл разделен.
Выбираемость
- [ ] Проверено, какой узел загружается: Model или Sheet.
- [ ] Проверены свойства 5 выбираемых кранов.
- [ ] Проверено, чем отличаются невыбираемые краны.
- [ ] Добавлен уникальный атрибут
CRANE_ID. - [ ] Проверен вариант с уникальными слоями.
- [ ] Проверен вариант с уникальными именами блоков.
- [ ] Проверен тест без штриховки.
- [ ] Проверен отдельный файл только с кранами.
- [ ] Проверено, что невыбираемые объекты не перекрыты другим слоем.
- [ ] Проверено, что нет прокси/анонимных блоков.
Архитектура
- [ ] Есть внешний стабильный ID крана.
- [ ]
dbIdне используется как единственный вечный идентификатор. - [ ] Для большого числа объектов рассмотрены маркеры/оверлеи.
- [ ] Свойства кранов хранятся во внешней БД.
- [ ] Есть резервный сценарий выделения через собственный picking.
15. Совет
- Сначала проверить вид: грузите именно Model, а не sheet/layout.
- Проверить 5 выбираемых кранов: скорее всего они отличаются слоем, атрибутом, пространством, состоянием блока или тем, что не являются частью массива/вложенного блока.
- Заменить динамические блоки на статические.
- Добавить уникальный атрибут
CRANE_IDна каждую вставку. - Убрать/упростить штриховку или вынести ее в отдельный фон.
- Сделать тестовый файл без штриховки с 20/50/100/120 кранами и проверить, сохраняется ли порог.
- Если уникальные атрибуты не дадут 100% выбора — переходить к схеме:
легкая подложка + краны как внешние объекты/маркеры
Для сотен одинаковых блоков это часто надежнее, чем пытаться заставить транслятор гарантированно создавать индивидуальный dbId на каждую вставку.
Если говорить максимально коротко: проблема, вероятнее всего, не в Viewer и не в CSS, а в том, как 2D-DWG-транслятор упаковывает повторяющиеся блоки. Публичного флага «сделать каждый инстанс выбираемым» нет, поэтому нужно либо менять структуру исходного DWG, либо использовать внешнюю идентификацию объектов.
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.