Revit + Python = Awesome!

Automate,
or be Automated

Revit Is
Not Perfect…

Learn How To
Create Dream Tools
for Revit yourself!

Learn How To
Create Dream Tools
for Revit yourself!

Erik Frits

・ Your Revit API Instructor
・ Creator of EF-Tools

・ Your Revit API Instructor
・ Creator of EF-Tools

Click

😔Sorry, you've missed the course sale!
The next launch is expected very soon.


Sign-up to the Waiting List:

😔Sorry, you've missed the sale!
The next launch is expected

on 1st of June.


Sign-up to the Waiting List:

The Fastest Way to Start creating evit Add-ins with Python

The Fastest Way to Start creating
evit Add-ins
with Python

Anthony Juste

BIM Specialist at NIRAS

I've been using pyRevit for about 2 years now. It took me 2 months to create my first plugin and make it work.


My colleague discovered Erik's free videos a couple of months ago and created his first in a week.

Thanks! We use your vids for training now.

I've been using pyRevit for about 2 years now. It took me 2 months to create my first plugin and make it work.


My colleague discovered Erik's free videos a couple of months ago and created his first in a week.

Thanks! We use your vids for training now.

Learning Revit API
sounds impossible

Learning Revit API
sounds impossible

If you don't have a plan…

Many of you tried to learn it and failed. And that's okay!
I know it, because I'm completely self-taught myself. And I struggled a lot learning it on my own…


But after years of using Revit API, creating hundreds of Revit Add-ins and recording more than 100 tutorials about it,

I realized that Revit API is not that complicated if you follow the right system to learn it.


And I will make sure that you learn it the right way!

If you don't have a plan…

Many of you tried to learn it and failed. And that's okay!
I know it, because I'm completely self-taught myself. And I struggled a lot learning it on my own…


But after years of using Revit API, creating hundreds of Revit Add-ins and recording more than 100 tutorials about it,

I realized that Revit API is not that complicated if you follow the right system to learn it.


And I will make sure that you learn it the right way!

Follow the Plan

Follow the Plan

Join The Course

The Late-Bird sale is open for only 7 days.

Make sure you join before it's over to get access to all lessons and the community to Learn Revit API.

Join The Course

The Late-Bird sale is open for only 7 days.

Make sure you join before it's over to get access to all lessons and the community to Learn Revit API.

Join The Course

The Late-Bird sale is open for only 7 days.

Make sure you join before it's over to get access to all lessons and the community to Learn Revit API.

Learn the Basics

Start with the basics of RevitAPI and its practical applications.

You'll be able to create your own Revit add-ins after a few modules!

Learn the Basics

Start with the basics of RevitAPI and its practical applications.

You'll be able to create your own Revit add-ins after a few modules!

Learn the Basics

Start with the basics of RevitAPI and its practical applications.

You'll be able to create your own Revit add-ins after a few modules!

Automate Revit

By the end of the course you will create your own Revit extension with many tools.

And the best part - a lot of the code you write during the course will be reused in your future Revit Add-Ins!

Automate Revit

By the end of the course you will create your own Revit extension with many tools.

And the best part - a lot of the code you write during the course will be reused in your future Revit Add-Ins!

Automate Revit

By the end of the course you will create your own Revit extension with many tools.

And the best part - a lot of the code you write during the course will be reused in your future Revit Add-Ins!

Revit API
Can Be Easy.

Revit API
Can Be Easy.

Revit API
Can Be Easy.

# Don't take my word for it,

# Try it yourself! 👉

# Don't take my word for it,

# Try it yourself! 👇

Select Untagged Doors in View

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

#📦Variables
active_view = doc.ActiveView

#👉 Collect Doors and Tags in View
all_doors = FilteredElementCollector(doc, active_view.Id).OfCategory(BuiltInCategory.OST_Doors).WhereElementIsNotElementType()
all_tags = FilteredElementCollector(doc, active_view.Id).OfCategory(BuiltInCategory.OST_DoorTags).WhereElementIsNotElementType()

#🔎 Check Tagged Doors
tagged_door_ids = [tag.GetTaggedLocalElements()[0].Id for tag in all_tags]
untagged_doors  = [door.Id for door in all_doors if door.Id not in tagged_door_ids]

#🪄 Select Untagged Doors
from System.Collections.Generic import List
uidoc.Selection.SetElementIds(List[ElementId](untagged_doors))

Select Untagged Doors in View

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

#📦Variables
active_view = doc.ActiveView

#👉 Collect Doors and Tags in View
all_doors = FilteredElementCollector(doc, active_view.Id).OfCategory(BuiltInCategory.OST_Doors).WhereElementIsNotElementType()
all_tags = FilteredElementCollector(doc, active_view.Id).OfCategory(BuiltInCategory.OST_DoorTags).WhereElementIsNotElementType()

#🔎 Check Tagged Doors
tagged_door_ids = [tag.GetTaggedLocalElements()[0].Id for tag in all_tags]
untagged_doors  = [door.Id for door in all_doors if door.Id not in tagged_door_ids]

#🪄 Select Untagged Doors
from System.Collections.Generic import List
uidoc.Selection.SetElementIds(List[ElementId](untagged_doors))

Select Untagged Doors in View

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

#📦Variables
active_view = doc.ActiveView

#👉 Collect Doors and Tags in View
all_doors = FilteredElementCollector(doc, active_view.Id).OfCategory(BuiltInCategory.OST_Doors).WhereElementIsNotElementType()
all_tags = FilteredElementCollector(doc, active_view.Id).OfCategory(BuiltInCategory.OST_DoorTags).WhereElementIsNotElementType()

#🔎 Check Tagged Doors
tagged_door_ids = [tag.GetTaggedLocalElements()[0].Id for tag in all_tags]
untagged_doors  = [door.Id for door in all_doors if door.Id not in tagged_door_ids]

#🪄 Select Untagged Doors
from System.Collections.Generic import List
uidoc.Selection.SetElementIds(List[ElementId](untagged_doors))

New To Python?

New To Python?

You Are Not Alone!
We all Start Somewhere

Iorhan Vendruscolo

Civil Engineer | LearnRevitAPI Member

My first mistake was rushing into the API without nailing the python basics. So, I slowed down and took a solid Python course (CS50) – a total game-changer!

Free Tip: If you’re like me, new to programming, sort those basics first to avoid future headaches!

Jean-Marc Couffin

Senior BIM Specialist at BIM One

💛pyRevit Dev Team

LearnRevitAPI Course is a valuable resource for anyone looking to master the Revit API and develop plugins with confidence.


I highly recommended the course for Revit Experts, BIM specialists, Beginners and experienced Python coders in the field.

Who is this course for?

Who is this course for?

Who is this course for?

# ✅ Revit Architects
# ✅ Revit Engineers
# ✅ Revit Modelers

# ✅ Revit BIM Managers

# ✅ Revit Coordinators

# ✅ Revit MEP-Engineers

# ✅ Revit HVAC Modelers
# ✅ Revit Experts

# ✅ Revit Coder


# And Any Revit User Not Afraid of Programming!

What's Inside Lessons?

What's Inside Lessons?

What's Inside Lessons?

🎦 Comprehensive Video Lesson

🎦 Comprehensive Video Lesson

🎦 Comprehensive Video Lesson

📝 Lesson in a written form

📝 Lesson in a written form

📝 Lesson in a written form

♻️ Reusable Code Snippets

♻️ Reusable Code Snippets

♻️ Reusable Code Snippets

💼 Homework To Practice

💼 Homework To Practice

💼 Homework To Practice

💬 Discuss Lesson in Community

💬 Discuss Lesson in Community

💬 Discuss Lesson in Community

📜 Short PDF Summaries (Coming Soon)

📜 Short PDF Summaries (Coming Soon)

📜 Short PDF Summaries (Coming Soon)

All You Need
TO Learn Revit API

What will be used?

What will be used?

RevitPythonShell

RevitPythonShell

pyRevit

pyRevit

Revit 2023

Revit 2023

Python

Python

Revit Lookup

Revit Lookup

Join the Course before it's closed!

Join the Course before it's closed!

Join the Course before it's closed!

Join the Course before it's closed!

Join the Course before it's closed!

Join the Course before it's closed!

Join the Course before it's closed!

Join The Course

Learn Revit API Course

Access to Revit API Course (~12 hrs)

Discord Community Access

Future Course Updates Included

No Time-Limit for the Course Access!

Certificate in the Future*

Massive High-Five if you meet me👋

The course sale has ended.
The next launch is expected this summer.

260+ people have already joined!

Need a company invoice?
Write to support@LearnRevitAPI.com

Join The Course

Learn Revit API Course

Access to Revit API Course (~12 hrs)

Discord Community Access

Future Course Updates Included

No Time-Limit for the Course Access!

Certificate in the Future*

Massive High-Five if you meet me👋

The course sale has ended.
The next launch is expected this summer.

260+ people have already joined!

Need a company invoice?
Write to support@LearnRevitAPI.com

Risk FREE!

30-Days

100% Money Back

Guarantee!

-EF

Risk FREE!

30-Days

100% Money Back

Guarantee!

-EF

Risk FREE!

30-Days

100% Money Back

Guarantee!

-EF

Join the Course before it's closed!

Join the Course before it's closed!

Join the Course before it's closed!

Join the Course before it's closed!

Join the Course before it's closed!

Join the Course before it's closed!

Join the Course before it's closed!

Be a part of
LearnRevitAPI Community

Be a part of
LearnRevitAPI Community

Afraid of
Getting Stuck?

Afraid of
Getting Stuck?

Ask For Help!

Ask For Help!

150+ members

CHATS

・code-help

・share-code

・general

・memes

Erik Frits

Instructor

・code-help

😥Feeling stuck? Ask For Help!

Mohamed Mostafa Bedair

Architect | LearnRevitAPI Member

7 min ago

The content is great, organized, and informative, it helps you understand The Revit API in an easy way.

And If you struggle with something, ask the community👍

The Community is helpful and friendly, we help each other, share our code, and laugh out loud over our hard times 😂

Iorhan Vendruscolo

Civil Engineer | LearnRevitAPI Member

2 min ago

The real unexpected gem was the Discord community.


Whenever I need help, I can just shoot a quick message and get some answers in the chat. Even cooler is when you have the opportunity to help someone; that's when you really learn things you wouldn't expect.

⌨️ Happy Coding!

150+ members

・code-help

😥Feeling stuck? Ask For Help!

Mohamed Mostafa Bedair

Architect | LearnRevitAPI Member

7 min ago

The content is great, organized, and informative, it helps you understand The Revit API in an easy way.

And If you struggle with something, ask the community👍

The Community is helpful and friendly, we help each other, share our code, and laugh out loud over our hard times 😂

Iorhan Vendruscolo

Civil Engineer | LearnRevitAPI Member

2 min ago

The real unexpected gem was the Discord community.


Whenever I need help, I can just shoot a quick message and get some answers in the chat. Even cooler is when you have the opportunity to help someone; that's when you really learn things you wouldn't expect.

⌨️ Happy Coding!

150+ members

・code-help

😥Feeling stuck? Ask For Help!

Mohamed Mostafa Bedair

Architect | LearnRevitAPI Member

7 min ago

The content is great, organized, and informative, it helps you understand The Revit API in an easy way.

And If you struggle with something, ask the community👍

The Community is helpful and friendly, we help each other, share our code, and laugh out loud over our hard times 😂

Iorhan Vendruscolo

Civil Engineer | LearnRevitAPI Member

2 min ago

The real unexpected gem was the Discord community.


Whenever I need help, I can just shoot a quick message and get some answers in the chat. Even cooler is when you have the opportunity to help someone; that's when you really learn things you wouldn't expect.

⌨️ Happy Coding!

Platform Sneak Peak

Platform Sneak Peak

What will you Learn?

What will you Learn?

What will you Learn?

50+

Lessons

12hrs+

Video Content

260+

Happy Students

50+

Lessons

12hrs+

Video Content

260+

Happy Students

50+

Lessons

12hrs+

Video Content

260+

Happy Students

Module 01

Prepare Revit API
Dev Environment

Module 01

Prepare Revit API
Dev Environment

Module 01

Prepare Revit API
Dev Environment

Let's start by sharpening our tools. Lincoln once said: "Give me siz hours to chop down a tree and I will spend the first four sharpening the axe."

Lessons:

58:30

Let's start by sharpening our tools. Lincoln once said: "Give me siz hours to chop down a tree and I will spend the first four sharpening the axe."

Lessons:

58:30

Let's start by sharpening our tools. Lincoln once said: "Give me siz hours to chop down a tree and I will spend the first four sharpening the axe."

Lessons:

58:30

Module 02

Read and Understand Revit API Docs

Module 02

Read and Understand Revit API Docs

Module 02

Read and Understand Revit API Docs

Coding without documentation is like sailing with a wind. Let me break it down for you, so you know what's important.

Lessons:

40:05

Coding without documentation is like sailing with a wind. Let me break it down for you, so you know what's important.

Lessons:

40:05

Coding without documentation is like sailing with a wind. Let me break it down for you, so you know what's important.

Lessons:

40:05

Module 03

Select and Read Element's Properties

Module 03

Select and Read Element's Properties

Module 03

Select and Read Element's Properties

Not only we often need to select elements for our tools, it's also very useful during development to test our code. Let's learn how to select elements and read their properties.

Lessons: