A search for Revit API related books, a very nice new Revit API starter kit, a richer and much more complex literary AI-related book, and a quick bottleneck steel guitar blues recording not related with any technical topic whatsoever – A very basic book on Revit API – Revit API starter kit – Machines like me – Bottleneck blues guitar...
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...
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...
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...
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...
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...
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...
Let's tackle a 2D fire rating zone intersection task. Actually, it was originally raised a 3D intersection task. Reducing it to 2D makes it much more tractable – 3D solid extrusion creation and intersection task – 2D area intersection task – Jack's sample and description – Soffit subdivision sample code – Cleanup and GitHub repository...
If you are interested in Forge programming, don't miss the upcoming deadline for proposals for the Boston Forge accelerator! Looking at the Revit API, I migrated my sample demonstrating how to enable ribbon items in zero document state to Revit 2019. Let's look at that, and another recurring topic, on loading add-in support DLLs – Migrating the ZeroDocPanel to Revit 2019 – Loading add-in support DLLs – Rome and Boston Forge accelerators...
I updated the Visual Studio Revit C# and VB add-in templates for Revit 2019. They enable you to create a new C# or VB Revit add-in in Visual Studio with one single click on File > New > Project... > Visual Basic/Visual C# > Revit 2019 Addin and define a complete skeleton Revit add-in, ready to immediately compile and run, including an add-in manifest file, external application and external command. Just hit F5 to start debugging; the add-in manifest is installed, Revit launched and the command is immediately available...
Today is The Building Coder's tenth birthday! The first post was a warm welcome on August 22, 2008. Very many thanks to the entire community for all your support, interest, comments and above all numerous contributions over the years! Today, let's pick up the recurring topic of accessing the Revit API from a modeless context...
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...
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...
Apparently, the Revit SDK REX Visual Studio templates are obsolete. Let's fix that problem. Also, two little notes on a C# optimisation trick for math-heavy code, and the current status of the Forge Design Automation API for Revit – Revit Structure 2019 REX Extension SDK Visual Studio Templates – Improve C# Performance Using Struct Instead of Class – Update on the Forge Design Automation API for Revit...
Every time I created a ribbon button, I was faced with the task of creating appropriately scaled icons for it to populate the
PushButton large and small image icon properties
They seem to expect a 32 x 32 and 16 x 16 icon, respectively.
I finally solved that once and for all by implementing a couple of methods to perform automatic bitmap scaling
– BitmapImageToBitmap – convert a
– BitmapToBitmapSource – convert a
Bitmap to a
– ResizeImage – resize an image to the specified width and height
– ScaledIcon – scale down large icon to desired size for Revit ribbon button
– Usage sample – putting them together...
I installed Revit 2019 and compiled the Revit 2019 SDK.
That was quite a struggle
– Installing Revit 2019
– Installing the Revit 2019 SDK
– Installing the .NET Framework 4.7
– Compiling the Revit 2019 SDK samples
– Processor architecture mismatch warnings
– Numerous Revit API assembly reference conflicts
– SampleCommandsSteelElements lacks components
– AppearanceAssetEditing using deprecated API...
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...
Dragos Turmac of the Revit development team solved the Revit API discussion forum questions on contextual help not working from within a command and on F1 help for add-in only by explaining the current best practice to implement online help – Question: I'm trying to add contextual help for all commands (press F1 to go to a location). It's working fine when the tooltip is shown for my commands, but, when the add-in form is open, pressing F1 opens the Autodesk knowledge site for Revit instead...
Александр Пекшев aka Modis @Pekshev submitted a very succinct and useful pull request for RevitLookup that I integrated right away, and provides many other valuable inputs as well – Snoop stable representation of References – Project point on plane correction – Revit export geometry to AutoCAD via XML – RevitExportGeometryToAutocad – Description – Versions – Using – Example...
Question: I am trying to create a swept blend geometry and assign it to a
The initial code threw an exception when calling the
How can I fix this?
Answer: The path parameters assume that they should be normalised or that the curve has a range of parameterisation from 0 to 1...
Alexander Ignatovich shares an exceedingly elegant solution for automatic wall creation, illustrating a number of important concepts and implementing the following functionality very succinctly indeed
– Retrieve all the
cube family instances
– Retrieve their
height parameter value
– Retrieve their solids making use of the .NET
– Extract their horizontal outline contours using an
– Create walls along each contour curve segment
– Place a door family instance at the midpoint of each wall...
I am attending the Forge DevCon conference in Darmstadt, Germany, right now, and putting the final touches to my presentation on Rational BIM programming using Revit and Forge at the European Autodesk University on Wednesday. We discussed several different approaches to retrieve the outer loop of a planar face. Richard Thomas recently shared a possible solution to determine the outer-most EdgeLoop. He now posted a new approach: I found a more straightforward and likely reliable way of getting outer loops of planar faces. This method also allows for faces made up of disjointed parts...
I am back from a nice break in Italy. Next, I am attending the European Autodesk University in Darmstadt, Germany. Meanwhile, solutions for two issues on keeping Revit focused and on top when working with a modeless form, and an important heads-up warning from the Revit development team on a future change coming. We here at Ideate Software are seeing what appears to be Revit add-in ownership issues with Revit's main window. The behavior has changed between Revit 2017 and Revit 2018 for modeless add-ins. For Revit 2018, when a modeless add-in is closed, Revit does not retain is focus; it is pushed behind another application...