Today we pick up two recent MEP related discussions, on creating a new pipe connector for a hydraulic fitting family and on automatic pipe system routing, and a couple of other odd items
– The names they are a-changin
– Getting a
– Auto-routing a pipe system between plumbing fixtures
– Handling dialogue and failure messages
– Retrieving a geometry reference...
Getting started material and questions galore. Please search before asking, and work through the available material before trying to shoot yourself in your feet, knees, and elsewhere – Marko's plugin development playlist – Overview – Table of contents – Getting started with an API script – Getting started with a macro – OBJ mesh import with materials – 2D Booleans in the Revit API...
Here is a last-minute announcement that I will be attending the Swissbau Basel on Wednesday, a quick hint to answer a support case that just came in today, a forum thread issue, and a pointer to a drum solo – Attending Swissbau Basel on Wednesday – Comparing families using part atoms – Maximum area rectangle in polygon – Neil Peart drum solo...
Happy New Year to the Revit add-in developer community!
My main holiday project was the implementation of an external command to determine the 2D plan view outer boundary of a room in the XY plane, including all its bounding elements' geometry
– How to generate a 2D polygon representing the birds-eye view of an element
CmdExtrusionAnalyzer element outline using
Cmd2dBoolean element outline using 2D Booleans
CmdRoomOuterOutline outer room outline using 2D Booleans...
An inconclusive struggle to use
CurveLoop.CreateViaOffset leads us once again to thank the powers that be for the integer-based 2D Boolean Clipper library, and some thoughts on project dashboards
– Extracting data for project dashboard
– Specifying a list of offsets to
– Alternatives to determine room outline including surrounding walls...
Two little hints on Forge Design Automation for Revit or DA4R issues, projecting a curve onto a planar surface and an impressive list of add-in video samples – DA4R supports FBX and IFC – DA4R wrong user – Projecting curves onto a plane – Revit add-in versus Dynamo zero-touch node – Revit add-in sample videos...
Let's highlight another class from BILTNZ and a personal invitation to the upcoming DevCon in Las Vegas – Invitation to Forge DevCon in Las Vegas – Visual Programming in Infrastructure – Class description – Table of contents – Placing an instance along an edge – Most popular programming languages 1965-2019...
My work on setting up a new PC is nearing completion.
There is also a need to clarify the use of the
– The unbounded
– Making use of the unbounded face intersection
– Rectangular face intersection ideas
– Copy as HTML update
– Visual Studio Revit add-in wizard update...
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...
I travelled home from the Barcelona Forge accelerator and continued working on the room volume exporter. I now implemented support for glTF, the GL Transmission Format. A few more little items to wrap up the Barcelona topic – Kean Walmsley's report on this year's Forge Accelerator in Barcelona – My two favourite restaurants in Poblenou...
I explored three main topics here at the Forge accelerator
– Room closed shell solid visibility in the Forge viewer
– Rebar simplification: replace rebar elements with simplified solids or model curves
– Today, I'll dive deeper into the first
– IFC exporter utility adds new built-in parameter
– Barcelona Forge accelerator
– Room closed shell in the Forge viewer
– Triangulate the solid face by face
– Triangulate entire solid
– Tessellation accuracy control documentation error...
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...
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...
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
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...
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
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...
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...
Intersecting elements has always been a hot topic, cf. various previous discussions on 3D Booleans, cutting and joining elements; intersecting with elements in a linked file is even more challenging. Happily, the Revit API provides tools to support that as well – Intersecting linked elements with current project ones – Retrieving rebars intersecting a structural element...
I'll start this week with several solutions from the Revit API discussion forum and elsewhere, especially two different approaches to create rotated rebar stirrups – Embedded tooltip icon resource – Revit 2019 tooltip videos are MP4 – How to read and write bolt, plate and weld – Creating rotated rebar stirrups...
The Forge accelerator in Rome is winding down with the demonstrations of what was achieved being recorded as I write. An interesting conversation I had at the celebratory dinner last night gave me an idea for a solution to a longstanding question on family tampering protection – Roma accelerator group photo – Protecting a family from tampering – Implementing a canonical key for geometrical objects...
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...
We already looked at deleting unnamed non-hosting reference planes back in 2012 and 2014.
Some things have changed since then, and the old code requires fixing and updating.
Other interesting topics also want to be mentioned
– Embodyment workshop
– Bös Fulen mountain hike
ReferenceIntersector to place lighting fixture on ceiling face
– Reformat stable representation string for dimensioning
– Deleting unnamed non-hosting reference planes updated...
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...
I am back from my July vacation. As planned, I visited the Buddhist monastery Plum Village near Bordeaux. Here are some personal notes from my experiences there, followed by a Revit API related issue that just cropped up – Plum Village and its visitors – Mindfulness and relaxation – My struggle with the smile – Mindful watering of seeds – Line intersection with topography surface...