928просмотров
12 февраля 2026 г.
🎬 ВидеоScore: 1.0K
😎 Почему вставленный блок не меняет цвет? И как это быстро исправить #autocad, #VBA 👤 Всем привет! Представьте ситуацию, у вас в проекте всё аккуратно настроено: ✅ созданы слои ✅ назначены цвета ✅ настроены стили ✅ порядок и красота 😌 И вот вам нужно: ➡️ взять блок из другого файла ➡️ вставить его в свой чертёж Вставляете… А он не окрашивается в цвет слоя 🤐 Остаётся каким-то «чужим». Знакомо? 🤔 Почему так происходит? Потому что внутри блока элементы: - находятся не в слое "0" - имеют свои собственные цвета и слои И AutoCAD думает так: «У объекта уже есть цвет — значит, менять не надо». Поэтому цвет слоя на него не влияет. Работает правило: - Если объект внутри блока не в слое 0 — - он НЕ подчиняется цвету внешнего слоя. ❓Как должно быть правильно? Чтобы блок автоматически принимал цвет слоя, в котором он стоит: ✅ все элементы внутри блока ✅ должны быть в слое "0" Тогда AutoCAD будет: ➡️ брать цвет уже с внешнего слоя ➡️ и всё будет отображаться корректно Делюсь с вами макросом, который: - заходит внутрь блока - переносит все элементы в слой "0" - не взрывает блок - сохраняет структуру И теперь: 📌 любой вставленный блок сразу принимает цвет нужного слоя 🥇Без ручной правки и лишних действий Sub ALL_ELEMENT_to_0() ' переносим все эелемнты внутри блока на слой "0" Dim ent As AcadEntity Dim blkRef As AcadBlockReference Dim pickPoint As Variant Dim blkDef As AcadBlock Dim obj As AcadEntity ' Выбор блока On Error Resume Next ThisDrawing.Utility.GetEntity ent, pickPoint, "Выберите блок: " On Error GoTo 0 If ent Is Nothing Then MsgBox "Объект не выбран.", vbExclamation Exit Sub End If ' Проверяем, что это блок If Not TypeOf ent Is AcadBlockReference Then MsgBox "Это не блок.", vbCritical Exit Sub End If Set blkRef = ent ' Получаем определение блока Set blkDef = ThisDrawing.Blocks(blkRef.Name) ' Меняем слой у всех объектов внутри блока For Each obj In blkDef obj.Layer = "0" Next obj ' Обновляем чертёж ThisDrawing.Regen acAllViewports MsgBox "Готово. Все элементы внутри блока перенесены в слой 0.", vbInformation End Sub ==================== 📖 Оглавление канала 🙃 Авторские разработки 📰 Чат для общения
928
просмотров
2314
символов
Да
эмодзи
Да
медиа

Другие посты @excel_cad_bim

Все посты канала →
😎 Почему вставленный блок не меняет цвет? И как это быстро — @excel_cad_bim | PostSniper