Неубиваемый слой

Автор Тема: Неубиваемый слой  (Прочитано 5622 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн AtomohodАвтор темы

  • ADN OPEN
  • ****
  • Сообщений: 453
  • Карма: 1
Неубиваемый слой
« : 23-01-2019, 22:53:46 »
Здравствуйте!
Столкнулся с проблемой удаления фантомных (неиспользуемых нигде) слоев. Написал код-для нормальных слоев все хорошо, объекты переносятся между слоями и ненужные пустые слои уничтожаются. НО есть один слой (-10-Compartments в приложенном файле), который никому не назначен, но убить его нельзя. В чем причина? Каким методом написать код, чтобы его уничтожить?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Неубиваемый слой
« Ответ #1 : 23-01-2019, 23:16:21 »
Так же как и для типов линий:

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн AtomohodАвтор темы

  • ADN OPEN
  • ****
  • Сообщений: 453
  • Карма: 1
Re: Неубиваемый слой
« Ответ #2 : 23-01-2019, 23:31:25 »
Как работает этот механизм? Ведь ни блок двери, ни его внутренняя геометрия не лежат на этом слое. Почему он не освобождается? Ведь в теории нельзя удалить лишь 0 слой, остальные при отсутствии на них объектов можно? При каких условиях происходит сбой и нарушается этот принцип?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Неубиваемый слой
« Ответ #3 : 23-01-2019, 23:42:27 »
Ведь ни блок двери, ни его внутренняя геометрия не лежат на этом слое.
Зато BlockBegin и BlockEnd блока лежат на этом слое. Поэтому пользуешься методами BlockTableRecord.BlockBeginId  и BlockTableRecord.BlockEndId для получения ObjectId этих объектов, открываешь их и меняешь им слой.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение Atomohod 24-01-2019, 21:57:11

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Неубиваемый слой
« Ответ #4 : 23-01-2019, 23:46:24 »
При каких условиях происходит сбой и нарушается этот принцип?
Ты поменял слой содержимому блока, но не поменял слой у BlockBegin и BlockEnd. А я забыл тебе напомнить. Кстати, у них есть не только слой, но и тип линии (они наследники Entity). Так что не забудь и это учесть при изменении типа линии.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение