最近在项目上遇到这样的需求:在统计材料出量时,要给明细表添加一定数量的字段。由于鄂州机场项目实施过程中使用插件给构件添加了一些共享参数,来满足构件编码,计量的要求。

        其中有一些是构件公有的参数诸如:“构件全编码”,“构件图元ID”,“分部工程”,“子分部工程”,“分项工程”,“专业”,“子专业”,“二级子专业”,“构件类别”,“构件子类别”,“构件类型”等十几个字段,并要按序添加这些字段到明细表。一个项目中有时候需要几十个明细表,每个明细表又要十几个公有字段,这无疑是巨大且重复的工作量。

那么来看下通过Dynamo来新建明细表并添加这些公有字段吧:

Dynamo自带的就有创建明细表的节点,但在使用的过程中并不好用,只能首次输入某个类别的时候能正常新建明细表,后续输入其他类别时却不能奏效。

于是查阅了API将此功能重写:

Name属性可读,可写:

完整代码:

#创建明细表#By I am the oneimport clrclr.AddReference('RevitAPI')from Autodesk.Revit.DB import *
clr.AddReference("RevitNodes")import Revitclr.ImportExtensions(Revit.Elements)clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference("RevitServices")import RevitServicesfrom RevitServices.Persistence import DocumentManagerfrom RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocumentcat = 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

评论0

请先
高清、无水印 21J925-2 金属面夹芯板建筑构造(替代01J925-1、 06J925-2、08J925-3、OCR完整版).pdf
高清、无水印 21J925-2 金属面夹芯板建筑构造(替代01J925-1、 06J925-2、08J925-3、OCR完整版).pdf
9分钟前 有人购买 去瞅瞅看

社交账号快速登录

微信扫一扫关注
扫码关注后会自动登录网站