assign colors better

This commit is contained in:
KatKatKateryna
2024-10-30 18:35:01 +00:00
parent 63d2879709
commit 7740958608
2 changed files with 12 additions and 1 deletions
@@ -354,6 +354,17 @@ def assign_color(self: "SpeckleProvider", obj_display_tc: "TraversalContext", pr
obj_display = obj_display_tc.current
try:
# first, choose if get color from the parent obj or displayValue
if hasattr(obj_display, 'displayStyle') or hasattr(obj_display, '@displayStyle') or hasattr(obj_display, 'renderMaterial') or hasattr(obj_display, '@renderMaterial'):
obj_display = obj_display_tc.current
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]
elif hasattr(obj_display, '@displayValue') and isinstance(obj_display['@displayValue'], list) and len(obj_display['@displayValue'])>0:
obj_display = obj_display['@displayValue'][0]
# prioritize renderMaterials for Meshes & Brep
if isinstance(obj_display, Mesh) or isinstance(obj_display, Brep):
# print(obj_display.get_member_names())
@@ -79,7 +79,7 @@ def initialize_features(self: "SpeckleProvider", all_coords, all_coord_counts, d
obj_get_color_tc = TraversalContext(obj_get_color, "", item)
assign_display_properties(self, feature, f_base, obj_get_color_tc)
assign_display_properties(self, feature, f_base, obj_get_color_tc)
feature["max_height"] = max([c[2] for c in coords])
feature["bbox"] = get_feature_bbox(coords)
data["features"].append(feature)