The holy grail for me is getting the same exercise, but for Linked IFCs. More often than not we get vendor models created in something other than Revit, therefore, need to be using IFC. Being able to locate an opening based on linked IFCs this would be fantastic.
Dynamo has the ability to interact with IFC to some degree (albeit limited, and dependent on class mapping), but unfortunately Revit is not a great program for handling IFC files, especially if not class mapped properly. I would suggest looking into Geometry Gym for Rhino, and forming workflows in Grasshopper instead (using either Rhino Inside or native Rhino modelling). Someone has built a workflow here though (but I suspect for a big IFC file it would struggle); learndynamo.com/mod7/
Gavin, Hi. Quick question, one of the custom nodes you used in this video, the one from Springs, I can't call that node. I'm with Revit 2022, Dynamo 2.12.something (just updated yesterday) And Thanks I love to watch your contents and your buddy..I mean the cat. I hope I can see him or her more often
Ah the cats tend to be off scene these days but they're around (and a lot bigger too - both boys). The node I use here should be available in Springs for a while now, currently under 'Springs > Revit > FamilyInstance > ByHostAndPoint'. For reference I am using 204.1.0 currently as the package build.
Hello, thanks for posting. I am only just getting into Dynamo and this script supported a task I was looking at and was really helpful, Thank you. I developed it for my specific needs, however I have encountered a couple of challenges. 1 - using the centroid from the intersection geometry is different from the centroid from the combined bounding box geometry. I found this out when combining multiple penetrations through the wall, the bounding box option as the placement point seemed to work better for me. 2 - Also, for some reason the centroid seems to reset to Dynamo 0,0 if I select penetration geometry that totals less than 80mm which it seems odd, and I have not figured this one out... I thought you might like the feedback, I am probably using the script slightly differently so it might be how I have set it up.
Hi there, good point - the bounding box centroid is probably the best placement location in all scenarios, I think I made an oversight if I used the geometry itself. The error sounds very weird, is it for the geometry specifically, or the bounding box as well?
Aussie BIM Guru It did it on both items. Really weird. I re-built the script and it seemed to solve it. I must have had something off in my script. I had re-worked it to adapt to the inclusion of Fabrication Parts in the elements selection option, as these come through as mesh not solids, so I need to adapt things to suit.
Super Amazing. I've made it work to me also. The only thing which doesn't seem to work well is the tolerance. It's always the same no matter what I choose.
Hrm that's strange, it's really just there in increase the width/height of the final opening so cross check that the formulae it relates to receive the value and change when it changes also.
Hii Gavin, Thankyou for this nice workflow. I would like to ask you ....Let say if my pipe is not passing through the wall ?? It is going inside the wall but does not pass through the wall. Is this still going to work? thankyou Looking forward to your reply
As long as the wall and the element have some sort of intersecting geometry it should be possible. This workflow relies on that in order to find the bounding box around that overlap.
Great workflow...!! Would that extraction of geometry for walls and other elements when you have a huge building project be costly..? I previously had an experience while tying to extract geometries of furniture inside rooms. My system with 16 GB ram and Core i7 7th Generation with 4GB Graphics just crashed. Tried three four times with no success. Since then I am afraid of extracting geometry...
Yes for larger projects this could be taxing on system memory. Usually anything that gets all elements in active view or of a category in excess of 250 can be slow, same goes for geometry. Where possible I suggest narrowing the number of elements you get geometry for at once. This workflow is OK as it only needs two elements' geometry at once per run so project scale isn't really a factor.
@@AussieBIMGuru Tried the script on another, much larger project. The Geometry.Intersect node returns an empty list... Googled the thing, scaling down, intersecting and scaling back to normal size didn't work. Seems like Revit and Dynamo do not like huge coordinates... Any experience with a workaround? Cheers!
@@Vasoulinho usually the only way to handle it is to enable large geometry scaling in dynamo. Short of that you could locally adjust the coordinates by a common xyz offset (using add point node or add as a vector) to get your elements closer to a workable location. Revit has a comfort window of about 14km, anything beyond that and it tends to be problematic.
Great video again, can this script be modified so that it reads a linked model & gets the intersection of a pipe or duct element & place the void family you made to all the walls in the model in one go?
It could be, but would require a lot more work. You'd need to get the linked element geometry ans filter it down to the walls you care about, then use a similar workflow to this, but set up to handle multiple walls/elements at once.
Gavin, thank you for the video that is much needed. I do not really understand coding and noding that much and finding my way thru by solving problems one by one. Can you please provide us updated script since many of us have different type of problems to be solved. For example I am having the following problem; ''Solid.ByUnion expects argument type solid, but was called with function'' and I am missing the Springs node as well. Thank you.
I'm without access to dynamo until march unfortunately. The videos aim to provide a workflow/concept so others interested in learning dynamo can explore it further based on my script. Try the script I shared onto my github maybe, and make sure you use dynamo 2.0.3. Not sure why the solidunion is receiving a function, maybe email me a screenshot (not script) of the script as well as the node contents before the solid by union so i can see what is going wrong.
@@AussieBIMGuru Thank you for answering, I have figured those out and now got new other problems... Element.SetParameterByName node shows error ''No Parameter Found By That Name'' even though I set all the parameters as you have done.
@@AussieBIMGuru Gavin I've come to some point but if I do multiple selection, I end up having a giant window with a point in the middle of it. Here is the ss of what I am talking about. drive.google.com/file/d/1-I026aVZmHRD7HfumgFu3qQp0-tPZpxj/view?usp=sharing Again thank you for all the help you are providing.
Hi Gavin! Great Example. I am unsure of the fact that when we run the script for the second time it usually update the last results I tried even with dynamo player. Suppose I place a family by point selection now I want same script to place a second instance but what it does just updates the last result which results in deleting the first point placed and placing the family following the last selected point but my instension was to run the script to place a send point insted of deleting the last result. Need your help how to solve this if I need the same script to run multiple times on same dynamo or revit session.
This behavior should only occur when the script is run from dynamo itself, due to what we call 'element binding'. There is no easy way to fix this behavior. This shouldn't happen when run from dynamo player. To be sure, try refreshing between runs of the script and see if that helps.
Yes you could potentially do this using linked element collection nodes. There is a select linked element node in springs package, and various packages that have intersection methods for linked elements such as Bimorph nodes.
1. if several services are selected at the same time, one large opening will be created. the issue is when the service are separated with some distance, the opening will be very strange and very large. How can we improve it at the dynamo? is there any demostration? 2. if the above item 1 is fixed, we can try to select multiple penetrating services and multiple host elements for creating wall openings.
Hi Edward, you're correct in identifying that there are a lot of ways to improve and enhance the workflow - this video is just the start of something bigger and more complicated for most people I'm sure! This video was really made to show the concept of bounding box axis rotation and the general principle of creating a 1-off penetration. Another workflow to enhance the script is an 'update' to pre-placed penos, so dimensions aren't lost. Grouping services automatically can be quite complex, as it means the script needs to be built to recognise when something is 'close enough' to something else, but also to be able to run this on a mass basis (for each element, consider every other element). See this thread where someone 'solved' this challenge: forum.dynamobim.com/t/sort-lists-by-proximity/23031/6 From here, you would instead group each 'list' of elements as geometry, then union each sub-list, and run the same process as this workflow, but for each sub-list. This can be done by either working at levels, or by applying functions on a 'list map' basis. It's quite complex, but if I get around to solving it I'll let you know. I would suggest that instead of selecting all penetrating elements, you look into the clash nodes from the Bimorph nodes package, which can obtain all elements intersecting something such as a wall (without taking too long) and then continuing forward with all elements of a particular category(ies) only. From there you could also filter for minimum sizes (min. radius, or min.width/height) as we often ignore elements smaller than a certain size in peno generation (they just core hole instead on site). Hope that helps!
Hi Gavin, I followed your tutorial and created the script and the two opening families. By running the script everything goes fine (openings created and correctly oriented and dimensioned) except for the sill height which appears too low by half the opening height. Do you have any clue of the possible misbehaviour? I didn't try your opening families yet, maybe I missed something along the way. Thanks for your time. Bye
It depends on where the placement point is relative to the opening. For this workflow, it is best to use a window with the centre of the opening being the bottom reference of the family.
@@AussieBIMGuru thanks Gavin. I double checked my opening families and changed the default so height as you suggested but the behaviour remains the same. Using your families everything works fine though.
wonderful video!!! Thanks mate. But is there a way to create penos for Fabrication Parts? A Fabpart Duct for example is not a solid but a mesh. How would you do the intersect test on that? Would love to get an answer.. or even better a video on that. :D :D :D
Generally I've found meshes to be very problematic in Dynamo, I'd likely switch to Rhino Inside Revit there if I had to work with more complex geometries as it's far more capable in Grasshopper/Rhino of working with mesh natively. In absence of that you could try mesh toolkit in Dynamo, but I suspect fab parts would give very inconsistent intersection geometries typically in Dynamo.
Thanks! Unfortunately due to bounding boxes in revit always being axis aligned, we can only measure the zone of penetration by rotating our intersection to be lined up with the dynamo Y axis. If we measured a bounding box at an angle, the size would not be true and correct, as it isnt parallel to the wall.
@@AussieBIMGuru I tried your workflow, but i have a problem: inspite i made the solid union of two pipes, each time I click run it makes one opening for the first or second one and not together (it jumps from one to the another). Is it possible I have made a mistake in the solid Union?
Hrm not quite sure, I've only done it using Revit so far. The 'BiMorph Nodes' package has some nodes for getting dwg geometry, maybe try these out and see if you can get solid geometry from them.
Hi, it's really great, any way can place the opening family in link file (arch), because usually mep engineers cannot direct change the arch model. thank you very much!
Yes as I mention at the end one way the workflow can be adjusted is to read linked elements for live walls. It's a trickier script, but possible using linked element detection and/or the bimorph package.
Yes it would, it's a slightly different workflow though, you would need to be in the model with the wall(s), then select the elements from the linked model instead. There is a great node in the springnodes package called 'SelectLinkedElements' which can achieve this.
Gavin, First of all, amazing stuff, thanks for the tutorial! One problem I am encountering is that my family instances are getting mismatched. When I run Dynamo Player a second time (after refresh and new selection), my small pipe is getting the large opening and my large pipe is getting the tiny opening. To clarify, I believe the issue is residual data leftover from the previous run. Is there any way to clear/regenerate those data each time Dynamo is run?
This may be due to element bindings, which are an issue until 2022 where they added a 'flush bindings' tool. Usually this needs any node which creates an element to be replaced anew for the final script. It's a really annoying feature (in my opinion a useless bug).
Great video, but I'm having trouble finding "Springs.HoestedInstanceByPoints" and "Element set parameter by name". I'm running Dynamo 2.1.0.7500. Could you help me please ?
I haven't got access to Revit 2020 or Dynamo 2.1 yet unfortunately. I'm surprised set parameter is not available - this is a core function of Dynamo so I would expect it to be present in some form - I suggest searching the library on the left for 'parameter' and see if you spot it or a similar node; maybe they renamed it in Dynamo 2.1. I've had a look into Springs and in the latest build (203.1.0) it appears this node has been renamed to 'FamilyInstance.ByHostAndPoint'. I assume this node still functions the same way given it's inputs and outputs, but has just been renamed to better align with Revit naming conventions.
@@himitsudana you're welcome! You may enjoy this video I made this week also that deals with door openings by linked models; ruclips.net/video/8Iby7cmT0p4/видео.html
Generally voids require inplace massing which is not available to the revit API or dynamo. Wall openings would be the fallback in lieu of windows but require a fairly different approach to mine.
@@AussieBIMGuru Thanks. This graph is fairly useful. If we work around would it be possible to select multiple walls stacked together and create a single or multiple (small depth) window openings.
@@Turamiar most things are possible, comes down to your programming knowledge. Personally i always program this a while at a time so users review the outcome before moving on.
Yes probably. You would need to take all the clash coordinates out of Navisworks, find the nearest wall and also the size of opening required based on the clashing element. It would use a similar method to this video for intrepreting the clash report data; ruclips.net/video/eRzWUCReqkc/видео.html
Hrm... it's an odd error, usually means the data wasn't compatible or there was a bug in the node. Can you cross check all data before the object type node is able to have a type extracted, then try getting the type of the first index item in the list, then create a new object type node (and reboot revit/dynamo). Check at each step if this fixes it. Object type is an OOTB node so it should be working... but i have seen odd things before like this. Also which version of Dynamo/Revit are you using? If below 2.0.3 can you update to this and then try as a last resort.
hello there, @Aussie BIM Guru I followed your instructions for creating a script, but the intersection of solids from MEP and WALLS geometry shows an empty list. Could you please assist me in resolving this issue? I'm a new Dynamo user.
This workflow only works if the walls are in the same model, im guessing yours are linked. Linked models is a complex workflow, I suggest focusing on fundamentals first if you are a beginner.
Hi Gavin! First of all thanks to you for all your hard work. Actually I cannot find "Springs" package, hence "Springs.HostedInstance.ByPoint" node. Can you guide me to what am I doing wrong? I'm using Dynamo 2.1.0.7500. Regards,
@@AussieBIMGuru Hey! Thanks for quick reply. I think we have a newer version of the node named "FamilyInstance.ByHostAndPoint", which is similar, just found it. Anyway, cheers!
Dynamo is unable to make families, rather it can set type values or place family instances from a pre-made family. There's a thread here discussing one method to place mechanical units; forum.dynamobim.com/t/using-dynamo-to-place-mechanical-families/7021/12 Check out the 'MEPOver' package in Dynamo which has various nodes for creating duct/tray/pipe runs by line and points I believe. Also check this out; www.bim42.com/2016/04/using-dynamo-for-mep-design-part-2/
Hei I wanted to use your dynamo script but unfortunally it sais its broken. When i want to build it by myself i have the error that there's no solid element after the list flatten. Is there a solution to fix this?
It depends on the element you are clashing. The script works for most elements, but the element needs solid geometry to be filtered and isiolated first. The script aims to show a technique people can explore and adjust further to suit their workflows rather than be a one size fits all solution.
@@AussieBIMGuru i've tested the file with different types. In the list flatten there's only a function. Is it possible to get the center point in a other work around?
Hi Gavin. Nice script. it works with me but i put some modifying to work with a linked mep file and everything is fine only if i select a single wall but when i change the selection to select all walls in a level for example, it creates all the openings in one wall only. i hope you can help
To do many walls is a much more complex script and list structure, and not one i have developed yet personally. Maybe get as far as you can and consult the forums where unsure.
Hi Gavin, I need your help in dynamo mate please. I am working with structural shop drawings for concrete panels in Perth. 3 months ago I did my dynamo script to add bottom grout tube and was working perfectly but today I got an error saying "no nodes are loaded" in the familyinstant-by face& point!! Could you please help me out. Thanks mate
Hey there Ahmad! I believe there are often issues with these nodes. The issue is either a bug in the ootb nodes or they are custom nodes with missing package I would add archilab, clockwork and springnodes packages and see if that helps. They all have nodes that do these functions - if it isnt resolved by this try using their version of these nodes instead anyway See a thread here with similar issue/solution: forum.dynamobim.com/t/familyinstance-byface/5993
@@AussieBIMGuru thanks Gavin, but I am not professional in Dynamo, honestly speaking I didn't understand how i can resolve it from you answer! I really appreciate mate if you get time to help m. if you want i can send you my script?
@@ahmadsaid8594 unfortunately i am on holidays and changing jobs next year so have no access to dynamo until february. Suggest hitting up the dynamp forums in the meantime; lots of helpful people there. Also check lesson 1 of my dynamo series; i cover how to find/install packages there.
Thanks Dusan, this workflow doesn't support links, however with a few adjustments to the front of the script it can. Linked element geometry can be obtained using a clash check vs the selected wall from Bimorph nodes package, then carried forward from there. I"ll create a video at a later date to show how this is done!
@@AussieBIMGuru I have done a workaround to get the location from revit links, as you said. But, in my worflow, I also need to create penetrations on floors (structural foundations, e.g.). You have any advice of how to do this?
@@AussieBIMGuru Hello again. I got it. As my workflow deal just with links, I have build a family based on floor and used the same node used on video to put the family instance. I have used the solid centroid as the point and the floor as host. thank you for the time!
First of all I would like to thank you for teaching a Dynamo online. I would like to understand the how you customise the node i.e. springs & zebra, & what are the nodes u used inside i am trying last 2 days but getting issue while run the Dynamo. Kindly update me this 2 customise nodes. I send you email with snapshot as well
Hey, Thanks for that really Appreciate that. It is funny the link in your video gave me the option to download which I didn't have before. Also Video idea for (Ask your audience to send in what they did with your scripts, hopefully giving some more insight what people can do withthem ?)
I saw that the height and width parameters are of istance, but in windows family is type and built parameter. they are not editable as an instance. How to do?
Thanks for answering me. Forgive me but I did not understand ... the Height and width parameter are a type parameter and you cannot change them as instance parameters. how do you change them?
Maybe this thread will be easier to understand than my explanation: forums.autodesk.com/t5/revit-architecture-forum/can-i-make-window-height-width-into-an-instance-parameter/td-p/2001881
Actually I eedo It again because I lost my script. All is working.Just follow the instruction form BIMGuru. I will do a cover video on this.sent it here.thank to BIMGuru.
@@AussieBIMGuru mostly now used LINK REVIT to current model, eg..MEP (pipe,Duct)..will used time to created wall opening since we have Dynamo.hopefully BIMGuru able to share Wall Opening for MEP Element future.
@@mukriizani7480 it's a very different workflow but I'll add it to my list. It would generate a penetration family versus an actual opening hosted to a wall. This would become an object for the engineer to check against their provided penetrations, or clash detect vs the structurasl walls with opening.
@@AussieBIMGuru when clash was free , then we started to do Shop Drawing which is we need to show Wall Opening MEP, atleast dynamo can used link rvt file, input thk off opening from outside dia. of pipe, then select wall. tht my idea of it but don't know to create dynamo script with it.
@@mukriizani7480 so like a pipe collar with nominal tolerance I assume for coordination through the wall area without reinforcement. I've got a technique, will need a few weeks to prepare a workflow. Keep an eye on the channel for it in future
Another great post! Everything works great until I got to Springs.HostedInstance.ByPoints... this produces a null and I can't figure out why. Its causing an error in Element.SetParamterByName (dereferencing a non-pointer). I'm running Dynamo 2.16.1.2727 if that makes a difference. Can you help at all? 🙂
Hrm I used an older version of Dynamo for this workflow, my best guess is maybe there's an API update that the node isn't able to account for. Double check you're using the latest package version, beyond there dynamo forums can be good for troubleshooting custom packages.
Always a great help Gavin! Sad to see you go!
Glad to have helped!
The holy grail for me is getting the same exercise, but for Linked IFCs. More often than not we get vendor models created in something other than Revit, therefore, need to be using IFC. Being able to locate an opening based on linked IFCs this would be fantastic.
Dynamo has the ability to interact with IFC to some degree (albeit limited, and dependent on class mapping), but unfortunately Revit is not a great program for handling IFC files, especially if not class mapped properly.
I would suggest looking into Geometry Gym for Rhino, and forming workflows in Grasshopper instead (using either Rhino Inside or native Rhino modelling).
Someone has built a workflow here though (but I suspect for a big IFC file it would struggle); learndynamo.com/mod7/
Amazing! Seriously, you just saved me TONS of time with this video.
Great to hear!
Amazing, Gavin! I always find the light in your tutorials!
Thanks mate, good to hear that this helped! Keep up the Dynamo :)
May God bless you, you are genuine gentle soul.
Glad to have helped!
Gavin, Hi. Quick question, one of the custom nodes you used in this video, the one from Springs, I can't call that node.
I'm with Revit 2022, Dynamo 2.12.something (just updated yesterday)
And Thanks I love to watch your contents and your buddy..I mean the cat. I hope I can see him or her more often
Ah the cats tend to be off scene these days but they're around (and a lot bigger too - both boys).
The node I use here should be available in Springs for a while now, currently under 'Springs > Revit > FamilyInstance > ByHostAndPoint'. For reference I am using 204.1.0 currently as the package build.
Amazing video! do you think there is any way to get the tag to recognise the system and size of the item going through the penetration?
Yes if you add parameters to the opening family you can write these properties of the penetrating element to the opening upon creation.
Hello, thanks for posting. I am only just getting into Dynamo and this script supported a task I was looking at and was really helpful, Thank you. I developed it for my specific needs, however I have encountered a couple of challenges. 1 - using the centroid from the intersection geometry is different from the centroid from the combined bounding box geometry. I found this out when combining multiple penetrations through the wall, the bounding box option as the placement point seemed to work better for me. 2 - Also, for some reason the centroid seems to reset to Dynamo 0,0 if I select penetration geometry that totals less than 80mm which it seems odd, and I have not figured this one out... I thought you might like the feedback, I am probably using the script slightly differently so it might be how I have set it up.
Hi there, good point - the bounding box centroid is probably the best placement location in all scenarios, I think I made an oversight if I used the geometry itself.
The error sounds very weird, is it for the geometry specifically, or the bounding box as well?
Aussie BIM Guru It did it on both items. Really weird. I re-built the script and it seemed to solve it. I must have had something off in my script. I had re-worked it to adapt to the inclusion of Fabrication Parts in the elements selection option, as these come through as mesh not solids, so I need to adapt things to suit.
@@digitalengineering1971 Maybe it was the bounding box sizing formulae near the end. Glad to hear it's working for you now though!
Super Amazing. I've made it work to me also. The only thing which doesn't seem to work well is the tolerance. It's always the same no matter what I choose.
Hrm that's strange, it's really just there in increase the width/height of the final opening so cross check that the formulae it relates to receive the value and change when it changes also.
Hii Gavin, Thankyou for this nice workflow. I would like to ask you ....Let say if my pipe is not passing through the wall ?? It is going inside the wall but does not pass through the wall.
Is this still going to work?
thankyou Looking forward to your reply
As long as the wall and the element have some sort of intersecting geometry it should be possible. This workflow relies on that in order to find the bounding box around that overlap.
@@AussieBIMGuru Thanks a lot;)))))
Great workflow...!! Would that extraction of geometry for walls and other elements when you have a huge building project be costly..? I previously had an experience while tying to extract geometries of furniture inside rooms. My system with 16 GB ram and Core i7 7th Generation with 4GB Graphics just crashed. Tried three four times with no success. Since then I am afraid of extracting geometry...
Yes for larger projects this could be taxing on system memory. Usually anything that gets all elements in active view or of a category in excess of 250 can be slow, same goes for geometry.
Where possible I suggest narrowing the number of elements you get geometry for at once. This workflow is OK as it only needs two elements' geometry at once per run so project scale isn't really a factor.
Thank you so much for your sharing of knowledge!
This skript works like a dream (used structural opening family though)
You're welcome Vasiliki, glad it worked!
@@AussieBIMGuru Tried the script on another, much larger project. The Geometry.Intersect node returns an empty list...
Googled the thing, scaling down, intersecting and scaling back to normal size didn't work. Seems like Revit and Dynamo do not like huge coordinates...
Any experience with a workaround?
Cheers!
@@Vasoulinho usually the only way to handle it is to enable large geometry scaling in dynamo. Short of that you could locally adjust the coordinates by a common xyz offset (using add point node or add as a vector) to get your elements closer to a workable location.
Revit has a comfort window of about 14km, anything beyond that and it tends to be problematic.
Great video again, can this script be modified so that it reads a linked model & gets the intersection of a pipe or duct element & place the void family you made to all the walls in the model in one go?
It could be, but would require a lot more work. You'd need to get the linked element geometry ans filter it down to the walls you care about, then use a similar workflow to this, but set up to handle multiple walls/elements at once.
@@AussieBIMGuru HELP PLEASE!
@@victors.7717 might need a bit more specificity here - suggest emailing.
Gavin, thank you for the video that is much needed. I do not really understand coding and noding that much and finding my way thru by solving problems one by one.
Can you please provide us updated script since many of us have different type of problems to be solved.
For example I am having the following problem; ''Solid.ByUnion expects argument type solid, but was called with function'' and I am missing the Springs node as well.
Thank you.
I'm without access to dynamo until march unfortunately. The videos aim to provide a workflow/concept so others interested in learning dynamo can explore it further based on my script.
Try the script I shared onto my github maybe, and make sure you use dynamo 2.0.3.
Not sure why the solidunion is receiving a function, maybe email me a screenshot (not script) of the script as well as the node contents before the solid by union so i can see what is going wrong.
@@AussieBIMGuru Thank you for answering, I have figured those out and now got new other problems...
Element.SetParameterByName node shows error ''No Parameter Found By That Name'' even though I set all the parameters as you have done.
@@peregrin6992 make sure it is instance based, most likely problem if it can't be found in an instance
@@AussieBIMGuru Gavin I've come to some point but if I do multiple selection, I end up having a giant window with a point in the middle of it. Here is the ss of what I am talking about. drive.google.com/file/d/1-I026aVZmHRD7HfumgFu3qQp0-tPZpxj/view?usp=sharing
Again thank you for all the help you are providing.
Hi Gavin, I need your help with that windows family, can you shared that family, because I followed to create a similar family but doesn't functional.
I keep a copy of my family on my github if it helps; github.com/aussieBIMguru/Revit-Files/tree/master/Families
@@AussieBIMGuru Thanks Gavin, my error was to parameter from type , and when I saw your familie I saw is to instance. Thank you very much! Regards!
Super useful!
Glad you liked it!
Hi Gavin!
Great Example.
I am unsure of the fact that when we run the script for the second time it usually update the last results I tried even with dynamo player.
Suppose I place a family by point selection now I want same script to place a second instance but what it does just updates the last result which results in deleting the first point placed and placing the family following the last selected point but my instension was to run the script to place a send point insted of deleting the last result.
Need your help how to solve this if I need the same script to run multiple times on same dynamo or revit session.
This behavior should only occur when the script is run from dynamo itself, due to what we call 'element binding'. There is no easy way to fix this behavior.
This shouldn't happen when run from dynamo player. To be sure, try refreshing between runs of the script and see if that helps.
Great Tutorial only discovering it now. Could you get it to work with linked Mech & Elec files?
Yes you could potentially do this using linked element collection nodes. There is a select linked element node in springs package, and various packages that have intersection methods for linked elements such as Bimorph nodes.
1. if several services are selected at the same time, one large opening will be created. the issue is when the service are separated with some distance, the opening will be very strange and very large. How can we improve it at the dynamo? is there any demostration?
2. if the above item 1 is fixed, we can try to select multiple penetrating services and multiple host elements for creating wall openings.
Hi Edward, you're correct in identifying that there are a lot of ways to improve and enhance the workflow - this video is just the start of something bigger and more complicated for most people I'm sure! This video was really made to show the concept of bounding box axis rotation and the general principle of creating a 1-off penetration. Another workflow to enhance the script is an 'update' to pre-placed penos, so dimensions aren't lost.
Grouping services automatically can be quite complex, as it means the script needs to be built to recognise when something is 'close enough' to something else, but also to be able to run this on a mass basis (for each element, consider every other element). See this thread where someone 'solved' this challenge: forum.dynamobim.com/t/sort-lists-by-proximity/23031/6
From here, you would instead group each 'list' of elements as geometry, then union each sub-list, and run the same process as this workflow, but for each sub-list. This can be done by either working at levels, or by applying functions on a 'list map' basis. It's quite complex, but if I get around to solving it I'll let you know.
I would suggest that instead of selecting all penetrating elements, you look into the clash nodes from the Bimorph nodes package, which can obtain all elements intersecting something such as a wall (without taking too long) and then continuing forward with all elements of a particular category(ies) only. From there you could also filter for minimum sizes (min. radius, or min.width/height) as we often ignore elements smaller than a certain size in peno generation (they just core hole instead on site).
Hope that helps!
Hi Gavin, I followed your tutorial and created the script and the two opening families. By running the script everything goes fine (openings created and correctly oriented and dimensioned) except for the sill height which appears too low by half the opening height. Do you have any clue of the possible misbehaviour? I didn't try your opening families yet, maybe I missed something along the way. Thanks for your time. Bye
It depends on where the placement point is relative to the opening. For this workflow, it is best to use a window with the centre of the opening being the bottom reference of the family.
@@AussieBIMGuru thanks Gavin. I double checked my opening families and changed the default so height as you suggested but the behaviour remains the same. Using your families everything works fine though.
wonderful video!!! Thanks mate. But is there a way to create penos for Fabrication Parts? A Fabpart Duct for example is not a solid but a mesh. How would you do the intersect test on that? Would love to get an answer.. or even better a video on that. :D :D :D
Generally I've found meshes to be very problematic in Dynamo, I'd likely switch to Rhino Inside Revit there if I had to work with more complex geometries as it's far more capable in Grasshopper/Rhino of working with mesh natively. In absence of that you could try mesh toolkit in Dynamo, but I suspect fab parts would give very inconsistent intersection geometries typically in Dynamo.
Great Job. I want to ask you if it is possible to do not rotate the cuboid and use only the host point, width and heigth to insert the window?
Thanks!
Unfortunately due to bounding boxes in revit always being axis aligned, we can only measure the zone of penetration by rotating our intersection to be lined up with the dynamo Y axis.
If we measured a bounding box at an angle, the size would not be true and correct, as it isnt parallel to the wall.
Aussie BIM Guru I see. Thanks a lot, you answered me in few minutes
@@adrianoremigio997 usually got my phone on me :), no worries!
@@AussieBIMGuru I tried your workflow, but i have a problem: inspite i made the solid union of two pipes, each time I click run it makes one opening for the first or second one and not together (it jumps from one to the another). Is it possible I have made a mistake in the solid Union?
@@adrianoremigio997 is the pipe union providing 1 solid in the list output?
Email me a screenshot/demo file for testing if thats easier :)
does that work with solid geometry from AutoCAD? I have a project when I receive the opening in dwg solid elements, how could I make the openings?
Hrm not quite sure, I've only done it using Revit so far. The 'BiMorph Nodes' package has some nodes for getting dwg geometry, maybe try these out and see if you can get solid geometry from them.
Hi, it's really great, any way can place the opening family in link file (arch), because usually mep engineers cannot direct change the arch model. thank you very much!
Yes as I mention at the end one way the workflow can be adjusted is to read linked elements for live walls. It's a trickier script, but possible using linked element detection and/or the bimorph package.
Is there a way we can support you via youtube for this content - great stuff!
Just share it with anyone it may help, I do well via my business and job so this is all on the side/for fun for me! Thanks though 😀
@@AussieBIMGuruwell I do have a specific challenge for you that I would pay you for, what is your email?
very awesome tutorial ^^ but is this possible if the wall is in a linked file? thank you very much ^^
Yes it would, it's a slightly different workflow though, you would need to be in the model with the wall(s), then select the elements from the linked model instead. There is a great node in the springnodes package called 'SelectLinkedElements' which can achieve this.
@@AussieBIMGuru thank you for your reply... i will surely try this method ^^
@@vrbaac1641 have you made it work? how?
Gavin,
First of all, amazing stuff, thanks for the tutorial! One problem I am encountering is that my family instances are getting mismatched. When I run Dynamo Player a second time (after refresh and new selection), my small pipe is getting the large opening and my large pipe is getting the tiny opening. To clarify, I believe the issue is residual data leftover from the previous run. Is there any way to clear/regenerate those data each time Dynamo is run?
This may be due to element bindings, which are an issue until 2022 where they added a 'flush bindings' tool. Usually this needs any node which creates an element to be replaced anew for the final script. It's a really annoying feature (in my opinion a useless bug).
Great video, but I'm having trouble finding "Springs.HoestedInstanceByPoints" and "Element set parameter by name". I'm running Dynamo 2.1.0.7500. Could you help me please ?
I haven't got access to Revit 2020 or Dynamo 2.1 yet unfortunately. I'm surprised set parameter is not available - this is a core function of Dynamo so I would expect it to be present in some form - I suggest searching the library on the left for 'parameter' and see if you spot it or a similar node; maybe they renamed it in Dynamo 2.1.
I've had a look into Springs and in the latest build (203.1.0) it appears this node has been renamed to 'FamilyInstance.ByHostAndPoint'. I assume this node still functions the same way given it's inputs and outputs, but has just been renamed to better align with Revit naming conventions.
@@AussieBIMGuru Yupp!! Springs just renamed that node.
it works. Thanks, Gavin for Sharing. Greate workflow. simple and elegant.
@@himitsudana you're welcome!
You may enjoy this video I made this week also that deals with door openings by linked models;
ruclips.net/video/8Iby7cmT0p4/видео.html
1:15 We also have a third option which is using Void. I want to learn your thoughts about that. Thanks.
Generally voids require inplace massing which is not available to the revit API or dynamo. Wall openings would be the fallback in lieu of windows but require a fairly different approach to mine.
@@AussieBIMGuru Thanks. This graph is fairly useful. If we work around would it be possible to select multiple walls stacked together and create a single or multiple (small depth) window openings.
@@Turamiar most things are possible, comes down to your programming knowledge. Personally i always program this a while at a time so users review the outcome before moving on.
Is it possible to cut opening base on clash report from revit
Yes probably. You would need to take all the clash coordinates out of Navisworks, find the nearest wall and also the size of opening required based on the clashing element.
It would use a similar method to this video for intrepreting the clash report data;
ruclips.net/video/eRzWUCReqkc/видео.html
Hi! at the beginning after list.Flatten in panel object.type instead of a list of object it says :ProtoCore.DSASM.StackValue. can you help me?
Hrm... it's an odd error, usually means the data wasn't compatible or there was a bug in the node. Can you cross check all data before the object type node is able to have a type extracted, then try getting the type of the first index item in the list, then create a new object type node (and reboot revit/dynamo). Check at each step if this fixes it.
Object type is an OOTB node so it should be working... but i have seen odd things before like this.
Also which version of Dynamo/Revit are you using? If below 2.0.3 can you update to this and then try as a last resort.
I have same issue at this point. And I have already updated Dynamo. But still that issue happen.Please help ..
At the List.flattern at bottom result in your video it's null but while I using that I have result with function .
Is that any error?
@@amitprajapati9329 can you email me your script for review?
I have exactly the same issue. With different piping and air handling.
Hello, there is a question to ask, how do you control that point in the family
The placement point is the family origin
@@AussieBIMGuru Then why is there a problem with my placement? I will show you the family I made. If it is convenient for you, you can have a look
I see, in the family you set the origin
Thank you for explaining.
You're welcome Jesse!
hello there, @Aussie BIM Guru I followed your instructions for creating a script, but the intersection of solids from MEP and WALLS geometry shows an empty list. Could you please assist me in resolving this issue? I'm a new Dynamo user.
This workflow only works if the walls are in the same model, im guessing yours are linked. Linked models is a complex workflow, I suggest focusing on fundamentals first if you are a beginner.
Can’t wait to try this workflow on future projects!
Hope it goes well!
Hi Gavin!
First of all thanks to you for all your hard work.
Actually I cannot find "Springs" package, hence "Springs.HostedInstance.ByPoint" node.
Can you guide me to what am I doing wrong?
I'm using Dynamo 2.1.0.7500.
Regards,
Try searching for spring or spring nodes, it was there last time i checked in package manager.
@@AussieBIMGuru Hey! Thanks for quick reply.
I think we have a newer version of the node named "FamilyInstance.ByHostAndPoint", which is similar, just found it.
Anyway, cheers!
Hi, I have a question. Could you tell me how to use dynamo to make mechanical and electrical machines
Dynamo is unable to make families, rather it can set type values or place family instances from a pre-made family.
There's a thread here discussing one method to place mechanical units;
forum.dynamobim.com/t/using-dynamo-to-place-mechanical-families/7021/12
Check out the 'MEPOver' package in Dynamo which has various nodes for creating duct/tray/pipe runs by line and points I believe.
Also check this out;
www.bim42.com/2016/04/using-dynamo-for-mep-design-part-2/
@@AussieBIMGuru Thank you very much. I have to study it
hii, in my case not showing circular or rectangular opening at family types.any idea how to solve?
You need these families in the model to be able to select them. I have them on my github.
Great stuff ! Thanks a lot !
Thanks Marwan!
Hei
I wanted to use your dynamo script but unfortunally it sais its broken. When i want to build it by myself i have the error that there's no solid element after the list flatten. Is there a solution to fix this?
It depends on the element you are clashing. The script works for most elements, but the element needs solid geometry to be filtered and isiolated first.
The script aims to show a technique people can explore and adjust further to suit their workflows rather than be a one size fits all solution.
@@AussieBIMGuru i've tested the file with different types. In the list flatten there's only a function. Is it possible to get the center point in a other work around?
@@Crimsii not that comes to mind unfortunately, well no simple ways at least!
Hi Gavin. Nice script. it works with me but i put some modifying to work with a linked mep file and everything is fine only if i select a single wall but when i change the selection to select all walls in a level for example, it creates all the openings in one wall only. i hope you can help
To do many walls is a much more complex script and list structure, and not one i have developed yet personally. Maybe get as far as you can and consult the forums where unsure.
@@AussieBIMGuru thanks for the quick reply. i will try to find it out
Hi Gavin,
I need your help in dynamo mate please. I am working with structural shop drawings for concrete panels in Perth.
3 months ago I did my dynamo script to add bottom grout tube and was working perfectly but today I got an error saying "no nodes are loaded" in the familyinstant-by face& point!!
Could you please help me out.
Thanks mate
Hey there Ahmad!
I believe there are often issues with these nodes. The issue is either a bug in the ootb nodes or they are custom nodes with missing package
I would add archilab, clockwork and springnodes packages and see if that helps. They all have nodes that do these functions - if it isnt resolved by this try using their version of these nodes instead anyway
See a thread here with similar issue/solution: forum.dynamobim.com/t/familyinstance-byface/5993
@@AussieBIMGuru thanks Gavin, but I am not professional in Dynamo, honestly speaking I didn't understand how i can resolve it from you answer! I really appreciate mate if you get time to help m.
if you want i can send you my script?
@@ahmadsaid8594 unfortunately i am on holidays and changing jobs next year so have no access to dynamo until february. Suggest hitting up the dynamp forums in the meantime; lots of helpful people there.
Also check lesson 1 of my dynamo series; i cover how to find/install packages there.
@@AussieBIMGuru Good Luck Gavin and Thanks a lot mate.
@@ahmadsaid8594 you're welcome. If it's still an issue in february reach out and I can help - but hopefully someone can help before then :)
Amazing work! GJ
Does it work for MEP links?
Thanks Dusan, this workflow doesn't support links, however with a few adjustments to the front of the script it can. Linked element geometry can be obtained using a clash check vs the selected wall from Bimorph nodes package, then carried forward from there. I"ll create a video at a later date to show how this is done!
@@AussieBIMGuru I have done a workaround to get the location from revit links, as you said. But, in my worflow, I also need to create penetrations on floors (structural foundations, e.g.). You have any advice of how to do this?
@@guilhermealmeida2650 check out the springs package. It can generate both shaft openings and floor openings by floor/curves.
@@AussieBIMGuru I will see that and give you a feedback.
Thanks!
@@AussieBIMGuru Hello again.
I got it. As my workflow deal just with links, I have build a family based on floor and used the same node used on video to put the family instance. I have used the solid centroid as the point and the floor as host.
thank you for the time!
Where can I download the script with fill packages? Please help me some one
Via my github;
github.com/aussieBIMguru
First of all I would like to thank you for teaching a Dynamo online.
I would like to understand the how you customise the node i.e. springs & zebra, & what are the nodes u used inside i am trying last 2 days but getting issue while run the Dynamo.
Kindly update me this 2 customise nodes. I send you email with snapshot as well
Replied to the email, hopefully it helps.
It’s work, could you share the windows family?
The openings are on my github;
github.com/aussieBIMguru
it doesn't work for me, for pipes in (object.type) (Protocore.DSASM.StackValue), not a solid you did, how can I fix it?
I believe some elements get geometry from medium detail level in dynamo. Try the element.geometry+ node from clockwork package.
@@AussieBIMGuru know ok, for the wall get location, form which package?
@@alimustafa3885 this should be a node in Dynamo by default. Search for Element.GetLocation (or under the Revit > Element section of the library).
21:06 can we use this script if Link file is loaded and we have to create openings in structure working Model. Please let me know
Yes it is possible but you would need to select linked elements and might need to account for the link transform.
Hi love this video! Where does the set parameter by name come from?
Out of the box node!
@@AussieBIMGuru Thank you! Would you mind sharing the sleeve families?
@YoelHonig-on1ur you can find them in the Revit repo on the Aussie bim guru github.
@@AussieBIMGuru Thank you!
Just follow the process and edit the window family. I cover the video tutorial by @BIMGURU. you can watch it on my channel or do some cover yourself.
I encourage to share your scripts if you cover others. I use github usually for this myself.
With your permission I will.thanks
How can i download this file ?
From my github.
@@AussieBIMGuru hey, yes went to the GitHub but don’t have the option to download
@@dillonjohnston512 watch this, it shows how;
ruclips.net/video/Rr6pVUa5Wc4/видео.html
@@AussieBIMGuru okay thanks will watch it now.
Hey, Thanks for that really Appreciate that. It is funny the link in your video gave me the option to download which I didn't have before. Also Video idea for (Ask your audience to send in what they did with your scripts, hopefully giving some more insight what people can do withthem ?)
I saw that the height and width parameters are of istance, but in windows family is type and built parameter. they are not editable as an instance. How to do?
Assign the parameter to a dimension, select it and you can tick on/off instance from there.
Thanks for answering me. Forgive me but I did not understand ...
the Height and width parameter are a type parameter and you cannot change them as instance parameters. how do you change them?
Maybe this thread will be easier to understand than my explanation:
forums.autodesk.com/t5/revit-architecture-forum/can-i-make-window-height-width-into-an-instance-parameter/td-p/2001881
@@AussieBIMGuru grazie mille
Thank you! I got it working
Nice work Greg!
Greg, can you share the graph. kashok.cdm@gmail.com
Actually I eedo It again because I lost my script. All is working.Just follow the instruction form BIMGuru. I will do a cover video on this.sent it here.thank to BIMGuru.
Watch my video uploaded already. I tried to redo the tutorial fro BIMGuru it took me 4 hours to sort and work it out.
how about wall opening via LINK revit: please review the dynamo script sir.TQ
Different scenario as you have no host wall to host your opening to. It would need you to adjust the workflow to suit.
@@AussieBIMGuru mostly now used LINK REVIT to current model, eg..MEP (pipe,Duct)..will used time to created wall opening since we have Dynamo.hopefully BIMGuru able to share Wall Opening for MEP Element future.
@@mukriizani7480 it's a very different workflow but I'll add it to my list. It would generate a penetration family versus an actual opening hosted to a wall. This would become an object for the engineer to check against their provided penetrations, or clash detect vs the structurasl walls with opening.
@@AussieBIMGuru when clash was free , then we started to do Shop Drawing which is we need to show Wall Opening MEP, atleast dynamo can used link rvt file, input thk off opening from outside dia. of pipe, then select wall. tht my idea of it but don't know to create dynamo script with it.
@@mukriizani7480 so like a pipe collar with nominal tolerance I assume for coordination through the wall area without reinforcement. I've got a technique, will need a few weeks to prepare a workflow. Keep an eye on the channel for it in future
Thank you.
Youre welcome!
God, can you provide this clan? Thank you
Not sure what you mean? What do you mean by clan
ur absolutely stunning
Haha thanks!
Pls share to me opening Family.
github.com/aussieBIMguru/Revit-Files
Yeah you dont really help with somebody to get started.
This isnt a getting started video. Maybe try out my dynamo learning series playlist. Learn fundamentals before taking on full workflows - dont rush.
I started 2 months ago, to watch Gary's tutorials, some of his class I watched 3-5 times. Every time I see things new and important. 😀
Thanks for the words of support! Can't please everyone, but always great to know it helps some people out there 😀
Another great post! Everything works great until I got to Springs.HostedInstance.ByPoints... this produces a null and I can't figure out why. Its causing an error in Element.SetParamterByName (dereferencing a non-pointer). I'm running Dynamo 2.16.1.2727 if that makes a difference. Can you help at all? 🙂
Hrm I used an older version of Dynamo for this workflow, my best guess is maybe there's an API update that the node isn't able to account for. Double check you're using the latest package version, beyond there dynamo forums can be good for troubleshooting custom packages.
Hi Same issue for me did you find a solution