diff --git a/src/blenderbim/blenderbim/bim/module/drawing/decoration.py b/src/blenderbim/blenderbim/bim/module/drawing/decoration.py index 663b060db9..f4da0e15fb 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/decoration.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/decoration.py @@ -159,9 +159,7 @@ class BaseDecorator: objecttype = "NOTDEFINED" def __init__(self): - self.font_id = blf.load( - os.path.join(bpy.context.scene.BIMProperties.data_dir, "fonts", "OpenGost Type B TT.ttf") - ) + self.font_id = 0 # 0 is the default font # POLYLINE_UNIFORM_COLOR is good for smoothed lines since `bgl.enable(GL_LINE_SMOOTH)` is deprecated self.line_shader = gpu.shader.from_builtin("POLYLINE_UNIFORM_COLOR") @@ -404,7 +402,6 @@ class BaseDecorator: line_no += 1 if multiline_to_bottom else -1 return - # 0 is the default font, but we're fancier than that font_id = self.font_id color = context.preferences.addons["blenderbim"].preferences.decorations_colour @@ -2014,6 +2011,13 @@ class DecorationsHandler: for object_type in ("SLOPE_ANGLE", "SLOPE_FRACTION", "SLOPE_PERCENT"): self.decorators[object_type] = self.decorators["FALL"] self.decorators["MULTI_SYMBOL"] = self.decorators["SYMBOL"] + if drawing_font := bpy.context.scene.DocProperties.drawing_font: + drawing_font_path = os.path.join(bpy.context.scene.BIMProperties.data_dir, "fonts", drawing_font) + if os.path.exists(drawing_font_path): + font_id = blf.load(drawing_font_path) + for decorator in self.decorators.values(): + decorator.font_id = font_id + def get_objects_and_decorators(self, collection): # TODO: do it in data instead of the handler for performance? diff --git a/src/blenderbim/blenderbim/bim/module/drawing/prop.py b/src/blenderbim/blenderbim/bim/module/drawing/prop.py index 7773d41930..db0806ae16 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/prop.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/prop.py @@ -315,9 +315,7 @@ class RasterStyleProperty(enum.Enum): SPACE_SHADING = "space.shading" -RASTER_STYLE_PROPERTIES_EXCLUDE = ( - "scene.render.filepath", -) +RASTER_STYLE_PROPERTIES_EXCLUDE = ("scene.render.filepath",) class DocProperties(PropertyGroup): @@ -371,6 +369,7 @@ class DocProperties(PropertyGroup): default=os.path.join("drawings", "assets", "shading_styles.json"), name="Default Shading Styles" ) shadingstyle_default: StringProperty(default="Blender Default", name="Default Shading Style") + drawing_font: StringProperty(default="OpenGost Type B TT.ttf", name="Drawing Font") class BIMCameraProperties(PropertyGroup): diff --git a/src/blenderbim/blenderbim/bim/ui.py b/src/blenderbim/blenderbim/bim/ui.py index a2647ffbd1..b4907bc58f 100644 --- a/src/blenderbim/blenderbim/bim/ui.py +++ b/src/blenderbim/blenderbim/bim/ui.py @@ -290,8 +290,6 @@ class BIM_ADDON_preferences(bpy.types.AddonPreferences): row = layout.row() row.prop(self, "spatial_elements_unselectable") - - row = layout.row() row.prop(context.scene.BIMProjectProperties, "should_disable_undo_on_save") row = layout.row() @@ -320,28 +318,30 @@ class BIM_ADDON_preferences(bpy.types.AddonPreferences): row.prop(context.scene.BIMProperties, "data_dir") row.operator("bim.select_data_dir", icon="FILE_FOLDER", text="") - row = self.layout.row(align=True) + row = self.layout.row() row.prop(context.scene.BIMProperties, "pset_dir") - row = self.layout.row(align=True) + row = self.layout.row() row.prop(context.scene.DocProperties, "sheets_dir") - row = self.layout.row(align=True) + row = self.layout.row() row.prop(context.scene.DocProperties, "layouts_dir") - row = self.layout.row(align=True) + row = self.layout.row() row.prop(context.scene.DocProperties, "titleblocks_dir") - row = self.layout.row(align=True) + row = self.layout.row() row.prop(context.scene.DocProperties, "drawings_dir") - row = self.layout.row(align=True) + row = self.layout.row() row.prop(context.scene.DocProperties, "stylesheet_path") - row = self.layout.row(align=True) + row = self.layout.row() row.prop(context.scene.DocProperties, "markers_path") - row = self.layout.row(align=True) + row = self.layout.row() row.prop(context.scene.DocProperties, "symbols_path") - row = self.layout.row(align=True) + row = self.layout.row() row.prop(context.scene.DocProperties, "patterns_path") - row = self.layout.row(align=True) + row = self.layout.row() row.prop(context.scene.DocProperties, "shadingstyles_path") - row = self.layout.row(align=True) + row = self.layout.row() row.prop(context.scene.DocProperties, "shadingstyle_default") + row = self.layout.row() + row.prop(context.scene.DocProperties, "drawing_font") # Scene panel groups