Presentation is loading. Please wait.

Presentation is loading. Please wait.

Revit API Techniques for Managing Building Data Mario Guttman.

Similar presentations


Presentation on theme: "Revit API Techniques for Managing Building Data Mario Guttman."— Presentation transcript:

1 Revit API Techniques for Managing Building Data Mario Guttman

2 Code Examples in C#

3 Introduction to Building Data - 1

4 Introduction to Building Data - 2 Commercial Products Affinity (Trelligence) Onuma Planning System CodeBook dRofus (Nosyko)

5 Introduction to Building Data - 3 WhiteFeet RevitDbLink Ribbon Menu and Connection Screen for RevitDbLink Tool

6 Revit API Customization Visual Studio Restoring Settings Quick Select Buttons Visual Studio Integrated Development Environment (IDE)

7 Structuring Data – 1 Relational Database Design Tables Rows and Columns Keys Primary Foreign Relationships One-to-Many Referential Integrity Normalizing Data Access Objects and Relationships

8 Relational Database Table Relationship

9 Room IDTypeFloorArea 10101Office - AFloor 01200 20101AOffice - BFloor 02220 20102Office - BFloor 02220 30103KitchenFloor 03140 30110LibraryFloor 03230 20111LobbyFloor 03400 Rows (Records) Columns (Fields) Room Table Table

10 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

11 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

12 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

13 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

14 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

15 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

16 Rooms Each room instance. Type – Use that room. Room List with Types and Uses

17 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

18 ROOM LIST (ACCESS TABLE) BIM MODEL (REVIT PROJECT) DATA TABLE: INDIVIDUAL ROOMS TYPE OF ROOM WHO IS USING IT ROOM OBJECTS: GEOMETRY DATA ATTRIBUTES

19 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

20 Linking Revit to a Database - 2 RevitDbLink Overview The Link The Link is actually a logical relationship, based on conventions in both programs.

21 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.

22 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

23 Build connection string. Create connection. CREATING A DATABASE CONNECTION Set connection type.

24 Make Data Objects. Work with data. Define: Primary Key. Update/Delete Commands. Update database

25 Define Excel objects. Link to Excel Session: Start new session. Bind to existing or start new session. CONNECTING TO EXCEL

26 Define ShowWindow call to Windows. Apply it to every Excel process Use minimize option. HIDING EXCEL APPLICATION

27 Use a Worksheet: Existing. New. Get a list of existing worksheets. WORKING WITH EXCEL WORKSHEETS

28 Define C# data objects. Use the first row of the Excel worksheet to create columns in the data table.

29 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.

30 Create a data table. Create a new row. Work with the rows. Add columns. WORKING WITH DATA IN C#

31 Creating Areas and Solid Forms - 1 Abstracting Major Spaces Major Planning Groups Space Requirements Classification Planning Groups Derived from Space Program

32 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

33 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

34 Creating Areas and Solid Forms - 4 Parti Site Constraints Plan Dimensions Number of Floors Floor Heights Building Geometry Constraints

35 Creating Areas and Solid Forms - 5 Manipulating Areas Areas Moved to Plan Locations

36 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

37 Creating Areas and Solid Forms - 7 Basic Area and Massing Diagram

38 Code Example 2 Making Solids Based On Areas. Rooms. Family Standard Rectangle. Extrusion. Setting Material Solid Families Made From Areas and Rooms

39 Use an existing room. Create a new family. Make a new material. MAKING SOLID SHAPE FROM ROOM

40 Create a family instance. Get the location and dimensions of the room. Adjust dimensions. Set material. OPTION 1: A PRE-DEFINED RECTANGULAR SOLID

41 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

42 Get or make a subcategory. Create new family. Add extrusion of CurveArrArray.

43 Apply the material to the subcategory. Save the Family to a file. BOTH OPTIONS: APPLY MATERIAL AND SAVE FAMILY

44 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

45 Get the parameters: Room – Source. Family – Target. Transfer values: Get source value. Convert data type. Set target value. BOTH OPTIONS: TRANSFER PARAMETER VALUES

46 Creating Rooms - 1

47 Creating Rooms - 2 Computing Rooms from Program Database Rooms in Access

48 Creating Rooms - 3 Importing Unplaced Rooms Unplaced Rooms in Revit

49 Placing Rooms Array of Squares Tagged Moved to Plan Rooms Placed in an Array and then Moved to the Plan Creating Rooms - 4

50 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

51 Creating Rooms - 6

52 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

53 Get the unplaced area. Calculate points: Square. Required area. Build a curve array of lines. PLACING UNPLACED AREAS

54 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.

55 Option 1: walls. Make new room. Option 2: room separator lines. Delete the unplaced room. PLACING UNPLACED ROOMS

56 Room Data Sheets - 1 Alternative Methods Revit Views. Tagged Views. Sheets Access Views. Images. Report. Room Data Sheets Workflows

57 Room Data Sheets - 2 Batch Process - Creating Views Creating Room Views 2D Crop. 3D Section. Crop. Visibility Section. Crop. Naming

58 Room Data Sheets - 3 Tagging Rooms Room Tag Labels Parameters Batch Process - Tagging Views

59 Room Data Sheets - 4 Placing Views on Sheets Frame Titles Batch Process - Placing Views on Sheets

60 Room Data Sheets - 5 Exporting Images Raster Type File Name Batch Process - Exporting Images

61 Room Data Sheets - 6 Access Report Data Controls Images Controls Control Source Naming. Room Data sheet Access Report

62 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

63 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

64 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

65 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.

66 Make the new view. Project all of the verticies. Find the extreme X and Y points. Get the inverse of the view transform.

67 Create new bounding box with margin. Add the crop box to the view.

68 Apply a view template. Set the underlay to none. SETTING UNDERLAY AND APPLYING A VIEW TEMPLATE

69 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

70 Color Fill Plans - 2 Room Data sheet Access Report ROOMROOM TYPE CATEGORY SUM ROOM AREA: Σ DESCRIPTION BY ROOM TYPE CATEGORY BY FLOOR

71 Color Fill Plans - 3 Math Calculation Tool

72 Signage Interactive Selection Multi-line Text Edit Specialty Equipment Signage

73 Questions? Mario.Guttman@PerkinsWill.com


Download ppt "Revit API Techniques for Managing Building Data Mario Guttman."

Similar presentations


Ads by Google