RVTDocs.com

SchemaBuilder

Class
Description:
This class is used to create Schemas in the Extensible Storage framework.
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.
Inheritance Hierarchy:
System.Object
  Autodesk.Revit.DB.ExtensibleStorage.SchemaBuilder
Syntax
public class SchemaBuilder : IDisposable
Examples
// 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();  
    }
}
SchemaBuilder Class Members:
Name Description Inherited From
SchemaBuilder Constructs a new SchemaBuilder where the resulting Schema will use the input GUID.
Name Description Inherited From
IsValidObject Specifies whether the .NET object represents a valid Revit entity.
Name Description Inherited From
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 ) Object
Finish Registers and returns the created Schema object.
GetHashCode Serves as the default hash function. (Inherited from Object ) Object
GetType Gets the Type of the current instance. (Inherited from Object ) 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 ) 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: ! " # & \ ( ) + , . - : ; < = > ? _ ` | ~