2027 Class
Changes 0
C

SchemaBuilder

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
public class SchemaBuilder : IDisposable
// 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();  
    }
}
Name Return Type Description Inherited From
C SchemaBuilder(Guid) None Constructs a new SchemaBuilder where the resulting Schema will use the input GUID.
Name Return Type Description Inherited From
M AcceptableName(String) Boolean Checks whether a string is an acceptable name for a Schema or a Field.
M AddArrayField(String, Type) FieldBuilder Creates a field containing an array of values in the Schema, with given name and type of contained values.
M AddMapField(String, Type, Type) FieldBuilder Creates a field containing an ordered key-value map in the Schema, with given name and type of contained values.
M AddSimpleField(String, Type) FieldBuilder Creates a field containing a single value in the Schema, with given name and type.
M Dispose() None Releases all resources used by the SchemaBuilder
M Equals None Determines whether the specified object is equal to the current object. (Inherited from Object ) Object
M Finish() Schema Registers and returns the created Schema object.
M GetHashCode None Serves as the default hash function. (Inherited from Object ) Object
M GetType None Gets the Type of the current instance. (Inherited from Object ) Object
M GUIDIsValid(Guid) Boolean Checks whether the supplied GUID value is valid.
M Ready() Boolean Checks whether the builder may be used.
M SetApplicationGUID(Guid) SchemaBuilder Sets the GUID of the application or add-in that may access entities of this Schema under the Application acess level.
M SetDocumentation(String) SchemaBuilder Sets the documentation string for the Schema.
M SetReadAccessLevel(AccessLevel) SchemaBuilder Sets top level read access (for entities)
M SetSchemaName(String) SchemaBuilder Sets the name of the Schema.
M SetVendorId(String) SchemaBuilder 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.
M SetWriteAccessLevel(AccessLevel) SchemaBuilder Sets top level write access (for entities)
M ToString None Returns a string that represents the current object. (Inherited from Object ) Object
M VendorIdIsValid(String) Boolean 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: ! " # & \ ( ) + , . - : ; < = > ? _ ` | ~
Name Return Type Description Inherited From
P IsValidObject Boolean Specifies whether the .NET object represents a valid Revit entity.