This class is used to create Schemas in the Extensible Storage framework.
Inheritance Hierarchy
System.ObjectAutodesk.Revit.DB.ExtensibleStorage.SchemaBuilder
Namespace: Autodesk.Revit.DB.ExtensibleStorage
Assembly: RevitAPI (in RevitAPI.dll) Version: 26.1.0.0 (26.1.0.34)
Syntax
C#
public class SchemaBuilder : IDisposable
The SchemaBuilder type exposes the following members.
Constructors
Name | Description | |
---|---|---|
![]() | SchemaBuilder | Constructs a new SchemaBuilder where the resulting Schema will use the input GUID. |
Properties
Name | Description | |
---|---|---|
![]() | IsValidObject | Specifies whether the .NET object represents a valid Revit entity. |
Methods
Name | Description | |
---|---|---|
![]() | AcceptableName | Checks whether a string is an acceptable name for a Schema or a Field. |
![]() | AddArrayField | Creates a field containing an array of values in the Schema, with given name and type of contained values. |
![]() | AddMapField | Creates a field containing an ordered key-value map in the Schema, with given name and type of contained values. |
![]() | AddSimpleField | Creates a field containing a single value in the Schema, with given name and type. |
![]() | Dispose | Releases all resources used by the SchemaBuilder |
![]() | Equals | Determines whether the specified object is equal to the current object. (Inherited from Object) |
![]() | Finish | Registers and returns the created Schema object. |
![]() | GetHashCode | Serves as the default hash function. (Inherited from Object) |
![]() | GetType | Gets the Type of the current instance. (Inherited from Object) |
![]() ![]() | GUIDIsValid | Checks whether the supplied GUID value is valid. |
![]() | Ready | Checks whether the builder may be used. |
![]() | SetApplicationGUID | Sets the GUID of the application or add-in that may access entities of this Schema under the Application acess level. |
![]() | SetDocumentation | Sets the documentation string for the Schema. |
![]() | SetReadAccessLevel | Sets top level read access (for entities) |
![]() | SetSchemaName | Sets the name of the Schema. |
![]() | 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. |
![]() | SetWriteAccessLevel | Sets top level write access (for entities) |
![]() | ToString | Returns a string that represents the current object. (Inherited from Object) |
![]() ![]() | VendorIdIsValid | 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
C#
// 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(); } }
VB
' Create a data structure, attach it to a wall, populate it with data, and retrieve the data back from the wall Private Sub StoreDataInWall(wall As Wall, dataToStore As XYZ) Using createSchemaAndStoreData As New Transaction(wall.Document, "tCreateAndStore") createSchemaAndStoreData.Start() Dim schemaBuilder As 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") Dim fieldBuilder As FieldBuilder = schemaBuilder.AddSimpleField("WireSpliceLocation", GetType(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.") Dim schema As Schema = schemaBuilder.Finish() ' register the Schema object Dim entity As New Entity(schema) ' create an entity (object) for this schema (class) Dim fieldSpliceLocation As Field = schema.GetField("WireSpliceLocation") ' get the field from the schema entity.[Set](Of 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 Dim retrievedEntity As Entity = wall.GetEntity(schema) Dim retrievedData As XYZ = retrievedEntity.[Get](Of XYZ)(schema.GetField("WireSpliceLocation"), UnitTypeId.Meters) createSchemaAndStoreData.Commit() End Using End Sub