Source code for compas_wood.binding.binding_get_connection_zones

from wood_nano import get_connection_zones as wood_nano_get_connection_zones
from wood_nano import cut_type2 as wood_nano_cut_type2
from wood_nano import point3 as wood_nano_point3
from wood_nano.conversions_python import to_int2
from wood_nano.conversions_python import to_int1
from wood_nano.conversions_python import to_double1
from wood_nano.conversions_python import from_cut_type2
from compas_wood.conversions_compas import to_point2
from compas_wood.conversions_compas import to_vector2
from compas_wood.conversions_compas import from_point3
from compas_wood.binding import wood_globals
from math import floor


[docs] def get_connection_zones( input_polyline_pairs, input_insertion_vectors=[], input_joint_types=[], input_three_valence_element_indices_and_instruction=[], input_adjacency=[], input_joint_parameters_and_types=[], input_search_type=0, input_scale=[1, 1, 1], input_output_type=3, input_joint_volume_parameters=[0, 0, 0], input_custom_joints=[], input_custom_joints_types=[], remove_duplicate_polylines=False, ): """ Get connection zones for the given input parameters. Parameters ---------- input_polyline_pairs : list[list[compas.geometry.Polyline]] List of polylines that represents the timber elements. input_insertion_vectors : list[compas.geometry.Vector], optional List of insertion vectors. input_joint_types : list[int], optional List of joint types. input_three_valence_element_indices_and_instruction : list[int], optional List of three valence element indices and instruction. input_adjacency : list[int], optional List of adjacency. input_joint_parameters_and_types : list[float], optional List of joint parameters and types. input_search_type : int, optional Search type. input_scale : list[float], optional Scale. input_output_type : int, optional Output type. input_joint_volume_parameters : list[float], optional Joint volume parameters. input_face_to_face_side_to_side_joints_all_treated_as_rotated : bool, optional Face to face side to side joints all treated as rotated. input_custom_joints : list[compas.geometry.Point], optional Custom joints. input_custom_joints_types : list[int], optional Custom joints types. remove_duplicate_polylines : bool, optional Remove duplicate polylines. Returns ------- list[list[compas.geometry.Polyline]] List of polylines that represents the timber elements. list[wood_nano.CutType2] List of cut types. """ joint_parameters = wood_globals.joints_parameters_and_types for i in range(0, len(input_joint_parameters_and_types), 3): insertion_id = floor(input_joint_parameters_and_types[i + 2] / 10) joint_parameters[insertion_id * 3 + 0] = input_joint_parameters_and_types[i + 0] joint_parameters[insertion_id * 3 + 1] = input_joint_parameters_and_types[i + 1] joint_parameters[insertion_id * 3 + 2] = input_joint_parameters_and_types[i + 2] w_output_plines = wood_nano_point3() w_output_types = wood_nano_cut_type2() wood_nano_get_connection_zones( to_point2(input_polyline_pairs), to_vector2(input_insertion_vectors), to_int2(input_joint_types), to_int2(input_three_valence_element_indices_and_instruction), to_int1(input_adjacency), to_double1(joint_parameters), int(input_search_type), to_double1(input_scale), int(input_output_type), w_output_plines, w_output_types, to_double1(input_joint_volume_parameters), ) polylines_lists = from_point3(w_output_plines) output_types = list(w_output_types) new_polyline_lists = [] if remove_duplicate_polylines: for polylines in polylines_lists: new_polylines = [] for polyline in polylines: if polyline not in new_polylines: new_polylines.append(polyline) if len(new_polylines) == 2: new_polyline_lists.append(list(new_polylines)) new_polylines.clear() return polylines_lists, output_types, new_polyline_lists