Source code for compas_wood.binding.binding_mesh_boolean_difference_from_polylines

from wood_nano import mesh_boolean_difference_from_polylines as wood_nano_mesh_boolean_difference_from_polylines
from compas_wood.conversions_compas import to_point2
from compas_wood.conversions_compas import to_point3
from wood_nano import point2
from wood_nano import vector2
from wood_nano import int3
from compas.datastructures import Mesh


[docs]def mesh_boolean_difference_from_polylines( polylines_lists, ): """The polylines lists first items represnts elements outlines and the second items represents joinery outlines. Parameters ---------- polylines_lists : list 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. """ object_outlines = [polyline for polylines in polylines_lists for polyline in polylines[:2]] joinery_outlines = [polylines[2:] for polylines in polylines_lists] wood_nano_out_vertices = point2() wood_nano_out_normals = vector2() wood_nano_out_faces = int3() wood_nano_mesh_boolean_difference_from_polylines( to_point2(object_outlines), to_point3(joinery_outlines), wood_nano_out_vertices, wood_nano_out_normals, wood_nano_out_faces, ) meshes = [] for vertices, faces in zip(wood_nano_out_vertices, wood_nano_out_faces): mesh = Mesh.from_vertices_and_faces(vertices, faces) meshes.append(mesh) return meshes