A Primary Key Field uniquely identifies a record. It must be: Not Null Unique Room IDTypeFloorArea 10101Office - AFloor 01200 20101AOffice - BFloor 02220 20102Office - BFloor 02220 30103KitchenFloor 03140 30110LibraryFloor 03230 20111LobbyFloor 03400 Room Table Primary Key Field
Room IDTypeFloorArea 10101Office - AFloor 01200 20101AOffice - BFloor 02220 20102Office - B220 Floor IDArea Floor 0132200 Floor 0234220 Floor 0334220 A Foreign Key Field Points to the Primary Key of another table. May be Null. May be a Primary Key. Room Table Floor Table Foreign Key
Room IDTypeFloorArea 10101Office - AFloor 01200 20101AOffice - BFloor 01220 20102Office - B220 Floor IDArea Floor 0132200 Floor 0234220 Floor 0334220 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 Room Table Floor Table One-to-Many Relationship
Room IDTypeFloorArea 10101Office - AFloor 01200 20101AOffice - BFloor 01220 40102Office - B220 Floor IDArea Floor 0132200 Floor 0234220 Floor 0334220 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 Cannot use value Floor 04 here. Room Table Floor Table Referential Integrity
NameOffice Adam SmithAcme Construction Betty JonesAcme Construction Clark KentBest Engineering Office IDAddress Acme Construction 123 North Main St. Culver City, CA Best Engineering 2100 Flagship Wy. Sacramento, CA A table is Not Normalized If it has redundant data. Contact Table Office Table NameOfficeAddress Adam SmithAcme Construction123 North Main St., Culver City, CA Betty JonesAcme Construction123 North Main St., Culver City, CA Clark KentBest Engineering2100 Flagship Wy., Sacramento, CA Contact Table with Office Addresses The data can be Normalized by using two tables. 1 Normalizing Data
Structuring Data - 2 Formalizing the Space Program Data From Client Formatted visually. Excel or hard-copy. Program Characteristics Room Types. Organizational Uses. Space Program Type – Use Pairs. Count each. Space Program
Rooms Each room instance. Type – Use that room. Room List with Types and Uses
CLIENT REQUIREMENTS (EXCEL WORKSHEET) SPACE PROGRAM (ACCESS TABLE) DOCUMENT: READABLE FORMAT UNSTRUCTURED DATA DATA TABLE: SPACE NEEDS TYPE OF ROOM WHO IS USING IT HOW MANY OF EACH
ROOM LIST (ACCESS TABLE) BIM MODEL (REVIT PROJECT) DATA TABLE: INDIVIDUAL ROOMS TYPE OF ROOM WHO IS USING IT ROOM OBJECTS: GEOMETRY DATA ATTRIBUTES
32-BIT 64-BIT 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. ACE Pass-through Service ACCESS SERVICE – ACE PASS-THROUGH OLE – ACE DRIVER REVIT TCP/IP PROTOCOL
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# Excel Worksheet – Fields in First Row Database Tables - Named Columns
Build connection string. Create connection. CREATING A DATABASE CONNECTION Set connection type.
Make Data Objects. Work with data. Define: Primary Key. Update/Delete Commands. Update database
Define Excel objects. Link to Excel Session: Start new session. Bind to existing or start new session. CONNECTING TO EXCEL
Define ShowWindow call to Windows. Apply it to every Excel process Use minimize option. HIDING EXCEL APPLICATION
Use a Worksheet: Existing. New. Get a list of existing worksheets. WORKING WITH EXCEL WORKSHEETS
Define C# data objects. Use the first row of the Excel worksheet to create columns in the data table.
Add the row to the data table. For each column in Excel: Get the Excel value. Set the row value. For the remaining rows in Excel: Get a row from Excel. Make a row in the data table.
Create a data table. Create a new row. Work with the rows. Add columns. WORKING WITH DATA IN C#
Creating Areas and Solid Forms - 1 Abstracting Major 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 Areas to 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
Use an existing room. Create a new family. Make a new material. MAKING SOLID SHAPE FROM ROOM
Create a family instance. Get the location and dimensions of the room. Adjust dimensions. Set material. OPTION 1: A PRE-DEFINED RECTANGULAR SOLID
Get room shape: Room boundary: list of curves. Each curve: list of segments. Create CurveArrays. Build CurveArrArray. OPTION 2: A UNIQUE FAMILY USING AN EXTRUSION
Get or make a subcategory. Create new family. Add extrusion of CurveArrArray.
Apply the material to the subcategory. Save the Family to a file. BOTH OPTIONS: APPLY MATERIAL AND SAVE FAMILY
Create a new instance: Use family symbol. Location (0, 0, 0). Load the new family: Use the saved file. Delete the file. Get the family symbol. BOTH OPTIONS: MAKE AN INSTANCE OF FAMILY
Get the parameters: Room – Source. Family – Target. Transfer values: Get source value. Convert data type. Set target value. BOTH OPTIONS: TRANSFER PARAMETER VALUES
Placing Rooms Array of Squares Tagged Moved to Plan Rooms Placed in an Array and then Moved to the Plan Creating Rooms - 4
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
Code Example 3 Placing Elements Based On Areas. Rooms. Boundary Area Boundary Lines Walls Room Separation Lines. Parameters Copying Values. Classification. Sized Rooms Placed and Dragged to Location
Get the unplaced area. Calculate points: Square. Required area. Build a curve array of lines. PLACING UNPLACED AREAS
Construct an area boundary line: Use the curve array. Transfer the parameter values. Place new area inside boundary. Tag the area. Delete the unplaced area.
Option 1: walls. Make new room. Option 2: room separator lines. Delete the unplaced room. PLACING UNPLACED ROOMS
Room Data Sheets - 1 Alternative Methods Revit Views. Tagged Views. Sheets Access Views. Images. Report. Room Data Sheets Workflows
Room Data Sheets - 2 Batch Process - Creating Views Creating Room Views 2D Crop. 3D Section. Crop. Visibility Section. Crop. Naming
Room Data Sheets - 3 Tagging Rooms Room Tag Labels Parameters Batch Process - Tagging Views
Room Data Sheets - 4 Placing Views on Sheets Frame Titles Batch Process - Placing Views on Sheets
Room Data Sheets - 5 Exporting Images Raster Type File Name Batch Process - Exporting Images
Room Data Sheets - 6 Access Report Data Controls Images Controls Control Source Naming. Room Data sheet Access Report
Code Example 4 Making Views Space Around Room 2D View 2D Crop Box. 3D View 3D Section Box. 2D Crop. View Template Cropped Room Views Made Automatically
Use bounding box of subject element. Set new box size with margins. Create a new view and apply the bounding box to it. Create new bounding box. CROPPING A 2D VIEW
Make a new 3D view. Apply the section box. Create a new 3D bounding box : Get 3D bounds of the subject element. Create new 3D box with margins. SECTIONING A 3D VIEW
Get the closed shell of the room. Get all vertices: For each object in the shell. For each edge in the object. For each vertex in the edge. CROPPING A 3D VIEW IN 2D Get the room to crop to.
Make the new view. Project all of the verticies. Find the extreme X and Y points. Get the inverse of the view transform.
Create new bounding box with margin. Add the crop box to the view.
Apply a view template. Set the underlay to none. SETTING UNDERLAY AND APPLYING A VIEW TEMPLATE
Color Fill Plans - 1 Flattening Relational Data Related Tables Room. Room Type. Room Type Category Calculating Parameter Values Math Roll up areas. String Concatenate. Color Fill Plan with Calculated Values
Color Fill Plans - 2 Room Data sheet Access Report ROOMROOM TYPE CATEGORY SUM ROOM AREA: Σ DESCRIPTION BY ROOM TYPE CATEGORY BY FLOOR