Tired of Repetitive Work in Revit?

Tired of Repetitive Work in Revit?

Begin Your

Begin Your

evit

evit

Automation Journey.

Automation Journey.

It happens to nearly every Revit user.

It happens to nearly every Revit user.

You face the same repetitive tasks that steal hours
from your day... What if you could change that?

You're facing the same repetitive tasks that
steal hours from your day...
What if you could change that?

Profile Image
Profile Image
Profile Image

Read by 8750+ Revit Professionals

Carlos Rothmann

BIM Specialist

This is the best learning material on the internet.

Interactive, easy to use and with a lot of information. The code sample exceed my expectations, it saves a lot of steps and work.

Carlos Rothmann

BIM Specialist

This is the best learning material on the internet.

Interactive, easy to use and with a lot of information. The code sample exceed my expectations, it saves a lot of steps and work.

Gavin Crump

BIM/Computation Lead Aussie BIM Guru /Architectus

Erik has been on my BIM radar for a while now.

I'm constantly impressed by his abilities to take complex subjects like the Revit API and break them down in a friendly way.

Gavin Crump

BIM/Computation Lead Aussie BIM Guru /Architectus

Erik has been on my BIM radar for a while now.

I'm constantly impressed by his abilities to take complex subjects like the Revit API and break them down in a friendly way.

Gavin Crump

Architect

Erik has been on my BIM radar for a while now.

I'm constantly impressed by his abilities to take complex subjects like the Revit API and break them down in a friendly way.

Ilnur Bikbov

BIM Coordinator

This E-book helped me grasp the basics of the Revit API and PyRevit, which I had struggled with before.

Thanks to the clear explanations and practical examples, I created my own custom Revit extension.

Ilnur Bikbov

Architect

This E-book helped me grasp the basics of the Revit API and PyRevit, which I had struggled with before.

Thanks to the clear explanations and practical examples, I created my own custom Revit extension.

🤔Why Learn Revit API?

🤔Why Learn Revit API?

🤔Why Learn Revit API?

Revit isn't perfect, but Revit API can make it much better.

Revit isn't perfect, but Revit API can make it much better.

It allows us to customize it to our own needs and automate boring repetitive tasks.

It allows us to customize it to our own needs

and automate boring repetitive tasks.

It allows us to customize it to our own needs and automate boring repetitive tasks.

WEBSHOP
WEBSHOP

Automate Repetitive

Automate Repetitive

Automate Repetitive

Automate your boring work

Custom Dream Tools

Custom Dream Tools

Custom Dream Tools

Every office has its own needs

In-Depth Reports

In-Depth Reports

In-Depth Reports

Understand your BIM data

Many Fail Right At The Start…

Many Fail Right At The Start…

Many Fail Right
At The Start…

Revit API isn't as complicated.
But many don't even know where to start, and

that leads to a lot of confusion and wasted hours.

And as a result - many give up on Revit API.

Revit API isn't as complicated.
But many don't even know where to start, and

that leads to a lot of confusion and wasted hours.

And as a result - many give up on Revit API.


The Solution?


The Solution?


The Solution?

Follow my Roadmap made specifically for beginners.

Learn the basics you need step by step without feeling overwhelmed.

Follow my Roadmap made specifically for beginners.

Learn the basics you need step by step without feeling overwhelmed.

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))

Why Python

Why Python

Why Python

?

Python is the most popular for a reason.

It's the quickest and easiest to begin with,

and it's also very forgiving for beginners.

Python is the most popular for a reason. It's the quickest and easiest to begin with, and it's also very forgiving for beginners.

In short - Perfect for busy AEC Experts.

In short:

Perfect for busy AEC Experts.

Beginner-Friendly

Beginner-Friendly

Quick to start

Quick to start

Plenty of Examples

Plenty of Examples

FREE E-Books

FREE E-Books

Get Beginner's Guide to Revit API that will help you on your programming journey step by step without feeling overwhelemed.

Tutorials

Tutorials

Learn the basics with my free tutorials.

Course Platform

Course Platform

The most comprehensive roadmap to help you get started with Revit API.


Get access to multiple courses and private community where you can get direct help.

Resources

Everything You Need
To Get Started

Everything You Need
To Get Started

Everything You Need
To Get Started

Dive into my comprehensive collection of resources
that help you begin automating Revit.

Dive into my comprehensive collection
of resources that help you begin automating Revit.

Podcast

Podcast

Listen to what other experts in AEC industry say about automation with pyRevit.

Revit API Docs

Revit API Docs

Find how to use Revit API with modern and easy to navigate online documentation.

Want to be Revit Hero?
Learn Revit API!

Want to be Revit Hero?
Learn Revit API!

Want to be Revit Hero?
Learn Revit API!

Take your first step today towards Revit Automation.

Take your first step today towards Revit Automation.