812просмотров
9 февраля 2026 г.
🎬 ВидеоScore: 893
😎 💬🔃 Интеллектуальное копирование содержимого атрибутов между блоками в AutoCAD с сохранением типа данных #autocad, #lisp
Очередной запрос из чата:
- нужна программа для копирования значений атрибутов между блоками с сохранением исходных динамических полей (Field) с полным сохранением их структуры, включая вложенные формулы и ссылки на объекты! Последовательность работы:
1. Выбор блока-источника (с атрибутами).
2. Выбор конкретного атрибута-источника из списка (через диалог).
В списке атрибуты, содержащие поле, помечены "[ПОЛЕ]".
3. Выбор блока-приёмника (с атрибутами).
4. Выбор атрибута-приёмника из списка (через диалог).
5. Если атрибут-источник содержит поле, пользователю задаётся вопрос:
Скопировать как "ПОЛЕ" (с сохранением динамической ссылки) или как "ТЕКСТ" (текущее отображаемое значение)?
6. Запись значения в целевой атрибут и обновление чертежа. Как это работает?
1. Скрипт использует механизм выбора блоков с атрибутами (SSGET).
2. Для выбранного блока извлекаются все атрибуты (через ENTNEXT) и формируется отсортированный список их имён (тегов).
3. Пользователь через временный DCL-диалог выбирает исходный и целевой атрибуты. Диалог показывает, содержит ли атрибут поле.
4. Если атрибут содержит поле, скрипт рекурсивно обходит структуру словаря ACAD_FIELD (коды DXF 360) и собирает полный код поля, заменяя временные ссылки (ObjIdx, FldIdx) на абсолютные (ObjId).
5. Пользователю предлагается скопировать поле целиком или только его текстовое представление.
6. Собранный код поля (или текст) записывается в целевой атрибут через ActiveX (VLAX-PUT-PROPERTY).
7. Чертеж обновляется (REGEN). 📎Скачать файл можно в комментариях Команда: LS_COPYATTR ====================
📖 Оглавление канала 🙃 Авторские разработки 📰 Чат для общения
💰 Поддержать автора