Skip to content

4.3 Dragend / niet dragend — NLRS_C_dragend == true

Wanneer een element op basis van de Assembly Code een constructieve functie heeft, moet de shared parameter NLRS_C_dragend expliciet op true worden gezet, ongeacht de waarde van structuralUsage.

Deze regel voorkomt tegenstrijdige interpretaties tussen:

  • Revit interne logica
  • IFC-export
  • toetsing en rapportages

{
  "Id": "abd95967-4b6d-43d2-9d7c-9e252bee1a44",
  "Filter": {
    "Type": "queryFilter",
    "Properties": [
      {
        "Name": "Query",
        "Value": "(\n  /* All relevant GUIDs in one place */\n  $paramGuids := {\n    \"NLRS_C_dragend\": \"35b4cefa-e13c-4a27-a91e-f7410a56cf70\",\n  };\n\n  /* Build one lookup table with metadata per GUID (keys are strings!) */\n  $paramMetaByGuid := $merge(\n    $$[type = \"Parameter\" and values.guid in $paramGuids.*].{\n      $string(values.guid): {\n        \"paramExist\": true,\n        \"guid\": values.guid,\n        \"name\": values.name\n      }\n    }\n  );\n\n    $getSharedParam := function($object, $logicalName){\n    (\n      $guid := $lookup($paramGuids, $logicalName);\n      $meta := $guid ? $lookup($paramMetaByGuid, $string($guid)) : undefined;\n      $sp   := $guid and $exists($object.values)\n               ? $lookup($object.values, \"p_\" & $guid)\n               : undefined;\n\n      {\n        \"exists\":   $exists($sp),\n        \"hasValue\": $exists($sp) ? $boolean($sp.hasValue) : false,\n        \"value\":    ($exists($sp) and $sp.hasValue) ? $sp.value : null,\n        \"valueAsString\":\n                    ($exists($sp) and $sp.hasValue) ? $sp.valueAsString : null,\n        \"guid\":     $meta ? $meta.guid : $guid,\n        \"name\":     $meta ? $meta.name : $logicalName\n      }\n    )\n    };\n\n\n  /* AssemblyCode inclusion (full match) */\n  $assemblyCodeIncluded := /^(11\\.1[03]|13\\.1[12]|22\\.14)$/i;\n\n  /* Category Exclusion List OST names*/\n  $CategoryExclusion = [\"OST_DetailComponents\"];\n  \n  /* Category filters based upon FamilySymbols */\n  $symbols := $[type = \"FamilySymbol\" and values.category.type = \"Model\" and $not(values.category.label in $CategoryExclusion) and $string(values.assemblyCode) ~> $assemblyCodeIncluded];\n\n\n  /* Index symbols by id */\n  $symIndex := $merge($symbols.{$string(id): $});\n\n  /* Main query over FamilyInstances */\n    $[\n      type = \"FamilyInstance\"\n      and values.structuralUsage = \"Other\"\n      and $exists(parent)\n    ].(\n      $sym := $lookup($symIndex, $string(parent.id));\n      $sym ?\n      {\n        \"id\": id,\n        \"type\": type,\n        \"name\": name,\n\n        \"assemblyCode\": $sym.values.assemblyCode,\n        \"structuralUsage\": values.structuralUsage,\n\n        \"NLRS_C_dragend\": $getSharedParam($, \"NLRS_C_dragend\"),\n\n      }\n      : ()\n    )\n)",
        "Type": null
      }
    ],
    "SubFilters": []
  },
  "Validation": {
    "Type": "validation",
    "Name": "NLRS_C_dragend true",
    "ErrorMessage": "#### Issue\n\nDe combinatie van **Assembly Code** en **structuralUsage** vereist een specifieke\nwaarde voor **NLRS_C_dragend** , maar deze klopt niet.\n\nOp basis van de **Assembly Code** wordt dit element beschouwd als **constructief / dragend** .\n\n- **Verwachte waarde** : `{ExpectedValue}`\n- **Huidige waarde** : `{ActualValue}`\n- **Assembly Code** : {{assemblyCode}}\n\n\n#### Oplossing\n\n1. Controleer de **Assembly Code** van het element  \n   Deze duidt op een constructieve functie.\n2. Open de **Type Properties** of **Instance Properties**\n3. Zet de shared parameter **NLRS_C_dragend** expliciet op `true` (vinkje aan)\n\n> Let op: deze parameter is leidend voor IFC-export, toetsing en rapportages.\n\n#### Uitleg\n\nDe Revit-parameter **structuralUsage** geeft aan hoe Revit het element intern interpreteert, maar is **niet normatief** voor classificatie volgens de **BIM Basis ILS** .\n\nWanneer een **Assembly Code** een dragende functie aanduidt, is **NLRS_C_dragend** leidend — ook als `structuralUsage = Other`.\n\nHet expliciet vastleggen van deze waarde voorkomt:\n- verkeerde classificatie in IFC\n- foutieve hoeveelheden en analyses\n- interpretatieverschillen tussen disciplines\n\n> Zie ook:  \n> BIM Basis ILS – §4.3 Dragend / niet-dragend  \n> https://www.digigo.nu/ilsen-en-richtlijnen/bim-basis-ils/\n",
    "Properties": [
      {
        "Name": "valueToValidate",
        "Value": {
          "Type": "querySelector",
          "Properties": [
            {
              "Name": "query",
              "Value": "NLRS_C_dragend.value",
              "Type": "string"
            }
          ]
        }
      },
      {
        "Name": "Validator",
        "Value": {
          "Type": "value",
          "Properties": [
            {
              "Name": "value",
              "Value": "string:IsEqualTo",
              "Type": "string"
            }
          ]
        }
      },
      {
        "Name": "expectedValue",
        "Value": {
          "Type": "staticValueSelector",
          "Properties": [
            {
              "Name": "value",
              "Value": "true",
              "Type": "string"
            }
          ]
        }
      }
    ],
    "SubValidations": []
  },
  "Details": {
    "Name": "NLRS_C_dragend == true",
    "Impact": 4,
    "Priority": 3,
    "Tags": [
      "4.3 Dragend / niet dragend"
    ],
    "Description": "Wanneer een element op basis van de Assembly Code een constructieve functie\nheeft, moet de shared parameter NLRS_C_dragend expliciet op `true` worden gezet,\nongeacht de waarde van `structuralUsage`.\n\nDeze regel voorkomt tegenstrijdige interpretaties tussen:\n- Revit interne logica\n- IFC-export\n- toetsing en rapportages\n",
    "HelpUrl": "https://help.daqs.io/NL/NLRS/NLRS_C_dragend/NLRS_C_dragend_verplicht/?nav=false",
    "TimeToSolve": 10,
    "AllDisciplines": true,
    "Disciplines": []
  },
  "Metadata": [
    {
      "Label": "AssemblyCode",
      "Selector": {
        "Type": "querySelector",
        "Properties": [
          {
            "Name": "query",
            "Value": "values.assemblyCode",
            "Type": null
          }
        ]
      }
    }
  ]
}