fixed issue placing ports on a bend if start segment is bending using Z-

This commit is contained in:
Andrej730
2023-11-08 16:51:41 +05:00
parent 11ed8cc787
commit 5d4d953320
@@ -1009,6 +1009,8 @@ class MEPAddBend(bpy.types.Operator, tool.Ifc.Operator):
segments_intersection_ws, (end_segment_data["start_point"], end_segment_data["end_point"]) segments_intersection_ws, (end_segment_data["start_point"], end_segment_data["end_point"])
) )
# start_/end_segment_sign indicate
# whether segments' z axes are directed towards the bend
start_port = points_ports_map[start_point] start_port = points_ports_map[start_point]
end_port = points_ports_map[end_point] end_port = points_ports_map[end_point]
start_point_on_origin = start_point == start_segment_data["start_point"] start_point_on_origin = start_point == start_segment_data["start_point"]
@@ -1077,9 +1079,9 @@ class MEPAddBend(bpy.types.Operator, tool.Ifc.Operator):
radial_offset = V(0, 0, 0) radial_offset = V(0, 0, 0)
ref_point_radius = self.radius + profile_dim[lateral_axis] ref_point_radius = self.radius + profile_dim[lateral_axis]
radial_offset[lateral_axis] = ref_point_radius * (1 - cos(angle)) * lateral_sign radial_offset[lateral_axis] = ref_point_radius * (1 - cos(angle)) * lateral_sign
radial_offset.z = ref_point_radius * sin(angle) radial_offset.z = ref_point_radius * sin(angle) * start_segment_sign
second_object_offset = radial_offset + V(0, 0, self.start_length) end_port_offset = radial_offset + V(0, 0, self.start_length * start_segment_sign)
second_object_offset += z_axis_end_object_local * (self.end_length * -end_segment_sign) end_port_offset += z_axis_end_object_local * (self.end_length * -end_segment_sign)
def get_segments_extend(): def get_segments_extend():
segments_intersection = segments_intersection_ws - start_point segments_intersection = segments_intersection_ws - start_point
@@ -1203,7 +1205,7 @@ class MEPAddBend(bpy.types.Operator, tool.Ifc.Operator):
pset=pset, pset=pset,
properties={"Data": tool.Ifc.get().createIfcText(json.dumps(bend_data, default=list))}, properties={"Data": tool.Ifc.get().createIfcText(json.dumps(bend_data, default=list))},
) )
tool.System.add_ports(obj, end_port_pos=second_object_offset) tool.System.add_ports(obj, end_port_pos=end_port_offset)
# NOTE: at this point we loose current blender objects selection # NOTE: at this point we loose current blender objects selection
# create transition element # create transition element