Skip to content

Commit f329a4b

Browse files
authored
Merge pull request #82 from audunarn/dev
Fix to span optmizer.
2 parents 1c29584 + 46301b7 commit f329a4b

File tree

1 file changed

+52
-21
lines changed

1 file changed

+52
-21
lines changed

ANYstructure_local/optimize_geometry.py

Lines changed: 52 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,7 @@ def __init__(self, master, app=None):
317317
self.algorithm_random_label = tk.Label(self._frame, text='Number of trials')
318318
tk.Button(self._frame, text='algorith information', command=self.algorithm_info, bg='white') \
319319
.place(x=start_x + dx * 10, y=start_y + dy * 2)
320+
320321
self.run_button = tk.Button(self._frame, text='RUN OPTIMIZATION!', command=self.run_optimizaion, bg='red',
321322
font='Verdana 10', fg='Yellow')
322323
self.run_button.place(x=start_x + dx * 10, y=start_y)
@@ -426,6 +427,11 @@ def __init__(self, master, app=None):
426427
font='Verdana 10',fg='black')
427428
self.run_results.place(x=start_x+dx*13, y=start_y - dy * 18)
428429

430+
self.run_results_prev = tk.Button(self._frame,text='Show previous\n'
431+
'results', command=self.show_previous_results, bg='white',
432+
font='Verdana 10',fg='black')
433+
self.run_results_prev.place(x=start_x+dx*15, y=start_y - dy * 20)
434+
429435

430436
# ----------------------------------END OF OPTIMIZE SINGLE COPY-----------------------------------------------
431437
self.progress_count = tk.IntVar()
@@ -508,6 +514,15 @@ def selected_algorithm(self, event):
508514
self._ent_minstep.place(x=start_x + dx * 15, y=start_y + 0 * dy)
509515
self._ent_minfunc.place(x=start_x + dx * 15, y=start_y + 1 * dy)
510516

517+
def show_previous_results(self):
518+
# if type(self._geo_results) is not list():
519+
# if self._geo_results is not None:
520+
# return
521+
# else:
522+
# if self._geo_results[0] is not None:
523+
# return
524+
self.draw_select_canvas(opt_results=self._geo_results)
525+
511526
def run_optimizaion(self, load_pre = False, save_results = True):
512527
'''
513528
Function when pressing the optimization botton inside this window.
@@ -611,6 +626,7 @@ def run_optimizaion(self, load_pre = False, save_results = True):
611626
*tuple([val*2 for val in self._geo_results.keys()]),
612627
command=self.get_plate_field_options)
613628
self._ent_option_fractions.place(x=self._option_fractions_place[0], y=self._option_fractions_place[1])
629+
614630
# #SAVING RESULTS
615631
# if save_results:
616632
# with open('geo_opt_2.pickle', 'wb') as file:
@@ -633,9 +649,17 @@ def run_optimizaion(self, load_pre = False, save_results = True):
633649
else:
634650
filename = save_file.name
635651

636-
save_file = self.draw_result_text(self._geo_results, save_to_file=filename)
652+
save_file, xplot, yplot = self.draw_result_text(self._geo_results, save_to_file=filename)
637653
self.draw_select_canvas(opt_results=self._geo_results, save_file = save_file)
638654

655+
plt.axes(facecolor='lightslategray')
656+
plt.plot(xplot, yplot,color='yellow', linestyle='solid', marker='o',markerfacecolor='white', markersize=6)
657+
plt.xlabel('Length of plate fields [m]')
658+
plt.ylabel('Weight / max weight')
659+
plt.title('Length of plate fields vs. total weight')
660+
plt.grid()
661+
plt.show()
662+
639663
def opt_get_fractions(self):
640664
''' Finding initial number of fractions '''
641665
init_fractions = 0
@@ -988,13 +1012,14 @@ def draw_properties(self, init_obj=None, opt_obj=None, line=None):
9881012
text='Lateral pressure: ' + str(lateral_press) + ' kPa',
9891013
font='Verdana 10 bold', fill='red')
9901014

991-
def draw_select_canvas(self, load_selected=False, opt_results = None, save_file = None):
1015+
def draw_select_canvas(self, opt_results = None, save_file = None):
9921016
'''
9931017
Making the lines canvas.
9941018
:return:
9951019
'''
9961020
self._canvas_select.delete('all')
9971021
text_type = 'Verdana 8'
1022+
9981023
if opt_results is None:
9991024
# stippled lines and text.
10001025

@@ -1123,7 +1148,8 @@ def draw_select_canvas(self, load_selected=False, opt_results = None, save_file
11231148

11241149
for data_idx, data in enumerate(values[1]):
11251150
for idx, stuc_info in enumerate(data):
1126-
if type(stuc_info) == ANYstructure.calc_structure.Structure:
1151+
if type(stuc_info) == ANYstructure_local.calc_structure.Structure:
1152+
11271153
if y_loc > 700:
11281154
y_loc = 120
11291155
start_x += 350
@@ -1196,7 +1222,6 @@ def draw_result_text(self, geo_opt_obj, save_to_file = None):
11961222
max_weight = weight if weight > max_weight else max_weight
11971223

11981224

1199-
12001225
if save_to_file is not None:
12011226
save_file = open(save_to_file, 'w')
12021227
save_file.write('| Plate fields | Fields length | Weight index | All OK? |\n')
@@ -1232,15 +1257,10 @@ def draw_result_text(self, geo_opt_obj, save_to_file = None):
12321257
xplot.append(round(self._geo_results[key][1][0][0].get_span(),4))
12331258
yplot.append(round(self._geo_results[key][0] / max_weight, 4))
12341259

1235-
plt.axes(facecolor='lightslategray')
1236-
plt.plot(xplot, yplot,color='yellow', linestyle='solid', marker='o',markerfacecolor='white', markersize=6)
1237-
plt.xlabel('Length of plate fields [m]')
1238-
plt.ylabel('Weight / max weight')
1239-
plt.title('Length of plate fields vs. total weight')
1240-
plt.grid()
1241-
plt.show()
1242-
if save_to_file:
1243-
return save_file
1260+
if save_to_file is not None:
1261+
return save_file, xplot, yplot
1262+
else:
1263+
return None, xplot, yplot
12441264

12451265
def algorithm_info(self):
12461266
''' When button is clicked, info is displayed.'''
@@ -1365,12 +1385,12 @@ def button_1_click(self, event):
13651385
method is referenced in
13661386
'''
13671387
self._previous_drag_mouse = [event.x, event.y]
1368-
if type(self._geo_results) is not list():
1369-
if self._geo_results is not None:
1370-
return
1371-
else:
1372-
if self._geo_results[0] is not None:
1373-
return
1388+
# if type(self._geo_results) is not list():
1389+
# if self._geo_results is not None:
1390+
# return
1391+
# else:
1392+
# if self._geo_results[0] is not None:
1393+
# return
13741394
click_x = self._canvas_select.winfo_pointerx() - self._canvas_select.winfo_rootx()
13751395
click_y = self._canvas_select.winfo_pointery() - self._canvas_select.winfo_rooty()
13761396

@@ -1471,7 +1491,7 @@ def save_and_close(self):
14711491
return
14721492
self._frame.destroy()
14731493

1474-
def toggle(self, found_files = None, obj = None, iterating = False):
1494+
def toggle(self, found_files = None, obj = None, iterating = False, given_path: str = None):
14751495
'''
14761496
On off button.
14771497
:param found_files:
@@ -1496,13 +1516,22 @@ def toggle(self, found_files = None, obj = None, iterating = False):
14961516
self._ent_spacing_upper.config(bg = 'lightgreen')
14971517
self._ent_spacing_lower.config(bg = 'lightgreen')
14981518
self._ent_delta_spacing.config(bg = 'lightgreen')
1499-
self._filez = list(askopenfilenames(parent=self._frame, title='Choose files to open'))
1519+
self._ent_pl_thk_upper.config(bg = 'lightgreen')
1520+
self._ent_pl_thk_lower.config(bg = 'lightgreen')
1521+
self._ent_delta_pl_thk.config(bg = 'lightgreen')
1522+
if given_path is None:
1523+
self._filez = list(askopenfilenames(parent=self._frame, title='Choose files to open'))
1524+
else:
1525+
self._filez = [given_path]
15001526
if self._filez == []:
15011527
self._toggle_btn.config(relief="raised")
15021528
self._toggle_btn.config(bg='salmon')
15031529
self._ent_spacing_upper.config(bg='white')
15041530
self._ent_spacing_lower.config(bg='white')
15051531
self._ent_delta_spacing.config(bg='white')
1532+
self._ent_pl_thk_upper.config(bg='white')
1533+
self._ent_pl_thk_lower.config(bg='white')
1534+
self._ent_delta_pl_thk.config(bg='white')
15061535

15071536
return found_files, predefined_structure
15081537

@@ -1541,9 +1570,11 @@ def button_2_click_and_drag(self,event):
15411570
self._canvas_draw_origo[1]-(self._previous_drag_mouse[1]-event.y))
15421571

15431572
self._previous_drag_mouse = (event.x,event.y)
1573+
15441574
self.draw_select_canvas()
15451575

15461576
if __name__ == '__main__':
15471577
root = tk.Tk()
15481578
my_app = CreateOptGeoWindow(master=root)
1579+
15491580
root.mainloop()

0 commit comments

Comments
 (0)