← All episodes

Real-World pyRevit Hooks + PowerBI with David Vadkerti | pyRevit podcast #6

GUESTDavid Vadkerti
HOSTErik Frits
DATEMay 2026
DURATION1:44:44
EPISODEpyRevit-Pod #6
WATCHON YOUTUBE

Transcript

All right everybody, welcome to podcast number six. Py ravit podcast is back live and today I have a very exciting guest. His name is David Vadkerti. I hope I pronounce it right and he's definitely an expert with parit and he has quite some cool things to share with you today. So aoy David, how are you doing today?

>> Um I'm doing great. >> I saw that you have a master's in both architecture and civil engineering at least according to LinkedIn. uh it's like a single single uh master's degree which is like some somewhere in the middle. So something like that. I don't have two degrees.

>> Okay. Cuz that was my question. I thought like usually people choose between architecture and engineering but you have like completely combined >> like the first first maybe like four years uh were actually uh about the civil engineering and then the second uh like last two years was more architecture and I was actually uh working also as an architect and as a civil engineer or project engineer let's say >> that's a pretty good experience because you kind of cover both sides. Well, I think it's kind of advantage for later as a beam manager if you had also the cost design stage covered and also the construction dogs and everything in between. Yeah.

>> And uh while you were studying, did you use Ravbit right away or did you discover it later? How what what what was your introduction to Ravbit? say >> like I came across rabbit uh uh like two years before uh ending the university and it was like very very new then because it was like I don't know maybe I can uh show because I have something here on my screen which actually was me sure >> okay so so this this is this is my journey basically so here is architecture desktop somewhere like uh here I like bought my new computer And like in like 2006 the rabbit was not very well known at least not in Slovakia. Uh so I started uh here and maybe I ended my uh university like in summer 2007. So it was it was something like this.

>> It's so nice to see this map like of your journey. Usually I ask questions to get to all of that but it's nice to see. So you started in with Revit in before 2007 and I already see Dynamo pop up around 2012. >> But basically this is like the introduction of Py and Dynamo and I started here. So I ignored it for like multiple years because I like >> Oh it when they came out, right?

>> Yeah, the first release. I I mean I meant the first release. Yeah, because I I think uh somewhere here I'm not sure the API for the Revit was actually released as well. Uh and I remember when this was like introduced uh it I really uh like struggled to get what is it for because it has it had like the 3D environment and I was not getting that this is for programming. So I was totally ignoring it for I don't know 4 years or something.

So, and also I remember for example uh uh coming uh across a pirate like very soon after its uh first release uh because I was looking for some addin uh to like improve something and I find it but uh that blog uh which actually was uh writing about it uh was talking about it that the first or the best advantage of this tool is that you can write your uh scripts on your own and at the I I was like totally I had totally different mindset that writing my tools on my own when uh when we are paying so much for ev software like okay but as as you can see in one year uh like I was like creating tiny scripts so it significantly shifted >> wow you heard about pirate nearly on the first release I heard it like so many years later but I also started later it's >> a very strange coincidence but I understood that maybe like in in the all uh all of my schoolmates actually used uh Articad or AutoCAD and not the Revit like we were like three there were like three of us uh who were using actually Revit and there were like 40 of us in ended the year. So >> So when you started with Ravit obviously you started like many of us with regular Ravit stuff templates and stuff but did you know programming somewhere or did you learn it later on after you discovered Dynamo in Py Ravit? So what was your kind of programming background? >> Oh, I had basically known which like like uh like there there is some uh some background but like very very very brief. I I was uh aware of HTML and I was like u trying to do something because at this uh time like 2000s you needed to know at least something to post because like uh HTML 2.0 wasn't a thing.

uh and I tinkered with like media wiki because I was like u uh Wikipedia contributors. So this markup languages um was u known concept for me but uh I started with the visual basic but at that time I had no internet so uh I just uh learned uh from a book uh which was actually like borrowed from a library but I don't know whether I was so stupid at the time or the book was old or I don't know or I had a different version of visual basic but after maybe third or fourth uh page uh I was not able to follow the book so I returned it to the library and that was my programming. So it was somewhere in crash course you know >> and uh then I uh came across because uh I started with uh graphics and tinkering with graphics like Photoshop, illustrator and later in design and I came across micromedia flesh and this was uh it was actually the technology where you can like draw something and program it like Peter and uh this was like my first uh programming geek or what it All right. And where does this programming journey kind of joins Ravit? When you started with Dynamo, did you know any Python or C# already or you just started with the ro?

>> No, no, just just this just just the basics of some terminal in Linux and X is actually the programming language in flash. But uh it was like uh I had no like um no clue about the data types. It was very like a visual because like in flash it was like more as a dynamo but not uh like uh with the wires but you draw something and then u wrote a code just for that element and then created some other so I had no no uh no prior experience. >> Okay. So you like most people start with Dynamo got comfortable with kind of automating Ravit and uh how far did you push Dynamo at the time?

who I don't know but uh during this like first uh two years uh I started definitely my first script was like the renumbering the parking places because at that time we were working on a project uh which uh had like 1,200 or something like that parking places. So I was not going to do it by hand. I was uh actually uh uh looking for some addin and I u came across a video where somebody shows this on the screen. But it was something like this uh renumbering and changing parameters was the first thing during this uh >> first first two years maybe. And then like the texture of programming was uh I think also the usual pattern which you can observe uh in in in others uh that I just see that some other packages in Dynamo uses uses the use the uh Python scripts and I was not aware what they were like doing.

So I was starting to or I I I started to to learn Python then. >> I see. And how was it for you to learn Python? Was it like straightforward, easy or did you struggle? Uh it was it was very strange because I uh didn't get uh the thing that you need to like uh not just uh learn the syntax but also something else because at first the the first video which I actually used was uh not for the beginners but for the beginners in Python which uh or who had actually some experience uh with programming because it was like 40-minute video which shows basically everything in Python like the data types but very very very very uh like fast pace >> uh because I like this but uh and I I I I still like that but it uh doesn't explain anything about it okay this is uh how you create integer this is how you create list this is dictionary pieces but not this is dictionary and this is advantage you can use it like this no no uh no such thing so uh I really didn't understand that but then I installed uh an application for my smartphone uh to use to to learn Python and this was a game changer because it was like normal structured tutorial and uh I was able to be learning uh on the bus on the train during boring uh meetings I work and so on.

So, >> so you learned Python from phone. >> Yeah, like partially from YouTube videos and partially from from phone. >> Yeah. Yeah, of course. >> But but it's like the sounds like the lingo for Python.

>> Yeah. Yeah. There was there were actually no videos. I think it was more textual and then there were like uh exercises and also uh some challenges that you can like challenge uh some complete stranger and to compare uh with the stranger and to gain some kind of game and some kind of tutorial but mostly that show I think >> sounds cool because I know comparison is like game changer at least it was for me I use something like by cheek where it's kind of gified. There's like ah there's little game you have to help solve something and and you do pretty much you solve problems with Python, right?

Like list manipulations this and that. And what I like the most is that once you're done, you can see all the other solutions. And there you can see other beginners struggle do weird thing with Python. Then you can see professionals doing it always in one line which is unreadable, impossible to digest. And then in the middle there were also very good explanations and very simple one.

And sometimes you see your 50 lines of code could be simple like five lines easy. >> And I I was like, "Oh, that's how you do it." Not like you take each item from the list manually depending like lots of if statements. It it was a mess sometimes. >> Uh it's called Peko >> I think it's one of the websites. There are like many similar ones and u I think now there are similar platforms out there.

Somehow they became worse over the years. the beginning it was way better integrated. Now they made it worse. I I checked it like last year. I don't know why >> but I know that comparing code to others this was amazing because you see yours versus others same problem same task and you're like ah >> all right so that's how you learned Python and what was the issue that led you to Pyravit why did you decide to go from Dynamo to pra like everybody maybe struggles with Dynamo a little bit uh when you try to deploy it in the team uh like back then I had like no experience uh how to deploy it uh how to like install packages on some like natural location and uh set everything up.

So it always like worked on my machine and u almost never worked in somebody's else's and I need to like tinker with that. So but uh now I uh I'm I'm like much better in this. I can like deploy al also the dynamo but still the pirate is much better. So like like the dynamo is maybe better that in that sense that you can like see the stuff >> but uh in every 3D stuff and stuff it's amazing >> or or maybe for beginners because you don't need to know anything about like Revit API just find a no. So >> but uh >> I noticed there are like two camps.

There are people who prefer Dynamo as the first one and there are people who like Python or even C from the beginning. It's something about probably how we think and when we find when it's aligned then it like just clicks instantly. But I but I know many people prefer Dynamo to begin with. But now I think Paravit and C have an edge because of the AI. AI is really good with the really good with the code not so good with the dynam at least for now like I don't think it's going to change anytime soon actually tried that approach that just u ask AI to uh write Python code for a single Python note in Dynamo and it works but you can you don't know what is actually doing so the issue with with the Python text programming if you don't know anything you you cannot check it.

>> Yeah. Yeah. That's the danger. I mean it gives you it gets you dangerous really fast in a good sense and maybe sometimes bad but mostly in a good sense right you get some results. >> Yes.

Yes. >> When you need to tweak it that's where issues come in. But even there like sometimes you can like kind of interrogate AI long enough until it makes something right. >> Yeah. Of course.

I think like maybe you don't need to like uh know each uh thing uh which is in the code which has been like provided by AI but you need to like uh evaluate the results or the state of the beam model before running the script and after like creating some schedule or something like this >> and and comparing it. But most people don't do this. So what this is why this is dangerous. So if if if they do at least this it would be okay. >> Yeah.

Yeah. That's what's the this whole hype about Revy 2027 is there's this AI assistant and it's not a very good one. I don't know what even LLM model it's run on but definitely not OPOS. I had little tests but I saw what others did and so far well underwhelming to say the least. I'm going to share my opinion later in another video.

But yeah, I agree that you need a basic understanding of what's going on because with AI sometimes you make a pro. I saw a really good example actually with this new AI assistant. Somebody said, can you remember I think doors for let's say doors. Can you remember doors from 103.1 to 103.5? And instead of renumbering like multiple doors, you just found one door with 103.1 and renamed that one to 103.5.

Technically exactly what you wrote in the prompt, but everybody assumes different kind of outcome. And this is the issue with AI. Once your prompt is kind of can have two directions, you don't know which one AI will take. I think that's the >> sometimes sometimes my experience is that the AI is sometimes lazy. uh like I asked for example I was tinkering with or trying the MCP uh uh extension for pirate uh using clo and uh sometimes it uh like it did everything right but uh I always uh had some kind of schedule of that element uh at that elements which I was trying to like solve or correct or edit uh next to my like load window and I can see that for example this reaming that uh the AI reumbered but just a few of the elements for example half of them or two/3 of them and I need I needed actually to like ask the AI that okay but you are missing these other elements can you like revisit the >> Mhm.

You have to >> Somebody wrote, "AI works better when you threaten it." >> Okay. >> So, you have to be like, "Come on, work. Keep doing this. >> I'm going to turn you off." >> Yeah. Yeah.

I remember there was this big change that you describing because before AI was doing whatever you ask, but it was consuming so much token and power and so on and some people like ask something and they don't even check out. They just close and forget. So they all of them started making these changes where it became lazy as you say because it tries to kind of cut corners or make you do something sometimes instead of doing it it explains oh you can do it yourself David don't worry click there choose the number and I'm like what are you here for like just do something um I think we're going to get back to AI in a moment um after kind of parit so for now I'm also interested like how was your journey transitioning from Dynama to actually parit because That's quite a big difference because you lose this 3D preview also now you go to uh full Python with Revit API. So can just describe this change for you. So >> I I didn't have the struggle with this 3D because like uh many times I just prototype something in Dynamo.

So I results and then I re rewrote it in uh uh pirate but uh as you see like there was maybe like two years gap and uh and also uh there was a gap uh when I was because I started uh with Python in maybe uh 2017 and uh I was able to create some scripts uh some applications also. and everything without Revit. But uh I I really struggled to know how to connect the Revit with Python. I was not aware how actually Revit API works, how it is connected. This was it.

It took me a year to get it this and uh if it wasn't like Essan's uh YouTube channel because he started uh his new playlist or what it was about Revit API. Uh maybe it would have taken even longer. So >> and this was very beneficial and this was uh also a game changer for me because after this I like watch every single video and after this I was able to get that what it actually is because all of these like uh I was opening for example some Dynamo or some pirate script and there was some Autodesk blah blah blah dot or DB something and what's this how actually Python knows about Autodesk I I I struggled to get this. So >> yeah, I think most of us were in the same boat >> like Dynamo and Python is one thing, but once you start to understand Ravbit API, it's like you described like what the hell is this autodb where it comes from then you found documentation. It's another at first overwhelming like sea of information.

>> I was not aware of the Revit API website or SDK. So I was totally stupid at that time. So I was just okay where it is. I had quite similar approach. I just was looking for little pieces of code here and there.

>> Yeah. >> And I knew that if I want to remember how to work with parameters, I have to find this Autodesk University talk somewhere there. >> I think it was Danny Bentley or something something like this. The name he mentioned it there. If I wanted to work with FilteredElementCollector, there was another person with another presentation somewhere.

Then Ashan tutorials somewhere also. >> In the beginning, I remember it was a mess. Every time I would just find this then eventually I would write it down. Okay, parameters you do something like this. I didn't understand much how it works.

I just kind of knew that if I like a dynamo, right? You know, you take bunch of blocks and join it. I was doing the same but with the code like okay, if I put that one, that one, and that one, something like this happens. And >> I think for example, I don't know, I'm not a very good programmer. Uh, and I think I still do the same thing that I just like assemble some Lego pieces and afterwards it resembles kind of castle.

So, it's something like that. So that's a good analogy but that's in a nutshell that's what Dynamo is. Every single block is just a piece of code. I'm just want to explain for the audience that many of them use Dynamo. They don't think much about code but in reality like there's a code behind every single piece of note.

when you switch to Pyrait, the biggest difference is that now you don't have this kind of spaghetti monster as we call them, but you now have like a text editor, but you can also make the same like like you make functions and they can act like your nodes. So for beginners, I know that this analogy helps a little that nodes become functions and they join it. But now is the format different. >> Yeah. So sometimes there is just the one like a single or or two lines in the node and sometimes it's very very like complex.

But for example, one distinction uh in Python can be much simpler sometimes than Dynamo because if you are trying to do some uh loops in Dynamo uh maybe it could be like uh made out of I don't know 20 nodes but it's maybe five uh lines of code in Python or pirate. So >> yeah, sometimes even it can be compressed with list comprehension to one line. Exactly. >> But yeah, loops is also a big thing why people switch to Python instead of this nodes cuz nodes you cannot really create true loops especially easy ones. You have to make all these kind of as you say lots of nodes together.

>> I tend to I tend to create a Python now then just to create a shortcut and then continue. Yeah, >> I think that's how it starts. Start with Dynamo then you realize certain things better in Python then more and more you get comfortable and then eventually like do I really need these nodes? >> All right so parit is not so bad and was there any kind of specific tools that you could not well not could not but were not good enough in Dynamo but parit made a lot more sense in the beginning when you were switching. I think the interface is the best thing that you have like icons uh with uh some uh like manuals and uh text around it because like when I started with Dynamo uh Dynino player wasn't a thing.

So >> Mhm. Even when it was a thing I don't know this Dynamo player I was not a big fan of it ever because when I explained it to others they also they kind of get it but they're like it's a little bit weird. >> I liked it. is significantly better than just the dynamo for for a person who >> doesn't know anything about it. But uh like a icon uh which is actually uh always at your toolbar uh in Revit is significantly better because it's you just need to click on that.

Yes. >> You need to choose uh clicking dynino player uh and finding some uh uh script which you actually don't know how it is called and uh just clicking the button clicking the button is better. So >> yeah definitely yeah I think that also it's so simple to do many people don't realize it but parate is just a folder structure and it just works. This was biggest um kind of how to say it epiphany kind of for me when I like first heard of pirate I was like it got to be hard there's no way like it's easy then I start going looking into that I'm like oh you just make a fault the structure and now you get I'm like what no way then the more I start looking at it the more I got like sucked into this par world >> the system is so uh so like simple that like anybody can do that yeah >> just just copy some codes or uh or even like families or any any content and you can create like uh extensions uh just by copying from others. So >> yeah, that's what many do because it's also open source.

So you can access all the code and for people watching this in Pyavit and all extensions based on Pyravit, you can hold alt click on any button and you're going to find the Python file. You still better understand what's going on inside before you copy. But still it's a like so good to see working button and ability to see code behind it which you can learn from steal redo update make better like this is what I think that why paravit is such a good kind of tool because you keep working on existing work instead of starting always from like scratch looking for example it's always sometimes hard in internet but here you can see the buttons you can get them. I mean this was really kind of a big shift for me why I went to parit that openness and uh that it is actually open source is a huge thing. Yeah.

>> Mhm. Yeah. I think otherwise I don't think it would survive as good. >> We can actually uh like learn uh from each other. >> Yeah.

So so much better than like struggling guessing h what is that what is this called? All right. And uh so you started with parit I assume like you started making tools for the office sharing them and what is the origin story of your custom tools cuz your main power extension called custom tools right yeah >> at least that's what I >> uh it's not a very straightforward name like original or something but yeah I'm so boring >> straight to the point if you if you type a custom tools to Google uh anything else like uh you will find anything else you need to like uh write my name already. >> Yeah, if you put David Pavid custom tools, you'll find the right one also. Is it still on Bitbucket?

>> It's still on Bitbucket and and I think the first result is GitHub. I don't know, maybe GitHub is like largest tool. >> I remember uh one of my colleagues introduced me to your extension and I remembered it more than anything else because it was on Bitbucket. I was just thinking all the time who uses bin bucket like was it for like >> but yeah I saw your code it's quite impressive what you do you have lots of configs lots of hooks a lot of like logging and checking here and there you were miles ahead of me when I found you and I was like ah I should learn more from this but I also had some for me I don't know why I don't recommend to anyone I had some ego that I had to figure out myself not copy from others maybe because I make tutorials I didn't want to look like I steal code and then teach not stealing the GP license so you can do anything every day. >> Yeah.

Yeah, I know there. I don't know. It's a weird That's why I say I don't recommend to anyone. For example, EF tools, everybody just steal everything. Learn, do whatever you want.

I'm fine with that. >> But yeah, for some reason it stopped me to explore more. I didn't want to like look somebody else like copy tools or something. Even though that's the right approach to probably start making your tools. Probably it's YouTube and tutorials, you know.

I don't want to look like fraud just stealing code or something. But yeah, it cost me definitely a lot of time and learning. I learned the hard way. That's why I don't recommend it in the first place. >> But yeah, uh can you maybe share a little bit about the custom tools?

We can just go to the main topic because you wanted to share a lot about hooks, logging, and other like tools you have there. So maybe we just jump into that. >> Okay. >> Hey everybody, just a quick note. >> Uh this podcast doesn't have any sponsors.

Well, except for myself, I guess. So therefore, if you are somebody who is interested in pirate rate and you would like to either start using pyate or maybe you want to get better at it, you can get more trainings and additional resources at learn rateapi.com. You'll find my challenges there, my fast track and I have a few things in mind that I'm going to share in the future. So check it out. It might get really useful.

Now let's get back to the port with David. >> So we can see the custom tools wiki. >> Yeah. Yeah. Uh actually the the custom tools uh I I started custom tools uh just after I uh watched the Exon's video about the Revit API uh because I struggled uh to create uh a certain uh dynamo script for creating uh start work openings in the uh uh in the concrete for pipes and ducts.

Uh actually I I did that but in Dynamo uh sometimes it worked and sometime sometimes it doesn't or or or it didn't and I struggled to understand why. So I recreated it in Python and uh this was the beginning. >> That's quite a tool to begin with. Uh yes it was uh like a longer tool maybe I think this is this is the first first version of it which is a very very I don't know maybe in 2018 or something like that and this is the tool uh it's in Slovac so is something opening openings for the for the MEP elements so so basically it was very simple back then because now it looks It's more like sorry more like more like this. So like I don't know how many tools are there.

Uh but basically it's not just the tools but I also uh like dedicated some time to to other tools which are not on the taskbar in the in the ribbon. Uh for example like uh hooks and some other telemetry and everything. Uh so wait a moment maybe I need a break. >> Yeah sure I will. >> Um meanwhile I'll just mention for people watching that in Py Ravbit a hook it's like an event trigger.

So when you do something in Revit usually you can subscribe to events. For example you try to delete a column that's an event. You try to open something that's an event. And with pyit hooks we can subscribe to certain ones. So when something happens we can react.

Let's say that somebody deletes a model uh a column in a model. We can detect that and we can also prevent it. We can give a warning or we can also for example write it somewhere. Just some explanation beforehead. What is parade hook?

>> Okay. So maybe something more about the pyate hook. So I'm going to try the paravid wiki and there is some talks about it. So uh basically uh this is it and this is like the list of all hooks which are like supported by pyit and actually uh this is the name of the file uh of the hook. I'm going to show uh how it actually look look like and this is the name of the event uh uh in the Revit API.

>> Mhm. >> Uh let me show it what it actually does. So sorry. So I have my G repo somewhere here. So uh normally this is at the app data and pirate folder but uh this is my G repos G repository.

So it is in a different location. But I'm at the root of the extension. And you need just to create a folder u which is called hooks. And in this location if I put it like this you need to like create a file which is exactly or which has exactly uh the name uh like it is in this table. So for example uh this is for init initiation of the application.

So for example when rapbit starts this is being triggered. Uh when for example you are closing the document uh the the ravit model this is being triggered and you can like write some code uh which is being triggered and run uh when uh like this trigger or this fire fires. Maybe we can go to the custom tools wiki and I have a hook section also here and I use you can copy it from me for example don't be afraid and uh these are the hooks which are used in uh like uh custom tools. So all of these files which are here are uh here in the schedule and I for like So it's like a documentation internal >> like explanation what it actually does and what can you what can do with that. So uh here are some columns that these hooks actually uh it like showed some GUI window uh and whether it is cancelellable and whether it locks the results.

So I'm going to show you what it actually do. So I'm going to start or I will start the Revit and the first hook is actually uh on in it and if you like I can show it here uh how the how the code actually looks. So this is the app in it. it will fire uh in a minute and I'm going uh I will I will go I will skip this and somewhere this is updating the custom tools and I think uh this is opening uh mass message window so if I go back to Revit uh mass message window uh it's a window actually uh it's a web page where we share some new things about Revit or about me uh about the view. >> So now it has I haven't opened this this this has been opened automatically pyRevit.

So this is the Revit mail message and this is just our u web page and you can like uh see for example I don't know some uh this is this is some wiki wiki article about ACC. >> Okay. So this are like last changes new tools like news. Yeah, interesting. Or something like that.

And now I started uh now I started the Revit and actually I'll come back to it. It's uh just uh it looks like long but it's very easy because it's repeating it over and over that this is just >> Can you zoom on the code a little bit? >> It's a little Can can you zoom on the code? >> Of course. Is it okay or too too much?

>> Way better. >> Way better. Okay. So uh these are some these are just outputs as you can see uh these are my outputs from my library and I have like c in custom output module I have like different default uh parameters. We will come uh back to later and uh each single one uh I treat like this way that for example I try to uh uh read it from the uh custom tool settings in user config.

Uh this is a config file for a pyroit. Uh which is uh I will show you where should we oh not here to do it like this. So in data you have pyit this is it and this is the file. So we are going to open it. And here are actually all your settings for pirate.

And if you scroll, >> it's individual to all users, right? On each computer, there's going to be individual. >> You need to set it for each user. So this is not like very good for deployment. You need to maybe seed it then uh then it's then it's better.

So for example, this is for custom tool settings. Uh this is for my other two tools. And what it actually does maybe I can like uh this is the one string and this string is uh is uh like read by that application that other script. So this hook locks is actually read by by this. So user config is that file that uh this file custom tool settings is this section and then uh hooks is actually uh this variable and you can write it here.

>> So and and how do we get user config variable? >> This is actually the like preferred way normal typical I haven't like this is private thing. Oh okay. So it's internal. It's like this done the ravit and >> I haven't created this.

I just used the system which actually like uh created. >> Okay. Uh uh so and I'm doing this for every every uh single variable and if you don't uh if you don't find uh this thing in user config uh then you uh like create it or you use just the default one which is in this output u uh custom output uh uh module. So modules are basically in uh I need to go here in parid extensions in the lip uh folder and if you go there this is the custom output so basically there are like dev log hooks and this is the default just to be there it's uh almost never like used so it's uh it's just hardcoded so you don't need to uh do it do this this way >> and Then uh wait a moment I will expand it. >> Okay.

So when user runs ravit application it fires up this um starting script where you just pretty much set up the config correct way so everyone has the correct paths correct default settings if they don't have any right >> yes yes but at the same time I don't know where it is maybe because this is like uh the company config is actually a thing which uh because it is just for the single user but you can use it You can uh do the same thing for the whole company. So uh it is in uh we have it here. So this is our uh like city config in and the main can find it here. Maybe it's in deployment where the moment I need to find it. So you have actually this file you can copy it from here or uh the copy is also uh in the GitHub repository uh and you can just copy it and place it uh anywhere and actually what it does is that prior to uh the setting from the pyit uh in it looks here and it changes the settings in the pyabic ini.

So you could like change it here. So uh for example in some network location which is accessible for everybody uh in the company and you are sure that everybody has all of these things like set uh like correctly and the same way. So for example if I need to change the language I can do that. So we can do that together. So now I think it's still in Slovak.

So if I create new file, >> oh I can see EF tools by chilizer. >> Okay. So this is our template and I will create for example architectural column and if I create architectural column uh there is a uh there is actually a pop here which is the in the code and if I click uh that more info that I want more info about architecture columns uh some uh rabbit uh rabbit wiki actually triggers and I can like see that okay this is about it is in Slovak but it says that you need to use structural columns if if this can be applied >> uh or for example like in place element or model in place you can click on that and you have like some brief explanation why is it uh like wrong approach and if you uh if this is not enough you can click here and there is an like um uh article about it explaining it like further or more in more complex way maybe or you cannot like cancel nothing is like created or you can click on that and click create but now I can create for example I don't know floor or leave it like it is because this is also stupid approach so we can do it that way and I create some inputs family and this is it but now uh this actually uh triggered a lock And I've uh like everything has been uh like written uh in lock. I can show you uh what's the code for this in place element uh hook. So where are the hooks?

Uh maybe here. So this is the hook and I I will just show this hook how it is. So as you can see that input development is actually u not in uh the standard list of hooks. So if I come back to this the you cannot find impulse element here but what you can find is at the the end there are like two things like comment before exec and common can exec and this is uh for image user and there is like comment id and how you can use it actually is like comment uh before exact and you can write the name of the function but what's really tricky uh is how to know what's the name of the function. Uh, and I think wait a moment I can copy from this other computer to here.

I found while ago. Oh, this is too too small. I understand some PDF like this. Sorry, this is too too large maybe. And this is list of all uh this is very very like old 2015 but I haven't found anywhere >> I I uh I'm sure that somebody knows better than me but this uh this is totally okay because like many or most of the features are here actually this is the uh uh like name of the feature for example this is the tool link cat and this is what you need to like u write in that name so I'll also quickly add to find those names you can use Revit journals because when you execute all the commands as you know there's journal file that kind of records what's happening you can find it somewhere there >> okay I was not aware of that I'm not aware of that >> u I heard it before I did not do it this way I also searched online usually I found it but recently this AI assistant I just started talking to Tai in LinkedIn that well we need to make a private hook for that and he went ahead and he found in journals what's the name of this command what fires up and he already implemented py hook for blocking this AI assistant >> okay so I'll open this in in place component >> and >> mhm >> it's something like this that uh there are some like uh imports uh name of the of the window or of the of the book and uh this is just the warning window so this is actually This comes from pyrovate.

Uh so you don't need to do anything else. So if you start um uh where it was here. So this is the window and it's like very sorry. This is it. Uh it's uh maybe not readable because uh this actually comes from another library.

uh and because you can change uh languages in custom tools. So for example now now it was like this was actually in uh in English. So if I click this, this is in English. Uh I'm going to now just save this. Uh by the moment I will also create work sharing file.

Okay. And save it somewhere. Uh I don't know maybe here like EF test maybe. I'm working in central but it doesn't matter for now. Skip.

I need to like restart the private and what I what I what I'm uh going to do is actually to go to this excel location and edit this config in and uh language is here and language zero is English and language one is sol language uh three is I think German and four is uh French I think so I now I'm going just to save uh just uh B managers and me uh have actually the permissions to edit this because otherwise it would be like uh like not very uh safe and now I start Revit again and uh it will magically like change. So if I come here uh what it actually does we can like open this uh hook text for example. So uh where it is is it is in module called like hook translate and hook translate is in uh library where it is here. >> Mhm. So library and this is a hook translate and actually uh this is just u uh order of the languages and then this all is uh one giant giant dictionary which actually uh uh contains all the texts of for all languages.

So basically it's this we actually like uh Rudolfph Steiner like uh actually help me to uh like translate it to German and to French and this is actually it >> and I just like parse this to that code uh then automatically so so basically this is just the GUI for editing that uh dictionary. So uh this is uh this is it. >> So this is actually the the dictionary. This is the first uh first item and this is this is the second item of the dictionary and >> just returns the text and uh these are the these are these are the buttons and here you can like provide what's uh uh what's going to what's what's each uh button going to do. So, so this is the the first button uh and this is not going to cancel the thing but it will trigger the hook and uh is all others actually will cancel the event because cancel is like uh true and the this uh last one is actually if you like click the cross uh in the uh right upright corner because uh >> you need to do it that way I So now I restarted it.

I open the the EF test and hopefully everything should be installed like now. So this is it. And okay, this is also another tool. Uh oh, sorry for that. I don't know why this triggers it again.

Never happened. Okay, but light demons. I don't understand why does why this doesn't work. Can I try it again? because this never happened.

>> Uhhuh. >> But now it works. So I don't understand what what I happened. >> Mhm. Okay.

>> So >> So on your when you open a project there is Ryan model checker checker for everybody right away as well. >> Yes. This is another hook and that hook uh uh contains uh this function. So it actually checks uh the it actually checks the model uh and uh writes the log uh and you can like view it in PowerBI. So if we come here now I will for example copy this because this is actually the in place element.

So this is uh some mistake in uh in Revit. And I also create this and created some duplicate elements because this I just created some warnings here. And now I reopen the project or I just click on this model checker again. I can see some there is some warning and some uh in place. again see employments uh eight eight of them that's okay so this has been changed but also locked so now I can go to dashboards and find this file and show it in uh PowerBI so uh I have this there is something wrong here it should be here this is yesterday it was here okay So I'm going to show show it how it is like manually.

I I don't know why it is why it is not working. Wait a moment cuz like it is always here maybe. Wait a moment. Do we have time? What are we looking for?

This is here. Okay. And it should be here. This is it. Okay.

It's empty. Okay. So I'm going to I'm going just to copy everything was here. over here yesterday it was there so should look like this and if it is like that if I click here on this dashboard >> uh it's it's there and I can open uh the model checker file history for example >> uh can you explain this part a little more >> okay uh so you click on the dashboards what's this menu what's happening what are we seeing >> okay so uh the dashboards uh are actually uh Just opening the explorer window uh which is actually like this but inside the pyate window and uh you are seeing uh one specific uh one specific folder which is actually uh uh like set up in custom tools uh settings and these are py uh powerbi reports. So now I can click on any of them.

There will be some popup and that's it. >> And this reports the individual to the project you have open or is it like companywide? >> Uh these are companywide. There are also like specific to the projects and there are also uh like PowerBI reports which are companywide. Those which are uh which are actually here are companywide and project dashboards are here.

>> Okay. So now I I will I'm going to uh uh to uh talk just about the company wide because these templates are actually available in custom rules like I provided like four of them. So now we just um maybe update this right I can >> so every time user runs this model checkers all the data also is put here in PowerBI. So for example this is uh one uh file uh and you can change it for any other file. Uh these are the dates and these are for example the critical warnings.

So there are like 61 critical warnings in this time stamp. So this is this is the time on the uh x axis uh there is a time and this is these here are the values and you can see that uh here we like purged or cleaned uh the file and how long it took uh to be exactly the same like before for example. So these are just the warnings uh number of sheets or number of model groups detail groups families in place families. So you can check like everything and I'm going to show you uh exactly this on uh this E file which we have just created how it actually >> Mhm. >> what it behaves.

It won't be that elaborated like this because we just created the file. But uh there should be two timestamps. Uh this takes some time. And now I'm just going to filter just today and find here. H this is so interesting.

Okay. It's not there because I have I have a filter here. Okay. So now it will be there. Okay.

So I made a mistake. This is the EF test. So this is our uh this is our file and I can see that like at the beginning it has like no warnings and then I created one or for example that uh like uh there were like uh just single in place family here the uh this this one here and then now uh eight of them are there. So you can like track everything down like this and you have like uh exact timestamps and uh if anybody in the company actually like opens the file uh it uh the hook is being triggered and everything is locked. So you can actually know by another uh dashboard uh which shows you uh who uh saved or synchronizes when uh who it actually is and uh it's not for like um uh preaching to people but just to like explaining okay uh why this happened and you can maybe like educate that this is not the right approach or something like that.

>> Uhhuh. No, this this data is so valuable to all B managers because most of the times well we can check something in the model but we don't have like this time data which is super super important and you also said that we can track who did what which sometimes can be really useful because it's not just to punish maybe users but at least to point out like hey maybe stop doing this thing please I can see you they start to be a bit more conscious. >> It's certainly not for punishing it's just for edit because sometimes uh it's in a inevitable and you need to create some warning or something or for example we have like plenty of architectural columns because we need to have them because they are on a facade and they are not structural is completely okay but if we don't have that uh in model you need to avoid it. Uh so for example you can uh check if you open the file uh by this that okay each of those elements were like created by by me this is very simple because I was here so obviously it was me. Uh this is something like uh who put it in pirate but for multiple elements.

So you can like select 100 elements and you don't you don't know just the creator but changed uh who changed the type and everything because sometimes also the type is very important and >> Mhm. Yeah, I like delete this and also uh delete few of this for example and like do it again. I can like immediately see uh the status here. But if I want to like see what has been what has happened whether I like purge it efficiently or enough I can just refresh it here. Mhm.

Interesting. >> So takes some time, but now like zero critical warnings and also like just two in place families because there are just two of them here. So and uh like you can create this uh hook system for like anything. Uh you just need to like think about it for a little bit. like actually the system uh which I do in uh custom tools is like this that you have this QA QC page here and basically it's like the hooks are for preventing things actually because you can like uh see uh the the effect or the logs instantly but then you I don't use uh this Revit batch processor anymore because the Revit page processor I don't know like whether uh you know what it is but it was actually I can show you where it is I have ink somewhere here um I know the project I I talked to developer tried to get him on the show last year but he was too busy he said maybe he will join in the future but I think the project stopped uh being updated on GitHub or something.

>> Yes. Yes. uh and but I think some other contributors always uh managed to update it for him but it was sometimes it was late uh so it really like holded me uh down uh because of like I wanted to upgrade to I don't know 2025 but the version was there wasn't there yet so I I needed to wait >> but uh then I uh like uh created this distributed version uh because Let's let's see whether I find found the >> but why did you use in this pipeline? Why couldn't you just take the hook and send the data to power? >> Yeah, originally I used it a lot.

I think this is it. Wait a moment. Yeah, this is it. So this is Revit B processor. In the 2024 we used it and in like in 2025 I actually I think created this distributed version.

Uh so basically this is the GUI version of the Revit based processor and this is the C which is like much better because you can use uh task uh scheduleuler to uh schedule uh task in uh Revit batch processor which does that thing that it opens uh for example uh Revit uh 2024 and runs Dynamo or Python script on every single model which is in the file list. So it's very easy to like configure and you can >> so it's great for using this kind of time task like every day make some exports every day open Revit models do some uh dashboards and this kind of stuff right >> it's like task scheduleuler if you don't know what it is is like putting thing in u in uh windows and I don't use it for uh rev bas processor anymore uh maybe I I will do or definitely I will do but not not now but for example now I have this kind of uh uh this kind of action info uh I don't I think it's it's here just to just trigger uh Python script and it will do something so we can do anything. >> Mhm. Honestly never used this but I can see potential. >> Uh this is very similar to uh what is called bird tools dynamo multiplayer.

I think I used also that but this is only for Dynamo not for Python. Zerid B process is also for uh Dynamo and Python as well. Uh but you need to adapt the Python script for uh that version uh because obviously like the pirate uh libraries aren't uh accessible for that. >> Mhm. >> So that's that's basically it.

Maybe we can like this was actually the the distributed model checker. Maybe we have time we can like show the content extension very briefly. >> Yeah, sure. >> We still have like 30 to 40 like minutes easily, even a little longer. So that's fine.

>> I just want to say something right away that I'm so impressed how open everything is cuz your whole custom tools extension is open. I know that many people struggle with that because company many companies try to lock everything. Ah, we made it. We're not going to share it. We're not going to show it.

In your case, everything's super open. You have even a whole wiki opened. You even have like PowerBI templates. It's amazing how pro opensource everything about custom tools and what you do. This is like definitely like the big impression.

think that I owe it to the community because I have also learned this way and I understood I understand that uh when I was talking about how how I struggled to get what the Revit API is or I don't know what else I struggled all the way. So uh everything or every single example actually if it's also if it's even if it's not very elaborate or smart it helps because you suddenly know that at least it works. Maybe it is quite lame, but it works. So, >> well, it's definitely smart what you're showing. It's impressive.

>> Okay. >> No, but it's cool that your company is also on board with everything you do kind of shared publicly, especially the wiki. I did not expect to see wiki this open. I knew that you had some kind of wiki, but I always thought that you have internal and external completely separate. It is actually it is I'm I'm showing you both but just single one is open like uh this is uh this one is completely public this is public page uh but uh this one in Slovak is our internal one >> we fine basically my uh no not this one where it is this one is basically my project and this is uh one >> uh but I think like maybe half of the tools uh I share and half of them I don't would not share.

It depends because it you need to evaluate some evaluate some things but uh >> yeah it's still massive what you're sharing all this wiki because people now have not only template of like pyit they can also see how to create internal wiki how to document stuff how to kind of communicate it with others >> and I still think that for example the concept for the custom tools wiki I just copied from asan and firease wiki because I it's still in the ocean So, so uh it's very similar and uh it's really works. It's very like uh uh it's not time demanding to create something. Uh it's not because I I used to do this in HTML, JavaScript and CSS and it was uh like I learned something uh some things along the way. Uh it was like I appreciate that but it was time consuming. So >> yeah.

Yeah. Notion is straightforward. You change it's done. >> Yeah. It's big editor.

So the other thing >> like anybody can you like even nonprogrammer can do is this content extension uh it's uh like just uh uh structural folders uh and for example if I want to create it uh this is obviously everything in SL but this is just a chair very simple one or like I don't know sofa uh is in 2024 because we use uh we still use 2024 and 2026 at the same time. So it's something like this and you know that this is the content version of that sofa and everybody uh has this extension and this is actually like mapped uh from the network location. So this is not uh for example shared. This is just uh this is only internet tool but you can do it very easily. Uh if you have your own families which you uh want to prepare uh and it this is not just for the families but also for uh containers.

For example, if you uh want to have like this is for Windows for example, I want to upgrade the model and you can have like some system families or some schedules tags all in one f >> accessible for any monthly. Uh >> so it's like company standards coming to any project. You can copy the schedule. You can copy anything to your project that it will be uh uh it will be like set up or for example room schedules with parameters and everything uh and some standards for example the data standard uh for the parameters how you are you need to use them or AI assistant and some norms and everything. So >> Mhm.

Can you share some code how these buttons are made so others can see that this contain buttons fairly is not code or uh there is a one liner maybe some sometimes so if you click uh if you out click on any uh any icon this will actually open and what it actually is if I go uh where somewhere here so this is uh network location like the network mapped uh f uh folder And this is the extension. So you just need to create uh tab and then the panel and then some pull down. The pull down is actually uh uh uh this this button and then to create uh for example this is door uh one wing door uh interior uh folder and then go inside and there is a uh there is just the Revit file which or Revit family file and it needs to uh end with the content RFA and that's it. There's nothing nothing there. Uh this is the here are the icons and the bundle actually.

Uh wait a moment I blocked myself out. I will do it this way. Where's the subline text here? So the bundle is as easy as this. So the tool tip and the tool >> and just the description of the button that's shown on the go here and uh here here is not >> this is actually it.

So but there are some uh oneliners maybe here in these containers. So if you go inside here is actually a script because you cannot I think open RVT or like RV RFI. So at the moment uh there is a mess on my screen right now. So this is it. This is like a very simple this is I just tried something.

This is not necessary because this is commented out but it's just this one line that you just Sorry I going to like maximize it. I I I'll just use this like hardcoded uh uh location because every for everybody this is the same because it's just an internet that's it. >> So this is very very very easy. If you don't uh need this containers uh you can do this without any programming knowledge at all. H just to quickly recap so everything takes to create it is just a folder structure that paravit can understand while David is showing you you will notice that they have special names like blah blah blah extension tab panel that pulld down content parade understand it as how to put it on your toolbar and how to function for example this dot dot content folder is what you see all these buttons and a ravit file well family is just brought into the project.

Just a quick recap so everybody is on board. Okay. No, this is looking good. Very simple way to share a company standards >> that for example like uh I understand that I like uh haven't shown uh that also these hooks uh which are like triggered can be uh like analyzed in this PowerBI. So you can actually like go here and here should be the books.

>> Oh yeah, this was my question probably. So you just open it like everybody has access to this show you like everybody in company not not just the be managers and this loads this is a little bit slower because this is PowerBI obviously like there's nothing here because it's 60 and it haven't uh it hasn't been uh uh like updated. I'm going to update it and hopefully I will be there doing all of these uh nasty things. So, uh this is me. So, I'm going to like just uh maybe filter last five days and this is this is it.

Oh, sorry. Uh uh is still not everything because it should be maybe it it hasn't been like uh maybe it hasn't been uh uh saved yet. So I'm going to do it again. So uh where it is now I'm have a bad position. So for example this and now it is it in Slovak because we like to change it.

And I'm going to click on this uh for example columns. It doesn't matter columns. And I create something uh for example this this and this. And like without anything I should be here if I refresh it. >> Mhm.

Also after that, can you explain us the PowerBI connections a little bit more? >> Sorry. Mhm. This EF text. Okay.

Okay. Maybe uh maybe there is some other thing. Okay. because I wanted to show you also the the the exceptions should be here at my simpler. Let's see if I am correct or not.

No, it's it's here. So, so I I don't understand why this doesn't work. I'm going to save it. And maybe create some different thing. I don't know why this doesn't work.

I don't know. Maybe our maybe some maybe import somews insert and uh like our link cat. So this is also uh like locked and I think should be something now. I need cat. >> Yeah.

Okay. I need it in three 3D. It's another hook. So it it is here and it should be here now if not so I don't understand why because like it always maybe I don't know it's not here I don't know why because like it always hooks I tried it yesterday because I wanted to be But it it's here just a single one. I don't understand.

Okay. So, this doesn't work right now, but it should work on your computer >> because it always works for like everybody. So, but uh this you can uh actually I will figure it out maybe later or do we have some time? >> Maybe it's not so important. I don't know.

>> Uh we have some time. I just wanted to ask that's okay that it doesn't work. We kind of get the idea. Probably there is some filter somewhere. Uh I just wonder about how this connection with PowerBI works.

So you explain the hooks pretty good. So hooks fired up. You create a logging. How does this kind of event breathe into PowerBI? Can you just share this little moment with us where documents and get recol and here here and here are the hooks.

So for example I don't know uh document synced. So if you're syncing the document the hooks is also like triggered. So how it's actually uh saved is that uh I'm just getting the uh central path and the file name of the of the file of the model. Uh I'm doing this only for the file extensions of RPT because I don't want to like trigger anything from RFA or any any other >> to the project. >> Yeah.

And then I uh like read the user configs because this path is in the config. Uh and uh then if if not found the default is being used and uh then I just like uh like concatenate the sync path and the file name and then appended this thing. So this is uh uh the the temporary uh file and uh or sorry at the moment. >> This is it. And if I go if I go back uh and I can show you the location where it is stored is in here, here and here.

And for example, the hook locks are here or the sync syncing is here. It's this is the EF test which I actually just now use. So I can show you that. So where is the this is it. Okay, it's here.

And this is the synchronization. Okay, I understand what's actually wrong because I need to like uh yeah, I've lost the engine or or something. I need to restart the rabbit. So that that's that's maybe the the thing. So uh this is the uh time stamp uh when I actually like sync to the the file.

Uh this is the duration of the of the synchronization and this is the user. So and if you like open like uh anything larger, it looks like this. So >> and uh >> so all the time stamps are the same >> and and then in like uh PowerBI you have this uh transform data and in that transform data you need if you like use my templates for example you need to do uh this thing that data source settings needs to be changed for something else your location >> just set the folder where all the logs are recorded and it's automatically refreshed. >> Yeah. Yeah.

Because like at the uh like the underlying data is just this and you can go uh in par ABI uh where it is sorry data and actually it like uh does this uh steps I don't know 10 or 12 steps each times and uh for example replace you nothing and uh like creates that that uh schedule or dashboard. So yeah. So so there you just clean up all the steps. I I know this menu. So there like you take the initial data and then you kind of clean up do this do this do this.

So the final data is better for PowerBI right >> basically like for each file uh one log file is being created and constantly it's appended and all the folder is read by the PowerBI then as the principle. >> Mhm. >> And it's being passed that's very easy uh to do in PowerBI. You don't need any like programming for that is using the uh power query. Can we go back to the Python code?

Because we stopped at the temporary file, not the log file. >> Oh, wait a moment. I will where this maybe this is it. And I can use uh for example also this is very simple like at the beginning but I think it's somewhere at the end. Oops.

Sorry. Uh this is this is slightly different but it doesn't matter because this is this is actually the logging in like uh app in it. So I need to open this uh version locker for maybe it will be simpler to do with something else dog sync and dog sync or dog updator. I don't know which will be the best. Uh maybe do saved.

Okay. Okay. So basically this is it. So this is the log file. So I just like uh open a file with this um uh flag appended.

So if if that was like W, it will like rewrite uh the the whole thing. But I need to like actually I need all of the other like um data to be to be there and the append actually just appends one line for this uh syncing or this is saving actually in the end. >> So uh that's actually it. This is maybe a little bit uh like more complex because I also like read the temp file here. Maybe I was.

>> Yeah, this was was my question because I saw the file first because there are like two two uh two hooks like doc saving and doc saved and doc syncing and doc saved. Doc syncing is starting syncing and docu uh synced is uh like when the process has ended actually. So maybe I can also open the because this sorry doesn't work stupid Windows. Okay. So the temporary files they just kind of back up to store data or >> yes there is just uh the syncing is actually like much simpler and maybe I can like show it in the uh in the logs when somebody uh where it is there is only a time stamp nothing else time stamp and u and and that's it.

So maybe I can wait a moment open the logs. So where where are they? hook logs and maybe sync times and maybe no everybody is synced but here uh for no nothing is here I will try to sync but I don't know whether it is like broken and I need to restart the Reddit now because I think guys >> Mhm. >> maybe I can restart it because it should it should work. Oh, I I synced but I haven't.

Yeah, this works. So once again now the tank is there and now it's like erased. Have you have you seen that? >> It's kind of flash. >> Yeah, because it's like this is very small file but for the larger files it can take like 30 seconds or something like that.

>> So cool. So basically that's the that's the main principle that I will like temporarily store that's why it is called like temp like temporary because I like temporary store uh just the time stamp there and then in this saved I just uh where it is uh I just like create or calculate this time that's the duration so I just uh this is actually the date time which is like right now and that right now or I just like that's it. So, >> okay. Use it as a timer just something to kind of start and end the timer. >> It's not like a timer.

is like a time stamp and then I know what time is it or Python knows what time is it and uh I just parse the uh the text in the temp file do a date from that and uh then just like subtract it and then that's it. >> Yeah. Yeah. Yeah. Just to calculate duration.

Got it. >> This temporary file what confused me because we stopped on that one and jumped to logs and I was like what's happening in between? >> Sorry. Maybe I like make it more complex than it actually was. So >> that that's okay.

That that's why I keep bringing it up because I see there's a little bit disconnect that can happen. But yeah, >> sorry maybe maybe I like to arrange the the discussion too much. So that's my issue for sure. >> It's okay. Don't worry.

It's it's great. Don't worry. So what's happening like you have all these hooks that not only do stuff they prevent users from doing wrong, they provide additional information, but also what's important is the logging. This is what so many B manager miss because I had also questions like ah can we get this data out and I'm like only if you kind of track it yourself somehow and this is the perfect example. So you create all these log files for projects where you keep adding data and then you very in a very efficient way use PowerBI to grab all this data and just give you kind of reports which can which are really really useful from what we saw so far.

At the same time, >> you got like the timestamps, the users, the issues that like it's amazing. >> Yep. And at the same time, you can like you have like a tool set in custom tools to fix some of those issues like there there is a hint actually in uh the upper dashboards uh uh here below what to actually do. Uh but if you go here in this mult checker like all of these is for like uh fixing the issues for example like DWG schedule this is linked so uh okay it's uh it's going to work uh also in this like 20 26 but you can like find it like this but if I like just import >> the DWG let me show you this is another hook that you you are not supposed to duplet and I'm going to do like import the same thing maybe here. Okay, I need it in 3D should be at the same location.

I will is it there somewhere? It should be there. Okay. So if I go in manage links I have like two of them but this one I can uh click on show. But for this one which is imported I cannot.

So I don't know why it is not here. So you can still use custom tools for example because like here is DWG schedule uh entire project and uh import it you can like while linkify you can just like select it and delete it for example or or just show that is here is here. So this is like everybody knows this linkify. So >> there are like plenty other like features for I don't know um like just comparing uh text notes and feed factors or I don't know what else basically many things from the model checker. Yeah.

>> Mhm. Mhm. Uh it's there's so many things here which are really great which I really like. That's why I wanted you on the show because I haven't explored your full extension but I saw what you do with like hooks there like I saw some connections didn't understand everything right away. So it was really amazing to get you on the show to share it from yourself.

It's always best to hear from the developer, not somebody who tries to understand what's going on. >> Sometimes even I forget. >> Yeah. Sometimes even I forget what what tools I have. So >> I know this.

I once started making tool that I already did before. >> Yeah. This happens to me uh as well. Yeah. Yeah.

>> Yeah. Yeah. It just happens when you have like hundreds of tools. You're just like did I do this or did I not? Maybe I imagine this how I just do it faster than finding it.

No, this is amazing. Okay. Okay. So, uh one other like exception is that for example you have this kind of uh not obligatory like config file. I will show you where where it actually is.

And you can like cancel some of the hooks for be managers. But this this so for example if I now uh here is uh like this is like all the uh ones but if you sorry if you fill it with zeros and save it and now I'm going to I don't know what or maybe create oh sorry create a model employee base oh sorry this is not uh Not cancel at all. But maybe this problem is this. No, by the moment import cat should be consolable. So where is the import?

Uh insert import. Oh, okay. So now not all of the hooks are cancelable because also like I was I need to be like sometimes notified that I'm doing something wrong. For example, if I'm like importing something in 3D or something but importing you like sometimes you need to do this but you need to like know what you're doing. So you can like be managers can uh actually uh turn off the hooks but basically you are like if uh this import uh cat it's like on the second position.

So if you like change this to one suddenly the hook uh should arise. >> So but this is >> yeah so you have this kind of guard rails in place. All of this is actually like placed in I think I already opened it somewhere here but I'm going to repo reopen it in your like C and you need to create pirate extension. So it's very like u niche like no no no uh normal user will like um understand that should be here and there is actually u there is actually a manual for that how to turn off the scripts uh turn turn off the hooks uh here below turn off the hook and here is also video how you can do that and where to place it. Not impressive.

It definitely gave so much ideas to many people about hooks because people going to watch this. They will finally like have a good example to rely on. They will also some of them going to discover custom tools which is a good thing. There's definitely a lot to learn. Even for me, it's amazing.

Great. Um I think we have to wrap it up a bit. If you have something kind of final things to share, that's totally fine. We can also have a few kind of quick chat about AI if you want. So you can choose.

>> Yes, maybe uh like uh I wanted also like maybe uh talk a little bit about the deployment. And I understand that this may be was all covered by others but this is very like u much uh or a large advantage of pyrovid because uh for example I covered soft thing but also the installation process by using for example CLI and other things this is advantage over any other adding because >> because it is >> and I don't know what what else you want to cover so let me know >> we are kind of time restraint now because I would love to dive into that but we're already almost 2 hours in >> so I'm trying to wrap it up but it sounds like I have to invite you some other time on the show to talk I think we need to limit some topics it's amazing to talk about all of it just like I know that there are so many things you can share with us deployment is a big one also noticed uh a lot of people want to share it because that was a big pain everyone had with Dynamo and Parvit solved a lot of that and I know that you also have this auto updator which is great which is also not complicated. >> Yes. Yes. Basically that that's that's the main thing also I totally like forgot for that that this is like being upd updated automatically.

So if I change something like everybody on the team uh has it if it's like pushed uh uh to make it repos repo and and also like anybody in the world if you like installed it it will be like updating like automatically because uh it's just in the app in the hook that like just it just clones your your repo again and that's it. So, it's on Revit start and it's uh also on uh like uh system start as well. So, if you restart your computer or restart your Revit, you have like the new uh uh updated uh extension. >> Mhm. And the script they can find it in your what was it the hook for starting the ravit app start or whatever to find the code for the updating repo.

It's >> it's it's there. It's there. It's there or uh it's also like here you can manually click here >> and basically like uh this is it. But uh I think this uh like uh just triggers a cmd file which is also copied to startup location in Windows. It's still the same thing like similar to installation.

>> So if anybody wants to learn how to do that, we can find it in custom tools. Definitely >> you can just copy from there. Yeah, feel free to to steal because this is not >> that's the open source feeling uh spirit. Sorry. >> No, this is great.

All right, and we're going to wrap here. Just a few final questions. Maybe we don't have to expand too much on it, but I just wanted to ask you, do you use a lot of AI for creating your tools or uh what's your just opinion on the AI these days? >> I don't think I I use a lot of uh AI. I use I use uh defin I definitely use AI but I uh I'm really worried about these agents because I don't think uh like we have there is a definitely privacy issue and also you sometimes you don't know what has been changed so I need uh to be maybe more specific that do something just on this uh specific file uh but I use it also for coding but sometimes it's more hallucin hallucinating sometimes less.

So it's a for for for learning to code is it's a real game changer like it's is much better than it was like I I started like prior to YouTube with Revit for example. So if you if you compare these things this is like totally different world. So it it is totally different world also lots of new challenges especially the issues for B manager when this kind of agents come to models especially without really kind of uh how to without per like asking permissions and so on we never know what's going to happen but yeah we just have to get used to that I guess not used to that but we have to kind of keep this in mind that that's an option now >> but definitely I think like there reason like AI bubble or hype or something because like people cannot distinguish between what's AI and what's not what's like normal programming at all and uh and also I feel this danger or thread or what it is that if like like anybody if anybody uses AI for programming it's completely okay if it's the prototyping or uh if you can check the results but if you cannot uh it's dangerous I would say So >> Mhm. you can get blinded what's happening. >> You need to observe what what you're actually doing.

>> Yeah. Not not not blindly like uh like uh having a faith that AI is smarter than me because sometimes it is but sometimes it isn't. >> It's also about questions you ask and so on. And the thing I noticed that when people don't understand the topic and it can be anything programming like being about lawyers whatever when you ask AI without knowing the topic your question is already sometimes a bit wrong and AI feels it and gives you like answers accordingly but when you understand the topic you speak with AI in completely different level different kind of language I would say same with programming once you understand raid API basics or just kind of software basics in general speaking with AI about code is completely different cuz we can also fact check it. We can also notice like no way m that's not happening.

You're hallucinating and then it says like oh yes you're right I'm hallucinating. So I think this also adds to the problem because sometimes it's overconfident what it tells. >> Yes definely but uh I also like have it uh said like uh uh to not be so overconfident. Uh it worked for a while but now it is the same as it was. Mhm.

Yeah. We're getting back to more reliable path. >> Sometimes you you are get stuck uh in some like a hell that uh you think that okay uh this is so easy that I'm not going to write this. Uh it's just I don't know 50 lines of code uh AI will do it definitely. and you are trying for the 20th time and uh you you spend uh I don't know 20 minutes and maybe you have you you had uh done it uh if you had do it like manually like it's sometimes it's a waste of time even and some sometimes is not very good I don't know >> it depends on the task it certainly gets better but at certain point ravit API is so niche and after all it can only give you what it learned from online and documentation.

There are certain things that even we with like years of experience we start doing it we have to go through like and figure it out how it works. There are like always these edge cases and with ravit there are always workarounds sometimes even in API. So yeah so it always depends on the topic but if you ask something like delete me all walls AI is going to be great at that >> for sure. But but for example uh uh I have like limited experience but with the with this uh MCP py extension with clo uh I did it that way or I tried that way that I asked something and then I asked provide me with the code and that code was uh always okay but it it is a very limitative experience so I I don't know maybe I'm also hallucinating right My understanding with MCP is so we have like Revit, we have all this Revit API and we can create our custom tools but MCP is like the middleman who has access to AI and we can provide all the tools. So theoretically you can take all your code snippets and turn it into library of how things work and then it's more reliable.

So when it's needs to change parameter you can give it the precise tool include your logging tools and so on. So theoretically it's possible, but I'm still not sure how I feel overall about MCP. I haven't played enough with it also. Going to be honest right away like I need to get >> it's not like the silver silver ball like don't get me wrong. It's like uh that if it uh has managed uh to do this task the code was okay but uh it like uh very often haven't managed to do the task.

So yeah and I I the the difference is that the MCP the model context protocol the context is there so like the AI can see actually the database and that's the main difference maybe >> but I don't know >> you can also teach it things because if you ask it like I don't know create me certain like dashboard and so it can tell you like I don't know how you can also teach it things because there are like certain files you can create give it tools and then it's like oh I have the tool to create dashboard Erik asks Me too. So you can also provide it like literally with the tools how to work with Ravit. This is also what I understand about MCP is that can give you benefit of talking to AI because you can give it exactly how to implement certain things. >> Maybe. Yeah.

>> All right. I think we're going to wrap here and I always end with asking guests on one piece of advice for beginners. Let's say that somebody just discovered Parrait wants to get in and doesn't know programming. like do you have like one piece of advice you would share how to get into this world? Yeah, I would say like uh don't be afraid to break things and maybe uh try to see issues in the like the real world and uh like try to uh fix them sometime somehow with the code and maybe also that the issue is uh very often that the perfect is the enemy of good do it somehow and if it works it works and if it's lame it doesn't matter because it works.

Because if you are learning like it's okay. So >> and uh maybe uh like don't be don't stag in tutorial help like follow the tutorials. They're like uh very very great thing but always change something and uh find your real world projects and uh and build uh upon them and then come back tutorial back to another tutorial and >> create new project and and I think that this is the the the curiosity andol evolving is very very important here and also maybe like embrace your laziness uh because like lazy people improve the world and lazy and curious maybe so >> no so very practical approach find problem try to fix it see what happens >> yeah because sometimes people only like uh learn and don't do actually anything at all and they have like some experience but they don't have like any decent uh portfolio but in this approach approach you will get some portfolio done like very early on. >> Mhm. >> And you will be proud on yourself so very very soon.

So it's motivating. It's it will be driving uh uh yourself. >> Yeah. Beautifully said. Perfect.

Yeah. I think we're going to wrap it up here. Thank you for coming on the show. Appreciate it. >> Okay.

Definitely. Thank you for inviting me. >> Thank you everybody. I hope you enjoyed the show. And if you have any questions to David, you can find him on LinkedIn.

I'm going to try to leave his social under this um in description also links to his custom tools and everything. And if you have any questions, either ask him on LinkedIn or maybe in the comments he will see. Either way, it works fine. And one little question I have, if you have any other guests for Parvit podcast, I would also appreciate to know. Just comment below in the comments so I know who to interview next.

Thank you everybody. It was a pleasure David having you on and everybody happy coding.

GUEST Real-World pyRevit Hooks + PowerBI with David Vadkerti | pyRevit podcast #6 TermsPrivacyImpressum