Skip to content

4.8 Projectspecifiek — NLRS_C_kwaliteitsklasse_code voor Wood

NLRS_C_kwaliteitsklasse_code voor Wood

Deze regel controleert Family Types (FamilySymbol) van Families met MaterialForModelBehaviour = 'Wood' en met relevante Assembly Codes.

Voor deze typen is de shared parameter 'NLRS_C_kwaliteitsklasse_code' verplicht:

  • de parameter moet bestaan
  • de parameter moet een waarde hebben
  • de waarde moet voorkomen in de lookup table (Wood subset) van 'NL:MaterialForModelBehaviour'

Doel: eenduidige vastlegging van houtkwaliteits-/sterkteklasse voor betrouwbare berekeningen, IFC-uitwisseling en rapportage.


{
  "Id": "39911ba7-9283-4e36-99da-c3b388b47719",
  "Filter": {
    "Type": "queryFilter",
    "Properties": [
      {
        "Name": "Query",
        "Value": "(\n  /* All relevant GUIDs in one place */\n  $paramGuids := {\n    \"NLRS_C_kwaliteitsklasse_code\": \"73803e29-3501-4c39-8c13-a49c4f2259d3\"\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        \"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) ? $lookup($object.values, \"p_\" & $guid) : 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\": ($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  /* Families index */\n  $families := $$[type = \"Family\"];\n  $famIndex := $merge($families.{$string(id): $});\n\n  /* Families materialForModelBehaviour = \"Wood\" */\n  $woodFamilyIds := $families[values.materialForModelBehaviour = \"Wood\"].id;\n\n  /* AssemblyCode inclusion (full match) */\n  $assemblyCodeIncluded := /^(11\\.1[01235]|11\\.2[045]|24\\.\\d\\d|28\\.1\\d)$/i;\n\n  /* Category Exclusion List OST names*/\n  $CategoryExclusion := [\"OST_DetailComponents\"];\n\n  /* Category filters based upon FamilySymbols */\n  $[type = \"FamilySymbol\"\n    and parent.id in ($woodFamilyIds)\n    and values.category.type = \"Model\"\n    and $not(values.category.label in $CategoryExclusion)\n    and $string(values.assemblyCode) ~> $assemblyCodeIncluded\n  ].(\n    $fam := $lookup($famIndex, $string(parent.id));\n    {\n      \"id\": id,\n      \"type\": type,\n      \"name\": name,\n      \"assemblyCode\": values.assemblyCode,\n\n      \"familyId\": parent.id,\n      \"familyName\": $fam ? $fam.name : \"\",\n      \"materialForModelBehaviour\": $fam ? $fam.values.materialForModelBehaviour : \"\",\n      \"NLRS_C_kwaliteitsklasse_code\": $getSharedParam($, \"NLRS_C_kwaliteitsklasse_code\")\n    }\n  )\n)\n",
        "Type": null
      }
    ],
    "SubFilters": []
  },
  "Validation": {
    "Type": "validationCollection",
    "Name": "NLRS_C_kwaliteitsklasse_code when MaterialForModelBehaviour is 'Wood'",
    "ErrorMessage": "#### Issue\n\nVoor **MaterialForModelBehaviour = Wood** is **NLRS_C_kwaliteitsklasse_code** verplicht en moet de waarde overeenkomen met de NLRS/lookup-afspraken.\n\nDeze rule controleert:\n- parameter bestaat\n- parameter heeft waarde\n- waarde is toegestaan (Wood subset)",
    "Properties": [
      {
        "Name": "Operator",
        "Value": {
          "Type": "value",
          "Properties": [
            {
              "Name": "value",
              "Value": "and",
              "Type": ""
            }
          ]
        }
      }
    ],
    "SubValidations": [
      {
        "Type": "validation",
        "Name": "NLRS_C_kwaliteitsklasse_code bestaat",
        "ErrorMessage": "#### Issue\n\nDe parameter **'NLRS_C_kwaliteitsklasse_code'** ontbreekt, terwijl deze verplicht is voor dit type.\n\n- **Family** : `{{familyName}}`\n- **Assembly Code** : `{{assemblyCode}}`\n- **MaterialForModelBehaviour** : `Wood`\n\n#### Oplossing\n\nVoeg de shared parameter **'NLRS_C_kwaliteitsklasse_code'** toe aan dit type (FamilySymbol) en laad de family opnieuw in het project.\n",
        "Properties": [
          {
            "Name": "valueToValidate",
            "Value": {
              "Type": "querySelector",
              "Properties": [
                {
                  "Name": "query",
                  "Value": "NLRS_C_kwaliteitsklasse_code.exists",
                  "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": "NLRS_C_kwaliteitsklasse_code heeft een waarde",
        "ErrorMessage": "#### Issue\n\nDe parameter **'NLRS_C_kwaliteitsklasse_code'** bestaat, maar heeft geen waarde.\n\n- **Family** : `{[familyName}}`\n- **Assembly Code** : `{{assemblyCode}}`\n- **MaterialForModelBehaviour** : `Wood`\n- **Huidige waarde** : `{ActualValue}`\n\n#### Oplossing\n\nVul **'NLRS_C_kwaliteitsklasse_code'** in met een geldige houtklasse uit de lookup table.\n",
        "Properties": [
          {
            "Name": "valueToValidate",
            "Value": {
              "Type": "querySelector",
              "Properties": [
                {
                  "Name": "query",
                  "Value": "NLRS_C_kwaliteitsklasse_code.hasValue",
                  "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": "NLRS_C_kwaliteitsklasse_code heeft een correcte waarde voor Hout",
        "ErrorMessage": "#### Issue\n\nDe waarde van **'NLRS_C_kwaliteitsklasse_code'** is ongeldig voor **MaterialForModelBehaviour = Wood** .\n\n- **Family** : `{[familyName}}`\n- **Assembly Code** : `{{assemblyCode}}`\n- **MaterialForModelBehaviour** : `Wood`\n- **Huidige waarde** : `{ActualValue}`\n\n#### Oplossing\n\nKies een waarde uit de toegestane lijst (Wood subset) en vul deze in op het type (FamilySymbol).\n",
        "Properties": [
          {
            "Name": "valueToValidate",
            "Value": {
              "Type": "querySelector",
              "Properties": [
                {
                  "Name": "query",
                  "Value": "NLRS_C_kwaliteitsklasse_code.valueAsString",
                  "Type": "list"
                }
              ]
            }
          },
          {
            "Name": "Validator",
            "Value": {
              "Type": "value",
              "Properties": [
                {
                  "Name": "value",
                  "Value": "list:IsIn",
                  "Type": "list"
                }
              ]
            }
          },
          {
            "Name": "expectedValue",
            "Value": {
              "Type": "lookupDataSelector",
              "Properties": [
                {
                  "Name": "distinct",
                  "Value": "",
                  "Type": "list"
                },
                {
                  "Name": "query",
                  "Value": "$[\"Wood\" in MaterialForModelBehaviour].code",
                  "Type": "list"
                },
                {
                  "Name": "lookupTable",
                  "Value": "NL:MaterialForModelBehaviour",
                  "Type": "list"
                }
              ]
            }
          }
        ],
        "SubValidations": []
      }
    ]
  },
  "Details": {
    "Name": "NLRS_C_kwaliteitsklasse_code voor Wood",
    "Impact": 4,
    "Priority": 3,
    "Tags": [
      "4.8 Projectspecifiek"
    ],
    "Description": "### NLRS_C_kwaliteitsklasse_code voor Wood\n\nDeze regel controleert Family Types (FamilySymbol) van Families met MaterialForModelBehaviour = 'Wood' en met relevante Assembly Codes.\n\nVoor deze typen is de shared parameter 'NLRS_C_kwaliteitsklasse_code' verplicht:\n- de parameter moet bestaan\n- de parameter moet een waarde hebben\n- de waarde moet voorkomen in de lookup table (Wood subset) van 'NL:MaterialForModelBehaviour'\n\nDoel: eenduidige vastlegging van houtkwaliteits-/sterkteklasse voor betrouwbare berekeningen, IFC-uitwisseling en rapportage.\n",
    "HelpUrl": "https://help.daqs.io/NL/NLRS/NLRS_C_kwaliteitsklasse_code/?nav=false",
    "TimeToSolve": 30,
    "AllDisciplines": true,
    "Disciplines": []
  },
  "Metadata": [
    {
      "Label": "AssemblyCode",
      "Selector": {
        "Type": "querySelector",
        "Properties": [
          {
            "Name": "query",
            "Value": "values.assemblyCode",
            "Type": null
          }
        ]
      }
    }
  ]
}