我很难用 WALL_BASE_CONSTRAINT 过滤掉墙壁。这是我目前拥有的代码。构建成功,但是当我执行插件时。我想到了一个例外:过滤器值对于字段和过滤器类型无效。 参数名称:过滤器
我已经在其他BuiltInParameters(例如Material_Name,ALL_MODEL_DESCRIPTION)上成功尝试了此代码。
private static void AddFilterToSchedule(Document doc, ViewSchedule
schedule)
{
string value = "Foundation";
using (Transaction transaction = new Transaction(schedule.Document, "Filter Material TakeOff"))
{
transaction.Start();
ScheduleDefinition definition = schedule.Definition;
ScheduleField scheduleField = FindField(schedule, BuiltInParameter.WALL_BASE_CONSTRAINT);
ScheduleFilter filter = new ScheduleFilter(scheduleField.FieldId, ScheduleFilterType.NotEqual, value);
definition.AddFilter(filter);
transaction.Commit();
}
}
public static ScheduleField FindField(ViewSchedule schedule,
BuiltInParameter paramEnum)
{
ScheduleDefinition definition = schedule.Definition;
ScheduleField foundField = null;
ElementId paramId = new ElementId(paramEnum);
foreach (ScheduleFieldId fieldId in definition.GetFieldOrder())
{
foundField = definition.GetField(fieldId);
if (foundField.ParameterId == paramId)
{
return foundField;
}
}
return foundField;
}
答案 0 :(得分:0)
FindField
的来源和作用是什么?
答案 1 :(得分:0)
请确保将“在链接中包含元素”设置为False,否则请不要在创建的计划中选中它。
这导致无法按基本约束进行过滤。