Revit二开构造函数 - CreateSchedules:创建明细表

 话不多说,直接上代码!有疑问的随时评论留言交流!

public static void CreateSchedules(Document doc, double clashELemsCount, string scheduleName, string problemDescription)
        {
            FilteredElementCollector coll = new FilteredElementCollector(doc);
            ElementClassFilter instanceFitler = new ElementClassFilter(typeof(ViewSchedule));//获取项目载入族的过滤器
            coll.WherePasses(instanceFitler);
            var schNameList = new List<string>();
            foreach (var c in coll)
            {
                schNameList.Add(c.Name);
            }

            if (schNameList.Contains(scheduleName))
            {
                Transaction tra = new Transaction(doc);
                tra.Start("删除明细表");
                TaskDialog.Show("温馨提示", "项目中【已存在同名明细表】,请【重命名或删除】已有明细表后再运行程序");
                tra.Commit();
            }
            else
            {
                if (clashELemsCount == 0)
                {
                    TaskDialog.Show("温馨提示", "无此类问题存在,不生成明细表");
                }
                if (clashELemsCount > 0)
                {
                    Transaction tr = new Transaction(doc);
                    tr.Start("创建明细表");
                    string str = problemDescription;
                    List<ViewSchedule> schedules = new List<ViewSchedule>();
                    ViewSchedule schedule = ViewSchedule.CreateSchedule(doc, new ElementId(BuiltInCategory.INVALID));//多类别明细表
                    schedule.Name = scheduleName;
                    schedules.Add(schedule);
                    foreach (SchedulableField schedulableField in schedule.Definition.GetSchedulableFields())
                    {
                        {
                            if (schedulableField.GetName(doc).ToString() == "族与类型" || schedulableField.GetName(doc).ToString() == "标记")//加载需要的明细表参数
                            {
                                ScheduleField field = schedule.Definition.AddField(schedulableField);
                                if (field.ParameterId == new ElementId(BuiltInParameter.ALL_MODEL_MARK))//设置明细表过滤器条件
                                {
                                    ScheduleFilter filter = new ScheduleFilter(field.FieldId, ScheduleFilterType.Contains, str);
                                    schedule.Definition.AddFilter(filter);
                                }
                                if (field.ParameterId == new ElementId(BuiltInParameter.ELEM_FAMILY_AND_TYPE_PARAM))//设置明细表排序
                                {
                                    ScheduleSortGroupField sortGroupField = new ScheduleSortGroupField(field.FieldId);
                                    sortGroupField.ShowHeader = false;
                                    schedule.Definition.AddSortGroupField(sortGroupField);
                                }
                            }
                        }
                    }
                    tr.Commit();
                }
            }

        }

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值