Let's look at the outer boundaries of both buildings and rooms today – Finding exterior walls continued – Retrieving room bounding elements – Comic Sans is a public good... Read more →
Let's look at the outer boundaries of both buildings and rooms today – Finding exterior walls continued – Retrieving room bounding elements – Comic Sans is a public good... Read more →
Posted on March 10, 2021 at 11:00 in Algorithm, Analysis, Element Relationships, Filters, Geometry | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
I need to come to terms with a split personality. Meanwhile, lots more going on in the Revit API discussion forum – Two Jeremys – Multiple collectors versus multiple filters – RevitLookup handles split region offsets – Python and Dynamo autotag without overlap – Custom errors and preventing changes – Ecological cost of crypto currency and art... Read more →
Posted on February 02, 2021 at 11:00 in Algorithm, DMU, Dynamo, Filters, News, Python, RevitLookup | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
An important insight in using a filtered element collector with a parameter filter, a handy open source OCR tool and a few productivity tips – Parameter filter also checks element type – Capture2Text, a handy OCR tool – Productivity tips... Read more →
Posted on January 29, 2021 at 11:00 in Data Access, Filters, Parameters, Philosophy, Utilities | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
I played around a bit with the NavisWorks API and discovered a nice Revit project modification tracking tool in Dynamo – Filter for detail lines subcategory – Revit project modification tracking – Retrieving all NavisWorks model properties – Node.js best practices – Early history of programming and C... Read more →
Posted on January 06, 2021 at 11:00 in C++, Data Access, Dynamo, Filters, NavisWorks, Node | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
Today let's talk mainly about geometric analysis and performance – High-performance outline optimisation – Simple line-plane intersection – Set base and survey clipped and unclipped – Two German uni BIM360 construction cloud startups – AI-based face streaming hits mainstream... Read more →
A few interesting threads from the Revit API discussion forum and AI news – Revit add-in code signing YAML – Preview control rotates model – Element type predicates – AI ethics... Read more →
Posted on September 01, 2020 at 11:00 in .NET, AI, Filters, Installation, Security, Settings, User Interface | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
Cool topics to wrap up this hot and exciting week – Are you using the derived analytical model? – Pick room in current project or linked model – Determine whether custom export was cancelled – Multi-threading with the single-threaded Revit API – Beginner’s guide to abstraction... Read more →
Two beautiful Revit API solutions to – Set view crop to section box and – Access room boundaries and intersections in linked models... Read more →
Posted on June 26, 2020 at 11:00 in Algorithm, Element Relationships, Filters, Geometry, Links, View | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
Today, let's highlight two view related data access topics – Get ViewSheet from View – Title block data access... Read more →
Posted on February 13, 2020 at 11:00 in Data Access, Element Relationships, Filters, Parameters, View | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
I successfully made it from Switzerland to Paris and the Forge accelerator in spite of the French strikes. My only worry is how to get back again tomorrow. Again, the train I have booked has been cancelled. Meanwhile, let's take a look at – DA4R room support and new samples – Effective filtered element collection... Read more →
Posted on December 10, 2019 at 11:00 in .NET, Accelerator, Algorithm, DA4R, Element Relationships, Filters, Forge, Performance | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
Let me once again highlight two helpful answers in the Revit API discussion forum and the newest pair of Forge Design Automation samples – Get project parameter id from its name – Preventing an updater loop – New Forge and Design Automation samples... Read more →
Posted on October 01, 2019 at 11:00 in DA4R, DMU, Filters, Forge, Parameters, View | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
So many interesting discussions and inspiring solutions in the Revit API discussion forum!
Here are a few, plus one non-forum beginner case
– GetSimilarTypes
filters for curtain wall door symbols
– SnappingService
– what does it actually do?
– Get title block label parameters...
Read more →
Posted on September 04, 2019 at 11:00 in Content, Data Access, Element Relationships, Family, Filters, Parameters | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
Today, let's present a benchmark monitoring filtered element collector performance. First, however, a quick note on a very useful Forge learning resource – Forge learning resource – Filtered element collector benchmark... Read more →
Posted on May 16, 2019 at 11:00 in .NET, DA4R, Filters, Forge, Performance, Win32 | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
The linked file enhancements introduced in the Revit 2014 API obviously need more awareness – Link enhancements – Conversion of geometric references – Tagging a linked element – Using the stable representation to tag a linked element – List all untagged doors... Read more →
Posted on May 13, 2019 at 11:00 in 2014, Data Access, Element Relationships, Filters, Links | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
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...
Read more →
Posted on May 02, 2019 at 11:00 in Element Creation, Family, Filters, Performance | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
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... Read more →
Posted on April 08, 2019 at 11:00 in .NET, AI, Filters, News, Parameters, Performance, Photo, Python | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
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?
Read more →
Posted on February 06, 2019 at 11:00 in Filters, Performance | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
Today, I discuss a simple Revit API getting started question from StackOverflow, a new Forge blog and a request for feedback on the keynote manager beta – Retrieving a wall type for creating a wall – CAD Becker Forge blog – pyRevit keynote manager beta... Read more →
Posted on January 08, 2019 at 11:00 in Filters, Forge, Getting Started, Python | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
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... Read more →
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... Read more →
I remain busy, mainly in the Revit API discussion forum. Here are three recent samples dealing with pretty generic questions – Efficiency and elegance in simple code – Pushing wall type to doors... Read more →
Posted on November 27, 2018 at 11:00 in Algorithm, Data Access, Filters, Parameters | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
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
– Using ReferenceIntersector
to place lighting fixture on ceiling face
– Reformat stable representation string for dimensioning
– Deleting unnamed non-hosting reference planes updated...
Read more →
Posted on September 04, 2018 at 11:00 in 2019, Algorithm, Climbing, Deletion, Dimensioning, Element Relationships, Family, Filters, Geometry, Update | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
Today, let's revisit the topic of filtering for a parameter value, and mention the updated Forge tutorials – Learning Forge tutorials – Filtering for a specific parameter value – Filtered element collector optimisation... Read more →
Posted on June 01, 2018 at 11:00 in Algorithm, Data Access, Filters, Forge, Getting Started, Parameters, Performance | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
Today, we revisit the interesting and generic question on retrieving all exterior walls. That may be easy in a perfect and complete model. However, it raises some challenges in an incomplete BIM – Retrieving all exterior walls – Several possible approaches – Using a computational geometry approach – Manually adding the huge surrounding room – Encapsulate transactions and roll back instead of deleting – Determining model extents via wall bounding box – Implementing the huge surrounding room approach – Retrieving family instances satisfying a filter rule... Read more →
Posted on May 24, 2018 at 11:00 in Algorithm, Filters, Geometry, Transaction | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
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 Execute
mainline
– Sample run results
– Download...
Read more →
Posted on May 17, 2018 at 11:00 in Data Access, Export, Filters, Labs, Parameters, SDK Samples | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
Exciting news from Russia and some mundane updates on other repetitive topics – Driving Revit from a modeless context via a WCF service – Room walls' directions – Retrieving all exterior walls – Getting and setting a shared parameter value... Read more →
Posted on May 14, 2018 at 11:00 in .NET, Algorithm, Data Access, Events, External, Filters, Idling, Migration, Modeless, Parameters, SDK Samples, Server, WCF | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
@CaptainDan raised a very pertinent question in
the discussion forum on using FilterCategoryRule
in the Revit API that
led to some discussion and clarification with the development team:
I have three questions regarding the filter rule represented by this class...
Read more →
Posted on May 08, 2018 at 11:00 in 2014, Data Access, Filters | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
This is pretty obvious, once you think about it, and apparently worth pointing out anyway:
The outline defining a bounding box filter is always aligned with the cardinal axes
– Rotating Min
and Max
distorts the box
– Rotate target elements or use a solid filter...
Read more →
We recently discussed filtering for intersecting elements. Here is a closely related issue with an additional twist – Determining elements intersecting mass in a linked file – Coding suggestions and transformations – Solution by applying transformations... Read more →
Posted on April 03, 2018 at 11:00 in Algorithm, Element Relationships, Filters, Geometry, Links, VB | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
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... Read more →
Posted on March 06, 2018 at 11:00 in Algorithm, Data Access, Element Creation, Family, Filters, Geometry, Performance | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
Konrads Samulis shared a very nice solution to retrieve the crop box for a given view using a highly efficient parameter filter in
his comment on rotating a plan view.
In digging up this old thread, I found something quite curious in the API in 18.1, that I'm not sure was there before.
The method of using a temporary transaction (with rollback) to find the element id of the crop box was taking a very long time on a large model, so I did a bit of digging to see how I could improve it.
I noticed that in the built-in parameter ID_PARAM
of the crop box contains the element id of the view it's in.
E.g., the crop box 'points' to the id of the view it is in using ID_PARAM
...
Read more →
Posted on February 01, 2018 at 11:00 in Dynamo, Element Relationships, Filters, Performance, View | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
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 yield
operator
– Extract their horizontal outline contours using an ExtrusionAnalyzer
– Create walls along each contour curve segment
– Place a door family instance at the midpoint of each wall...
Read more →
Posted on November 30, 2017 at 11:00 in .NET, Algorithm, Element Creation, Family, Filters, Geometry, Parameters | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
One topic that keeps cropping up is how to purge different kinds of Revit database elements – Purge – Detecting empty views – JavaScript debugging tips – Collection from the past... Read more →
Posted on November 09, 2017 at 11:00 in Audio, Deletion, Filters, JavaScript, View | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
A quick geometrical question on retrieving geometry from a basic wall being used as a panel in a curtain wall.
I am struggling to retrieve the geometry data from a curtain wall that contains a Basic wall in one of the curtain wall panels. My example curtain wall has two panels. With one of the panels, a basic wall type is associated. I need to get the geometry data (i.e., the faces) for the entire curtain wall. When I reach the second panel in my code, the SymbolGeometry
contains zero objects, so my code cannot retrieve any geometry for it...
Read more →
Posted on October 25, 2017 at 11:00 in Algorithm, Data Access, Element Relationships, Filters, Geometry | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
Alexander Ignatovich answered several interesting questions in the Revit API discussion forum
– The ExtentElem
and duplicating legend components
– Obtaining generic model square face references for dimensioning
– Preparing family with reference planes for dimensioning
– Creating a line perpendicular to another...
Read more →
Posted on September 12, 2017 at 11:00 in 2018, Dimensioning, Family, Filters, Geometry | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
Here is another brilliant and super succinct solution provided by Fair59, answering the Revit API discussion forum thread on how to get cutting void instances in the floor using the HostObject
FindInserts
method – Question: I have a floor on which a family instance is inserted on the face of the floor (the instance host is also the floor). I checked in the family the "Cut with Void When Loaded" parameter, so that the void is created in the floor. Now, I want to retrieve all the instances that create voids in the floor...
Read more →
Posted on June 23, 2017 at 11:00 in Data Access, Element Relationships, Family, Filters, Geometry | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
Minho re-opened the Revit API discussion forum thread on getting the ElementId of all visible entities in a viewport, providing a good opportunity to mention Colin Stark's answer to the StackOverflow thread on determining whether a FamilyInstance is visible in a View. Question: I am looking for code to get the ElementIds of all entities inside a viewport. A viewport is a region of a big view plan... Read more →
Posted on May 29, 2017 at 11:00 in Algorithm, Element Relationships, Filters, Performance, View | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
I am officially taking time off right now, but still jumping in here and there anyway, e.g. in an urgent case to reduce the RVT model file size before passing it into the Forge translator – RvtForgify – Forge read-write – Forge in an Enterprise Service Bus... Read more →
Blogging despite having already exceeded my work quota for the week, but there is so much to share – ForgeFader user interface – RevitLookup builds – Purging types, families and materials – Retrieving all family instances in a room... Read more →
Posted on April 06, 2017 at 11:00 in Algorithm, Deletion, Element Relationships, Events, Family, Filters, Forge, Material, RevitLookup, Threejs, User Interface, Viewer | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
I implemented a neat new little sample add-in, RvtFader, that calculates and displays signal attenuation caused by distance and obstacles, specifically walls. It uses two very interesting pieces of Revit API functionality – AVF, the Analysis Visualisation Framework, for displaying graphical data in a transient manner directly in the BIM – The ReferenceIntersector ray tracing functionality to detect walls and other obstacles between two points. In the course of implementing the AVF part of things, I also resuscitated my trusty old RevitWebcam add-in – RevitWebcam – RvtFader – Task – Implementation – Further Reading... Read more →
I ran the first query on the collection of tbc blog posts imported into Elasticsearch to experiment for the question answering system Q4R4 Question Answering for Revit API and installed the elasticsearch-head web front end to better explore and understand my local Elasticsearch cluster – Elasticsearch text field mapping – Elasticsearch-head web front end – More RevitLookup updates – Get area scheme from an area... Read more →
Posted on March 17, 2017 at 11:00 in cURL, Elasticsearch, Filters, Parameters, Q4R4, RevitLookup | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
A lot of interesting solutions were shared in the Revit API discussion forum and private email messages during my absence last week, and several exciting events are looming – Forge Accelerator in Gothenburg – AEC Hackathon in Munich – Autodesk University in London – Retrieve and map texture UV coordinates exporting geometry and material – Collect all rooms on a given level... Read more →
Posted on March 14, 2017 at 11:00 in Accelerator, AU, Export, Filters, Forge, Geometry, Hackathon, Material | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
Happy New Year of the Rooster!
The Spring Festival is underway celebrating the Chinese New Year.
Meanwhile, we continue our usual ongoing celebration of exciting Revit API news items
– PyRevit dynamic cs
script loader
– Selecting all physical elements in model
– Vertical TextNote
alignment...
Read more →
Posted on January 24, 2017 at 11:00 in .NET, Filters, Python | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
The topic of how to determine all views in which a given element is visible has been discussed several times on the past, and a couple of viable solutions have been suggested.
However, for large projects, performance becomes an issue.
This question was raised again by Abba Lustgarten and Erik Eriksson in the Revit API discussion forum thread on finding views in which an element is visible (by geometry or actual visibility), with Erik sharing a View
extension method IntersectsBoundingBox
that helps alleviate the performance impact...
Read more →
Posted on December 07, 2016 at 11:00 in Algorithm, Element Relationships, Filters, Geometry, Photo, View | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
I already created a starting point for the new roomedit3d incarnation last week, in its own repository. This week, I agreed with Philippe to retain the new project in an own branch within the Forge boilerplate code sample collection. Hopefully, that will simplify keeping my BIM sample synchronised with any future updates make to that. Now I need to get started implementing and testing the actual viewer extension functionality itself. My main topic today is something different and purely Revit API oriented, besides the next Forge session – Flipping a section view – Forge webinar series... Read more →
Posted on September 26, 2016 at 11:00 in 360, Accelerator, Cloud, Events, Filters, Forge, Getting Started, Hackathon, View, Viewer | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
I am back from a very relaxing vacation. I did next to nothing, and that felt fine. Meanwhile, obviously, lots of important and exciting Forge community and Revit API related happenings
– PyRevit Blog
– Forge DevCon 2016 material and 2017 dates
– Forge forums closing in favour of StackOverflow
– Forge Accelerator in Munich
– Bounding Box ExpandToContain
Extension Methods
– Bounding Box and Lower Left Corner of Rooms
– Bounding Box of Selected Elements or Entire Model
– Setting 3D section box to selected elements' extents...
Read more →
Posted on August 15, 2016 at 11:00 in Accelerator, Events, Filters, Forge, Geometry, Python, View | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
While preparing for the Forge DevCon in SF and the Athens Forge meetup and web server workshop at The Cube Athens, I also happened to hear about the solution to the question raised by Chema in the Revit API discussion forum thread on deleting an area in a drafting view – I need to delete some elements (detail items) in a given area of my drafting view... Read more →
I want to continue working on the TrackChangesCloud project asap. So far, it only consists of the Revit add-in to determine and list the changes made to the BIM. The interesting part will be to store the results in a cloud database for analysis and reporting. A prerequisite for that is a reliable way to identify Revit project documents. I already explored that topic when starting to implement the FireRatingCloud sample... Read more →
Posted on April 11, 2016 at 11:00 in Data Access, Element Creation, Filters, Storage | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
A couple of interesting Revit API issues were resolved during my recent absence. Let's start with this question raised by Miroslav Schonauer and resolved by Diane Christoforo: Using the terminology as shown in Schedules, I need to report all 'Not Placed', 'Redundant' and 'Not Enclosed' rooms... Read more →
Posted on April 04, 2016 at 11:00 in Algorithm, Data Access, Filters | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API
Trying to keep track of the overwhelming information flow provided by the numerous discussions on the Revit API discussion forum is impossible. Here are two little titbits from the past few days – Basic Revit API and SDK Access, Online and Offline – Filtering for Elements Intersecting a View Section Box... Read more →
Posted on March 01, 2016 at 11:00 in Filters, Geometry, Getting Started, Performance, SDK Samples, View | Permalink | 0 Comments
Tags: akn_include, Jeremy Tammik, Revit API