Different drawings can now have different aspect ratios. Finally!

This commit is contained in:
Dion Moult
2020-08-29 10:28:34 +10:00
parent 6bc05c5bdc
commit c5dd9a24cb
4 changed files with 26 additions and 0 deletions
@@ -341,6 +341,7 @@ if bpy is not None:
bpy.types.VIEW3D_MT_mesh_add.append(model_window.add_object_button)
bpy.types.VIEW3D_MT_mesh_add.append(model_slab.add_object_button)
bpy.types.VIEW3D_MT_mesh_add.append(model_opening.add_object_button)
bpy.app.handlers.depsgraph_update_pre.append(operator.depsgraph_update_pre_handler)
def unregister():
for cls in reversed(classes):
@@ -367,3 +368,4 @@ if bpy is not None:
bpy.types.VIEW3D_MT_mesh_add.remove(model_window.add_object_button)
bpy.types.VIEW3D_MT_mesh_add.remove(model_slab.add_object_button)
bpy.types.VIEW3D_MT_mesh_add.remove(model_opening.add_object_button)
bpy.app.handlers.depsgraph_update_pre.remove(operator.depsgraph_update_pre_handler)
@@ -25,6 +25,7 @@ from itertools import cycle
from mathutils import Vector, Matrix, Euler
from math import radians, atan, tan, cos, sin, atan2
from pathlib import Path
from bpy.app.handlers import persistent
colour_list = [
(.651, .81, .892, 1),
@@ -40,6 +41,22 @@ colour_list = [
(.993, .999, .6, 1),
(.693, .349, .157, 1)]
@persistent
def depsgraph_update_pre_handler(scene):
set_active_camera_resolution(scene)
def set_active_camera_resolution(scene):
if not scene.camera \
or '/' not in scene.camera.name:
return
if scene.render.resolution_x != scene.camera.data.BIMCameraProperties.raster_x \
or scene.render.resolution_y != scene.camera.data.BIMCameraProperties.raster_y:
scene.render.resolution_x = scene.camera.data.BIMCameraProperties.raster_x
scene.render.resolution_y = scene.camera.data.BIMCameraProperties.raster_y
class ExportIFC(bpy.types.Operator):
bl_idname = "export_ifc.bim"
bl_label = "Export IFC"
@@ -543,6 +543,8 @@ class BIMCameraProperties(PropertyGroup):
view_name: StringProperty(name="View Name")
diagram_scale: EnumProperty(items=getDiagramScales, name='Drawing Scale')
custom_diagram_scale: StringProperty(name='Custom Scale')
raster_x: IntProperty(name='Raster X', default=1000)
raster_y: IntProperty(name='Raster Y', default=1000)
is_nts: BoolProperty(name='Is NTS')
cut_objects: EnumProperty(items=[
('.IfcWall|.IfcSlab|.IfcCurtainWall|.IfcStair|.IfcStairFlight|.IfcColumn|.IfcBeam|.IfcMember|.IfcCovering',
@@ -906,6 +906,11 @@ class BIM_PT_camera(Panel):
row = layout.row()
row.prop(props, 'cut_objects_custom')
row = layout.row()
row.prop(props, 'raster_x')
row = layout.row()
row.prop(props, 'raster_y')
row = layout.row()
row.prop(props, 'diagram_scale')
if props.diagram_scale == 'CUSTOM':