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

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();


转载请标明作者和出处

作者:田腾

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值