mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-22 18:12:28 +00:00
drawing.operator - reuse blender.get_view3d_space
This commit is contained in:
@@ -402,13 +402,14 @@ class CreateDrawing(bpy.types.Operator):
|
|||||||
for obj in bpy.context.view_layer.objects:
|
for obj in bpy.context.view_layer.objects:
|
||||||
obj.hide_render = obj.name not in visible_object_names
|
obj.hide_render = obj.name not in visible_object_names
|
||||||
|
|
||||||
|
assert context.scene and context.view_layer and context.screen
|
||||||
context.scene.render.filepath = str(Path(svg_path).with_suffix(".png"))
|
context.scene.render.filepath = str(Path(svg_path).with_suffix(".png"))
|
||||||
drawing_style = self.props.drawing_styles[self.cprops.active_drawing_style_index]
|
drawing_style = self.props.drawing_styles[self.cprops.active_drawing_style_index]
|
||||||
|
|
||||||
if drawing_style.render_type == "DEFAULT":
|
if drawing_style.render_type == "DEFAULT":
|
||||||
bpy.ops.render.render(write_still=True)
|
bpy.ops.render.render(write_still=True)
|
||||||
else:
|
else:
|
||||||
previous_visibility = {}
|
previous_visibility: dict[str, bool] = {}
|
||||||
for obj in tool.Blender.get_object_bim_props(self.camera).collection.objects:
|
for obj in tool.Blender.get_object_bim_props(self.camera).collection.objects:
|
||||||
if bpy.context.view_layer.objects.get(obj.name):
|
if bpy.context.view_layer.objects.get(obj.name):
|
||||||
previous_visibility[obj.name] = obj.hide_get()
|
previous_visibility[obj.name] = obj.hide_get()
|
||||||
@@ -421,11 +422,11 @@ class CreateDrawing(bpy.types.Operator):
|
|||||||
or "IfcGridAxis/" in obj.name
|
or "IfcGridAxis/" in obj.name
|
||||||
or "IfcOpeningElement/" in obj.name
|
or "IfcOpeningElement/" in obj.name
|
||||||
):
|
):
|
||||||
if bpy.context.view_layer.objects.get(obj.name):
|
if context.view_layer.objects.get(obj.name):
|
||||||
previous_visibility[obj.name] = obj.hide_get()
|
previous_visibility[obj.name] = obj.hide_get()
|
||||||
obj.hide_set(True)
|
obj.hide_set(True)
|
||||||
|
|
||||||
space = self.get_view_3d(context.screen.areas)
|
assert (space := tool.Blender.get_view3d_space())
|
||||||
previous_shading = space.shading.type
|
previous_shading = space.shading.type
|
||||||
previous_format = context.scene.render.image_settings.file_format
|
previous_format = context.scene.render.image_settings.file_format
|
||||||
space.shading.type = "RENDERED"
|
space.shading.type = "RENDERED"
|
||||||
@@ -1574,12 +1575,6 @@ class CreateDrawing(bpy.types.Operator):
|
|||||||
def is_landscape(self, render):
|
def is_landscape(self, render):
|
||||||
return render.resolution_x > render.resolution_y
|
return render.resolution_x > render.resolution_y
|
||||||
|
|
||||||
def get_view_3d(self, areas):
|
|
||||||
for area in areas:
|
|
||||||
if area.type != "VIEW_3D":
|
|
||||||
continue
|
|
||||||
return area.spaces.active
|
|
||||||
|
|
||||||
def get_material_name(self, element: ifcopenshell.entity_instance) -> str:
|
def get_material_name(self, element: ifcopenshell.entity_instance) -> str:
|
||||||
if hasattr(element, "Name") and element.Name:
|
if hasattr(element, "Name") and element.Name:
|
||||||
return element.Name
|
return element.Name
|
||||||
@@ -2411,7 +2406,7 @@ class SaveDrawingStyle(bpy.types.Operator, tool.Ifc.Operator):
|
|||||||
# TODO: check undo redo
|
# TODO: check undo redo
|
||||||
|
|
||||||
def _execute(self, context):
|
def _execute(self, context):
|
||||||
space = self.get_view_3d(context) # Do not remove. It is used later in eval
|
assert (space := tool.Blender.get_view3d_space()) # Do not remove. It is used later in eval
|
||||||
scene = context.scene
|
scene = context.scene
|
||||||
assert scene
|
assert scene
|
||||||
style = {}
|
style = {}
|
||||||
@@ -2460,12 +2455,6 @@ class SaveDrawingStyle(bpy.types.Operator, tool.Ifc.Operator):
|
|||||||
bpy.ops.bim.save_drawing_styles_data()
|
bpy.ops.bim.save_drawing_styles_data()
|
||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
|
|
||||||
def get_view_3d(self, context):
|
|
||||||
for area in context.screen.areas:
|
|
||||||
if area.type != "VIEW_3D":
|
|
||||||
continue
|
|
||||||
return area.spaces.active
|
|
||||||
|
|
||||||
|
|
||||||
class SaveDrawingStylesData(bpy.types.Operator, tool.Ifc.Operator):
|
class SaveDrawingStylesData(bpy.types.Operator, tool.Ifc.Operator):
|
||||||
bl_idname = "bim.save_drawing_styles_data"
|
bl_idname = "bim.save_drawing_styles_data"
|
||||||
@@ -2553,7 +2542,7 @@ class ActivateDrawingStyle(bpy.types.Operator, tool.Ifc.Operator):
|
|||||||
|
|
||||||
def set_raster_style(self, context: bpy.types.Context) -> None:
|
def set_raster_style(self, context: bpy.types.Context) -> None:
|
||||||
scene = context.scene # Do not remove. It is used in exec later
|
scene = context.scene # Do not remove. It is used in exec later
|
||||||
space = self.get_view_3d(context) # Do not remove. It is used in exec later
|
assert (space := tool.Blender.get_view3d_space()) # Do not remove. It is used in exec later
|
||||||
style = json.loads(self.drawing_style.raster_style)
|
style = json.loads(self.drawing_style.raster_style)
|
||||||
for path, value in style.items():
|
for path, value in style.items():
|
||||||
try:
|
try:
|
||||||
@@ -2604,13 +2593,6 @@ class ActivateDrawingStyle(bpy.types.Operator, tool.Ifc.Operator):
|
|||||||
if global_id in self.exclude_global_ids:
|
if global_id in self.exclude_global_ids:
|
||||||
obj.hide_viewport = True # Note: this breaks alt-H
|
obj.hide_viewport = True # Note: this breaks alt-H
|
||||||
|
|
||||||
def get_view_3d(self, context: bpy.types.Context) -> bpy.types.SpaceView3D:
|
|
||||||
for area in context.screen.areas:
|
|
||||||
if area.type != "VIEW_3D":
|
|
||||||
continue
|
|
||||||
return area.spaces.active
|
|
||||||
assert False, "Space is not found."
|
|
||||||
|
|
||||||
|
|
||||||
class RemoveSheet(bpy.types.Operator, tool.Ifc.Operator):
|
class RemoveSheet(bpy.types.Operator, tool.Ifc.Operator):
|
||||||
bl_idname = "bim.remove_sheet"
|
bl_idname = "bim.remove_sheet"
|
||||||
|
|||||||
Reference in New Issue
Block a user