Please note that the European Forge DevCon in Darmstadt is looming imminent. Furthermore, here are some notes on two recent Revit programming discussions and a pointer to some of the top-rated online classes – DevCon Darmstadt – Personal DevCon invitation from Jim Quanci – Sun direction adjusted for project true north – Reading an RVT file without Revit – The top 100 free online courses...
An important Revit add-in requirement regarding Transport Layer Security (TLS) settings, a short note on accessing PDF image data from an import instance, and an update of the Collada DAE custom exporter for use in Revit 2020 – Required Transport Layer Security (TLS) settings – Accessing imported PDF image data in Revit – Custom Collada exporter updated and fixed...
I have been very busy and motivated indeed setting up a new computer this week. Nonetheless, I was able to keep going full steam with Revit API related issues as well – Setting up a new MacBook – KLH Engineers RevitDeveloperTools snooping tool – Pulling text from annotation tags – Vertex handling – The true meaning of pizza...
A recent internal discussion clarifies Revit element identification in Forge, Navisworks and IFC, some new thoughts on consciousness versus AI, and a couple of topics of personal interest – Two Nice summer mountain hikes – Revit element ids in Forge via Navisworks and IFC – Some aspects of consciousness may be beyond reach of ai – Trees might help against global warming – Holidays ahead...
Today, we present yet another RevitLookup enhancement, a note on an undocumented built-in parameter change and a neat Forge Design Automation for Revit sample app – RevitLookup family types and parameter definition names – Bitmap aspect ratio built-in parameter renamed – DA4R SketchIt demo generates walls...
This post is somewhat overdue and hence rather full of various topics, mainly due to my struggles with my MacBook slowing to an unbearable crawl in the heat last week – Accessing BIM360 cloud links – Retrieve RVT preview thumbnail image with Python – Paolo's Dynamo primer and slide deck compendium – Slow MacBook with kernel_task using several 100% CPU – Failings of the political establishment...
I played around creating a new SectionCutGeo add-in to retrieve the geometry resulting from cutting a family instance in a section view. This was prompted the Revit API discussion forum thread on getting intersection lines from cut in section view – Intersection of section and family instance task – Solution options, geometry elements and view settings – Retrieving curves in the cut plane – Helper methods and external command mainline – Sample model and results – Caveat...
I avoid answering non-confidential questions in private, as I tell everyone who tries to do so.
However, some non-confidential queries still come in via ADN.
Here are two that came in today that might be of general interest and therefore seem worth sharing
– Batch processing Revit families and documents
AsValueString results differ...
We have looked at numerous different approaches to determine wall openings in the past, so it seems pretty hard to nail down, and pretty important to solve.
Now Håvard Leding of Symetri contributed yet another exciting idea which highlights a number of surprising aspects,
demonstrates a further creative use case for
GetDependentElements and expands on his
recent RevitLookup enhancement to retrieve and snoop dependent elements
– Get demolished solid
I recently implemented the IfcSpaceZoneBoundaries add-in to link in and analyse IFC file zones and spaces, then prepared it for use in Forge Design Automation. Now I want to add level information to the CSV export. However, the
DirectShape elements created to represent the rooms and zones have no valid level assigned, so their
Level property is invalid.
Happily, we can easily analyse the BIM and generate the equivalent information ourselves
– Retrieve levels sorted by elevation
– Determine level from element elevation
– Carl Bass and Zoox autonomous vehicles
– Physical reasons to be happy to be alive...
Håvard Leding explores relationships between stable reference of main elements and their sub-elements, related to the intriguing undocumented
ElementId relationships and stable representation magic voodoo.
We need to access the sketch association to the element being sketched.
I printed out stable references for 3 floors, and also the references for each
ModelLine in their 3
Let's highlight a nice interactive didactical Python-based Revit API learning challenge on how to get the bounding box from a Revit element and determine its centre – Cyril's Python HVAC blog – Rotating elements around their centre in Python – Retrieve element and bounding box from picked reference – Use location point instead of bounding box centre – Final working solution...
A solution to a longstanding question on the view template 'include' setting
– Does the Revit API provide any access to the view template 'include' settings defined by the check boxes in this form?
– I can get the 'includes' via
The method returns a list of parameter ids, and you can then use
viewTemplate.Parameters to map them...
I have a whole bunch of exciting overdue topics lined up. Let's start with these – Tailor Your BIM sums room areas with F# – Control view for design option elements with F# – Copy legend view and component from background file – Forge RVT to IFC translation defaults to 2x3 – Latitude and longitude in Revit IFC export – Takeoff creation requires branch duct...
Still at the Forge Accelerator in Rome and looking further into
the Forge Design Automation API for Revit.
Althpough it is not yet available or documented, you can still start preparing your add-in for the day when it comes
– Aspects to consider
– Accessing the Revit
– DB application add-in manifest
– Next steps...
My colleague Zhong John Wu just solved a Revit API discussion forum issue on how to create dimension line for rebar. I took this as a prompt to clean out a bunch of other dimensioning related issues lurking in my infinite and growing to-do list – Create dimension line for rebar – Newly created dimensioning not displayed – Dimension leader remains visible after removal – Dimension wall centreline, centre and faces of core – Grid references for dimensioning...
Some happy news about two new Revit API supporter colleagues, Naveen Kumar and Zhong Wu. They already reached second and third place in the list of top solution providers. Here is also a very relevant recent case handled by Zhong – Top solution authors – Naveen on Naveen – Zhong shifts to AEC – Zhong on Zhong – Deleting a non-shared project parameter...
I am back from a multi-day hike of about 70 km along the Swedish Sörmlandsleden wilderness trail. In the meantime, lots of noteworthy things happened – Revit 2019.1 update and features – Revit Add-Ins using the CEFsharp library – BIM 360 Issues API – Forge Accelerator in Rome and elsewhere – Looking for a Forge development partner – New way to retrieve a parameter id...
I returned from my time off in July. I dived in deep into the Revit API again to resolve an issue retrieving wall profile curves. Here are some other noteworthy items to keep company with my debugging report – CmdWallProfile update – Access to the IUpdater original value – Getting element dimensions from IFC files – Creative workaround to rotate elevation marker in chunks...
Here comes another solution for efficiently compiling add-ins for multiple Revit version targets from one single code base, a note on resources for CAD term databases for consistent terminology translation, and a discussion on accessing custom texture maps in Forge and Revit
– Multi-targeting Revit versions using
– Further enhancement using the
– CAD terminology resources for consistent translation
– Showing a custom Revit texture map in the Forge Viewer...
I am attending the BAM Digital Construction Live event in the UK and presenting on Forge for that domain. Today, I'll share my slide deck from this event and welcome my colleague Xiaodong answering his first Revit API cases – Forge for Digital Construction – Welcome Xiaodong and invoking the Draw Model Line command...
I am participating in a Digital Construction Live event in the UK next week and presenting there on Forge for the BIM domain. Today, let's focus on the real message and some live samples putting it to use: – The real message – BIM collaboration roles and magnitudes – Forge for AEC Sample Live – Connecting Forge with BIM360 Sample...
I am busy in the Revit API discussion forum.
However, you can check the discussions there yourself.
Here and now, I'll mention some different topics – oops, one of them is from there after all
– RST and the Structural Analysis SDK
– Determining the path of a recently exported file
– Driving NavisWorks programmatically via
– The Autodesk assistant Ava and the uncanny valley...
How to export all the Revit data to an external database?
It is very simple to extract all the parameter data.
Let's implement a solution to do so
– Existing sample implementations
– Black box input
– Choices for the output and its structure
– Retrieve parameter values from an element
– FilterCategoryRule versus category filters
– Category description extension method
– Retrieve parameter data for all elements of given categories
– External command
– Sample run results
A discussion with Håvard Dagsvik on the use of
TransmissionData, standalone access to the
BasicFileInfo without the need for a valid Revit API context, and a Revit-independent method replacing
– No document required for
TransmissionData requires a valid Revit API context
GetFamilyXmlData method replacing
– Windows explorer
BasicFileInfo right click utility...
Several questions on filtering for intersecting elements came up recently. It is pretty easy as long as a bounding box can be used. However, the bounding box is generally aligned with the cardinal X, Y and Z axes. If the containing volume of interest is not, too many elements may be selected – Family instances in a diagonal room – Conduits intersecting a junction box – Generate 2D arc from radius, start and end points...
An add-in will often need to retrieve the elements that it just created for further processing. Frequently, the Revit API method used to create them will return their element ids. Sometimes, that is not the case. Now this topic arose again in a couple of cases and brought some other aspects to mind – Using the element lister – Consecutive element ids – Retrieving recently added elements – AEC job openings in Munich and elsewhere...