Skip to content

3.5 Structuur en naamgeving — Naamgeving loadable Families

Wat doet deze regel?

Deze regel controleert of de naam van loadable Families voldoet aan de NLRS-naamgevingsstructuur.

De controle wordt uitgevoerd op bewerkbare loadable families van Model-categorieën en verifieert of de naam van de Family correct is opgebouwd volgens de afspraken uit BIM Basis ILS §3.5 Structuur en naamgeving en de NLRS-naamgevingsregels.

De naam van een Family moet opgebouwd zijn uit meerdere onderdelen die gescheiden worden door een underscore (_).


Wat de regel controleert

De regel controleert de structuur van de Family naam en valideert de afzonderlijke naamdelen.

Concreet controleert de regel:

  • of het eerste deel van de naam gelijk is aan NLRS
  • of het tweede deel van de naam een geldige NL/SfB-code bevat uit NL:SfB_Tabel_1
  • of het derde deel van de naam overeenkomt met de afkorting van de Revit-categorie
  • of het vierde deel van de naam overeenkomt met het familyPlacementType

De regel gebruikt hiervoor lookup tables met:

  • toegestane NL/SfB classificaties
  • Revit categorie-afkortingen
  • toegestane familyPlacementType afkortingen

Wanneer één van deze onderdelen niet voldoet, wordt de Family als ongeldig gemarkeerd.


Scope van de controle

Deze regel wordt toegepast op:

  • Loadable Families
  • Families waarvan isEditable = true
  • Families waarvan de categorie Model is

System families (zoals Walls, Floors, Roofs) vallen niet binnen de scope van deze controle.


Waarom deze regel bestaat

Een consistente naamstructuur voor families is essentieel voor beheer, classificatie en gegevensuitwisseling binnen BIM-projecten.

Door een vaste naamstructuur te gebruiken:

  • blijven families herkenbaar en consistent tussen projecten
  • wordt classificatie eenvoudiger
  • kunnen scripts en automatisering betrouwbaarder werken
  • wordt data-uitwisseling tussen systemen verbeterd

De NLRS-naamgevingsregels zorgen ervoor dat families uniform benoemd worden binnen Nederlandse BIM-projecten.


{
  "Id": "dc56427b-8da6-48d8-8391-0c9e5933f903",
  "Filter": {
    "Type": "queryFilter",
    "Properties": [
      {
        "Name": "Query",
        "Value": "(\n    $families := $[type = \"Family\" and values.isEditable = true and (values.familyCategoryType = \"Model\" or values.familyCategory.type = \"Model\")];\n    $symbols := $[type = \"FamilySymbol\"];\n    /* Get the first 2 digits from AssemblyCode from the 1st symbol */\n    /* checking if ALL childs stars with the correct digit should be an other check */\n    $familyDetails := $map($families, function($v, $i, $a) {\n        {\n            \"id\" : $v.id,\n            \"name\" : $v.name,\n            \"assemblyCode\" : $symbols[parent.id = $v.id][0].values.assemblyCode = null ? \"\" : $substring($symbols[parent.id = $v.id][0].values.assemblyCode, 0,2),\n            \"type\" : $v.type,\n            \"familyCategoryName\" : $exists($v.values.familyCategoryName) ? $v.values.familyCategoryName : $v.values.familyCategory.name,\n\t\t\t\"familyPlacementType\" : $v.values.familyPlacementType,\n        }\n    });\n)",
        "Type": null
      }
    ],
    "SubFilters": []
  },
  "Validation": {
    "Type": "validationCollection",
    "Name": "Family naam",
    "ErrorMessage": "#### Issue\n\nDe naam **'{{name}}'** van de loadable Family voldoet niet aan de afgesproken naamgevingsstructuur.\n\n#### Oplossing\n\nPas de naam aan zodat deze is opgebouwd volgens de vastgestelde NLRS-naamgevingsregels.\n",
    "Properties": [
      {
        "Name": "Operator",
        "Value": {
          "Type": "value",
          "Properties": [
            {
              "Name": "value",
              "Value": "and",
              "Type": ""
            }
          ]
        }
      }
    ],
    "SubValidations": [
      {
        "Type": "validation",
        "Name": "Family naam POS1",
        "ErrorMessage": "#### Issue\n\nHet eerste deel van de naam **'{{name}}'** is **'{ActualValue}'**, maar dit is niet toegestaan.\n\n#### Oplossing\n\nBegin de naam met **NLRS** .\n\n#### Informatie\n\nVolgens de NLRS-naamgevingsregels moet de naam van een loadable Family starten met **NLRS**, conform BIM Basis ILS §3.5 Structuur en naamgeving.\n",
        "Properties": [
          {
            "Name": "valueToValidate",
            "Value": {
              "Type": "partSelector",
              "Properties": [
                {
                  "Name": "query",
                  "Value": "$.name",
                  "Type": "string"
                },
                {
                  "Name": "partToCheck",
                  "Value": "1",
                  "Type": "string"
                },
                {
                  "Name": "separator",
                  "Value": "_",
                  "Type": "string"
                }
              ]
            }
          },
          {
            "Name": "Validator",
            "Value": {
              "Type": "value",
              "Properties": [
                {
                  "Name": "value",
                  "Value": "string:Matches",
                  "Type": "string"
                }
              ]
            }
          },
          {
            "Name": "expectedValue",
            "Value": {
              "Type": "staticValueSelector",
              "Properties": [
                {
                  "Name": "value",
                  "Value": "NLRS",
                  "Type": "string"
                }
              ]
            }
          }
        ],
        "SubValidations": []
      },
      {
        "Type": "validation",
        "Name": "Family naam POS2",
        "ErrorMessage": "#### Issue\n\nHet tweede deel van de naam **'{{name}}'** bevat een ongeldige classificatiecode **'{ActualValue}'**.\n\n#### Oplossing\n\nGebruik een geldige NL/SfB-code als tweede deel van de naam.\n\n#### Informatie\n\nDit deel van de naam moet overeenkomen met een code uit **NL/SfB Tabel 1** , conform BIM Basis ILS §3.5 en de NLRS-naamgevingsregels.\n",
        "Properties": [
          {
            "Name": "valueToValidate",
            "Value": {
              "Type": "partSelector",
              "Properties": [
                {
                  "Name": "query",
                  "Value": "$.name",
                  "Type": "list"
                },
                {
                  "Name": "partToCheck",
                  "Value": "2",
                  "Type": "list"
                },
                {
                  "Name": "separator",
                  "Value": "_",
                  "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": "code",
                  "Type": "list"
                },
                {
                  "Name": "lookupTable",
                  "Value": "NL:SfB_Tabel_1",
                  "Type": "list"
                }
              ]
            }
          }
        ],
        "SubValidations": []
      },
      {
        "Type": "validation",
        "Name": "Family naam POS3",
        "ErrorMessage": "#### Issue\n\nHet derde deel van de naam **'{{name}}'** **'{ActualValue}'** komt niet overeen met de Revit-categorie van deze Family.\n\n#### Oplossing\n\nGebruik de juiste categorie-afkorting die hoort bij de Revit-categorie van deze Family.\n\n#### Informatie\n\nDe categorie-afkorting is vastgelegd in de NLRS-naamgevingsregels en wordt bepaald op basis van de Revit-categorie.  \nZie BIM Basis ILS §3.5 Structuur en naamgeving.\n",
        "Properties": [
          {
            "Name": "valueToValidate",
            "Value": {
              "Type": "partSelector",
              "Properties": [
                {
                  "Name": "query",
                  "Value": "$.name",
                  "Type": "string"
                },
                {
                  "Name": "partToCheck",
                  "Value": "3",
                  "Type": "string"
                },
                {
                  "Name": "separator",
                  "Value": "_",
                  "Type": "string"
                }
              ]
            }
          },
          {
            "Name": "Validator",
            "Value": {
              "Type": "value",
              "Properties": [
                {
                  "Name": "value",
                  "Value": "string:IsEqualTo",
                  "Type": "string"
                }
              ]
            }
          },
          {
            "Name": "expectedValue",
            "Value": {
              "Type": "lookupDataSelector",
              "Properties": [
                {
                  "Name": "distinct",
                  "Value": "",
                  "Type": "string"
                },
                {
                  "Name": "query",
                  "Value": "$[CategoryName = \"{{familyCategoryName}}\"].CategoryAbbreviation",
                  "Type": "string"
                },
                {
                  "Name": "lookupTable",
                  "Value": "RevitCategoryInfo",
                  "Type": "string"
                }
              ]
            }
          }
        ],
        "SubValidations": []
      },
      {
        "Type": "validation",
        "Name": "Family naam POS4",
        "ErrorMessage": "#### Issue\n\nHet vierde deel van de naam **'{{name}}'** **'{ActualValue}'** komt niet overeen met het familyPlacementType van deze Family.\n\n#### Oplossing\n\nGebruik de juiste afkorting die hoort bij het familyPlacementType van deze Family.\n\n#### Informatie\n\nDe toegestane afkortingen voor dit naamdeel zijn vastgelegd in de NLRS-naamgevingsregels en zijn afhankelijk van het **familyPlacementType**.  \nZie BIM Basis ILS §3.5 Structuur en naamgeving.\n",
        "Properties": [
          {
            "Name": "valueToValidate",
            "Value": {
              "Type": "partSelector",
              "Properties": [
                {
                  "Name": "query",
                  "Value": "$.name",
                  "Type": "list"
                },
                {
                  "Name": "partToCheck",
                  "Value": "4",
                  "Type": "list"
                },
                {
                  "Name": "separator",
                  "Value": "_",
                  "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": "$[FamilyPlacementType = '{{familyPlacementType}}'].Abbreviation",
                  "Type": "list"
                },
                {
                  "Name": "lookupTable",
                  "Value": "NL:RSFamilyNaamgevingPos4",
                  "Type": "list"
                }
              ]
            }
          }
        ],
        "SubValidations": []
      }
    ]
  },
  "Details": {
    "Name": "Naamgeving loadable Families",
    "Impact": 4,
    "Priority": 2,
    "Tags": [
      "3.5 Structuur en naamgeving",
      "NLRS"
    ],
    "Description": "## Wat doet deze regel?\n\nDeze regel controleert of **de naam van loadable Families voldoet aan de NLRS-naamgevingsstructuur**.\n\nDe controle wordt uitgevoerd op **bewerkbare loadable families van Model-categorieën** en verifieert of de naam van de Family correct is opgebouwd volgens de afspraken uit **BIM Basis ILS §3.5 Structuur en naamgeving** en de **NLRS-naamgevingsregels**.\n\nDe naam van een Family moet opgebouwd zijn uit meerdere onderdelen die gescheiden worden door een underscore (`_`).\n\n---\n\n## Wat de regel controleert\n\nDe regel controleert de structuur van de **Family naam** en valideert de afzonderlijke naamdelen.\n\nConcreet controleert de regel:\n\n- of het **eerste deel van de naam** gelijk is aan `NLRS`\n- of het **tweede deel van de naam** een geldige **NL/SfB-code** bevat uit **NL:SfB_Tabel_1**\n- of het **derde deel van de naam** overeenkomt met de **afkorting van de Revit-categorie**\n- of het **vierde deel van de naam** overeenkomt met het **familyPlacementType**\n\nDe regel gebruikt hiervoor lookup tables met:\n\n- toegestane **NL/SfB classificaties**\n- **Revit categorie-afkortingen**\n- toegestane **familyPlacementType afkortingen**\n\nWanneer één van deze onderdelen niet voldoet, wordt de Family als ongeldig gemarkeerd.\n\n---\n\n## Scope van de controle\n\nDeze regel wordt toegepast op:\n\n- **Loadable Families**\n- Families waarvan **isEditable = true**\n- Families waarvan de categorie **Model** is\n\nSystem families (zoals Walls, Floors, Roofs) vallen **niet binnen de scope van deze controle**.\n\n---\n\n## Waarom deze regel bestaat\n\nEen consistente naamstructuur voor families is essentieel voor **beheer, classificatie en gegevensuitwisseling binnen BIM-projecten**.\n\nDoor een vaste naamstructuur te gebruiken:\n\n- blijven families **herkenbaar en consistent tussen projecten**\n- wordt **classificatie eenvoudiger**\n- kunnen **scripts en automatisering betrouwbaarder werken**\n- wordt **data-uitwisseling tussen systemen verbeterd**\n\nDe NLRS-naamgevingsregels zorgen ervoor dat families **uniform benoemd worden binnen Nederlandse BIM-projecten**.",
    "HelpUrl": "https://help.daqs.io/nl/nlrs/FamilyNaamgeving/?nav=false",
    "TimeToSolve": 20,
    "AllDisciplines": true,
    "Disciplines": []
  },
  "Metadata": []
}