Приветствую. Попытался к коду Александра прикрутить окно, где есть текстбокс для имени фильтра слоёв, этот же текстбокс есть и 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]
public class CreateLayerFilMtd
{
public void CreateLayerFilter(Document doc, string MyLyFilter)
{
var db = doc.Database;
LayerFilterTree filterTree = db.LayerFilters;
LayerFilterCollection filters
= filterTree.Root.NestedFilters;
{
using (var tr = db.TransactionManager.StartTransaction())
{
using (LayerFilter layerFilter = new LayerFilter())
{
// Создаём новый фильтр слоёв
layerFilter.Name = MyLyFilter;
filters.Add(layerFilter);
// Устанавливаем изменённые фильтры для базы данных
db.LayerFilters = filterTree;
string myst;
myst = string.Concat("NAME == \"*",MyLyFilter,"*\"");
layerFilter.FilterExpression = myst;
}
tr.Commit();
}
}
}
}