Autodesk.Revit.DB.ExtensibleStorage.ContainerType
是 Revit 中的一种数据结构,用于表示扩展存储容器的类型。扩展存储是一种用于为 Revit 文档和元素添加自定义属性和数据的机制。容器类型用于指定存储容器中存储的数据类型,可以是枚举、整数、双精度值、布尔值、字符串、实体或数组。
Autodesk.Revit.DB.ExtensibleStorage.ContainerType
是一个枚举类型,它包含以下值:
Invalid
: 无效值Element
: 用于存储元素级别的数据Document
: 用于存储文档级别的数据public enum ContainerType
{
Invalid = -1,
Element = 0,
Document = 1
}
//创建扩展存储容器
SchemaBuilder schemaBuilder = new SchemaBuilder(Guid.NewGuid());
schemaBuilder.SetReadAccessLevel(AccessLevel.Public);
schemaBuilder.SetWriteAccessLevel(AccessLevel.Public);
schemaBuilder.SetSchemaName("Demo Schema");
schemaBuilder.AddSimpleField("string", typeof(string));
Schema schema = schemaBuilder.Finish();
Document document = new Document();
Entity entity = new Entity(schema);
entity.Set("string", "Hello, Revit!");
Autodesk.Revit.DB.ExtensibleStorage.Container container = document.ProjectInformation.GetContainer(schema);
if (container == null)
{
container = new Autodesk.Revit.DB.ExtensibleStorage.Container(schema);
document.ProjectInformation.SetContainer(schema, container);
}
container.Set(entity);
document.SaveAs("demo.rvt");
//读取扩展存储容器
Document document = new Document();
document.Load("demo.rvt");
Schema schema = Schema.Lookup(new Guid("..."));
if (schema != null)
{
Autodesk.Revit.DB.ExtensibleStorage.Container container = document.ProjectInformation.GetContainer(schema);
if (container != null)
{
foreach (Entity ent in container)
{
string value = ent.Get<string>("string");
TaskDialog.Show("Value", value);
}
}
}
在上述示例中,首先创建一个包含单个字符串字段的扩展存储容器,并在其中存储一个实体对象。然后将文档保存到磁盘中。之后,又读取该文档并尝试提取容器中存储的实体。注意,Autodesk.Revit.DB.ExtensibleStorage.Container
类实现了 IEnumerable<Entity>
接口,因此可以使用 foreach
循环遍历容器中的所有实体。