乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 68|回复: 3

设置层滤波器电流的最佳方法?

[复制链接]

85

主题

404

帖子

7

银币

中流砥柱

Rank: 25

铜币
751
发表于 2017-5-19 00:46:00 | 显示全部楼层 |阅读模式
我正在创建一个图层过滤器,并希望在首次创建时将其设置为当前。有没有一个好方法可以做到这一点?阅读 Kean 的博客,我整理了一些代码来创建图层过滤器。代码按预期工作,但我找不到将其设置为当前的方法。有什么想法吗?// create prefix filter。
尝试。
{。
LayerFilterTree lft = Active.Database.LayerFilters;。
LayerFilterCollection lfc = lft.Root.NestedFilters;。
字符串 pref = “前缀-”;。
检查我们是否已经创建了层过滤器。
如果 (!lfc.演员(),Any(lf => lf.名称.等于(pref)))。
{。
创建它。
LayerFilter prefixFilter = new LayerFilter();。
prefixFilter.Name = pref;。
prefixFilter.FilterExpression = $“NAME==\”{pref}*\“”;。
新浪网.Add(前缀Filter);。
Active.Database.LayerFilters = lft;。
// 待办事项设置它当前?。
}。
}。
捕获(异常)。
{。
Debug.Print(“创建前缀层过滤器时出现问题”);。
}。

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2017-5-24 20:54:33 | 显示全部楼层
这是我借的斯蒂德编造的
在手动打开图层管理器之前,它不会真正工作,因此我无法提供帮助。
//http://adndevblog.typepad.com/autocad/2012/06/use-layerfiltertree-to-add-a-new-layer-filter.html
[CommandMethod(“NoXrefLayers”)]
静态公共无效NoXrefLayers()

文档文档doc=acadApp.DocumentManager.MdiActiveDocument;
数据库db=doc.Database;
Editor-ed=doc-Editor;
-bool-bXref=false;
LayerFilterTree-lft=db.LayerFilters;
(int i=0;i

LayerFilter lf=lfc

//ed.WriteMessage(Environment.NewLine+lf.FilterExpression);
如果(lf.Name==“Xref”)//只有在存在外部参照时才会显示
bXref=true;
否则如果(lf.Name=“no_Xref_layers”)

//将其设为当前<br>LayerFilterTree lyrTree2=新的LayerFilterTree(lft.Root,lf);<br>Lyrtree.Root.GenerateNested();<br>db.LayerFilters=Lyrtre2;<br>返回;<br>}<br>如果(!bXref)返回
LayerFilter lfXref=新的LayerFilter()
lfXref。Name=“no_xref_layers”
lfXref。FilterExpression=“NAME==\”~*|*\”
lft.Root.NestedFilters。添加(lfXref)
lft.Root。GenerateNested()
}
回复

使用道具 举报

85

主题

404

帖子

7

银币

中流砥柱

Rank: 25

铜币
751
发表于 2017-5-25 01:26:42 | 显示全部楼层
谢谢布莱科,这真的很管用!如果layermanager已打开,它将立即执行此操作。我已经决定不将layerfilter设置为当前版本,但我已经听到用户抱怨他们的所有其他图层都“消失”了!
为了供将来的用户参考(也可能是我自己的),我在查看了您的代码后提出了以下解决方案:
创建前缀过滤器
试试
{
LayerFilterTree lft=Active.Database.LayerFilters
LayerFilterCollection lfc=lft.Root.NestedFilters
字符串pref=“prefix-”
//检查我们是否已经创建了layerfilter
如果(!lfc.Cast
)。任何(lf=>lf.Name.Equals(pref)))
{
//创建它
LayerFilter:prefixFilter=new LayerFilter()
前置过滤器。Name=pref
前置过滤器。FilterExpression=$“NAME=\”{pref}*\”
<div>lfc.Add(前置过滤器)
//设置新的过滤器当前值(创建一个新的层过滤器树,将我们的过滤器设置为当前值)
<div>LayerFilterTree nlft=新的LayerFilterTree(lft.Root,前缀过滤器)
//将新树分配给活动的.Database
是活动的.Database。分层过滤器=nlft
}
}
捕获(例外)
{
调试。打印(“创建前缀层过滤器的问题”)
}
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2017-5-26 00:04:17 | 显示全部楼层
很高兴这有点帮助。我只使用2个过滤器:一个如上图所示,另一个在接收客户端外部参照时被称为asis,这样我就可以解冻所有东西并删除所有不必要的东西。
我曾尝试在模型空间中以文本形式添加所有图层名称,并要求用户通过选择图层来创建过滤器。但一直没时间去做。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 13:48 , Processed in 0.159792 second(s), 60 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表