Revit二次开发在项目中给链接模型附加过滤器

视图过滤器分为规则过滤器与选择过滤器:
选择过滤器:需要传入elementId列表对指定的Element进行操作
规则过滤器:通过对指定参数的规则描述,传入categeorys的Id进行操作
具体可参照API

—update—
2019 API删除掉SET*命令与模型颜色指定方法,颜色附加未实验,需要自己验证

#if Revit2016
                    var filterElement = ParameterFilterElement.Create(document, name, categeorys);
                    filterElement.SetRules(filterRules);
                    view.AddFilter(filterElement.Id);
                    document.Regenerate();
                    var overrideSettings = view.GetFilterOverrides(filterElement.Id);
                    //加入打断节点,判断净高值并进行颜色附加
                    overrideSettings.SetProjectionFillColor(GetDBColorFromMediaColor(dictionary.Values.ElementAt(i)));
                    overrideSettings.SetProjectionFillPatternId(PatternId(document));
                    view.SetFilterOverrides(filterElement.Id, overrideSettings);
                    view.SetFilterVisibility(filterElement.Id, true);
                    filterRules.Clear();
#elif Revit2019
                    var elemParamFilter = new ElementParameterFilter(filterRules);
                    var parameterFilter = ParameterFilterElement.Create(document, name, categeorys);
                    parameterFilter.SetElementFilter(elemParamFilter);
                    view.AddFilter(parameterFilter.Id);
                    document.Regenerate();
                    var overrideSettings = view.GetFilterOverrides(parameterFilter.Id);
                    //加入打断节点,判断净高值并进行颜色附加
                    overrideSettings.SetSurfaceForegroundPatternColor(GetDBColorFromMediaColor(dictionary.Values.ElementAt(i)));
                    overrideSettings.SetSurfaceForegroundPatternId(PatternId(document));
                    view.SetFilterOverrides(parameterFilter.Id, overrideSettings);
                    view.SetFilterVisibility(parameterFilter.Id, true);
                    filterRules.Clear();
#endif

一般的项目中,如果添加过滤器只需要使用SelectionFilterElement这个命令就可以添加成功,当我们对链接模型进行操作的时候,由于提取出的List的值是链接模型中的ID值,对主项目文档没有作用。这个时候我们需要利用规则过滤器ParameterFilterElement进行添加,通过对参数的规则描述进行附加过滤器。

下面的例子,是对链接模型中的自定义值在>=Value&&<Value的时候的案例

if (!maxValue.Equals(minValue))
                    {
                        filterRules.Add(
                            ParameterFilterRuleFactory.CreateGreaterOrEqualRule(id, minValue, false));
                        filterRules.Add(ParameterFilterRuleFactory.CreateLessRule(id, maxValue, false));
                    }
                    else
                    {
                        filterRules.Add(
                            ParameterFilterRuleFactory.CreateEqualsRule(id, maxValue, false));
                    }
                    ParameterFilterElement filterElement = ParameterFilterElement.Create(document, name, categeorys);
                    filterElement.SetRules(filterRules);
                    view.AddFilter(filterElement.Id);
                    document.Regenerate();
                    OverrideGraphicSettings overrideSettings = view.GetFilterOverrides(filterElement.Id);
                    overrideSettings.SetProjectionFillColor(GetDBColorFromMediaColor(dictionary.Values.ElementAt(i)));
                    overrideSettings.SetProjectionFillPatternId(PatternId(document));
                    view.SetFilterOverrides(filterElement.Id, overrideSettings);
                    view.SetFilterVisibility(filterElement.Id, true);
                    filterRules.Clear();

这样的话我们就可以对链接模型进行附加过滤器操作。

转载请注明地址:https://mp.csdn.net/mdeditor/89888384#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值