{"id":2351,"date":"2025-03-13T10:30:00","date_gmt":"2025-03-13T00:30:00","guid":{"rendered":"https:\/\/digitalbbq.au\/?p=2351"},"modified":"2025-01-27T10:25:29","modified_gmt":"2025-01-27T00:25:29","slug":"cleaning-up-the-mess-automating-the-removal-of-unused-project-parameters-in-revit","status":"publish","type":"post","link":"https:\/\/digitalbbq.au\/index.php\/2025\/03\/13\/cleaning-up-the-mess-automating-the-removal-of-unused-project-parameters-in-revit\/","title":{"rendered":"Cleaning Up the Mess \u2013 Automating the Removal of Unused Project Parameters in Revit"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">I once took over a Revit project that was an absolute mess. The modelling practices were sloppy, content was pulled in from everywhere, and the result was a bloated model filled with hundreds of unused parameters.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There were:<br>\u2705 Parameters from other consultants<br>\u2705 Random project parameters no one could explain<br>\u2705 Parameters from content downloaded online<br>\u2705 Duplicate parameters with the same names but different GUIDs<br>\u2705 ..and parameters from who-knows-where-else.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It was a mess. These weren\u2019t just harmless leftovers; they were slowing down performance, cluttering the parameter list, and making it harder for the team to work efficiently.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">At first, I tried using BIMLink and PlanWorks Tables to identify the empty parameters. While these tools helped spot the issues, they didn\u2019t automate the cleanup. Deleting parameters manually wasn\u2019t an option\u2014I needed a better solution.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So, I wrote my own Revit API script to automatically detect and remove unused project parameters. Here\u2019s how it works:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The script follows these steps:<br>1\ufe0f\u20e3 <strong>Get all project parameters<\/strong> \u2013 It gathers all non-system parameters in the model.<br>2\ufe0f\u20e3 <strong>Check parameter usage<\/strong> \u2013 It iterates through elements in the model, checking if the parameters contain any data.<br>3\ufe0f\u20e3<strong> Identify unused parameters<\/strong> \u2013 If a parameter is completely empty across the project, it\u2019s flagged for removal.<br>4\ufe0f\u20e3 <strong>Delete unused parameters<\/strong> \u2013 Using a Revit transaction, all flagged parameters are deleted automatically.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This solution made it easy to clean up over 400 unnecessary parameters in minutes.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Collecting the Parameters<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">I created the code as a Revit macro, where the core code collects the project parameters within the model.<\/p>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Click to expand source code<\/summary><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ProjectParameterData<\/span>\n<\/span>{\n    <span class=\"hljs-keyword\">public<\/span> Definition Definition = <span class=\"hljs-keyword\">null<\/span>;\n    <span class=\"hljs-keyword\">public<\/span> ElementBinding Binding = <span class=\"hljs-keyword\">null<\/span>;\n    <span class=\"hljs-keyword\">public<\/span> string Name = <span class=\"hljs-keyword\">null<\/span>;\n    <span class=\"hljs-keyword\">public<\/span> bool IsSharedStatusKnown = <span class=\"hljs-keyword\">false<\/span>;\n    <span class=\"hljs-keyword\">public<\/span> bool IsShared = <span class=\"hljs-keyword\">false<\/span>;\n    <span class=\"hljs-keyword\">public<\/span> string GUID = <span class=\"hljs-keyword\">null<\/span>;\n}\n\n<span class=\"hljs-comment\">\/\/ Get all project parameters<\/span>\n<span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">List<\/span>&lt;ProjectParameterData&gt; GetProjectParameterData(Document doc)\n{\n    <span class=\"hljs-keyword\">if<\/span> (doc == <span class=\"hljs-keyword\">null<\/span>)\n        <span class=\"hljs-keyword\">throw<\/span> <span class=\"hljs-keyword\">new<\/span> ArgumentNullException(<span class=\"hljs-string\">\"doc\"<\/span>);\n\n    <span class=\"hljs-keyword\">if<\/span> (doc.IsFamilyDocument)\n        <span class=\"hljs-keyword\">throw<\/span> <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">Exception<\/span>(<span class=\"hljs-string\">\"doc can not be a family document.\"<\/span>);\n\n    <span class=\"hljs-keyword\">List<\/span>&lt;ProjectParameterData&gt; result = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">List<\/span>&lt;ProjectParameterData&gt;();\n\n    BindingMap map = doc.ParameterBindings;\n    DefinitionBindingMapIterator it = map.ForwardIterator();\n    it.Reset();\n\n    <span class=\"hljs-keyword\">while<\/span> (it.MoveNext())\n    {\n        ProjectParameterData newProjectParameterData = <span class=\"hljs-keyword\">new<\/span> ProjectParameterData\n        {\n            Definition = it.Key,\n            Name = it.Key.Name,\n            Binding = it.Current <span class=\"hljs-keyword\">as<\/span> ElementBinding\n        };\n\n        result.Add(newProjectParameterData);\n    }\n\n    <span class=\"hljs-keyword\">return<\/span> result;\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre><\/details>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Checking for Unused Parameters<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Once all project parameters are collected, the script loops through the model to determine if any of them contain actual values.<\/p>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Click to expand source code<\/summary><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">public<\/span> void CheckAndRemoveUnusedParameters()\n{\n    UIDocument uidoc = this.ActiveUIDocument;\n    Document doc = uidoc.Document;\n\n    <span class=\"hljs-keyword\">var<\/span> families = <span class=\"hljs-keyword\">new<\/span> FilteredElementCollector(doc).WhereElementIsNotElementType();\n    <span class=\"hljs-keyword\">List<\/span>&lt;ProjectParameterData&gt; projectParametersData = GetProjectParameterData(doc);\n\n    <span class=\"hljs-keyword\">List<\/span>&lt;string&gt; unusedParams = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">List<\/span>&lt;string&gt;();\n    IList&lt;ElementId&gt; paramsToBeDeleted = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">List<\/span>&lt;ElementId&gt;();\n\n    <span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-keyword\">var<\/span> param in projectParametersData)\n    {\n        bool isUsed = <span class=\"hljs-keyword\">false<\/span>;\n\n        <span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-keyword\">var<\/span> elem in families)\n        {\n            <span class=\"hljs-keyword\">try<\/span>\n            {\n                Parameter p = elem.LookupParameter(param.Name);\n                <span class=\"hljs-keyword\">if<\/span> (p != <span class=\"hljs-keyword\">null<\/span> &amp;&amp; !string.IsNullOrEmpty(p.AsString()))\n                {\n                    isUsed = <span class=\"hljs-keyword\">true<\/span>;\n                    <span class=\"hljs-keyword\">break<\/span>;\n                }\n            }\n            <span class=\"hljs-keyword\">catch<\/span> (<span class=\"hljs-keyword\">Exception<\/span>) { }\n        }\n\n        <span class=\"hljs-keyword\">if<\/span> (!isUsed)\n        {\n            unusedParams.Add(param.Name);\n        }\n    }\n\n    DeleteUnusedParameters(doc, unusedParams);\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre><\/details>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Deleting the Unused Parameters<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">After identifying unused parameters, we need to safely remove them from the project.<\/p>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Click to expand source code<\/summary><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">private<\/span> void DeleteUnusedParameters(Document doc, <span class=\"hljs-keyword\">List<\/span>&lt;string&gt; paramNames)\n{\n    IEnumerable&lt;ParameterElement&gt; allParams = <span class=\"hljs-keyword\">new<\/span> FilteredElementCollector(doc)\n        .WhereElementIsNotElementType()\n        .OfClass(typeof(ParameterElement))\n        .Cast&lt;ParameterElement&gt;();\n\n    IList&lt;ElementId&gt; paramsToDelete = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">List<\/span>&lt;ElementId&gt;();\n\n    <span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-keyword\">var<\/span> param in allParams)\n    {\n        <span class=\"hljs-keyword\">if<\/span> (paramNames.Contains(param.GetDefinition().Name))\n        {\n            paramsToDelete.Add(param.Id);\n        }\n    }\n\n    using (Transaction t = <span class=\"hljs-keyword\">new<\/span> Transaction(doc, <span class=\"hljs-string\">\"Remove Unused Parameters\"<\/span>))\n    {\n        t.Start();\n        <span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-keyword\">var<\/span> paramId in paramsToDelete)\n        {\n            doc.Delete(paramId);\n        }\n        t.Commit();\n    }\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre><\/details>\n\n\n\n<p class=\"wp-block-paragraph\">This script saved me hours of manual work. In one run, it identified and removed all 400+ unused parameters, cleaning up the model and improving performance.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Unused parameters might seem like a small issue, but they add up. They slow down your model, confuse your team, and make it harder to maintain consistency. Automating this process saves time and creates a cleaner, more efficient workflow.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you\u2019re dealing with a messy Revit model, don\u2019t let unused parameters weigh you down. Whether you use this script or build your own, automation can be a game-changer. And if you\u2019re not sure where to start, feel free to adapt the code above, it\u2019s saved me more than once!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I once took over a Revit project that was an absolute mess. The modelling practices were sloppy, content was pulled in from everywhere, and the result was a bloated model filled with hundreds of unused parameters. There were:\u2705 Parameters from other consultants\u2705 Random project parameters no one could explain\u2705 Parameters from content downloaded online\u2705 Duplicate parameters with the same names&#8230;<\/p>\n","protected":false},"author":1,"featured_media":2352,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"Tired of messy Revit models? This script detects and removes unused project parameters, cleaning up your model in minutes.","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_seo_schema_type":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"Ever seen a Revit model accumulate hundreds of unnecessary parameters over time? Here\u2019s a script that automatically detects and removes unused project parameters saving you hours of manual cleanup. #RevitAPI #BIM #Automation","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-2351","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-digital"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/digitalbbq.au\/wp-content\/uploads\/2025\/01\/destroyed-messy-office-desk.jpg","jetpack-related-posts":[{"id":2322,"url":"https:\/\/digitalbbq.au\/index.php\/2025\/02\/13\/automating-metadata-cleanup-in-revit-a-custom-live-updater\/","url_meta":{"origin":2351,"position":0},"title":"Automating Metadata Cleanup in Revit \u2013 A Custom Live Updater","author":"Ryan Lenihan","date":"13 February 2025","format":false,"excerpt":"When working in Revit, copied elements will inherit instance parameter values that should be unique\u2014room numbers, tracking codes, asset IDs, or any other metadata that doesn\u2019t logically carry over. Problem: Copying elements can introduce data inconsistencies if certain instance parameters retain values they shouldn\u2019t. Solution: A Revit API Updater that\u2026","rel":"","context":"In &quot;Digital&quot;","block_context":{"text":"Digital","link":"https:\/\/digitalbbq.au\/index.php\/category\/digital\/"},"img":{"alt_text":"Vintage computer from the seventies representing retro technology and innovation","src":"https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2025\/01\/vintage-computer-from-the-seventies-representing-retro-technology-and-innovation.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2025\/01\/vintage-computer-from-the-seventies-representing-retro-technology-and-innovation.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2025\/01\/vintage-computer-from-the-seventies-representing-retro-technology-and-innovation.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2025\/01\/vintage-computer-from-the-seventies-representing-retro-technology-and-innovation.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2025\/01\/vintage-computer-from-the-seventies-representing-retro-technology-and-innovation.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2025\/01\/vintage-computer-from-the-seventies-representing-retro-technology-and-innovation.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":2672,"url":"https:\/\/digitalbbq.au\/index.php\/2026\/07\/09\/a-short-story-about-how-nested-families-work-when-exported-to-ifc\/","url_meta":{"origin":2351,"position":1},"title":"A Short Story About How Nested Families Work When Exported to Ifc.","author":"Ryan Lenihan","date":"9 July 2026","format":false,"excerpt":"I had a question come through that\u2019ll sound familiar if you\u2019ve ever pushed Revit \u2192 IFC on a live job: Nested families are carrying asset data in Revit, but that data disappears in the IFC. LOI attributes, classification, IDs.. gone. What's going on? This comes up more than it should,\u2026","rel":"","context":"In &quot;How to guides&quot;","block_context":{"text":"How to guides","link":"https:\/\/digitalbbq.au\/index.php\/category\/how-to-guides\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2026\/07\/house-model-on-floor-real-estate-and-housing-aspi-2026-03-25-09-14-22-utc.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2026\/07\/house-model-on-floor-real-estate-and-housing-aspi-2026-03-25-09-14-22-utc.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2026\/07\/house-model-on-floor-real-estate-and-housing-aspi-2026-03-25-09-14-22-utc.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2026\/07\/house-model-on-floor-real-estate-and-housing-aspi-2026-03-25-09-14-22-utc.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2026\/07\/house-model-on-floor-real-estate-and-housing-aspi-2026-03-25-09-14-22-utc.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2026\/07\/house-model-on-floor-real-estate-and-housing-aspi-2026-03-25-09-14-22-utc.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":2403,"url":"https:\/\/digitalbbq.au\/index.php\/2025\/07\/17\/why-your-pipe-fittings-are-missing-materials-in-ifc-exports-and-how-to-fix-it\/","url_meta":{"origin":2351,"position":2},"title":"Your Pipe Fittings Are Grey in IFC? Here&#8217;s Why (And How to Fix It)","author":"Ryan Lenihan","date":"17 July 2025","format":false,"excerpt":"You\u2019ve exported your model to IFC. Pipes look great. Fittings? Grey. Again. What\u2019s going on? This one trips up a lot of teams, because pipe fittings in Revit don\u2019t actually carry system data, even though they look like they do. So when you rely on system-assigned materials for your IFC\u2026","rel":"","context":"In &quot;How to guides&quot;","block_context":{"text":"How to guides","link":"https:\/\/digitalbbq.au\/index.php\/category\/how-to-guides\/"},"img":{"alt_text":"Set of blue PVC pipe fittings isolated on dark background. Blue plastic water pipe. PVC accessories","src":"https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/set-of-blue-pvc-pipe-fittings-isolated-on-dark-background-blue-plastic-water-pipe-pvc-accessories.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/set-of-blue-pvc-pipe-fittings-isolated-on-dark-background-blue-plastic-water-pipe-pvc-accessories.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/set-of-blue-pvc-pipe-fittings-isolated-on-dark-background-blue-plastic-water-pipe-pvc-accessories.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/set-of-blue-pvc-pipe-fittings-isolated-on-dark-background-blue-plastic-water-pipe-pvc-accessories.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/set-of-blue-pvc-pipe-fittings-isolated-on-dark-background-blue-plastic-water-pipe-pvc-accessories.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/set-of-blue-pvc-pipe-fittings-isolated-on-dark-background-blue-plastic-water-pipe-pvc-accessories.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":2686,"url":"https:\/\/digitalbbq.au\/index.php\/2026\/07\/16\/data-on-the-host-data-in-the-ifc-not-so-fast\/","url_meta":{"origin":2351,"position":3},"title":"Data on the Host, Data in the IFC? Not So Fast.","author":"Ryan Lenihan","date":"16 July 2026","format":false,"excerpt":"A few days after the last post, I got handed a model that seemed like it should have worked perfectly. The nested families were already set up as Shared. The IFC export was running. The geometry was coming through. But the asset data? Completely missing. When this happens, it\u2019s easy\u2026","rel":"","context":"In &quot;How to guides&quot;","block_context":{"text":"How to guides","link":"https:\/\/digitalbbq.au\/index.php\/category\/how-to-guides\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2026\/07\/colorful-wooden-toy-blocks-on-wood-floor-2026-01-07-06-18-37-utc.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2026\/07\/colorful-wooden-toy-blocks-on-wood-floor-2026-01-07-06-18-37-utc.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2026\/07\/colorful-wooden-toy-blocks-on-wood-floor-2026-01-07-06-18-37-utc.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2026\/07\/colorful-wooden-toy-blocks-on-wood-floor-2026-01-07-06-18-37-utc.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2026\/07\/colorful-wooden-toy-blocks-on-wood-floor-2026-01-07-06-18-37-utc.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2026\/07\/colorful-wooden-toy-blocks-on-wood-floor-2026-01-07-06-18-37-utc.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":1914,"url":"https:\/\/digitalbbq.au\/index.php\/2024\/04\/04\/delivering-on-metadata-with-custom-configurations-in-the-standardised-data-tool\/","url_meta":{"origin":2351,"position":4},"title":"Delivering on Metadata with Custom Configurations in the Standardised Data Tool","author":"Ryan Lenihan","date":"4 April 2024","format":false,"excerpt":"Metadata management within Building Information Modeling (BIM) deliverables presents a consistent challenge, often stemming from varied factors such as unclear project requirements, the experience level of modelling teams, and the degree of early involvement by BIM professionals in project planning phases. This challenge, however, is not insurmountable. The Standardised Data\u2026","rel":"","context":"In &quot;How to guides&quot;","block_context":{"text":"How to guides","link":"https:\/\/digitalbbq.au\/index.php\/category\/how-to-guides\/"},"img":{"alt_text":"alphabet letter with data word and data icon","src":"https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2024\/04\/alphabet-letter-with-data-word-and-data-icon.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2024\/04\/alphabet-letter-with-data-word-and-data-icon.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2024\/04\/alphabet-letter-with-data-word-and-data-icon.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2024\/04\/alphabet-letter-with-data-word-and-data-icon.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2024\/04\/alphabet-letter-with-data-word-and-data-icon.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2024\/04\/alphabet-letter-with-data-word-and-data-icon.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":2595,"url":"https:\/\/digitalbbq.au\/index.php\/2026\/03\/26\/revit-cloud-model-upgrades-part-3-the-pre-upgrade-checklist-that-actually-prevents-pain\/","url_meta":{"origin":2351,"position":5},"title":"Revit Cloud Model Upgrades Part 3 &#8211; The Pre\u2011Upgrade Checklist That Actually Prevents Pain","author":"Ryan Lenihan","date":"26 March 2026","format":false,"excerpt":"Most upgrade failures don\u2019t happen during the upgrade. They happen six months earlier when everyone was \u201cjust trying to get drawings out the door\u201d. By the time you hit Upgrade, the Revit upgrade process is simply showing you the consequences. This is the checklist I run before pushing a single\u2026","rel":"","context":"In &quot;Digital&quot;","block_context":{"text":"Digital","link":"https:\/\/digitalbbq.au\/index.php\/category\/digital\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2026\/03\/checklist_sm.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2026\/03\/checklist_sm.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2026\/03\/checklist_sm.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2026\/03\/checklist_sm.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2026\/03\/checklist_sm.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2026\/03\/checklist_sm.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/digitalbbq.au\/index.php\/wp-json\/wp\/v2\/posts\/2351","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/digitalbbq.au\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/digitalbbq.au\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/digitalbbq.au\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/digitalbbq.au\/index.php\/wp-json\/wp\/v2\/comments?post=2351"}],"version-history":[{"count":1,"href":"https:\/\/digitalbbq.au\/index.php\/wp-json\/wp\/v2\/posts\/2351\/revisions"}],"predecessor-version":[{"id":2353,"href":"https:\/\/digitalbbq.au\/index.php\/wp-json\/wp\/v2\/posts\/2351\/revisions\/2353"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/digitalbbq.au\/index.php\/wp-json\/wp\/v2\/media\/2352"}],"wp:attachment":[{"href":"https:\/\/digitalbbq.au\/index.php\/wp-json\/wp\/v2\/media?parent=2351"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/digitalbbq.au\/index.php\/wp-json\/wp\/v2\/categories?post=2351"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/digitalbbq.au\/index.php\/wp-json\/wp\/v2\/tags?post=2351"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}