Revit API TechniquesforManaging Building Data Mario Guttman
Introduction to Building Data - 2 Commercial Products Affinity (Trelligence) Onuma Planning System CodeBook dRofus (Nosyko)
Introduction to Building Data - 3 WhiteFeet RevitDbLink Ribbon Menu and Connection Screen for RevitDbLink Tool
Revit API Customization Visual Studio RestoringSettings Quick Select Buttons Visual Studio Integrated Development Environment (IDE)
Structuring Data – 1Relational Database Design Tables Rows and Columns Keys Primary Foreign Relationships One-to-Many Referential Integrity Normalizing Data Access Objects and Relationships
Relational Database Relationship Table Table
Table Columns (Fields) Rows (Records) Room Table
Primary Key Field • A Primary Key Field uniquely identifies a record. • It must be: • Not Null • Unique Room Table
Foreign Key • A Foreign KeyField • Points to the Primary Key of another table. • May be Null. • May be a Primary Key. Floor Table Room Table
One-to-Many Relationship • A One-to-many Relationship is defined by a Foreign Key. • A value can only occur once on the “one” side. • A value may occur many times on the “many side. 1 Floor Table Room Table
Referential Integrity • Referential Integrity requires that the “one” side exist before the “many” side is used. • Changes can be cascaded from the one to the many. • Deletions can cascade, but will delete the whole record. 1 Floor Table Cannot use value “Floor 04” here. Room Table
Normalizing Data A table is Not Normalized If it has redundant data. Contact Table with Office Addresses The data can be Normalized by using two tables. 1 Office Table Contact Table
Structuring Data - 2 Formalizing theSpace Program Data From Client Formatted visually. Excel or hard-copy. ProgramCharacteristics Room Types. Organizational Uses. Space Program Type – Use Pairs. Count each. SpaceProgram
Rooms Each room instance. Type – Use that room. Room List with Types and Uses
DATA TABLE: • SPACE NEEDS • TYPE OF ROOM • WHO IS USING IT • HOW MANY OF EACH • DOCUMENT: • READABLE FORMAT • UNSTRUCTURED DATA CLIENT REQUIREMENTS (EXCEL WORKSHEET) SPACE PROGRAM (ACCESS TABLE)
DATA TABLE: • INDIVIDUAL ROOMS • TYPE OF ROOM • WHO IS USING IT • ROOM OBJECTS: • GEOMETRY • DATA ATTRIBUTES ROOM LIST (ACCESS TABLE) BIM MODEL (REVIT PROJECT)
Linking Revit to a Database - 1 Using Access and Revit Windows Memory Space Revit: 64-bit. Access: 32-bit. Connection OLE: ACE (JET) Drivers. COM: Interop Mode. ACE Pass-through Service Service TCP-IP interface. 32-BIT ACCESS OLE – ACE DRIVER SERVICE – ACE PASS-THROUGH TCP/IP PROTOCOL 64-BIT REVIT ACE Pass-through Service
Linking Revit to a Database - 2 RevitDbLink Overview The “Link” The “Link” is actually a logical relationship, based on conventions in both programs.
Linking Revit to a Database - 3 RevitDbLink Overview Main Menu Synchronization Menu The Main Menu (left) is used to select the link and query data. The results are shown on the Synchronization Menu (right), where discrepancies can be resolved.
Code Example 1 Working with Data Linking to a Database Access. SQL Server. Using Excel Data Objects in C# Database Tables - Named Columns Excel Worksheet – Fields in First Row
CREATING A DATABASE CONNECTION Set connection type. Build connection string. Create connection.
Make Data Objects. • Define: • Primary Key. • Update/Delete Commands. Work with data. Update database
CONNECTING TO EXCEL Define Excel objects. • Link to Excel Session: • Start new session. • “Bind” to existing or start new session.
HIDING EXCEL APPLICATION Define “ShowWindow” call to Windows. Apply it to every “Excel” process Use minimize option.
WORKING WITH EXCEL WORKSHEETS Get a list of existing worksheets. • Use a Worksheet: • Existing. • New.
Define C# data objects. Use the first row of the Excel worksheet to create columns in the data table.
For the remaining rows in Excel: • Get a row from Excel. • Make a row in the data table. • For each column in Excel: • Get the Excel value. • Set the row value. Add the row to the data table.
WORKING WITH DATA IN C# Create a data table. Add columns. Create a new row. Work with the rows.
Creating Areas and Solid Forms - 1 AbstractingMajor Spaces Major Planning Groups Space Requirements Classification Planning Groups Derived from Space Program
Creating Areas and Solid Forms - 2 Importing Areas Unplaced Areas Parameters Key Value. Descriptive Name. Classification Required Area Floor Revit Schedule Place Unplaced Areas Menu
Creating Areas and Solid Forms - 3 Placing Areas Area Boundary Lines Shape Squares. Modular Rectangle. Classification Color Areas Placed as Squares and using a Planning Module
Creating Areas and Solid Forms - 4 Parti Site Constraints Plan Dimensions Number of Floors Floor Heights Building Geometry Constraints
Creating Areas and Solid Forms - 5 Manipulating Areas Areas Moved to Plan Locations
Creating Areas and Solid Forms - 6 Converting Areasto Solid Forms Standard Block Shape Area extremities. Height, Width, Depth. Extruded Boundary Area boundary. Fixed Height Areas Converted to Solid Forms
Creating Areas and Solid Forms - 7 Basic Area and Massing Diagram
Code Example 2 Making Solids Based On Areas. Rooms. Family Standard Rectangle. Extrusion. Setting Material Solid Families Made From Areas and Rooms
MAKING SOLID SHAPE FROM ROOM Use an existing room. Create a new family. Make a new material.
OPTION 1: A PRE-DEFINED RECTANGULAR SOLID Get the location and dimensions of the room. Create a family instance. Adjust dimensions. Set material.
OPTION 2: A UNIQUE FAMILY USING AN EXTRUSION • Get room shape: • Room boundary: list of curves. • Each curve: list of segments. • Create CurveArrays. • Build CurveArrArray.
Create new family. Add extrusion of CurveArrArray. Get or make a subcategory.
BOTH OPTIONS: APPLY MATERIAL AND SAVE FAMILY Apply the material to the subcategory. Save the Family to a file.
BOTH OPTIONS: MAKE AN INSTANCE OF FAMILY • Load the new family: • Use the saved file. • Delete the file. Get the family symbol. • Create a new instance: • Use family symbol. • Location (0, 0, 0).
BOTH OPTIONS: TRANSFER PARAMETER VALUES • Get the parameters: • Room – Source. • Family – Target. • Transfer values: • Get source value. • Convert data type. • Set target value.
Creating Rooms - 2 Computing RoomsfromProgram Database Rooms in Access
Creating Rooms - 3 ImportingUnplaced Rooms Unplaced Rooms in Revit
Placing Rooms Array of Squares Tagged Moved to Plan Creating Rooms - 4 Rooms Placed in an Array and then Moved to the Plan
Creating Rooms - 5 Validating Program with Database Discrepancy No Database Record. No Model Element. Unequal Values. Actions No Action. Update Model. Update Database. Synchronization of the Model and the Database