Anda di halaman 1dari 106

Getting Started with Revit Macros Using C#

Michael Kilkelly AIA


Class outline
• What is a macro?
• Fundamentals of the C# coding language & the Revit API
• Using SharpDevelop
• Create macro to create sheets from views
• Next steps

Revit Macros
Who am I?

Revit Macros
My Story

Revit Macros
The Basics
• What is a macro?
• What is C#
• How do you write macros?
• Where are macros saved?

Revit Macros
Why bother with macros?
• Automate Revit
– Save time
– Reduce errors
• Skills in high demand
• Help lots of people
• Become the Revit rock
star in your office!

Revit Macros
Let’s get started
• Download Revit SDK
• Install on hard drive
• Revit API help file
• Macro samples

www.autodesk.com\developrevit

Revit Macros
Learning the Revit API
• It’s a roadmap, not a
narrative
• Namespaces
• Code samples

Revit Macros
Learning the Revit API
• Objects have:
– Properties
– Methods

Revit Macros
Subs, Functions and Variables
• Subroutines do something
– “Please close the door”
• Functions do something and return something back
– “Please bring me a glass of water”
• Both subroutines and functions can accept arguments
– “Please bring me a glass of water using this glass”
• Variables store values
– Typed vs dynamic variables

Revit Macros
Which model are you working on?
• Must specify which model file you are working on
- the macro’s model file
or
- the active model file
• For macros, specify the active document

Revit Macros
Element ID
• Unique ID for every object in
the project
• ID is not unique across projects
• ID can change

Revit Macros
Let’s write a macro!
7 Steps
1. Start with a new Revit file
2. Create the module and macro
3. Write some code
4. Build macro and test
5. Step through the code
6. Run the macro
7. Determine next steps

Revit Macros
Create Plan Sheets from Views
Problem
• Create new sheets
• Rename and renumber sheets
• Add existing views
• Can do this manually but...
– Takes time
– Easy to make mistakes
– Views may not be in same location

Revit Macros
Create Plan Sheets from Views
Solution
Write macro that creates sheets and adds views
• Get all floor plan views
• Create sheets from floor plan views
• Rename and renumber sheets
• Add correct view to sheet
• Position view in specific location

Revit Macros
Create Plan Sheets from Views
• Run the macro
• Walk through the code

Revit Macros
Code Window
Project
Browser
Properties
Window
Errors, Output, Local Variables
Collecting Revit Elements
• Use FilteredElementCollector
• Can specify ByCategory or ByClass
• ByCategory can reference Revit’s
built-in categories

Revit Macros
Loops
• Execute the same code repeatedly
– Specific group of elements
– Specific # of times
– While condition exists
– Until condition occurs

Revit Macros
Conditional Statements
• Evaluates a condition as true
or false
• IF … ELSE statement
• Use ELSEIF (ELIF) for
additional evaluations
• Can use AND, OR or NOT as
part of statement

Revit Macros
Transactions
• Needed anytime you make a
change to the Revit model
• Error if you try to change model
without one
• Need to commit changes after
change is made
• Location determines undo point

Revit Macros
Debugging
• Step into macro
• Print to the Output window
• Use breakpoints
• Comment your code!
• Handle exceptions

www.xkcd.com

Revit Macros
Revit Macros
Next steps. . .
• Add multiple views to sheets
• Center view of sheet based on title block dimensions
• Use different title block for different sheets
• Update additional sheet instance parameters

Revit Macros
Mastering Revit Macros with C#
• 5 week course + coaching
• Starts July 17
• Weekly training sessions
– Conducted entirely online
– Video lesson on Monday
– Practice activity
– Coaching session each Thursday
– Private forum for students
• Cost is $347 USD (or 3 x $125)

Revit Macros
Mastering Revit Macros with C#
• Week 1: Getting started
• Week 2: Import from Excel
• Week 3: Working with views
• Week 4: Creating revit elements
• Week 5: Inserting families
• Bonus: Building a user interface
• Bonus: Convert macro to addin

Revit Macros
Mastering Revit Macros with C#
For more information and to enroll:

http://www.archsmarter.com/go/mrm

Revit Macros