diff --git a/src/blenderbim/blenderbim/bim/module/drawing/operator.py b/src/blenderbim/blenderbim/bim/module/drawing/operator.py index 193d1cc75d..79166da76f 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/operator.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/operator.py @@ -305,9 +305,7 @@ class CreateDrawing(bpy.types.Operator): # Exclude all annotation apart from the active one so we don't cut through them exclude += [e for e in f.by_type("IfcAnnotation") if e != self.camera_element] - iterators.append( - ifcopenshell.geom.iterator(geom_settings, f, multiprocessing.cpu_count(), exclude=exclude) - ) + iterators.append(ifcopenshell.geom.iterator(geom_settings, f, multiprocessing.cpu_count(), exclude=exclude)) with open(svg_path, "w") as svg: results = ifcopenshell.draw.main(draw_settings, files, iterators=iterators, merge_projection=False) @@ -397,7 +395,6 @@ class CreateDrawing(bpy.types.Operator): numerator, denominator = fraction.split("/") self.scale = float(numerator) / float(denominator) - def is_landscape(self, render): return render.resolution_x > render.resolution_y diff --git a/src/blenderbim/blenderbim/bim/module/sequence/helper.py b/src/blenderbim/blenderbim/bim/module/sequence/helper.py index 2e26f69921..385724818a 100644 --- a/src/blenderbim/blenderbim/bim/module/sequence/helper.py +++ b/src/blenderbim/blenderbim/bim/module/sequence/helper.py @@ -79,17 +79,3 @@ def canonicalise_time(time): if not time: return "-" return time.strftime("%d/%m/%y") - - -def get_scene_prop(prop_path): - prop = bpy.context.scene.get(prop_path.split(".")[0]) - for part in prop_path.split(".")[1:]: - if part: - prop = prop.get(part) - return prop - - -def set_scene_prop(prop_path, value): - parent = get_scene_prop(prop_path[: prop_path.rfind(".")]) - prop = prop_path.split(".")[-1] - parent[prop] = value diff --git a/src/blenderbim/blenderbim/bim/module/sequence/operator.py b/src/blenderbim/blenderbim/bim/module/sequence/operator.py index 64b3f97100..499984d456 100644 --- a/src/blenderbim/blenderbim/bim/module/sequence/operator.py +++ b/src/blenderbim/blenderbim/bim/module/sequence/operator.py @@ -1097,6 +1097,7 @@ class ImportP6(bpy.types.Operator, ImportHelper): print("Import finished in {:.2f} seconds".format(time.time() - start)) return {"FINISHED"} + class ImportP6XER(bpy.types.Operator, ImportHelper): bl_idname = "import_p6xer.bim" bl_label = "Import P6 XER" @@ -1118,6 +1119,7 @@ class ImportP6XER(bpy.types.Operator, ImportHelper): print("Import finished in {:.2f} seconds".format(time.time() - start)) return {"FINISHED"} + class ImportP6XER(bpy.types.Operator, ImportHelper): bl_idname = "import_p6xer.bim" bl_label = "Import P6 XER" @@ -2000,17 +2002,17 @@ class BlenderBIM_DatePicker(bpy.types.Operator): bl_idname = "bim.datepicker" bl_options = {"REGISTER", "UNDO"} display_date: bpy.props.StringProperty(name="Display Date") - selected_date: bpy.props.StringProperty(name="Selected Date") target_prop: bpy.props.StringProperty(name="Target date prop to set") def execute(self, context): - helper.set_scene_prop(self.target_prop, self.selected_date) + try: + value = parser.parse(context.scene.DatePickerProperties.selected_date, dayfirst=True, fuzzy=True) + self.set_scene_prop(self.target_prop, helper.canonicalise_time(value)) + except: + pass return {"FINISHED"} def draw(self, context): - self.selected_date = helper.get_scene_prop("DatePickerProperties.selected_date") or helper.canonicalise_time( - datetime.now() - ) current_date = parser.parse(context.scene.DatePickerProperties.display_date, dayfirst=True, fuzzy=True) current_month = (current_date.year, current_date.month) lines = calendar.monthcalendar(*current_month) @@ -2018,7 +2020,7 @@ class BlenderBIM_DatePicker(bpy.types.Operator): layout = self.layout row = layout.row() - row.prop(self, "selected_date") + row.prop(context.scene.DatePickerProperties, "selected_date") split = layout.split() col = split.row() @@ -2050,11 +2052,23 @@ class BlenderBIM_DatePicker(bpy.types.Operator): op.selected_date = helper.canonicalise_time(selected_date) def invoke(self, context, event): - self.display_date = helper.get_scene_prop(self.target_prop) or helper.canonicalise_time(datetime.now()) + self.display_date = self.get_scene_prop(self.target_prop) or helper.canonicalise_time(datetime.now()) context.scene.DatePickerProperties.display_date = self.display_date context.scene.DatePickerProperties.selected_date = self.display_date return context.window_manager.invoke_props_dialog(self) + def get_scene_prop(self, prop_path): + prop = bpy.context.scene.get(prop_path.split(".")[0]) + for part in prop_path.split(".")[1:]: + if part: + prop = prop.get(part) + return prop + + def set_scene_prop(self, prop_path, value): + parent = self.get_scene_prop(prop_path[: prop_path.rfind(".")]) + prop = prop_path.split(".")[-1] + parent[prop] = value + class BlenderBIM_DatePickerSetDate(bpy.types.Operator): bl_label = "set date" diff --git a/src/blenderbim/blenderbim/bim/module/sequence/prop.py b/src/blenderbim/blenderbim/bim/module/sequence/prop.py index 7f002e8197..a923352163 100644 --- a/src/blenderbim/blenderbim/bim/module/sequence/prop.py +++ b/src/blenderbim/blenderbim/bim/module/sequence/prop.py @@ -386,8 +386,8 @@ class BIMWorkCalendarProperties(PropertyGroup): class DatePickerProperties(PropertyGroup): - display_date: StringProperty() - selected_date: StringProperty() + display_date: StringProperty(name="Display Date") + selected_date: StringProperty(name="Selected Date") class BIMDateTextProperties(PropertyGroup): diff --git a/src/blenderbim/blenderbim/bim/module/sequence/ui.py b/src/blenderbim/blenderbim/bim/module/sequence/ui.py index 37c4bd138e..af67681299 100644 --- a/src/blenderbim/blenderbim/bim/module/sequence/ui.py +++ b/src/blenderbim/blenderbim/bim/module/sequence/ui.py @@ -203,12 +203,10 @@ class BIM_PT_work_schedules(Panel): def draw_visualisation_ui(self): row = self.layout.row(align=True) - target_prop = "BIMWorkScheduleProperties.visualisation_start" - op = row.operator("bim.datepicker", text=helper.get_scene_prop(target_prop), icon="REW") - op.target_prop = target_prop - target_prop = "BIMWorkScheduleProperties.visualisation_finish" - op = row.operator("bim.datepicker", text=helper.get_scene_prop(target_prop), icon="FF") - op.target_prop = target_prop + op = row.operator("bim.datepicker", text=self.props.visualisation_start or "Start Date", icon="REW") + op.target_prop = "BIMWorkScheduleProperties.visualisation_start" + op = row.operator("bim.datepicker", text=self.props.visualisation_finish or "Finish Date", icon="FF") + op.target_prop = "BIMWorkScheduleProperties.visualisation_finish" op = row.operator("bim.visualise_work_schedule_date", text="", icon="RESTRICT_RENDER_OFF") op.work_schedule = self.props.active_work_schedule_id op = row.operator("bim.visualise_work_schedule_date_range", text="", icon="OUTLINER_OB_CAMERA")