From e5885db187a872c8b296cb3fc00a983ced47594f Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Thu, 2 Mar 2023 19:01:40 +1100 Subject: [PATCH] Get batting thickness from decorator data --- .../blenderbim/bim/module/drawing/data.py | 18 ++++++++++++++++++ .../bim/module/drawing/decoration.py | 11 +++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/drawing/data.py b/src/blenderbim/blenderbim/bim/module/drawing/data.py index a91f7690eb..816d0c0b6a 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/data.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/data.py @@ -17,6 +17,7 @@ # along with BlenderBIM Add-on. If not, see . import bpy +import ifcopenshell.util.element import ifcopenshell.util.representation import blenderbim.tool as tool @@ -27,6 +28,7 @@ def refresh(): SheetsData.is_loaded = False SchedulesData.is_loaded = False DrawingsData.is_loaded = False + DecoratorData.data = {} class ProductAssignmentsData: @@ -121,3 +123,19 @@ class SchedulesData: @classmethod def total_schedules(cls): return len([d for d in tool.Ifc.get().by_type("IfcDocumentInformation") if d.Scope == "SCHEDULE"]) + + +class DecoratorData: + data = {} + + @classmethod + def get_batting_thickness(cls, obj): + result = cls.data.get(obj.name, None) + if result is not None: + return result + element = tool.Ifc.get_entity(obj) + if element: + result = ifcopenshell.util.element.get_pset(element, "BBIM_Batting", "Thickness") or 5.0 + cls.data[obj.name] = result + return result + return 5.0 diff --git a/src/blenderbim/blenderbim/bim/module/drawing/decoration.py b/src/blenderbim/blenderbim/bim/module/drawing/decoration.py index 91aa028618..5a465b1675 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/decoration.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/decoration.py @@ -26,6 +26,7 @@ import bmesh import ifcopenshell import blenderbim.tool as tool import blenderbim.bim.module.drawing.helper as helper +from math import acos, pi from functools import reduce from itertools import chain from bpy.types import SpaceView3D @@ -33,7 +34,7 @@ from mathutils import Vector, Matrix from bpy_extras.view3d_utils import location_3d_to_region_2d from gpu.types import GPUShader, GPUBatch, GPUIndexBuf, GPUVertBuf, GPUVertFormat from gpu_extras.batch import batch_for_shader -from math import acos, pi +from blenderbim.bim.module.drawing.data import DecoratorData def ccw(A, B, C): @@ -1423,7 +1424,13 @@ class BattingDecorator(BaseDecorator): verts, idxs = self.get_editmesh_geom(obj) else: verts, idxs = self.get_mesh_geom(obj) - self.draw_lines(context, obj, verts[:2], idxs, extra_float_kwargs={"batting_thickness": 32.0}) + self.draw_lines( + context, + obj, + verts[:2], + idxs, + extra_float_kwargs={"batting_thickness": DecoratorData.get_batting_thickness(obj)}, + ) class GridDecorator(BaseDecorator):