mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-23 10:52:45 +00:00
Doors are now placed on the side of the wall that was snapped to
This commit is contained in:
committed by
Ryan Schultz
parent
3c9ee4a71f
commit
130b569f6f
@@ -39,7 +39,7 @@ import numpy as np
|
|||||||
import shapely
|
import shapely
|
||||||
from bpy.types import Operator, SpaceView3D
|
from bpy.types import Operator, SpaceView3D
|
||||||
from gpu_extras.batch import batch_for_shader
|
from gpu_extras.batch import batch_for_shader
|
||||||
from mathutils import Matrix, Vector
|
from mathutils import Euler, Matrix, Vector
|
||||||
|
|
||||||
import bonsai.core.geometry
|
import bonsai.core.geometry
|
||||||
import bonsai.tool as tool
|
import bonsai.tool as tool
|
||||||
@@ -298,9 +298,16 @@ class FilledOpeningGenerator:
|
|||||||
new_matrix.translation.x = point_on_base_axis.x
|
new_matrix.translation.x = point_on_base_axis.x
|
||||||
new_matrix.translation.y = point_on_base_axis.y
|
new_matrix.translation.y = point_on_base_axis.y
|
||||||
else:
|
else:
|
||||||
new_matrix.translation.x = point_on_side_axis.x
|
filling_min_x = min([p[0] for p in filling_obj.bound_box])
|
||||||
new_matrix.translation.y = point_on_side_axis.y
|
filling_max_x = max([p[0] for p in filling_obj.bound_box])
|
||||||
new_matrix = new_matrix @ Matrix.Rotation(radians(180.0), 4, "Z")
|
|
||||||
|
# offset that results in the same x extents when the model is rotated 180 degrees
|
||||||
|
filling_opposite_x = filling_max_x + filling_min_x
|
||||||
|
|
||||||
|
offset_dir = voided_obj.matrix_world @ Vector((filling_opposite_x, 0, 0, 0))
|
||||||
|
new_matrix.translation.x = point_on_side_axis.x + offset_dir.x
|
||||||
|
new_matrix.translation.y = point_on_side_axis.y + offset_dir.y
|
||||||
|
new_matrix = new_matrix @ Euler((0, 0, radians(180.0))).to_matrix().to_4x4()
|
||||||
|
|
||||||
if should_set_z_level:
|
if should_set_z_level:
|
||||||
if filling.is_a("IfcDoor"):
|
if filling.is_a("IfcDoor"):
|
||||||
|
|||||||
Reference in New Issue
Block a user