New feature to convert from local to global coordinates

This commit is contained in:
Dion Moult
2020-05-12 13:31:16 +10:00
parent df62643fc7
commit df12d6bab1
3 changed files with 31 additions and 1 deletions
@@ -127,6 +127,7 @@ if bpy is not None:
operator.RemoveVariable,
operator.PropagateTextData,
operator.PushRepresentation,
operator.ConvertLocalToGlobal,
prop.StrProperty,
prop.Variable,
prop.Classification,
@@ -18,7 +18,7 @@ from . import annotation
from bpy_extras.io_utils import ImportHelper
from itertools import cycle
from mathutils import Vector, Matrix, Euler
from math import radians, atan, tan
from math import radians, atan, tan, cos, sin, atan2
from pathlib import Path
colour_list = [
@@ -2653,3 +2653,29 @@ class PushRepresentation(bpy.types.Operator):
return element.ContextType == self.context \
and element.ContextIdentifier == self.subcontext \
and element.TargetView == self.target_view
class ConvertLocalToGlobal(bpy.types.Operator):
bl_idname = 'bim.convert_local_to_global'
bl_label = 'Convert Local To Global'
def execute(self, context):
x, y, z = bpy.context.scene.cursor.location
if bpy.context.scene.MapConversion.scale:
scale = float(bpy.context.scene.MapConversion.scale)
else:
scale = 1.
rotation = atan2(
float(bpy.context.scene.MapConversion.x_axis_ordinate),
float(bpy.context.scene.MapConversion.x_axis_abscissa))
a = scale * cos(rotation)
b = scale * sin(rotation)
eastings = (a * x) - (b * y) + float(bpy.context.scene.MapConversion.eastings)
northings = (b * x) + (a * y) + float(bpy.context.scene.MapConversion.northings)
height = z + float(bpy.context.scene.MapConversion.orthogonal_height)
bpy.context.scene.cursor.location = (eastings, northings, height)
return {'FINISHED'}
@@ -535,6 +535,9 @@ class BIM_PT_gis(Panel):
layout.row().prop(scene.TargetCRS, 'map_zone')
layout.row().prop(scene.TargetCRS, 'map_unit')
row = layout.row(align=True)
row.operator('bim.convert_local_to_global')
class BIM_PT_documentation(Panel):
bl_label = "Documentation"