4.4 Inwendig / uitwendig — IsExternal = true (externe assemblycodes, zonder Function)
Deze controle valideert of de parameter IsExternal correct is ingesteld op true
voor elementen die op basis van hun assemblycode doorgaans onderdeel zijn van de
buitenschil van het gebouw.
Elementen met een assemblycode die duidt op een externe toepassing worden verwacht
als extern te worden gemarkeerd, mits de parameter Function ontbreekt of leeg is.
In dat geval kan de classificatie niet impliciet worden afgeleid en moet IsExternal
expliciet worden vastgelegd.
Uitzonderingen:
Voor categorieën zoals Walls en Doors wordt de externe of interne
classificatie tijdens IFC-export bepaald op basis van de parameter Function.
Wanneer deze parameter is ingevuld, wordt IsExternal automatisch afgeleid.
Om dubbele, conflicterende of verwarrende classificaties te voorkomen, worden deze categorieën uitgesloten van deze controle.
De controle is bedoeld om fouten te voorkomen in:
- energie- en daglichtanalyses
- hoeveelheden en schilberekeningen
- IFC-export en downstream datagebruik
{
"Id": "19b473b4-a37f-44e2-995f-efb352f3246a",
"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 $assemblyCodeCategoryExternal := /^(21|31)\\.\\d+|34\\.[12]2|37\\.12|41(\\.\\d+)?|52\\.12$/i;\n\n\n /* Category Exclusion List OST names*/\n $CategoryExclusion = [\"OST_DetailComponents\",\"OST_Walls\",\"OST_Doors\"];\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) ~> $assemblyCodeCategoryExternal\n and (\n $not($exists(values.function))\n or values.function = null\n or values.function = \"\"\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": "IsExternal = True, behalve Walls and Doors",
"ErrorMessage": "De assembly code duidt aan dat de parameter voor dit element IsExternal true moet zijn.\n",
"Properties": [
{
"Name": "Operator",
"Value": {
"Type": "value",
"Properties": [
{
"Name": "value",
"Value": "or",
"Type": ""
}
]
}
}
],
"SubValidations": [
{
"Type": "validation",
"Name": "IsExternal met guid 576da907-5f75-40ce-a0c1-572ca690fc1b",
"ErrorMessage": "#### Issue\n\nDit element valt binnen een **assemblycode-categorie die doorgaans onderdeel is van de buitenschil**, \nmaar de parameter **`IsExternal`** is niet correct ingesteld.\n\nDe toegepaste **Assembly Code** duidt op een **extern bouwdeel**. \nOmdat de parameter **`Function`** ontbreekt of leeg is, kan de classificatie niet impliciet worden afgeleid en moet deze **expliciet** worden vastgelegd.\n\n- **Huidige waarde `IsExternal`**: `{ActualValue}`\n- **Verwachte waarde**: `true`\n\n#### Oplossing\n\n1. Controleer of dit element daadwerkelijk onderdeel is van de **buitenschil**\n2. Open de **Instance Properties**\n3. Zet de parameter **`IsExternal`** op `true`\n\n#### Informatie\n\nDeze controle is van toepassing op elementen met een **assemblycode die behoort tot een externe categorie**, waaronder:\n\n- `21.*`\n- `31.*`\n- `34.[12]2`\n- `37.12`\n- `41` en `41.*`\n- `52.12`\n\nVolgens de **BIM Basis ILS – §4.4 Inwendig / uitwendig** mogen externe bouwdelen niet als intern worden gemarkeerd.\n\nWanneer de parameter **`Function`** ontbreekt of leeg is, moet `IsExternal` altijd expliciet worden ingevuld om:\n- foutieve energie- en daglichtanalyses te voorkomen\n- onjuiste hoeveelheden in gevel- en schilberekeningen te vermijden\n- consistente IFC-export te garanderen\n\nDe controle accepteert zowel de shared parameter **`IsExternal`** \n(Guid: `576da907-5f75-40ce-a0c1-572ca690fc1b`) \nals de alternatieve parameter \n(Guid: `28fecb30-be2a-40c6-9fb0-703be83c5e9f`).\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 met guid 28fecb30-be2a-40c6-9fb0-703be83c5e9f",
"ErrorMessage": "#### Issue\n\nDit element valt binnen een **assemblycode-categorie die doorgaans onderdeel is van de buitenschil**, \nmaar de parameter **`IsExternal`** is niet correct ingesteld.\n\nDe toegepaste **Assembly Code** duidt op een **extern bouwdeel**. \nOmdat de parameter **`Function`** ontbreekt of leeg is, kan de classificatie niet impliciet worden afgeleid en moet deze **expliciet** worden vastgelegd.\n\n- **Huidige waarde `IsExternal`**: `{{ActualValue}}`\n- **Verwachte waarde**: `true`\n\n#### Oplossing\n\n1. Controleer of dit element daadwerkelijk onderdeel is van de **buitenschil**\n2. Open de **Instance Properties**\n3. Zet de parameter **`IsExternal`** op `true`\n\n#### Informatie\n\nDeze controle is van toepassing op elementen met een **assemblycode die behoort tot een externe categorie**, waaronder:\n\n- `21.*`\n- `31.*`\n- `34.[12]2`\n- `37.12`\n- `41` en `41.*`\n- `52.12`\n\nVolgens de **BIM Basis ILS – §4.4 Inwendig / uitwendig** mogen externe bouwdelen niet als intern worden gemarkeerd.\n\nWanneer de parameter **`Function`** ontbreekt of leeg is, moet `IsExternal` altijd expliciet worden ingevuld om:\n- foutieve energie- en daglichtanalyses te voorkomen\n- onjuiste hoeveelheden in gevel- en schilberekeningen te vermijden\n- consistente IFC-export te garanderen\n\nDe controle accepteert zowel de shared parameter **`IsExternal`** \n(Guid: `576da907-5f75-40ce-a0c1-572ca690fc1b`) \nals de alternatieve parameter \n(Guid: `28fecb30-be2a-40c6-9fb0-703be83c5e9f`).\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": "IsExternal = true (externe assemblycodes, zonder Function)",
"Impact": 4,
"Priority": 3,
"Tags": [
"4.4 Inwendig / uitwendig"
],
"Description": "Deze controle valideert of de parameter `IsExternal` correct is ingesteld op `true`\nvoor elementen die op basis van hun assemblycode doorgaans onderdeel zijn van de\nbuitenschil van het gebouw.\n\nElementen met een assemblycode die duidt op een externe toepassing worden verwacht\nals extern te worden gemarkeerd, **mits** de parameter `Function` ontbreekt of leeg is.\nIn dat geval kan de classificatie niet impliciet worden afgeleid en moet `IsExternal`\nexpliciet worden vastgelegd.\n\n**Uitzonderingen:**\n\nVoor categorieën zoals **Walls** en **Doors** wordt de externe of interne\nclassificatie tijdens IFC-export bepaald op basis van de parameter `Function`.\nWanneer deze parameter is ingevuld, wordt `IsExternal` automatisch afgeleid.\n\nOm dubbele, conflicterende of verwarrende classificaties te voorkomen,\nworden deze categorieën uitgesloten van deze controle.\n\nDe controle is bedoeld om fouten te voorkomen in:\n- energie- en daglichtanalyses\n- hoeveelheden en schilberekeningen\n- IFC-export en downstream datagebruik\n",
"HelpUrl": "https://help.daqs.io/IFC/IsExternal/?nav=false",
"TimeToSolve": 5,
"AllDisciplines": true,
"Disciplines": []
},
"Metadata": []
}