编程创建明细表(2013 新API用法)

来源:互联网 发布:醉八仙宠物技能数据库 编辑:程序博客网 时间:2024/06/06 02:15

 

转载请复制以下信息:

 
原文链接: http://blog.csdn.net/joexiongjin/article/details/7564984

作者:  叶雄进 , Autodesk ADN

2012.5.14

 

创建明细表是Revit2013的一个比较重要的API功能增强点。可以用来创建明细表,

1。指定显示那个类别的对象;

2.  可以定制一个表中有那些列,列的宽度。

3.  也可以向明细表设置过滤器,选择那些对象可以在明细表中显示出来。

4.  明细表排序和分组。

 

下面代码段显示了如何创建一个房间明细表。代码摘自Revit 2013 SDK 中的ScheduleCreation 例子。

顺便说句: 你可以在这个页面下载到最新的Revit 2013 SDK,包含这个例子。 随产品发布的SDK不包含这个例子。

http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=2484975

 

        private ICollection<ViewSchedule> CreateSchedules(UIDocument uiDocument)        {            Document document = uiDocument.Document;            Transaction t = new Transaction(document, "Create Schedules");            t.Start();            List<ViewSchedule> schedules = new List<ViewSchedule>();            //Create an empty view schedule of wall category.            ViewSchedule schedule = ViewSchedule.CreateSchedule(document, new ElementId(BuiltInCategory.OST_Walls), ElementId.InvalidElementId);            schedule.Name = "Wall Schedule 1";            schedules.Add(schedule);            //Iterate all the schedulable field gotten from the walls view schedule.            foreach (SchedulableField schedulableField in schedule.Definition.GetSchedulableFields())            {                //Judge if the FieldType is ScheduleFieldType.Instance.                if (schedulableField.FieldType == ScheduleFieldType.Instance)                {                    //Get ParameterId of SchedulableField.                    ElementId parameterId = schedulableField.ParameterId;                    //If the ParameterId is id of BuiltInParameter.ALL_MODEL_MARK then ignore next operation.                    if (ShouldSkip(parameterId))                        continue;                    //Add a new schedule field to the view schedule by using the SchedulableField as argument of AddField method of Autodesk.Revit.DB.ScheduleDefinition class.                    ScheduleField field = schedule.Definition.AddField(schedulableField);                    //Judge if the parameterId is a BuiltInParameter.                    if (Enum.IsDefined(typeof(BuiltInParameter), parameterId.IntegerValue))                    {                        BuiltInParameter bip = (BuiltInParameter)parameterId.IntegerValue;                        //Get the StorageType of BuiltInParameter.                        StorageType st = document.get_TypeOfStorage(bip);                        //if StorageType is String or ElementId, set GridColumnWidth of schedule field to three times of current GridColumnWidth.                         //And set HorizontalAlignment property to left.                        if (st == StorageType.String || st == StorageType.ElementId)                        {                            field.GridColumnWidth = 3 * field.GridColumnWidth;                            field.HorizontalAlignment = ScheduleHorizontalAlignment.Left;                        }                        //For other StorageTypes, set HorizontalAlignment property to center.                        else                        {                            field.HorizontalAlignment = ScheduleHorizontalAlignment.Center;                        }                    }                    //Filter the view schedule by volume                    if (field.ParameterId == new ElementId(BuiltInParameter.HOST_VOLUME_COMPUTED))                    {                        double volumeFilterInCubicFt = 0.8 * Math.Pow(3.2808399, 3.0);                        ScheduleFilter filter = new ScheduleFilter(field.FieldId, ScheduleFilterType.GreaterThan, volumeFilterInCubicFt);                        schedule.Definition.AddFilter(filter);                    }                    //Group and sort the view schedule by type                    if (field.ParameterId == new ElementId(BuiltInParameter.ELEM_TYPE_PARAM))                    {                        ScheduleSortGroupField sortGroupField = new ScheduleSortGroupField(field.FieldId);                        sortGroupField.ShowHeader = true;                        schedule.Definition.AddSortGroupField(sortGroupField);                    }                }            }            t.Commit();            uiDocument.ActiveView = schedule;            return schedules;        }


 

 

 

 

原创粉丝点击