return
print("Select first node (click on it)")
self.fig.canvas.mpl_connect('button_press_event',
self.on_click_select_first_node)
def on_click_select_first_node(self, event):
"""Handle first node selection for element creation"""
if event.inaxes != self.ax:
return
# Find closest node
min_dist = float('inf')
selected_node = None
for node_id, node in self.nodes.items():
dist = np.sqrt((event.xdata - node['x'])**2 + (event.ydata -
node['y'])**2)
if dist < min_dist:
min_dist = dist
selected_node = node_id
if min_dist > 0.5: # Threshold for selection
print("No node selected nearby")
self.fig.canvas.mpl_disconnect(self.fig.canvas.button_press_event)
return
print(f"Selected Node {selected_node}, now select second node")
self.selected_node1 = selected_node
self.fig.canvas.mpl_disconnect(self.fig.canvas.button_press_event)
self.fig.canvas.mpl_connect('button_press_event',
self.on_click_select_second_node)
def on_click_select_second_node(self, event):
"""Handle second node selection for element creation"""
if event.inaxes != self.ax:
return
# Find closest node
min_dist = float('inf')
selected_node = None
for node_id, node in self.nodes.items():
if node_id == self.selected_node1:
continue
dist = np.sqrt((event.xdata - node['x'])**2 + (event.ydata -
node['y'])**2)
if dist < min_dist:
min_dist = dist
selected_node = node_id
if min_dist > 0.5 or selected_node is None: # Threshold for
selection
print("No valid second node selected nearby")
self.fig.canvas.mpl_disconnect(self.fig.canvas.button_press_event)
return
P a g e 6 | 62