{"id":2403,"date":"2025-07-17T10:30:00","date_gmt":"2025-07-17T00:30:00","guid":{"rendered":"https:\/\/digitalbbq.au\/?p=2403"},"modified":"2025-07-12T11:09:00","modified_gmt":"2025-07-12T01:09:00","slug":"why-your-pipe-fittings-are-missing-materials-in-ifc-exports-and-how-to-fix-it","status":"publish","type":"post","link":"https:\/\/digitalbbq.au\/index.php\/2025\/07\/17\/why-your-pipe-fittings-are-missing-materials-in-ifc-exports-and-how-to-fix-it\/","title":{"rendered":"Your Pipe Fittings Are Grey in IFC? Here&#8217;s Why (And How to Fix It)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">You\u2019ve exported your model to IFC. Pipes look great. Fittings? Grey. Again. What\u2019s going on?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This one trips up a lot of teams, because pipe fittings in Revit don\u2019t actually carry system data, even though they <em>look<\/em> like they do. So when you rely on system-assigned materials for your IFC exports, fittings get left behind.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Revit\u2019s built-in exporter just shrugs and spits out default grey, meanwhile you&#8217;re left scratching your head.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A lot of teams set up their Revit templates so pipe colours are based on system type. They assign an appearance material to each system, and as they model, everything looks right, pipes and fittings included. Even when using filters instead of system materials, fittings appear to match because they inherit the look visually.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The catch? Fittings don\u2019t actually contain system data. You never notice, because in Revit views and on prints, everything looks fine. But filters don\u2019t export, and system materials are the lowest priority in IFC. So when you finally check your IFC file, bam! Grey fittings. And it\u2019s only then you realise something\u2019s gone wrong.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"521\" height=\"490\" data-id=\"2417\" src=\"https:\/\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/Screenshot-2025-07-12-080801.png\" alt=\"\" class=\"wp-image-2417\" srcset=\"https:\/\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/Screenshot-2025-07-12-080801.png 521w, https:\/\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/Screenshot-2025-07-12-080801-300x282.png 300w\" sizes=\"auto, (max-width: 521px) 100vw, 521px\" \/><figcaption class=\"wp-element-caption\">Pipe fittings appearing a different colour<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"547\" height=\"439\" data-id=\"2418\" src=\"https:\/\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/Screenshot-2025-07-12-080745.png\" alt=\"\" class=\"wp-image-2418\" srcset=\"https:\/\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/Screenshot-2025-07-12-080745.png 547w, https:\/\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/Screenshot-2025-07-12-080745-300x241.png 300w\" sizes=\"auto, (max-width: 547px) 100vw, 547px\" \/><figcaption class=\"wp-element-caption\">Pipe fittings matching nicely<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Updating to the latest <a href=\"https:\/\/github.com\/Autodesk\/revit-ifc\/releases\" target=\"_blank\" rel=\"noreferrer noopener\">Revit IFC Exporter <\/a>didn\u2019t resolve the issue. However, Autodesk\u2019s <a href=\"https:\/\/www.autodesk.com\/support\/technical\/article\/caas\/sfdcarticles\/sfdcarticles\/The-color-of-the-pipes-is-not-properly-exported-to-IFC-from-Revit.html?msockid=37b5b58098646c7337dea03499886d6d\" target=\"_blank\" rel=\"noreferrer noopener\">support article <\/a>confirmed that applying materials at the system level is the lowest priority in IFC exports. To fix this, we need to explicitly assign the material using the <em><strong>IfcSingleMaterialOverride<\/strong><\/em> parameter.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Fix<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You need to bypass Revit\u2019s assumptions and assign the material directly using the <em><strong>IfcSingleMaterialOverride<\/strong> <\/em>parameter. To do this, you need to:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Create a new project parameter:\n<ul class=\"wp-block-list\">\n<li>Name: <strong><em>IfcSingleMaterialOverride<\/em><\/strong><\/li>\n\n\n\n<li>Instance: Yes<\/li>\n\n\n\n<li>Type: Text<\/li>\n\n\n\n<li>Group under: Ifc Parameters<\/li>\n\n\n\n<li>Apply to: Pipes and Pipe Fittings<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/help.autodesk.com\/sfdcarticles\/img\/0EMKf000007zYax\" alt=\"\"\/><figcaption class=\"wp-element-caption\">image courtesy of Autodesk<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Next comes the automation so you don&#8217;t go filling out the values manually. The basics of the process is to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Collect all pipes and pipe fittings.<\/li>\n\n\n\n<li>Grab the material from the connected pipe\u2019s system.<\/li>\n\n\n\n<li>Apply that material name as a string to the <em>IfcSingleMaterialOverride<\/em> parameter on each pipe and fitting.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Here\u2019s a macro that does exactly that, no more grey ghosts in your IFC.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udc47 Full C# macro below (just copy, paste, and run):<\/p>\n\n\n<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 Override()\n{\n    UIDocument uidoc = this.ActiveUIDocument;\n    Document doc = uidoc.Document;\n    int pipeCount = <span class=\"hljs-number\">0<\/span>;\n    int fittingCount = <span class=\"hljs-number\">0<\/span>;\n\n    <span class=\"hljs-comment\">\/\/ Collect all pipe elements<\/span>\n    FilteredElementCollector pipeCollector = <span class=\"hljs-keyword\">new<\/span> FilteredElementCollector(doc);\n    ICollection&lt;Element&gt; pipes = pipeCollector\n        .OfCategory(BuiltInCategory.OST_PipeCurves)\n        .WhereElementIsNotElementType()\n        .ToElements();\n\n    <span class=\"hljs-comment\">\/\/ Collect all pipe fitting elements<\/span>\n    FilteredElementCollector fittingCollector = <span class=\"hljs-keyword\">new<\/span> FilteredElementCollector(doc);\n    ICollection&lt;Element&gt; pipeFittings = fittingCollector\n        .OfCategory(BuiltInCategory.OST_PipeFitting)\n        .WhereElementIsNotElementType()\n        .ToElements();\n\n    using (Transaction trans = <span class=\"hljs-keyword\">new<\/span> Transaction(doc, <span class=\"hljs-string\">\"Ifc Material Override\"<\/span>))\n    {\n        trans.Start();\n\n        <span class=\"hljs-comment\">\/\/ Process pipe fittings<\/span>\n        <span class=\"hljs-keyword\">foreach<\/span> (Element fitting in pipeFittings)\n        {\n            FamilyInstance pipeFitting = fitting <span class=\"hljs-keyword\">as<\/span> FamilyInstance;\n            <span class=\"hljs-keyword\">if<\/span> (pipeFitting != <span class=\"hljs-keyword\">null<\/span> &amp;&amp; pipeFitting.MEPModel != <span class=\"hljs-keyword\">null<\/span>)\n            {\n                ConnectorSet connectors = pipeFitting.MEPModel.ConnectorManager.Connectors;\n                <span class=\"hljs-keyword\">foreach<\/span> (Connector connector in connectors)\n                {\n                    MEPSystem system = connector.MEPSystem;\n                    <span class=\"hljs-keyword\">if<\/span> (system != <span class=\"hljs-keyword\">null<\/span>)\n                    {\n                        ElementId systemTypeId = system.GetTypeId();\n                        Element systemType = doc.GetElement(systemTypeId);\n                        Parameter materialParam = systemType.LookupParameter(<span class=\"hljs-string\">\"Material\"<\/span>);\n                        <span class=\"hljs-keyword\">if<\/span> (materialParam != <span class=\"hljs-keyword\">null<\/span> &amp;&amp; materialParam.HasValue)\n                        {\n                            ElementId matId = materialParam.AsElementId();\n                            Material mat = doc.GetElement(matId) <span class=\"hljs-keyword\">as<\/span> Material;\n                            string materialName = mat != <span class=\"hljs-keyword\">null<\/span> ? mat.Name : <span class=\"hljs-string\">\"\"<\/span>;\n                            Parameter ifcOverrideParam = pipeFitting.LookupParameter(<span class=\"hljs-string\">\"IfcSingleMaterialOverride\"<\/span>);\n                            <span class=\"hljs-keyword\">if<\/span> (ifcOverrideParam != <span class=\"hljs-keyword\">null<\/span> &amp;&amp; !ifcOverrideParam.IsReadOnly)\n                            {\n                                ifcOverrideParam.Set(materialName);\n                            }\n                        }\n                        <span class=\"hljs-keyword\">break<\/span>; <span class=\"hljs-comment\">\/\/ Found a system, no need to check other connectors<\/span>\n                    }\n                }\n            }\n            fittingCount++;\n        }\n\n        <span class=\"hljs-comment\">\/\/ Process pipes<\/span>\n        <span class=\"hljs-keyword\">foreach<\/span> (Element pipe in pipes)\n        {\n            Pipe pipeElement = pipe <span class=\"hljs-keyword\">as<\/span> Pipe;\n            <span class=\"hljs-keyword\">if<\/span> (pipeElement != <span class=\"hljs-keyword\">null<\/span> &amp;&amp; pipeElement.MEPSystem != <span class=\"hljs-keyword\">null<\/span>)\n            {\n                MEPSystem system = pipeElement.MEPSystem;\n                ElementId systemTypeId = system.GetTypeId();\n                Element systemType = doc.GetElement(systemTypeId);\n                Parameter materialParam = systemType.LookupParameter(<span class=\"hljs-string\">\"Material\"<\/span>);\n                <span class=\"hljs-keyword\">if<\/span> (materialParam != <span class=\"hljs-keyword\">null<\/span> &amp;&amp; materialParam.HasValue)\n                {\n                    ElementId matId = materialParam.AsElementId();\n                    Material mat = doc.GetElement(matId) <span class=\"hljs-keyword\">as<\/span> Material;\n                    string materialName = mat != <span class=\"hljs-keyword\">null<\/span> ? mat.Name : <span class=\"hljs-string\">\"\"<\/span>;\n                    Parameter ifcOverrideParam = pipeElement.LookupParameter(<span class=\"hljs-string\">\"IfcSingleMaterialOverride\"<\/span>);\n                    <span class=\"hljs-keyword\">if<\/span> (ifcOverrideParam != <span class=\"hljs-keyword\">null<\/span> &amp;&amp; !ifcOverrideParam.IsReadOnly)\n                    {\n                        ifcOverrideParam.Set(materialName);\n                    }\n                }\n            }\n            pipeCount++;\n        }\n\n        trans.Commit();\n    }\n\n    TaskDialog.Show(<span class=\"hljs-string\">\"Ifc Material Override\"<\/span>, <span class=\"hljs-string\">\"Overridden \"<\/span> + pipeCount + <span class=\"hljs-string\">\" pipes\"<\/span> + Environment.NewLine + <span class=\"hljs-string\">\"Overridden \"<\/span> + fittingCount + <span class=\"hljs-string\">\" pipe fittings\"<\/span>);\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>\n\n\n<h3 class=\"wp-block-heading\">\u2699\ufe0f How It Works<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u2705 Pipes get their material from their MEP system type<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2705 Fittings borrow the system data from a connected pipe<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2705 All elements get the correct material applied to the IFC override<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Set-and-forget. One macro, problem solved.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/help.autodesk.com\/sfdcarticles\/img\/0EMKf000007zYb2\" alt=\"\"\/><figcaption class=\"wp-element-caption\">image courtesy of Autodesk<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Relying on system-assigned materials works great until it doesn\u2019t. This method gives you complete control and ensures fittings are never overlooked again. No more grey IFC exports. No more QA headaches.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you&#8217;re using filters or view templates to colour systems, that&#8217;s actually my preferred method, and that\u2019s fine for documentation, but it means nothing for your IFC.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To control IFC colour, you need to control <strong>materials<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let me know if this approach solves your issue, or if you\u2019ve hacked together another method that works better. Always keen to hear how others are handling dodgy exports.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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 exports, fittings get left behind. Revit\u2019s built-in exporter just shrugs&#8230;<\/p>\n","protected":false},"author":1,"featured_media":2404,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"Fix Revit IFC export issues where pipe fittings appear without materials. Learn how to use a custom macro to ensure accurate material data.","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":"Struggling with pipe fittings missing materials in Revit IFC exports? Discover how a simple macro can resolve the issue and ensure your models export accurately. Read the full guide #Revit #IFC #BIM","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[78],"tags":[77,73],"class_list":["post-2403","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-how-to-guides","tag-automation","tag-process"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/set-of-blue-pvc-pipe-fittings-isolated-on-dark-background-blue-plastic-water-pipe-pvc-accessories.jpg","jetpack-related-posts":[{"id":2413,"url":"https:\/\/digitalbbq.au\/index.php\/2025\/08\/07\/setting-ifc-material-overrides-for-cable-tray-and-conduit\/","url_meta":{"origin":2403,"position":0},"title":"Setting IFC Material Overrides for Cable Tray and Conduit","author":"Ryan Lenihan","date":"7 August 2025","format":false,"excerpt":"In a previous post, we looked at how to set IFC material overrides for pipe fittings. But when it comes to cable tray and conduit, things get a bit trickier. Unlike pipe and duct, cable tray and conduit don\u2019t belong to a system in Revit, so there's no MEP System\u2026","rel":"","context":"In &quot;Digital&quot;","block_context":{"text":"Digital","link":"https:\/\/digitalbbq.au\/index.php\/category\/digital\/"},"img":{"alt_text":"Low angle view of steel network cable trunking box.","src":"https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/low-angle-view-of-steel-network-cable-trunking-box-.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/low-angle-view-of-steel-network-cable-trunking-box-.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/low-angle-view-of-steel-network-cable-trunking-box-.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/low-angle-view-of-steel-network-cable-trunking-box-.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/low-angle-view-of-steel-network-cable-trunking-box-.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/low-angle-view-of-steel-network-cable-trunking-box-.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":2403,"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":2686,"url":"https:\/\/digitalbbq.au\/index.php\/2026\/07\/16\/data-on-the-host-data-in-the-ifc-not-so-fast\/","url_meta":{"origin":2403,"position":2},"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":2400,"url":"https:\/\/digitalbbq.au\/index.php\/2025\/09\/04\/optimising-ifc-files-in-python\/","url_meta":{"origin":2403,"position":3},"title":"Optimising IFC Files in Python","author":"Ryan Lenihan","date":"4 September 2025","format":false,"excerpt":"I came across a Python-based IFC optimiser built on top of IfcOpenShell. It was solid, removing unused spaces, orphaned entities, and redundant metadata, but I saw room to push it further. The original script handled: Removing empty attributes Cleaning up orphaned or unused relationships Removing tiny geometry Flattening the spatial\u2026","rel":"","context":"In &quot;Digital&quot;","block_context":{"text":"Digital","link":"https:\/\/digitalbbq.au\/index.php\/category\/digital\/"},"img":{"alt_text":"Big and small yellow rubber ducks on pink background","src":"https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/big-and-small-yellow-rubber-ducks-on-pink-background.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/big-and-small-yellow-rubber-ducks-on-pink-background.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/big-and-small-yellow-rubber-ducks-on-pink-background.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/big-and-small-yellow-rubber-ducks-on-pink-background.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/big-and-small-yellow-rubber-ducks-on-pink-background.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/digitalbbq.au\/wp-content\/uploads\/2025\/07\/big-and-small-yellow-rubber-ducks-on-pink-background.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":2403,"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":2403,"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\/2403","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=2403"}],"version-history":[{"count":4,"href":"https:\/\/digitalbbq.au\/index.php\/wp-json\/wp\/v2\/posts\/2403\/revisions"}],"predecessor-version":[{"id":2421,"href":"https:\/\/digitalbbq.au\/index.php\/wp-json\/wp\/v2\/posts\/2403\/revisions\/2421"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/digitalbbq.au\/index.php\/wp-json\/wp\/v2\/media\/2404"}],"wp:attachment":[{"href":"https:\/\/digitalbbq.au\/index.php\/wp-json\/wp\/v2\/media?parent=2403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/digitalbbq.au\/index.php\/wp-json\/wp\/v2\/categories?post=2403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/digitalbbq.au\/index.php\/wp-json\/wp\/v2\/tags?post=2403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}