Skip to content

4.4 Inwendig / uitwendig — Function is null => IsExternal -> true in onderhoud

Deze test moet elementen vinden die een assembly code hebben:

  • 21.1[01234]
  • 21.2[01235]

maar geen 'Function' parameter hebben. De shared parameter :IsExternal Guid: 576da907-5f75-40ce-a0c1-572ca690fc1b Wordt verwacht op de Type Properties aanwezig te zijn.


{
  "Id": "eb5d3f9a-77ed-4fb6-aa2c-408d1639d584",
  "Filter": {
    "Type": "queryFilter",
    "Properties": [
      {
        "Name": "Query",
        "Value": "(\n  /* All relevant GUIDs in one place */\n  $paramGuids := {\n    \"IsExternal\": \"576da907-5f75-40ce-a0c1-572ca690fc1b\",\n    \"IsExternal2\": \"28fecb30-be2a-40c6-9fb0-703be83c5e9f\",\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    $getSharedParamBool := function($object, $logicalName){\n    (\n      $guid := $lookup($paramGuids, $logicalName);\n      $sp   := $guid and $exists($object.values)\n                ? $lookup($object.values, \"p_\" & $guid)\n                : undefined;\n\n      $exists($sp)\n        ? (\n            $exists($sp.value)\n              ? $boolean($sp.value)\n              : null\n          )\n        : null\n    )\n    };\n\n\n    /* AssemblyCode inclusion regex */\n    $assemblyCodeInclusion := /^(21\\.(1[0123456]|2[01235])|22\\.(1[123]|21)|28\\.2[01]|31\\.(1[012]|2[12345]|3[01234]|4[01]))$/i;\n\n\n\n  /* Category Exclusion List OST names*/\n  $CategoryExclusion = [\"OST_DetailComponents\"];\n  \n  /* Category filters based upon FamilySymbols */\n    $symbols :=\n      $[\n        type = \"FamilySymbol\"\n        and values.category.type = \"Model\"\n        and $not(values.category.label in $CategoryExclusion)\n        and $string(values.assemblyCode) ~> $assemblyCodeInclusion\n        and (\n          $not($exists(values.function))\n          or values.function = null\n          or values.function = \"\"\n        )\n      ];\n\n\n\n  /* Index symbols by id */\n  $symIndex := $merge($symbols.{$string(id): $});\n\n  /* Main query over FamilyInstances */\n  $[type = \"FamilyInstance\" and $exists(parent)].(\n    $sym := $lookup($symIndex, $string(parent.id));\n    $sym ?\n    {\n      \"id\": id,\n      \"type\": type,\n      \"name\": name,\n      \"Category\": $sym.values.category.label,\n      \"assemblyCode\": $sym.values.assemblyCode,\n      \"IsExternal\": $getSharedParamBool($, \"IsExternal\"),\n      \"IsExternal2\": $getSharedParamBool($, \"IsExternal2\"),\n    }\n    : ()\n  )\n)",
        "Type": null
      }
    ],
    "SubFilters": []
  },
  "Validation": {
    "Type": "validationCollection",
    "Name": "Function is null => IsExternal -> false",
    "ErrorMessage": "",
    "Properties": [
      {
        "Name": "Operator",
        "Value": {
          "Type": "value",
          "Properties": [
            {
              "Name": "value",
              "Value": "or",
              "Type": ""
            }
          ]
        }
      }
    ],
    "SubValidations": [
      {
        "Type": "validation",
        "Name": "IsExternal oude guid",
        "ErrorMessage": "#### Issue\n\nDit element is geclassificeerd als een **Extern bouwdeel**, maar de parameter **`IsExternal`** is onjuist ingesteld.\n\nDe **Assembly Code** geeft aan dat dit element **wel** tot de buitenschil behoort.\nDe parameter **`Function`** ontbreekt of is leeg, waardoor `IsExternal` expliciet correct moet worden vastgelegd.\n\n- **Huidige waarde `IsExternal`**: `{ActualValue}`\n- **Verwachte waarde**: `true`\n\n#### Oplossing\n\n1. Controleer of dit element inderdaad een **extern bouwdeel** is  \n2. Open de **Instance Properties**\n3. Zet de parameter **`IsExternal`** op `true`\n\n#### Informatie\n\nDe parameter **`IsExternal`** bepaalt of een element onderdeel is van de buitenschil van het gebouw.\n\nBij ontbrekende of niet ingevulde `Function`-parameters moet deze classificatie **expliciet** worden vastgelegd om:\n- foutieve energie- en daglichtanalyses te voorkomen\n- verkeerde hoeveelheden bij gevels te vermijden\n- consistente IFC-export te garanderen\n\nVolgens de **BIM Basis ILS – §4.4 Inwendig / uitwendig** mogen externe bouwdelen nooit als intern worden gemarkeerd.\n",
        "Properties": [
          {
            "Name": "valueToValidate",
            "Value": {
              "Type": "querySelector",
              "Properties": [
                {
                  "Name": "query",
                  "Value": "IsExternal",
                  "Type": "bool"
                }
              ]
            }
          },
          {
            "Name": "Validator",
            "Value": {
              "Type": "value",
              "Properties": [
                {
                  "Name": "value",
                  "Value": "bool:Is",
                  "Type": "bool"
                }
              ]
            }
          },
          {
            "Name": "expectedValue",
            "Value": {
              "Type": "staticValueSelector",
              "Properties": [
                {
                  "Name": "value",
                  "Value": "true",
                  "Type": "bool"
                }
              ]
            }
          }
        ],
        "SubValidations": []
      },
      {
        "Type": "validation",
        "Name": "IsExternal nieuwere guid",
        "ErrorMessage": "#### Issue\n\nDit element is geclassificeerd als een **Extern bouwdeel**, maar de parameter **`IsExternal`** is onjuist ingesteld.\n\nDe **Assembly Code** geeft aan dat dit element **wel** tot de buitenschil behoort.\nDe parameter **`Function`** ontbreekt of is leeg, waardoor `IsExternal` expliciet correct moet worden vastgelegd.\n\n- **Huidige waarde `IsExternal`**: `{ActualValue}`\n- **Verwachte waarde**: `true`\n\n#### Oplossing\n\n1. Controleer of dit element inderdaad een **extern bouwdeel** is  \n2. Open de **Instance Properties**\n3. Zet de parameter **`IsExternal`** op `true`\n\n#### Informatie\n\nDe parameter **`IsExternal`** bepaalt of een element onderdeel is van de buitenschil van het gebouw.\n\nBij ontbrekende of niet ingevulde `Function`-parameters moet deze classificatie **expliciet** worden vastgelegd om:\n- foutieve energie- en daglichtanalyses te voorkomen\n- verkeerde hoeveelheden bij gevels te vermijden\n- consistente IFC-export te garanderen\n\nVolgens de **BIM Basis ILS – §4.4 Inwendig / uitwendig** mogen externe bouwdelen nooit als intern worden gemarkeerd.\n",
        "Properties": [
          {
            "Name": "valueToValidate",
            "Value": {
              "Type": "querySelector",
              "Properties": [
                {
                  "Name": "query",
                  "Value": "IsExternal2",
                  "Type": "bool"
                }
              ]
            }
          },
          {
            "Name": "Validator",
            "Value": {
              "Type": "value",
              "Properties": [
                {
                  "Name": "value",
                  "Value": "bool:Is",
                  "Type": "bool"
                }
              ]
            }
          },
          {
            "Name": "expectedValue",
            "Value": {
              "Type": "staticValueSelector",
              "Properties": [
                {
                  "Name": "value",
                  "Value": "true",
                  "Type": "bool"
                }
              ]
            }
          }
        ],
        "SubValidations": []
      }
    ]
  },
  "Details": {
    "Name": "Function is null => IsExternal -> true in onderhoud",
    "Impact": 5,
    "Priority": 3,
    "Tags": [
      "4.4 Inwendig / uitwendig"
    ],
    "Description": "Deze test moet elementen vinden die een assembly code hebben: \n* 21.1[01234]\n* 21.2[01235]\nmaar geen 'Function' parameter hebben.\nDe shared parameter :IsExternal\nGuid: 576da907-5f75-40ce-a0c1-572ca690fc1b\nWordt verwacht op de Type Properties aanwezig te zijn.",
    "HelpUrl": "https://help.daqs.io/NL/ILS/Function/?nav=false",
    "TimeToSolve": 10,
    "AllDisciplines": true,
    "Disciplines": []
  },
  "Metadata": []
}