Here are this week's interesting items I want to share with you – Map Forge Viewer camera settings back to Revit – Project Quantum becomes Plasma – Mikako's DA4R overview – AI is affecting human game strategies – AI can convert speech to gesture – Barcelona Forge accelerator – Open positions at Autodesk...
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...
Yesterday, I implemented a new add-in, RoomVolumeDirectShape, that creates
DirectShape elements representing the volumes of all the rooms
– Request to display room volumes in Forge SVF file
– RoomVolumeDirectShape functionality
– Retrieving all element properties
– Converting a .NET dictionary to JSON
– Complete external command class
– Sample model and results
– Challenges encountered underway
– Cherry BIM Services
– On the value of the "Loss Method" property
– AI-generated talking head models...
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...
As usual, I am over-active in the Revit API discussion forum, so you can see most of what I have been up to right there.
Here and now, I'll highlight one of those threads and clarify how to access the Revit 2019 Precast API
– Structural Precast API
IOpenFromCloudCallback and the
The pyRevit rapid application development environment can be used for the entire add-in lifecycle, supporting rapid debugging, testing and deployment as well. I successfully implemented invoking an external command defined in a stand-alone Revit plugin assembly from pyRevit! It's proving extremely useful...
New Autodesk show reels, a solution to the lack of an add-in manager in the Revit 2020 SDK, an update for the SpatialElementGeometryCalculator and an interesting observation on English spelling – 2019 Autodesk show reels – The Add-In Manager for Revit 2019 still works – Spatial element geometry calculator update – English spelling...
Yet another eagerly awaited update for the Revit 2020 API, a couple of interesting Revit API discussion forum threads, and some thoughts on how AI might affect and be used in an architectural context
– RevitApiDocs updated with the Revit 2020 API
– More room boundary segments than expected
– How to get width and height of a
– AI and architecture...
I am probably doomed to spend the rest of my life telling people not to unnecessarily apply
ToList to a filtered element collector.
It happened several times again today answering questions in the Revit API discussion forum
– Don't trust the family instance location point
– Searching by name for element type and text note type
– Searching using a negated category filter...
Continuing the update of my development environment for Revit 2020, I now turn to the Visual Studio Revit add-in wizards. I'll also highlight a couple of recent interesting AEC related job offers, an AI 101 intro, and some really important suggestions on how to ask a question well – C# and VB Visual Studio add-in wizards for Revit 2020 – How to ask a question well – Open Autodesk AEC related positions – AI for all...
Question: What can we do with the new Revit 2020 API features? Well, just like most of the existing functionality, the enhancements and some typical yet simple use cases for them are demonstrated by the updated SDK samples. Revit 2020 sports five brand new SDK samples – AttachedDetailGroup – CreateTrianglesTopography – Custom2DExporter – PathOfTravel – ViewTemplateCreation – This list also highlights some the most exciting areas of enhancement...
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...
Still getting up to speed with Revit 2020 and my new virtual machine that I set up for it...
First, however, an interesting adaptation of RvtSamples to run in zero document state
– RvtSamples adapted for zero document state
– Migrating The Building Coder samples to Revit 2020
– Installing PowerTools Copy HTML Markup
PostCommand to close document...
The Revit 2020 API includes exciting enhancements for add-in developers, including numerous developer wishes and requests that have now been explicitly addressed – Information sources – Installation and migration from previous versions – What's new in previous versions – Detailed TOC of major changes and renovations – API Changes – API Additions...
The post on What's New in the Revit 2020 API is overdue... for the time being, of course, you can refer to the documentation included with the Revit 2020 SDK, either Revit Platform API Changes and Additions.docx or the corresponding section in the help file
I promise you there is some really juicy stuff in there!
Here are some other quick notes as an Easter present for you
– RevitLookup for Revit 2020
– Revit 2020 SDK posted
– Generative Design with Philippe Starck...
Revit 2020 has been released, and we go through the same procedure as every year, looking at the DevDays online presentations highlighting the API news, getting the system requirements set up, installing, compiling the Revit SDK samples and setting up RvtSamples to load them – Revit 2020 first customer shipment – Revit 2020 DevDays Online – Setting up Windows 10 – Installing Revit 2020 and the new SDK – Visual Studio and .NET 4.7 – Compiling the Revit 2020 SDK samples – Setting up RvtSamples...
Today, yet another introduction to Forge, a simple issue of setting the level of a floor element, and the much more complex one of gaining freedom and total independence via IPC – What is Forge? – Changing the level of a floor – Entanglement can be hell – CefSharp entanglement – Disentanglement and independence via IPC – Beer-ware license...
Today I discuss (once again) an important performance aspect of Revit element filtering, a Python script for tagging JPEG images with EXIF data, prompted by a recent ski tour, and three other interesting topics that caught my eye – Slow, slower still and faster filtering – Python JPEG EXIT filename tagging – TED talks and population growth – Objective reality does not exist – Artificial intelligence judge...
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
Håvard Leding of Symetri raises another exciting topic on using the the
GetDependentElements method to retrieve and snoop dependent elements, e.g., the sketch of a floor and the model lines defining the floor boundary in that sketch
– Snoop dependent elements
– RevitLookup update...
Several people have recently asked how to get started with Forge Design Automation for Revit or DA4R. I will not get into any nitty-gritty details, since they are well covered by the Forge Design Automation API documentation, which includes DA4R tutorials and samples. Here are examples of two conversations on planning first steps for DA4R solutions – Structural analysis with DA4R – Implementing a DA4R RVT round trip...
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...
Same procedure as every year:
eliminate all deprecated Revit API usage warnings before even thinking of migrating to the next major release.
First, however, two other technical news items
– Self-teaching AI surpasses human knowledge
– CAD trends 2019
– Deprecated API usage warnings
– Deprecated material asset accessors
– Update with zero compilation warnings...
As usual, I have been much too active in the Revit API discussion forum recently and worked too little for my taste here in the blog. Here are some of the recent items that I want to share plus a few pictures from my latest mountain outing – Marat's shapka ushanka and Balmer's Graetli – Naveen is a top solution author now – Revit et BIM en Français – Tree view performance optimisation – Underture...
A demonstration of using the
NewSweep method was very kindly provided in yet another helpful answer by Frank @Fair59 Aarssen to the Revit API discussion forum thread on how to create a sweep with multiple closed loops in profile.
Let me also highlight an interesting TED talk on the topic of poverty versus universal basic income
– Creating a sweep with multiple closed loops
– Poverty versus universal basic income...
Some interesting settings are stored in and can be modified by editing the Revit ini file. Peter @pgerz pointed out yet another possibility in his answer to the Revit API discussion forum thread on adding a project template to 'New Project' via API. Question: I noticed the UI method for adding a project template to the 'New Project' dialog on the Start Window by going to Options > File Locations and clicking the little plus symbol...
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
I just discovered an interesting and not completely obvious aspect of using a filtered element collector in
the Revit API discussion forum thread on aborting a long running filtered element collector.
Question: I have really large models where I use an
ElementIntersectsElementFilter that can take a long time to process, and sometimes I want to abort it in a graceful way. Is this possible?
Today I discuss the next step in my IfcSpaceZoneBoundaries project, how to prepare a Revit add-in for use in the DA4R or Design Automation for Revit environment and figuring out how to best handle it in the VS solution – Context, add-in functionality and history – Preparing the add-in for DA4R – Local testing versus live deployment – User defined input arguments for DA4R – Logging of results...
Inundated with interesting topics, let's skim a few topmost ones off
– Passing an add-in custom command line parameters
– Useful methods help verify a
Face is rectangular
– Automate complex family creation
– C++ code extracts 3D line segments from point cloud
– Big data visualisation and storytelling...
Happy New Year! I spent some time during the winter break working on CSV export of room boundaries for a Forge BIM surface classification tool. Ali Asad presented a new Visual Studio WPF MVVM Revit add-in template – Export room boundaries to CSV for Forge surface classification – Visual Studio WPF MVVM Revit add-in template...
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...
Today we discuss a couple of Dynamo considerations, Revit family and element fundamental concepts, and an exception handler required for a custom exporter
– Revit API versus Dynamo for Revit
– Dynamo 2.0.X versus 1.3.3
– Difference between
– Custom exporter
Execute may throw
– Turned on Git LFS...