3.3 Bouwlaagindeling en -naamgeving — Level names
Wat doet deze regel?
Deze regel controleert of de naam van bouwlagen (Levels) correct is opgebouwd volgens de naamgevingsafspraken uit BIM Basis ILS §3.3 Bouwlaagindeling en -naamgeving.
De controle wordt uitgevoerd op Levels die als bouwlaag zijn gemarkeerd (isBuildingStory = true). De naam van een bouwlaag moet bestaan uit een bouwlaagnummer, gevolgd door een Nederlandse ordinale benaming en optioneel een verdiepingstype.
Wat de regel controleert
De regel analyseert de naam van de bouwlaag en controleert de afzonderlijke onderdelen.
Concreet controleert de regel:
- Deel 1 – Bouwlaagnummer
Het eerste deel van de naam moet een geldig bouwlaagnummer zijn volgens de BIM Basis ILS-notatie.
Dit nummer kan bestaan uit:
- een negatief nummer voor ondergrondse lagen (bijvoorbeeld
-1,-2) - een tweecijferige notatie voor bovengrondse lagen (
00,01,02, etc.) -
een optionele letter voor tussenverdiepingen (
01a,01b, etc.) -
Deel 2 – Ordinale benaming van de bouwlaag
Het tweede deel moet een Nederlandse ordinale benaming zijn, zoals:
eerstetweedederde
De toegestane waarden worden gecontroleerd via een lookup tabel met ordinale namen.
- Deel 3 – Verdiepingstype (optioneel)
Het derde deel van de naam mag:
- ontbreken, of
- een toegestane verdiepingstype-aanduiding bevatten zoals Grond of verdieping.
Wanneer één van deze onderdelen niet voldoet aan de afgesproken structuur, wordt de bouwlaag als ongeldig gemarkeerd.
Scope van de controle
Deze regel wordt toegepast op:
- Levels
- levels waarbij isBuildingStory = true
- bouwlagen die onderdeel zijn van de bouwlaagstructuur van het model
Levels die niet als bouwlaag zijn gemarkeerd worden niet gecontroleerd.
Waarom deze regel bestaat
Een consistente naamgeving van bouwlagen is essentieel voor een correcte structurering van het BIM-model.
Door bouwlagen volgens een vaste notatie te benoemen:
- blijven bouwlagen herkenbaar en consistent
- kunnen modellen eenvoudiger worden samengevoegd
- werkt uitwisseling via IFC en andere standaarden betrouwbaarder
- kunnen scripts en automatiseringen correct functioneren
De afspraken uit BIM Basis ILS §3.3 Bouwlaagindeling en -naamgeving zorgen ervoor dat bouwlagen in verschillende modellen op een uniforme manier worden benoemd.
{
"Id": "60673cdf-1a32-412b-9e6c-fffff0a05726",
"Filter": {
"Type": "filterCollection",
"Properties": [
{
"Name": "Operator",
"Value": "and",
"Type": null
}
],
"SubFilters": [
{
"Type": "levelFilter",
"Properties": [],
"SubFilters": []
},
{
"Type": "queryFilter",
"Properties": [
{
"Name": "Query",
"Value": "$[$.values.isBuildingStory = true]",
"Type": null
}
],
"SubFilters": []
}
]
},
"Validation": {
"Type": "validationCollection",
"Name": "Level name",
"ErrorMessage": "",
"Properties": [
{
"Name": "Operator",
"Value": {
"Type": "value",
"Properties": [
{
"Name": "value",
"Value": "and",
"Type": ""
}
]
}
}
],
"SubValidations": [
{
"Type": "validation",
"Name": "Name part 1",
"ErrorMessage": "#### Issue\n\nHet bouwlaagnummer **'{ActualValue}'** in de naam **'{{name}}'** voldoet niet aan de afgesproken notatie.\n\n#### Oplossing\n\nGebruik een geldig bouwlaagnummer volgens BIM Basis ILS\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": "^(\\-[0-9]{1}|[0-9]{2})[a-z]?$",
"Type": "string"
}
]
}
}
],
"SubValidations": []
},
{
"Type": "validation",
"Name": "Name part 2",
"ErrorMessage": "#### Issue\n\nDe bouwlaagbenaming **'{ActualValue}'** in de naam **'{{name}}'** is niet toegestaan.\n\n#### Oplossing\n\nGebruik een geldige Nederlandse ordinale benaming, zoals **eerste** , **tweede** of **derde** .\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": "$.'Ordinal-NL'",
"Type": "list"
},
{
"Name": "lookupTable",
"Value": "OrdinalNumberNames",
"Type": "list"
}
]
}
}
],
"SubValidations": []
},
{
"Type": "validationCollection",
"Name": "Name part 3",
"ErrorMessage": "#### Issue\n\nHet derde deel van de bouwlaagnaam **'{{name}}'** is onjuist opgebouwd.\n\n#### Oplossing\n\nLaat het derde deel weg óf gebruik een toegestane verdiepingstype-aanduiding.\n",
"Properties": [
{
"Name": "Operator",
"Value": {
"Type": "value",
"Properties": [
{
"Name": "value",
"Value": "or",
"Type": ""
}
]
}
}
],
"SubValidations": [
{
"Type": "validation",
"Name": "Part 3 is in list",
"ErrorMessage": "#### Issue\n\nDe verdiepingstype-aanduiding **'{ActualValue}'** in de naam **'{{name}}'** is niet toegestaan.\n\n#### Oplossing\n\nGebruik alleen **Grond** of **verdieping** (exacte schrijfwijze).\n",
"Properties": [
{
"Name": "valueToValidate",
"Value": {
"Type": "partSelector",
"Properties": [
{
"Name": "query",
"Value": "$.name",
"Type": "list"
},
{
"Name": "partToCheck",
"Value": "3",
"Type": "list"
},
{
"Name": "separator",
"Value": " ",
"Type": "list"
}
]
}
},
{
"Name": "Validator",
"Value": {
"Type": "value",
"Properties": [
{
"Name": "value",
"Value": "list:IsIn",
"Type": "list"
}
]
}
},
{
"Name": "expectedValue",
"Value": {
"Type": "staticListValueSelector",
"Properties": [
{
"Name": "list",
"Value": "Grond,verdieping",
"Type": "list"
}
]
}
}
],
"SubValidations": []
},
{
"Type": "validation",
"Name": "Part 3 is null",
"ErrorMessage": "#### Issue\n\nDe bouwlaagnaam **'{{name}}'** bevat een extra onderdeel **'{ActualValue}'** dat hier niet is toegestaan.\n\n#### Oplossing\n\nVerwijder het derde deel uit de naam wanneer geen verdiepingstype van toepassing is.\n",
"Properties": [
{
"Name": "valueToValidate",
"Value": {
"Type": "partSelector",
"Properties": [
{
"Name": "query",
"Value": "$.name",
"Type": "null"
},
{
"Name": "partToCheck",
"Value": "3",
"Type": "null"
},
{
"Name": "separator",
"Value": " ",
"Type": "null"
}
]
}
},
{
"Name": "Validator",
"Value": {
"Type": "value",
"Properties": [
{
"Name": "value",
"Value": "null:ShouldBeNull",
"Type": "null"
}
]
}
},
{
"Name": "expectedValue",
"Value": {
"Type": "staticValueSelector",
"Properties": [
{
"Name": "value",
"Value": "",
"Type": "null"
}
]
}
}
],
"SubValidations": []
}
]
}
]
},
"Details": {
"Name": "Level names",
"Impact": 4,
"Priority": 1,
"Tags": [
"3.3 Bouwlaagindeling en -naamgeving",
"3.5 Structuur en naamgeving"
],
"Description": "## Wat doet deze regel?\n\nDeze regel controleert of **de naam van bouwlagen (Levels) correct is opgebouwd volgens de naamgevingsafspraken uit BIM Basis ILS §3.3 Bouwlaagindeling en -naamgeving**.\n\nDe controle wordt uitgevoerd op **Levels die als bouwlaag zijn gemarkeerd (`isBuildingStory = true`)**. De naam van een bouwlaag moet bestaan uit een **bouwlaagnummer**, gevolgd door een **Nederlandse ordinale benaming** en optioneel een **verdiepingstype**.\n\n---\n\n## Wat de regel controleert\n\nDe regel analyseert de naam van de bouwlaag en controleert de afzonderlijke onderdelen.\n\nConcreet controleert de regel:\n\n- **Deel 1 – Bouwlaagnummer** \n Het eerste deel van de naam moet een geldig bouwlaagnummer zijn volgens de BIM Basis ILS-notatie. \n Dit nummer kan bestaan uit:\n - een negatief nummer voor ondergrondse lagen (bijvoorbeeld `-1`, `-2`)\n - een tweecijferige notatie voor bovengrondse lagen (`00`, `01`, `02`, etc.)\n - een optionele letter voor tussenverdiepingen (`01a`, `01b`, etc.)\n\n- **Deel 2 – Ordinale benaming van de bouwlaag** \n Het tweede deel moet een **Nederlandse ordinale benaming** zijn, zoals:\n - `eerste`\n - `tweede`\n - `derde`\n\n De toegestane waarden worden gecontroleerd via een **lookup tabel met ordinale namen**.\n\n- **Deel 3 – Verdiepingstype (optioneel)** \n Het derde deel van de naam mag:\n - ontbreken, of\n - een toegestane verdiepingstype-aanduiding bevatten zoals **Grond** of **verdieping**.\n\nWanneer één van deze onderdelen niet voldoet aan de afgesproken structuur, wordt de bouwlaag als ongeldig gemarkeerd.\n\n---\n\n## Scope van de controle\n\nDeze regel wordt toegepast op:\n\n- **Levels**\n- levels waarbij **isBuildingStory = true**\n- bouwlagen die onderdeel zijn van de **bouwlaagstructuur van het model**\n\nLevels die niet als bouwlaag zijn gemarkeerd worden **niet gecontroleerd**.\n\n---\n\n## Waarom deze regel bestaat\n\nEen consistente naamgeving van bouwlagen is essentieel voor een correcte **structurering van het BIM-model**.\n\nDoor bouwlagen volgens een vaste notatie te benoemen:\n\n- blijven bouwlagen **herkenbaar en consistent**\n- kunnen **modellen eenvoudiger worden samengevoegd**\n- werkt **uitwisseling via IFC en andere standaarden betrouwbaarder**\n- kunnen **scripts en automatiseringen correct functioneren**\n\nDe afspraken uit **BIM Basis ILS §3.3 Bouwlaagindeling en -naamgeving** zorgen ervoor dat bouwlagen in verschillende modellen **op een uniforme manier worden benoemd**.",
"HelpUrl": "https://help.daqs.io/NL/BIMBasisILS/Help/3.3_BouwlaagindelingNaamgeving/",
"TimeToSolve": 10,
"AllDisciplines": true,
"Disciplines": []
},
"Metadata": [
{
"Label": "IncorrecteBouwlaagnamen",
"Selector": {
"Type": "querySelector",
"Properties": [
{
"Name": "query",
"Value": "foo",
"Type": null
}
]
}
}
]
}