最近在项目上遇到这样的需求:在统计材料出量时,要给明细表添加一定数量的字段。由于鄂州机场项目实施过程中使用插件给构件添加了一些共享参数,来满足构件编码,计量的要求。
其中有一些是构件公有的参数诸如:“构件全编码”,“构件图元ID”,“分部工程”,“子分部工程”,“分项工程”,“专业”,“子专业”,“二级子专业”,“构件类别”,“构件子类别”,“构件类型”等十几个字段,并要按序添加这些字段到明细表。一个项目中有时候需要几十个明细表,每个明细表又要十几个公有字段,这无疑是巨大且重复的工作量。
那么来看下通过Dynamo来新建明细表并添加这些公有字段吧:
Dynamo自带的就有创建明细表的节点,但在使用的过程中并不好用,只能首次输入某个类别的时候能正常新建明细表,后续输入其他类别时却不能奏效。
于是查阅了API将此功能重写:
Name属性可读,可写:
完整代码:
#创建明细表
#By I am the one
import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
cat = UnwrapElement(IN[0])
TransactionManager.Instance.EnsureInTransaction(doc)
schedule = ViewSchedule.CreateSchedule(doc,cat.Id)
schedule.Name = IN[1]
TransactionManager.Instance.TransactionTaskDone()
OUT = schedule.ToDSType(True)
创建明细表节点:
将明细表可用字段转换成字符串想要添加的字段做比对,通过索引值获取到相应的字段并添加到明细表:
这里需要注意ScheduleView.SchedulableFields和ScheduleView.Fields间细微的区别,一个是可用于明细表的字段,一个是当前明细表已经添加进去的字段,是下图的对应关系:
就如同兜里有5块钱,只花了1块钱。
完整程序:
演示效果:
欢迎阅读,分享,交流,批评指正。
如转载请注明出处,否则追究法律责任(说说而已,全靠自觉)。
评论0