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

ADN Club => AutoCAD .NET API => Тема начата: Привалов Дмитрий от 07-07-2015, 09:21:43

Название: entity.Visible = false eNotAllowedForThisProxy
Отправлено: Привалов Дмитрий от 07-07-2015, 09:21:43
Пытаюсь скрыть объекты, через entity.Visible = false;Попался Proxy, который для:
demandload=3 не меняет свойство visible
demandload=0 выкидывает исключение eNotAllowedForThisProxy

Возможно ли такой Proxy скрыть вообще и что можно попробовать?
Название: Re: entity.Visible = false eNotAllowedForThisProxy
Отправлено: Андрей Бушман от 07-07-2015, 10:41:14
и что можно попробовать?
Взорвать ProxyEntity.
Название: Re: entity.Visible = false eNotAllowedForThisProxy
Отправлено: Привалов Дмитрий от 07-07-2015, 11:08:40
Взорвать ProxyEntity.

Взрывать пока не требуется, это позже.
Сперва нужно проанализировать что есть в чертежах. И применить "правильное лечение".

В чертежах много прокси и встречаются "отклонения от правил".
Так например нельзя взрывать некоторые прокси, в Demandload 0.
строительные оси в этом режиме отображаются линиями.
Их нужно разбить, при Demandload 3
Могут быть и другие.

Т.е. Автоматизированная разбивка Proxy в моей конторе скорее всего потребует:
1. Режим demandload 3
1. Разбить прокси без ObjectEnabler. explodeAllProxy, removeAllProxy.
2. Для объектов с ObjectEnabler, в основном это project studio и spds вызывать разбивку.
3. Для ProxyObject с ObjectEnabler пока не смотрел, предполагаю, что они не удаляться removeAllProxy.
4. Возможно будет список исключений.

visible пока нужен только для предварительного анализа прокси
Название: Re: entity.Visible = false eNotAllowedForThisProxy
Отправлено: Александр Ривилис от 07-07-2015, 12:28:20
Из того, что приходит в голову:
1) можно поменять слой на выключенный слой.
2) можно создать специальный блок и назначить его владельцем этого прокси. Блок не вставлять.
Это возможно только если этот прокси не запрещает все операции с ним. В противном случае только его удаление сделает его невидимым.
Название: Re: entity.Visible = false eNotAllowedForThisProxy
Отправлено: Андрей Бушман от 08-07-2015, 10:09:16
3. Для ProxyObject с ObjectEnabler пока не смотрел, предполагаю, что они не удаляться removeAllProxy.
Предполагаю, что не удалятся, т.к. в этом случае они скорее всего не будут интерпретироваться как ProxyEntity. Если разбивать нужно выборочные прокси, а не все подряд, то можно воспользоваться ранее обозначенным на форуме методом:

Код - C# [Выбрать]
  1. public static ObjectId[] ExplodeProxyEntity(ObjectId proxyEntityId, out Boolean handOverTo_called, out Int64 explodedCount, WriteMessage writeErrorMessage)
Название: Re: entity.Visible = false eNotAllowedForThisProxy
Отправлено: Привалов Дмитрий от 08-07-2015, 10:18:59
Из того, что приходит в голову:
1) можно поменять слой на выключенный слой.

В принципе идея со слоями сработала.
Отключение слоя не скрыло данный  Proxy. А вот заморозка слоя скрыла.