Создание и доступ к информации фильтра слоёв

Автор Тема: Создание и доступ к информации фильтра слоёв  (Прочитано 8501 раз)

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

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн alihovsky

  • ADN OPEN
  • Сообщений: 27
  • Карма: 2
Приветствую. Попытался к коду Александра прикрутить окно, где есть текстбокс для имени фильтра слоёв, этот же текстбокс есть и Expression для фильтра.
Есть два затыка:
1.Expression не записывается, видимо, неверно передаю Expression?
2.Странное поведение диспетчера слоёв - фильтр создаётся, но отображается если закрыть-открыть диспетчер или если запустить команду, находясь внутри другого фильтра в диспетчере. Нужно вот здесь пробовать обновить диспетчер Autodesk.AutoCAD.Windows.Data.LayerFilterCollection?

<a href="http://adn-cis.org/sozdanie-i-dostup-k-informaczii-filtra-sloyov.html" title="Создание и доступ к информации фильтра слоёв">Создание и доступ к информации фильтра слоёв[/url]

Код - C# [Выбрать]
  1. public class CreateLayerFilMtd
  2.     {
  3.         public void CreateLayerFilter(Document doc, string MyLyFilter)
  4.         {
  5.             var db = doc.Database;
  6.             LayerFilterTree filterTree = db.LayerFilters;
  7.             LayerFilterCollection filters
  8.                                     = filterTree.Root.NestedFilters;
  9.             {
  10.                 using (var tr = db.TransactionManager.StartTransaction())
  11.                 {
  12.                     using (LayerFilter layerFilter = new LayerFilter())
  13.                     {
  14.                         // Создаём новый фильтр слоёв
  15.                         layerFilter.Name = MyLyFilter;
  16.                         filters.Add(layerFilter);
  17.                         // Устанавливаем изменённые фильтры для базы данных
  18.                         db.LayerFilters = filterTree;
  19.                         string myst;
  20.                         myst = string.Concat("NAME == \"*",MyLyFilter,"*\"");
  21.                         layerFilter.FilterExpression = myst;
  22.                     }
  23.                tr.Commit();
  24.                 }
  25.             }
  26.         }
  27.     }
  28.  

Оффлайн alihovsky

  • ADN OPEN
  • Сообщений: 27
  • Карма: 2
Тупанул, извините:-\
Код - C# [Выбрать]
  1.                         // Создаём новый фильтр слоёв
  2.                         string myst;
  3.                         myst = string.Concat("NAME == \"*", MyLyFilter, "*\"");
  4.                         layerFilter.FilterExpression = myst;
  5.                         layerFilter.Name = MyLyFilter;
  6.                         filters.Add(layerFilter);
  7.                         // Устанавливаем изменённые фильтры для базы данных
  8.                         db.LayerFilters = filterTree;