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

ADN Club => AutoCAD .NET API => Тема начата: Дима_ от 04-06-2015, 09:26:57

Название: Есть ли способ заблокировать описание блока от PURGE
Отправлено: Дима_ от 04-06-2015, 09:26:57
Всем Здравствуйте. Сложно и долго рассказывать всю предисторию - в общем в основном проекте все описания блоков хранятся в SQL БД откуда успешно импортируются по мере надобности, но появилась необходимость держать простые "автономные" блоки в четреже, НО хранятся они (то есть ссылка на них) в сериализованном объекте в формате {имя блока,[имя дин. параметр или аттрибута*значение;...]}, откуда так-же по надобности либо извлекаются, либо просто отображаются (overrule). Весь вопрос в том, что надо каким-либо способом блокировать описание от удаление Purge'ром т.к., по "автокадовским меркам" ссылок на него вполне может нигде не быть. Причем желательно, чтоб не было необходимости для этого держать какую-либо загруженную dll (то есть чтоб описание "выживало" после любого смежника). Я думаю посмотреть в сторону куда-бы поместить вхождение, чтоб оно вроде было, но его не было. Пока вижу только "колхозный" вариант масштабирования до нуля с visible=false, но может есть более "культурные" методы.
з.ы. способ так-же должен быть не "крайне радикальным", чтоб когда описания на ссылки кончались и в "моих" объектах сериализованных в РД описание можно было "отпустить".
з.з.ы сериализовывать в РД двоичное описание блока - как-то совсем не хочется - но как крайняя мера может и пойдет.
Название: Re: Есть ли способ заблокировать описание блока от PURGE
Отправлено: Андрей Бушман от 04-06-2015, 09:33:55
На невидимом (техническом) слое держать сигнальный экземпляр вхождения блока.
Название: Re: Есть ли способ заблокировать описание блока от PURGE
Отправлено: Дима_ от 04-06-2015, 09:39:31
"Технический" - это просто заблокированный слой или я чего-то пропустил и есть возможность сделать слой недоступный юзеру (только с програмным доступом)?
Название: Re: Есть ли способ заблокировать описание блока от PURGE
Отправлено: Андрей Бушман от 04-06-2015, 09:47:46
Под техническим я подразумевал обычный слой (предназначенный лишь для служебного пользования), но заблокированный и с отключенной видимостью.
Название: Re: Есть ли способ заблокировать описание блока от PURGE
Отправлено: Александр Ривилис от 04-06-2015, 10:56:25
"Технический" - это просто заблокированный слой или я чего-то пропустил и есть возможность сделать слой недоступный юзеру (только с програмным доступом)?
Это может быть слой с LayerTableRecord.IsHidden == true (т.е. его не должно быть видно в списке слоёв).
Еще один вариант, который я не пробовал, но теоретически должен работать: http://www.theswamp.org/index.php?topic=41870.0
Название: Re: Есть ли способ заблокировать описание блока от PURGE
Отправлено: Дима_ от 04-06-2015, 11:07:15
О - спасибо. Кнопки "2 решения" нет.
Название: Re: Есть ли способ заблокировать описание блока от PURGE
Отправлено: Александр Ривилис от 04-06-2015, 11:13:08
Кнопки "2 решения" нет.
Увы. Это ограничение движка (конкретного пакета) форума.
Кстати, каким из решений ты решил воспользоваться? Со слоем или со словарём и Xrecord?
Название: Re: Есть ли способ заблокировать описание блока от PURGE
Отправлено: Дима_ от 04-06-2015, 11:50:46
Пока не знаю - надо доделать по другой части - начну со слоя - если что-то не понравится то вторым.