Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Atomohod от 23-01-2019, 22:53:46

Название: Неубиваемый слой
Отправлено: Atomohod от 23-01-2019, 22:53:46
Здравствуйте!
Столкнулся с проблемой удаления фантомных (неиспользуемых нигде) слоев. Написал код-для нормальных слоев все хорошо, объекты переносятся между слоями и ненужные пустые слои уничтожаются. НО есть один слой (-10-Compartments в приложенном файле), который никому не назначен, но убить его нельзя. В чем причина? Каким методом написать код, чтобы его уничтожить?
Название: Re: Неубиваемый слой
Отправлено: Александр Ривилис от 23-01-2019, 23:16:21
Так же как и для типов линий:

(https://farm8.staticflickr.com/7809/46801329662_7d423a8c8d_o.png)
Название: Re: Неубиваемый слой
Отправлено: Atomohod от 23-01-2019, 23:31:25
Как работает этот механизм? Ведь ни блок двери, ни его внутренняя геометрия не лежат на этом слое. Почему он не освобождается? Ведь в теории нельзя удалить лишь 0 слой, остальные при отсутствии на них объектов можно? При каких условиях происходит сбой и нарушается этот принцип?
Название: Re: Неубиваемый слой
Отправлено: Александр Ривилис от 23-01-2019, 23:42:27
Ведь ни блок двери, ни его внутренняя геометрия не лежат на этом слое.
Зато BlockBegin и BlockEnd блока лежат на этом слое. Поэтому пользуешься методами BlockTableRecord.BlockBeginId  и BlockTableRecord.BlockEndId для получения ObjectId этих объектов, открываешь их и меняешь им слой.
Название: Re: Неубиваемый слой
Отправлено: Александр Ривилис от 23-01-2019, 23:46:24
При каких условиях происходит сбой и нарушается этот принцип?
Ты поменял слой содержимому блока, но не поменял слой у BlockBegin и BlockEnd. А я забыл тебе напомнить. Кстати, у них есть не только слой, но и тип линии (они наследники Entity). Так что не забудь и это учесть при изменении типа линии.