From a29b0c3e737f313b97fd14014fa7664b20879f49 Mon Sep 17 00:00:00 2001 From: KatKatKateryna Date: Tue, 12 Nov 2024 10:26:36 +0000 Subject: [PATCH] typed displayValue --- .../provider/speckle_utils/display_utils.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/pygeoapi/provider/speckle_utils/display_utils.py b/pygeoapi/provider/speckle_utils/display_utils.py index bcae715..8078919 100644 --- a/pygeoapi/provider/speckle_utils/display_utils.py +++ b/pygeoapi/provider/speckle_utils/display_utils.py @@ -347,8 +347,14 @@ def assign_color(self: "SpeckleProvider", obj_display_tc: "TraversalContext", pr else: # this option will be not very reliable: # there could be different colors for diff displayValues in the list - if hasattr(obj_display, 'displayValue') and isinstance(obj_display['displayValue'], list) and len(obj_display['displayValue'])>0: - obj_display = obj_display['displayValue'][0] + if hasattr(obj_display, 'displayValue'): + try: + displayVal = obj_display['displayValue'] + except: + displayVal = obj_display.displayValue + if isinstance(displayVal, list) and len(displayVal)>0: + obj_display = displayVal[0] + elif hasattr(obj_display, '@displayValue') and isinstance(obj_display['@displayValue'], list) and len(obj_display['@displayValue'])>0: obj_display = obj_display['@displayValue'][0] @@ -356,8 +362,12 @@ def assign_color(self: "SpeckleProvider", obj_display_tc: "TraversalContext", pr if isinstance(obj_display, Mesh) or isinstance(obj_display, Brep): # print(obj_display.get_member_names()) if hasattr(obj_display, 'renderMaterial'): - color = obj_display['renderMaterial']['diffuse'] - opacity = obj_display['renderMaterial']['opacity'] + try: + renderMaterial = obj_display['renderMaterial'] + except: + renderMaterial = obj_display.renderMaterial + color = renderMaterial['diffuse'] + opacity = renderMaterial['opacity'] elif hasattr(obj_display, '@renderMaterial'): color = obj_display['@renderMaterial']['diffuse'] opacity = obj_display['@renderMaterial']['opacity']