compas_model.binding

class compas_wood.binding.Globals[source]

Bases: object

Class to access global variables of the wood_nano library using class instance wood_globals:

>>> from compas_wood.binding import wood_globals
>>> wood_globals.distance_squared = 10
>>> wood_globals.face_to_face_side_to_side_joints_rotated_joint_as_average = True
>>> wood_globals.face_to_face_side_to_side_joints_all_treated_as_rotated = True
Attributes:
clipper_scaleint, default 1e6

The clipper scale.

clipper_areafloat, default 1e-2

The clipper area.

distancefloat, default 1e-1

The distance.

distance_squaredfloat, default 1e-2

The distance squared.

anglefloat, default 0.11

The angle.

path_and_file_for_jointsstr, default “”

The path and file for joints.

data_set_input_folderstr

The data set input folder.

data_set_output_filestr, default data_set_input_folder + “out.xml”

The data set output file.

data_set_output_databasestr, default data_set_input_folder + “out.db”

The data set output database.

joint_volume_extensionlist[float], default [0.0, 0.0, 0.0, 0.0, 0.0]

The joint volume extension, first 3 values are for xyz of the joint volume.

output_geometry_typeint, default 4

The output geometry type.

face_to_face_side_to_side_joints_all_treated_as_rotatedbool, default False

The face to face side to side joints all treated as rotated.

face_to_face_side_to_side_joints_rotated_joint_as_averagebool, default False

The face to face side to side joints rotated joint as average.

face_to_face_side_to_side_joints_dihedral_anglefloat, default 150.0

The face to face side to side joints dihedral angle.

limit_min_joint_lengthfloat, default 0.0

The limit min joint length.

existing_typeslist[str], read-only

The existing types of joints.

joints_parameters_and_typeslist[float], default:

300, 0.5, 3, // 1-9 ss_e_ip (side-to-side edge in-plane)

450, 0.64, 15, // 10-19 ss_e_op (side-to-side edge out-of-plane)

450, 0.5, 20, // 20-29 ts_e_p (top-to-side edge plane)

300, 0.5, 30, // 30-39 cr_c_ip (cross cutting in-plane)

6, 0.95, 40, // 40-49 tt_e_p (top-to-top edge plane)

300, 0.5, 58, // 50-59 ss_e_r (side-to-side edge rotated)

300, 1.0, 60 // 60-69 b (boundary)

custom_joints_ss_e_ip_malelist[Polyline], default []

Joinery polylines for custom side-to-side edge in-plane male joints.

custom_joints_ss_e_ip_femalelist[Polyline], default []

Joinery polylines for custom side-to-side edge in-plane female joints.

custom_joints_ss_e_op_malelist[Polyline], default []

Joinery polylines for custom side-to-side edge out-of-plane male joints.

custom_joints_ss_e_op_femalelist[Polyline], default []

Joinery polylines for custom side-to-side edge out-of-plane female joints.

custom_joints_ts_e_p_malelist[Polyline], default []

Joinery polylines for custom top-to-side edge in-plane male joints.

custom_joints_ts_e_p_femalelist[Polyline], default []

Joinery polylines for custom top-to-side edge in-plane female joints.

custom_joints_cr_c_ip_malelist[Polyline], default []

Joinery polylines for custom corner-to-corner in-plane male joints.

custom_joints_cr_c_ip_femalelist[Polyline], default []

Joinery polylines for custom corner-to-corner in-plane female joints.

custom_joints_tt_e_p_malelist[Polyline], default []

Joinery polylines for custom top-to-top edge in-plane male joints.

custom_joints_tt_e_p_femalelist[Polyline], default []

Joinery polylines for custom top-to-top edge in-plane female joints.

custom_joints_ss_e_r_malelist[Polyline], default []

Joinery polylines for custom side-to-side edge rounded male joints.

custom_joints_ss_e_r_femalelist[Polyline], default []

Joinery polylines for custom side-to-side edge rounded female joints.

custom_joints_b_malelist[Polyline], default []

Joinery polylines for custom base male joints.

custom_joints_b_femalelist[Polyline], default []

Joinery polylines for custom base female joints.

compas_wood.binding.closed_mesh_from_polylines(input_polyline_pairs)[source]

Get closed mesh from polylines, where the first two polylines are the top and bottom polylines, and the rest are the holes.

Parameters:
input_polyline_pairslist[list[compas.geometry.Polyline]]

List of polylines that represents the timber elements.

Returns:
compas.datastructures.Mesh

closed mesh

compas_wood.binding.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)[source]

Get connection zones for the given input parameters.

Parameters:
input_polyline_pairslist[list[compas.geometry.Polyline]]

List of polylines that represents the timber elements.

input_insertion_vectorslist[compas.geometry.Vector], optional

List of insertion vectors.

input_joint_typeslist[int], optional

List of joint types.

input_three_valence_element_indices_and_instructionlist[int], optional

List of three valence element indices and instruction.

input_adjacencylist[int], optional

List of adjacency.

input_joint_parameters_and_typeslist[float], optional

List of joint parameters and types.

input_search_typeint, optional

Search type.

input_scalelist[float], optional

Scale.

input_output_typeint, optional

Output type.

input_joint_volume_parameterslist[float], optional

Joint volume parameters.

input_face_to_face_side_to_side_joints_all_treated_as_rotatedbool, optional

Face to face side to side joints all treated as rotated.

input_custom_jointslist[compas.geometry.Point], optional

Custom joints.

input_custom_joints_typeslist[int], optional

Custom joints types.

remove_duplicate_polylinesbool, 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.

compas_wood.binding.joints(input_polyline_pairs, search_type=0)[source]

Get joints for the given input parameters. This is the very first step in the process of creating a timber structure - detection of interfaces.

Parameters:
input_polyline_pairslist[list[compas.geometry.Polyline]]

List of polylines that represents the timber elements.

search_typeint, optional

Search type.

Returns:
list[list[int]]

List of element pairs.

list[compas.geometry.Polyline]

List of joint areas.

list[int]

List of joint types.

compas_wood.binding.mesh_boolean_difference_from_polylines(polylines_lists)[source]

The polylines lists first items represnts elements outlines and the second items represents joinery outlines.

Parameters:
polylines_listslist of list of compas.geometry.Polyline

The polylines lists first items represnts elements outlines and the second items represents joinery outlines.

Returns:
list of compas.datastructures.Mesh

The meshes created by the boolean difference of the elements and joineries.

compas_wood.binding.read_xml_polylines(foldername='/home/petras/brg/2_code/wood_nano/src/wood/cmake/src/wood/dataset/', filename='type_plates_name_cross_vda_hexshell_reciprocal', scale=1)[source]

Read polylines from XML file.

Parameters:
foldernamestr, optional

Foldername.

filename_of_datasetstr, optional

Filename of dataset.

scalefloat, optional

Scale.

Returns:
list[compas.geometry.Polyline]

List of polylines.

compas_wood.binding.read_xml_polylines_and_properties(foldername='/home/petras/brg/2_code/wood_nano/src/wood/cmake/src/wood/dataset/', filename_of_dataset='type_plates_name_top_to_side_and_side_to_side_outofplane_annen_grid_small', scale=0.01)[source]

Read polylines from XML file with attributes:

  • insertion vectors per face

  • input_joints_types per face

  • input_three_valence_element_indices_and_instruction

  • input_adjacency per curren and next elements and their faces.

Parameters:
foldernamestr, optional

Foldername.

filename_of_datasetstr, optional

Filename of dataset.

scalefloat, optional

Scale.

Returns:
list[compas.geometry.Polyline]

List of polylines.

list[list[compas.geometry.Vector]]

List of vectors.

list[list[int]]

List of joint types.

list[list[int]]

List of three valence element indices and instruction.

list[int]

List of adjacency.

compas_wood.binding.rtree(polylines)[source]

Given a list of polylines-pairs find neighbors between them via aabb and obb collisions. Polyline pairs means the top and bottom polylines of plates.

Parameters:
polylineslist[compas.geometry.Polyline]

List of polylines.

Returns:
list[int]

List of neighbors.

list[compas.geometry.Box]

List of aabb boxes.

list[compas.geometry.Box]

List of obb boxes.

compas_wood.binding.test()[source]

Test if wood_nano package is loaded by printing message in C++.