Autodesk.Revit.DB.ExtensibleStorage.DataStorage
是使用Revit API时用于存储自定义数据的类。使用该类,用户可以自定义存储和访问额外的数据。
public class DataStorage : Element
DataStorage
类继承自Element
类。
public DataStorage(Document document)
public DataStorage(Document document, ElementId elementId)
public DataStorage(Document document, BuiltInCategory category)
DataStorage
类的构造函数如上所示。用户可以通过不同的方法来构造DataStorage
对象,其中最常用的是使用Document
对象构造。
以下是DataStorage
类的主要属性:
属性 | 描述 |
---|---|
Name |
获取或设置该DataStorage 的名称。 |
LocalElements |
获取一个元素集合,该集合包含了存储在该DataStorage 中的元素。 |
Schema |
获取一个 Schema 对象,该对象描述了该DataStorage 中存储的数据结构。 |
SchemaGUID |
获取该DataStorage 的GUID 。 |
StreamData |
获取该DataStorage 的二进制数据流。 |
IsDataDirty |
获取一个布尔值,指示该DataStorage 是否被修改。 |
IsEditingSessionOpen |
获取一个布尔值,指示该DataStorage 是否处于编辑会话中。 |
以下是DataStorage
类的主要方法:
方法 | 描述 |
---|---|
Open(EditScope scope) |
打开一个编辑会话以更改该DataStorage 中的数据。 |
Close(bool discardChanges) |
关闭编辑会话,并且如果discardChanges 为true ,则丢弃未保存的更改。 |
GetSingle<T>(SchemaClassify classify, out T value) |
获取存储在该DataStorage 中的具有指定的架构、名称和类型的值。 |
SetSingle<T>(SchemaClassify classify, T value) |
设置具有指定的架构、名称和类型的值,以存储在该DataStorage 中。 |
IsValidSchemaClassify(SchemaClassify classify) |
获取一个布尔值,指示指定的架构是否有效。 |
GetSubSchema(SchemaClassify classify) |
获取具有指定的架构、名称和类型的子级架构。 |
GetSubSchema(string name, DataType dataType, Guid? guid) |
获取具有指定的名称、数据类型和GUID 的子级架构。 |
SchemaAbortsTransaction(Transaction transaction, string name) |
从存储在指定Transaction 中的DataStorage 中删除一个具有指定名称的架构以使事务回滚。 |
以下是使用DataStorage
类在Revit API中创建和设置自定义数据的示例:
// Create a new Data Storage
DataStorage storage = DataStorage.Create(document);
// Set a name for the Data Storage
storage.Name = "MyDataStorage";
// Define a schema for the Data Storage
Guid schemaGuid = new Guid("57109804-7146-4F6D-BBB6-FFAEB82F95CD");
SchemaBuilder schemaBuilder = new SchemaBuilder(schemaGuid);
schemaBuilder.SetReadAccessLevel(AccessLevel.Public);
schemaBuilder.SetWriteAccessLevel(AccessLevel.Public);
Schema schema = schemaBuilder.Finish();
storage.SetSchema(schema);
// Open an edit session to update the Data Storage
using (Transaction transaction = new Transaction(document))
{
transaction.Start("Edit Data Storage");
storage.Open(EditScope.Transaction);
// Set a value for the Data Storage
double value = 3.14;
storage.SetSingle(schema, "MyValue", value);
// Close the edit session
storage.Close(false);
transaction.Commit();
}
DataStorage
类提供了一种在Revit中存储自定义数据的方法。用户可以定义自己的数据结构,并使用DataStorage
对象存储和访问数据。此外,使用DataStorage
对象,用户还可以对存储的数据进行编辑。