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_window.add_object_button)
bpy.types.VIEW3D_MT_mesh_add.append(model_slab.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.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(): def unregister():
for cls in reversed(classes): 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_window.add_object_button)
bpy.types.VIEW3D_MT_mesh_add.remove(model_slab.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.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 mathutils import Vector, Matrix, Euler
from math import radians, atan, tan, cos, sin, atan2 from math import radians, atan, tan, cos, sin, atan2
from pathlib import Path from pathlib import Path
from bpy.app.handlers import persistent
colour_list = [ colour_list = [
(.651, .81, .892, 1), (.651, .81, .892, 1),
@@ -40,6 +41,22 @@ colour_list = [
(.993, .999, .6, 1), (.993, .999, .6, 1),
(.693, .349, .157, 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): class ExportIFC(bpy.types.Operator):
bl_idname = "export_ifc.bim" bl_idname = "export_ifc.bim"
bl_label = "Export IFC" bl_label = "Export IFC"
@@ -543,6 +543,8 @@ class BIMCameraProperties(PropertyGroup):
view_name: StringProperty(name="View Name") view_name: StringProperty(name="View Name")
diagram_scale: EnumProperty(items=getDiagramScales, name='Drawing Scale') diagram_scale: EnumProperty(items=getDiagramScales, name='Drawing Scale')
custom_diagram_scale: StringProperty(name='Custom 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') is_nts: BoolProperty(name='Is NTS')
cut_objects: EnumProperty(items=[ cut_objects: EnumProperty(items=[
('.IfcWall|.IfcSlab|.IfcCurtainWall|.IfcStair|.IfcStairFlight|.IfcColumn|.IfcBeam|.IfcMember|.IfcCovering', ('.IfcWall|.IfcSlab|.IfcCurtainWall|.IfcStair|.IfcStairFlight|.IfcColumn|.IfcBeam|.IfcMember|.IfcCovering',
@@ -906,6 +906,11 @@ class BIM_PT_camera(Panel):
row = layout.row() row = layout.row()
row.prop(props, 'cut_objects_custom') 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 = layout.row()
row.prop(props, 'diagram_scale') row.prop(props, 'diagram_scale')
if props.diagram_scale == 'CUSTOM': if props.diagram_scale == 'CUSTOM':