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

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

Название: Создание и доступ к информации фильтра слоёв
Отправлено: Александр Ривилис от 18-11-2013, 01:30:03
Создание и доступ к информации фильтра слоёв
Название: Re: Создание и доступ к информации фильтра слоёв
Отправлено: alihovsky от 22-02-2024, 21:11:57
Приветствую. Попытался к коду Александра прикрутить окно, где есть текстбокс для имени фильтра слоёв, этот же текстбокс есть и 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.  
Название: Re: Создание и доступ к информации фильтра слоёв
Отправлено: alihovsky от 24-02-2024, 20:20:25
Тупанул, извините:-\
Код - 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;