43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
# Draw simple boundary based on the lines and depth
|
|
|
|
def generate_mesh(lines: list, z_origin: float, depth: float, invert :bool = False):
|
|
|
|
origin = create_3D(lines, z_origin)
|
|
if invert :
|
|
extruded = create_3D(lines, z_origin - depth)
|
|
else:
|
|
extruded = create_3D(lines, z_origin + depth)
|
|
|
|
vert_lines = create_vert_lines(origin, extruded)
|
|
|
|
print(f"Result = {origin} / {extruded} / {vert_lines}")
|
|
|
|
return origin + vert_lines + extruded
|
|
|
|
|
|
def create_vert_lines(origin, extruded):
|
|
vert_lines = []
|
|
for d3_point_o, d3point_e in zip(origin, extruded):
|
|
for sp3d_1, sp3d_2 in zip(d3_point_o, d3point_e):
|
|
new_line = sp3d_1, sp3d_2
|
|
vert_lines.append(new_line)
|
|
return vert_lines
|
|
|
|
|
|
def create_3D(lines, z_pos):
|
|
line_loop = []
|
|
for coordinate2d in lines:
|
|
start, end = coordinate2d
|
|
|
|
xs, ys = start
|
|
coordinate3d_start_orig = xs, -ys, z_pos
|
|
|
|
xe, ye = end
|
|
coordinate3d_end_orig = xe, -ye, z_pos
|
|
|
|
line3d_orig = coordinate3d_start_orig, coordinate3d_end_orig
|
|
|
|
line_loop.append(line3d_orig)
|
|
|
|
return line_loop
|