Skip to content

SchemaBuilder

Public Class

This class is used to create Schemas in the Extensible Storage framework.

Inheritance Hierarchy

System.Object
Autodesk.Revit.DB.ExtensibleStorage.SchemaBuilder

Namespace: Autodesk.Revit.DB.ExtensibleStorage

Assembly: RevitAPI (in RevitAPI.dll) Version: 25.0.0.0 (25.0.0.0)

Syntax

public class SchemaBuilder : IDisposable

The SchemaBuilder type exposes the following members.

Constructors

Name

Description


Public Method
SchemaBuilder

Constructs a new SchemaBuilder where the resulting Schema will use the input GUID.


Properties

Name

Description


Public Property
IsValidObject

Specifies whether the .NET object represents a valid Revit entity.


Methods

Name

Description


Public Method
AcceptableName

Checks whether a string is an acceptable name for a Schema or a Field.


Public Method
AddArrayField

Creates a field containing an array of values in the Schema, with given name and type of contained values.


Public Method
AddMapField

Creates a field containing an ordered key-value map in the Schema, with given name and type of contained values.


Public Method
AddSimpleField

Creates a field containing a single value in the Schema, with given name and type.


Public Method

Releases all resources used by the SchemaBuilder


Public Method

Equals

Determines whether the specified object is equal to the current object.
(Inherited from Object)


Public Method
Finish

Registers and returns the created Schema object.


Public Method

GetHashCode

Serves as the default hash function.
(Inherited from Object)


Public Method

GetType

Gets the Type of the current instance.
(Inherited from Object)


Public Method
Static Member

Checks whether the supplied GUID value is valid.


Public Method
Ready

Checks whether the builder may be used.


Public Method

Sets the GUID of the application or add-in that may access entities of this Schema under the Application acess level.


Public Method
SetDocumentation

Sets the documentation string for the Schema.


Public Method

Sets top level read access (for entities)


Public Method
SetSchemaName

Sets the name of the Schema.


Public Method
SetVendorId

Sets the ID of the third-party vendor that may access entities of this Schema under the Vendor acess level, and to generally identify the owner of this Schema.


Public Method

Sets top level write access (for entities)


Public Method

ToString

Returns a string that represents the current object.
(Inherited from Object)


Public Method
Static Member

Checks whether the given vendor ID string is valid. A valid vendor ID string: 1. Has a length of at least 4 characters and no more than 253 characters, and 2. Contains only letters, digits, or any of the following special characters: ! ” # & \ ( ) + , . - : ; < = > ? _ ` | ~


Remarks

Named parameter idiom: Methods that set up the Schema return a reference to the builder so you can invoke multiple methods in a chain (e.g., builder.setReadAccessLevel(…).setWriteAccessLevel(…)). Methods that add fields return a FieldBuilder instead.

Example

// Create a data structure, attach it to a wall, populate it with data, and retrieve the data back from the wall
void StoreDataInWall(Wall wall, XYZ dataToStore)
{
using (Transaction createSchemaAndStoreData = new Transaction(wall.Document, "tCreateAndStore"))
{
createSchemaAndStoreData.Start();
SchemaBuilder schemaBuilder = new SchemaBuilder(new Guid("720080CB-DA99-40DC-9415-E53F280AA1F0"));
schemaBuilder.SetReadAccessLevel(AccessLevel.Public); // allow anyone to read the object
schemaBuilder.SetWriteAccessLevel(AccessLevel.Vendor); // restrict writing to this vendor only
schemaBuilder.SetVendorId("ADSK"); // required because of restricted write-access
schemaBuilder.SetSchemaName("WireSpliceLocation");
FieldBuilder fieldBuilder = schemaBuilder.AddSimpleField("WireSpliceLocation", typeof(XYZ)); // create a field to store an XYZ
fieldBuilder.SetSpec(SpecTypeId.Length);
fieldBuilder.SetDocumentation("A stored location value representing a wiring splice in a wall.");
Schema schema = schemaBuilder.Finish(); // register the Schema object
Entity entity = new Entity(schema); // create an entity (object) for this schema (class)
Field fieldSpliceLocation = schema.GetField("WireSpliceLocation"); // get the field from the schema
entity.Set<XYZ>(fieldSpliceLocation, dataToStore, UnitTypeId.Meters); // set the value for this entity
wall.SetEntity(entity); // store the entity in the element
// get the data back from the wall
Entity retrievedEntity = wall.GetEntity(schema);
XYZ retrievedData = retrievedEntity.Get<XYZ>(schema.GetField("WireSpliceLocation"), UnitTypeId.Meters);
createSchemaAndStoreData.Commit();
}
}