Created by: zeffii
- adds
enum2
to the allowed directives, - adds
np
to the default import (makes it an available alias)
allows us to do
"""
in verts_a v
in faces_a s
in verts_b v
in faces_b s
in precision s d=0.1 n=2
in face_threshold s d=3.0 n=2
in shape_threshold s d=3.0 n=2
out verts_new v
out faces_new s
enum = common fuse cut
enum2 = raw clean
"""
def ui(self, context, layout):
layout.prop(self, 'custom_enum', expand=True)
layout.prop(self, 'custom_enum_2', expand=True)
from sverchok.utils.solid import svmesh_to_solid
from sverchok.nodes.modifier_make.join_tris import join_tris
from sverchok.data_structure import sv_lambda, match_long_repeat as mlr
params = sv_lambda(face_threshold=face_threshold, shape_threshold=shape_threshold)
for v1, f1, v2, f2 in zip(*mlr([verts_a, faces_a, verts_b, faces_b])):
solid_a = svmesh_to_solid(v1, f1, precision)
solid_b = svmesh_to_solid(v2, f2, precision)
solid_out = getattr(solid_a, self.custom_enum)(solid_b)
solid_out = solid_out.removeSplitter()
rawdata = solid_out.tessellate(precision)
b_verts = [(v.x, v.y, v.z) for v in rawdata[0]]
if self.custom_enum_2 == "clean":
v_out, f_out = join_tris(b_verts, rawdata[1], params)
else:
v_out = b_verts
f_out = rawdata[1]
verts_new.append(v_out)
faces_new.append(f_out)