From f38e8f26f5dca239354fbad8080fa70ecdf96883 Mon Sep 17 00:00:00 2001 From: Gorgious56 Date: Fri, 28 Oct 2022 09:07:33 +0200 Subject: [PATCH] You can now access property sets online documentation through the right click context menu --- src/blenderbim/blenderbim/bim/prop.py | 12 +++++++++++- src/blenderbim/blenderbim/bim/ui.py | 21 +++++++++------------ 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/prop.py b/src/blenderbim/blenderbim/bim/prop.py index 4925c4ff1e..69b442ccc4 100644 --- a/src/blenderbim/blenderbim/bim/prop.py +++ b/src/blenderbim/blenderbim/bim/prop.py @@ -134,12 +134,22 @@ def get_attribute_description(entity, attribute): return get_attribute_doc(schema, entity, attribute) -def get_property_set_description(pset): +def get_property_set_docs(pset): schema = tool.Ifc.get_schema() if schema is not None: return get_property_set_doc(schema, pset) +def get_property_set_properties(pset): + docs = get_property_set_docs(pset) + return docs.get("properties", {}) if docs is not None else {} + + +def get_property_set_doc_url(pset): + docs = get_property_set_docs(pset) + return docs.get("spec_url", "") if docs is not None else "" + + def get_attribute_enum_values(prop, context): # Support weird buildingSMART dictionary mappings which behave like enums items = [] diff --git a/src/blenderbim/blenderbim/bim/ui.py b/src/blenderbim/blenderbim/bim/ui.py index 0594604bce..6b07d9a131 100644 --- a/src/blenderbim/blenderbim/bim/ui.py +++ b/src/blenderbim/blenderbim/bim/ui.py @@ -23,7 +23,7 @@ from . import ifc from bpy.types import Panel from bpy.props import StringProperty, IntProperty, BoolProperty from blenderbim.bim.helper import IfcHeaderExtractor -from blenderbim.bim.prop import get_ifc_entity_doc_url +from blenderbim.bim.prop import get_ifc_entity_doc_url, get_property_set_doc_url import blenderbim.tool as tool @@ -391,14 +391,11 @@ def draw_custom_context_menu(self, context): prop_value = getattr(prop, prop_name, None) if prop_value is None: return - try: - url = get_ifc_entity_doc_url(prop_value) - except KeyError: - # TODO : support attributes, pset, etc. - pass - else: - if url: - layout = self.layout - layout.separator() - url_op = layout.operator("bim.open_webbrowser", icon="URL", text="Online IFC Documentation") - url_op.url = url + url = get_ifc_entity_doc_url(prop_value) + if not bool(url): + url = get_property_set_doc_url(prop_value) + if url: + layout = self.layout + layout.separator() + url_op = layout.operator("bim.open_webbrowser", icon="URL", text="Online IFC Documentation") + url_op.url = url