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

Статьи => Опубликованные статьи => Тема начата: Александр Ривилис от 14-03-2014, 01:30:04

Название: Когда метод IsEffectivelyErased возвращает True
Отправлено: Александр Ривилис от 14-03-2014, 01:30:04
Когда метод IsEffectivelyErased возвращает True
Название: Re: Когда метод IsEffectivelyErased возвращает True
Отправлено: Андрей Бушман от 20-03-2014, 15:55:02
Мне не понятны пункты 2 и 3.

Цитировать
Этот объект или кто-то из его владельцев возвращает пустой ObjectId в методе ownerId().
А разве это не то же самое, что и п.1? Если "нет" - поясните разницу.

Цитировать
Кто-то из владельцев в иерархии не может быть открыт.
Каковы могут быть причины такого случая и какое отношение подобные случаи имеет к удалению?
Название: Re: Когда метод IsEffectivelyErased возвращает True
Отправлено: Александр Ривилис от 20-03-2014, 16:09:51
Цитировать (выделенное)

    Этот объект или кто-то из его владельцев возвращает пустой ObjectId в методе ownerId().

А разве это не то же самое, что и п.1? Если "нет" - поясните разницу.
Если владелец удален, то чего это ownerId() будет возвращать пустой ObjectId? Он будет возвращать нормальный ObjectId. С другой стороны, метод ownerId() может быть переопределен (т.е. это Custom Object/Entity) и возвращает при определенных обстоятельствах kNull.

Цитировать (выделенное)

    Кто-то из владельцев в иерархии не может быть открыт.

Каковы могут быть причины такого случая и какое отношение подобные случаи имеет к удалению?

Одна из причин - открыт для записи, что не даёт возможность повторного открытия. К удалению это не имеет непосредственного отношения.
Название: Re: Когда метод IsEffectivelyErased возвращает True
Отправлено: Андрей Бушман от 20-03-2014, 16:15:07
К удалению это не имеет непосредственного отношения.
Тогда к чему был за уши притянут IsEffectivelyErased, а не что-то, имеющее более подходящее в данном контексте имя, например "IsLocked"?
Название: Re: Когда метод IsEffectivelyErased возвращает True
Отправлено: Александр Ривилис от 20-03-2014, 16:19:58
Тогда к чему был за уши притянут IsEffectivelyErased, а не что-то, имеющее более подходящее в данном контексте, например "IsLocked"?
Метод не зря так назвали. Если он возвращает true, то это означает, что объект не будет сохранятся в dwg-файл. Например, удалили определение блока (BlockTableRecord) и соотвественно примитив, который содержится в этом блоке, хотя сам и не удалён, тоже не будет сохраняться в dwg-файл и его метод IsEffectivelyErased возвращает true.
Название: Re: Когда метод IsEffectivelyErased возвращает True
Отправлено: Андрей Бушман от 20-03-2014, 16:26:52
Метод не зря так назвали. Если он возвращает true, то это означает, что объект не будет сохранятся в dwg-файл. Например, удалили определение блока (BlockTableRecord) и соотвественно примитив, который содержится в этом блоке, хотя сам и не удалён, тоже не будет сохраняться в dwg-файл и его метод IsEffectivelyErased возвращает true.
Это вы мне сейчас приводите пример для п.1:
Цитировать
1. Кто-то из владельцев в иерархии удален.

Я же, в свою очередь, когда писал
Цитировать
Тогда к чему был за уши притянут IsEffectivelyErased, а не что-то, имеющее более подходящее в данном контексте имя, например "IsLocked"?
то спрашивал о другом обозначенном вами случае, а именно:
Цитировать
Одна из причин - открыт для записи, что не даёт возможность повторного открытия. К удалению это не имеет непосредственного отношения.
Название: Re: Когда метод IsEffectivelyErased возвращает True
Отправлено: Александр Ривилис от 20-03-2014, 16:29:57
Попытаюсь объяснить подробнее. Во всех этих случаях "эффект" один и тот же: объект не будет сохранен в dwg-файл.