Revit二次开发(4):对象存储的可扩展存储框架

来源:互联网 发布:seo入门博客 编辑:程序博客网 时间:2024/06/01 14:57

bject ARX中的实体有扩展属性,即实体可以添加一些在定义的数据,在Revit中也有类似的特性。

​上篇Revit二次开发(3):Revit动态模型更新(DMU: Dynamic Model Update)功能实例中,就是用了这一特性记录初始化的数据,在实例修改之后新数据和旧的数据对比计算。

在例子的UpdateInitialParameters​函数中有详细用法,

Transaction t = new Transaction(doc, "Update parameters");

           t.Start();

           // 创建可扩展的存储框架模式

           SchemaBuilder builder = new SchemaBuilder(m_schemaId); //(new Guid("{4DE4BE80-0857-4785-A7DF-8A8918851CB2}"));

           builder.AddSimpleField("Position", typeof(XYZ)).SetUnitType(UnitType.UT_Length);

           builder.AddSimpleField("Orientation", typeof(XYZ)).SetUnitType(UnitType.UT_Length);

           builder.SetSchemaName("WallPositionData");

           builder.SetDocumentation("Two points in a Window element that assist in placing a section view.");

           builder.SetVendorId("adsk");

           builder.SetApplicationGUID(doc.Application.ActiveAddInId.GetGUID());

           m_schema = builder.Finish();

           t.Commit();

           t.Start();

           // 获得扩展字段

           Field fieldPosition = m_schema.GetField("Position");

           Field fieldOrientation = m_schema.GetField("Orientation");

           FamilyInstance window = doc.GetElement(m_windowId) as FamilyInstance;

           Entity storageEntity = new Entity(m_schema);

     

           LocationPoint lp = window.Location as LocationPoint;

           XYZ location = lp.Point;

           // 设置扩展字段的值

           storageEntity.Set(fieldPosition, location, DisplayUnitType.DUT_FEET_FRACTIONAL_INCHES);

           XYZ orientation = window.FacingOrientation;

           storageEntity.Set(fieldOrientation, orientation, DisplayUnitType.DUT_FEET_FRACTIONAL_INCHES);  

           window.SetEntity(storageEntity);

  

           t.Commit();


转载请标明作者和出处

作者:田腾

0 0
原创粉丝点击