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
}
]
}
}
]
}