Major changes: - Fixed right-click handler to directly set mode to NONE instead of relying on main app signal handling - Added safety checks in left-click handler to prevent drawing when no draggable point is found in NONE mode - Enhanced mode compatibility by treating Python None as SketchMode.NONE in set_mode() method - Added comprehensive debug logging for mode changes and interaction state tracking - Resolved integration issue where persistent constraint modes were prematurely reset by main app - Ensured point dragging is only enabled in NONE mode, preventing accidental polyline creation This fixes the reported issue where deactivating the line tool would still create lines when dragging, and ensures proper mode transitions between drawing tools and selection/drag mode.
44 lines
1.1 KiB
Python
44 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
|