Autodesk.Revit.DB.ExtensibleStorage.AccessLevel
是Revit API中的一个枚举类型,用于定义Schema
和Entity
的访问级别。Schema
和Entity
是用于存储和管理自定义属性数据的Extensible Storage系统中的两个关键概念。
Extensible Storage系统在Revit中的应用非常广泛,可以用于将自定义数据附加到各种Revit对象上,例如族文件、元素、视图、文档等。使用Extensible Storage可以大大增强Revit的功能,使其能够支持各种特定的工作流和需求。
在定义Schema
和Entity
时,需要指定它们的访问级别,以控制哪些程序可以读取或修改它们的内容。AccessLevel
枚举类型定义了四个级别,从最低到最高依次为:
Public
:公开级别,允许任何程序访问和修改该Schema
或Entity
的所有数据;Application
:应用程序级别,只允许同一Revit插件或应用程序中的程序对该Schema
或Entity
进行读取和修改;Platform
:平台级别,只允许Revit本身对该Schema
或Entity
进行读取和修改;Private
:私有级别,只允许特定的程序集对该Schema
或Entity
进行读取和修改。使用AccessLevel
可以指定Schema
和Entity
的访问级别。以下是一些常见的用法示例:
// 创建一个公开级别的Schema
Guid schemaGuid = new Guid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
Schema schema = Schema.Create(schemaGuid, "MySchema", AccessLevel.Public);
// 创建一个应用程序级别的Entity
Entity entity = new Entity(schema);
entity.Set("MyProperty", "Hello, world!", AccessLevel.Application);
// 获取一个平台级别的Schema,并读取其中的数据
Guid schemaGuid = new Guid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
Schema schema = Schema.Lookup(schemaGuid, AccessLevel.Platform);
Entity entity = // 从某处获取Entity对象
string value = entity.Get<string>("MyProperty", AccessLevel.Platform);