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对象,用户还可以对存储的数据进行编辑。