Shared Parameters
Get Shared Parameter Name
$getSharedParamName := function($sharedParamId){
$$[type="Parameter" and id = $sharedParamId].name
};
Get Shared Parameter GUID
$getSharedParamGuid := function($sharedParamId){
$$[type="Parameter" and id = $sharedParamId].values.guid
};
Family Symbols and Instance
Deze regels verzameld alle Family Symbols en de eerste Instance van Families waarvan de naam begint met NLRS.
(
$getSharedParamName := function($sharedParamId){
$$[type="Parameter" and id = $sharedParamId].name
};
$getSharedParamGuid := function($sharedParamId){
$$[type="Parameter" and id = $sharedParamId].values.guid
};
$getFamilyName := function($ParentId){
$$[type="Family" and id = $ParentId].name
};
$getInstanceSP := function($parentId) {
$filter(
$[type = "FamilyInstance" and parent.id = $parentId][0].**[ref = "Parameter"],
function($p) {
$count($match($getSharedParamName($p.id), /^(eV|eE)/)) = 0
}
).{
"name": $getSharedParamName($.id),
"value": value,
"guid": $getSharedParamGuid($.id),
}
};
/*Only model family ids whose name start with NLRS */
$families := $[type = "Family" and values.isEditable = true and values.familyCategory.type = "Model" and $match(name, /^NLRS/)].id;
$allfamilysymbols := $[type = "FamilySymbol" and parent.id in $families].{
"id": id,
"type": type,
"name": name,
"familyname": $getFamilyName(parent.id),
"sp": $append($filter(**[ref = "Parameter"], function($p) {
$count($match($getSharedParamName($p.id), /^(eV|eE)/)) = 0
}).{
"name": $getSharedParamName($.id),
"value": value,
"guid": $getSharedParamGuid($.id),
},
$getInstanceSP(id))
}[$exists(sp)][];
)
Family Symbols and Instance except parameter with eV
(
$getSharedParamName := function($sharedParamId){
$$[type="Parameter" and id = $sharedParamId].name
};
$getSharedParamGuid := function($sharedParamId){
$$[type="Parameter" and id = $sharedParamId].values.guid
};
$getInstanceSP := function($parentId) {
$filter(
$[type = "FamilyInstance" and parent.id = $parentId][0].**[ref = "Parameter"],
function($p) {
$count($match($getSharedParamName($p.id), /^(eV|eE)/)) = 0
}
).{
"name": $getSharedParamName($.id),
"value": value,
"guid": $getSharedParamGuid($.id),
}
};
$allfamilysymbols := $[type = "FamilySymbol"].{
"id": id,
"type": type,
"name": name,
"sp": $append($filter(**[ref = "Parameter"], function($p) {
$count($match($getSharedParamName($p.id), /^(eV|eE)/)) = 0
}).{
"name": $getSharedParamName($.id),
"value": value,
"guid": $getSharedParamGuid($.id),
},
$getInstanceSP(id))
}[$exists(sp)][];
)
LookupGuid
(
$LookupGuid1 := "104c3657-6918-4b2b-a0b9-bf4b05c8621a";
$LookupGuid2 := "2bc41923-4e29-4bf8-9911-992c87f16d26";
/* Get the Parameter Info for the given guid) */
$getSharedParamInfo := function($guid){(
$sharedParemInfo := $$[type="Parameter" and values.guid = $guid];
{
"paramExist": $exists($sharedParamInfo),
"guid": $exists($sharedParemInfo) ? $sharedParemInfo.values.guid : null,
"name": $exists($sharedParemInfo) ? $sharedParemInfo.values.name : null,
"spec": $exists($sharedParemInfo) ? $sharedParemInfo.values.spec : null,
"ispp": $exists($sharedParemInfo) ? $sharedParemInfo.values.isProjectParameter : null,
}
)};
/* Get info for both parameters */
$paramInfo1 := $getSharedParamInfo($LookupGuid1);
$paramInfo2 := $getSharedParamInfo($LookupGuid2);
/* Get parameter value from object using GUID */
$getSharedParam := function($object, $guid, $meta){(
$sp := $lookup($object.values, "p_" & $guid);
$paramExist := $exists($sp);
{
"paramExist": $paramExist,
"value": $paramExist ? $sp.value : "Parameter niet aanwezig",
"guid": $meta.guid,
"name": $meta.name,
"spec": $meta.spec,
"isPP": $meta.isPP
}
)};
/* Main data filter */
$[type = "FamilyInstance"].{
"name": name,
"type": type,
"id": id,
"Objecttype_Number": $getSharedParam($, $LookupGuid1, $paramInfo1),
"Objecttype_Description": $getSharedParam($, $LookupGuid2, $paramInfo2)
};
)
LookupGuid2
```jsonata ( / All relevant GUIDs in one place / $paramGuids := { "schijnbaar_vermogen": "05f48ef2-d9e1-4f54-aa1b-9bafd25fadae", "vermogensclassificatie": "9f8db0d3-4762-4cc1-a673-372900370c54", "schijnbaar_vermogen_L1": "6a7cbf53-e5af-454b-bd4c-9cbe1b09f45b", "schijnbaar_vermogen_L2": "4e2fbace-1871-4533-970f-61de8d5878cb", "schijnbaar_vermogen_L3": "f275a71d-d48f-44c9-a019-d8005dbd4068", };
/ Build one lookup table with metadata per GUID (keys are strings!) / $paramMetaByGuid := $merge( $$[type = "Parameter" and values.guid in $paramGuids.*].{ $string(values.guid): { "paramExist": true, "guid": values.guid, "name": values.name } } );
$getSharedParam := function($object, $logicalName){(
$guid := $lookup($paramGuids, $logicalName);
$meta := $guid ? $lookup($paramMetaByGuid, $string($guid)) : undefined;
$sp := $guid ? $lookup($object.values, "p_" & $guid) : undefined;
$present := $exists($sp);
/* Extract the correct value */
$val :=
$present and $exists($sp.valueAsString) and $sp.valueAsString != ""
? $sp.valueAsString
: (
$present and $exists($sp.value)
? $sp.value
: "Parameter niet aanwezig"
);
{
"paramExist": $present,
"value": $val,
"guid": $meta ? $meta.guid : $guid,
"name": $meta ? $meta.name : $logicalName
}
)};
/* All Families*/
$famNLRS := $[type = "Family" and $match(name, /^NLRS/)].id;
/* make sure this always returns a boolean */
$matches := function($s, $re){
$boolean($s) and ($match($s, $re) != [])
};
/* All FamilySymbols*/
$symbols32 := $[type = "FamilySymbol" and $matches($string(values.assemblyCode), /^62\.(?:[1-9]\d?)$/) and parent.id in $famNLRS];
/* Index symbols by id (id cast to string for object key) */
$symIndex := $merge(
$symbols32.{
$string(id): $
}
);
/* Main query over FamilyInstances */
$[type = "FamilyInstance"].(
$sym := $lookup($symIndex, $string(parent.id));
$sym ?
{
"id": id,
"type": type,
"name": name,
"Category": $sym.values.category.label,
"assemblyCode": $sym.values.assemblyCode,
"vermogensclassificatie": $getSharedParam($sym, "vermogensclassificatie"),
"schijnbaar_vermogen":$getSharedParam($, "schijnbaar_vermogen"),
"schijnbaar_vermogen_L1":$getSharedParam($, "schijnbaar_vermogen_L1"),
"schijnbaar_vermogen_L2":$getSharedParam($, "schijnbaar_vermogen_L2"),
"schijnbaar_vermogen_L3":$getSharedParam($, "schijnbaar_vermogen_L3"),
}
: ()
)
) ````