diff --git a/mysite/plots/packing_algo.py b/mysite/plots/packing_algo.py index 34351764c9f3498653f649120de6f6bfdb3fdc55..c1059094ba7fa0e6973e0d12a987d8e842a465df 100644 --- a/mysite/plots/packing_algo.py +++ b/mysite/plots/packing_algo.py @@ -7,7 +7,7 @@ from collections import defaultdict import itertools # from typing import NewType # for JupyterLab -#import import_ipynb + # tree datastructure from . import avl_tree @@ -31,7 +31,6 @@ from bokeh.models import ColumnDataSource, Label, LabelSet, Range1d from bokeh.palettes import Dark2_5 as palette from bokeh.plotting import output_file - # for analysing the data import pandas as pd @@ -342,7 +341,7 @@ class Container(object): polygon.translation(transform_x, transform_y) min_horizontal_distance = math.inf distance_rl_plot_helper = [] - # distanzen von rechts nach links + # distanzen von rechts nach links for vertex in polygon.vertices_left_visible: vertex_y = vertex[1] successor_vertex = self.Tree.find_edges(self.root, vertex_y, self.root) @@ -558,12 +557,19 @@ class End_Container(object): self.mini_containers = copy.deepcopy(mini_container_array) self.initial_mini_containers = mini_container_array self.polygons, self.max_width, self.max_height, self.container_not_clipped_area = self.pack_container() + self.polygon_shells = self.collect_polygon_shells() self.x_values_border = [0, 0, self.max_width, self.max_width, 0] self.y_values_border = [0, self.max_height, self.max_height, 0, 0] self.container_area = self.max_width * self.max_height self.angle = angle self.plot_steps_all = None + def collect_polygon_shells(self): + polygon_shells = [] + for polygon in self.polygons: + polygon_shells.append(polygon.shell) + return polygon_shells + def pack_container(self) -> ([ConvexPolygon], float, float): y_offset = 0 end_c_polygons = [] @@ -669,6 +675,7 @@ class ConvexContainer(object): self.back_rotated_polygons_plots = [] self.smallest_end_container, self.polygons, self.angle, self.area = self.find_convex_container(steps, build_plots) + self.polygon_shells = self.collect_polygon_shells() self.width = self.smallest_end_container.max_width self.height = self.smallest_end_container.max_height self.boundarys_x_values, self.boundarys_y_values = self.set_boundarys() @@ -735,6 +742,12 @@ class ConvexContainer(object): smallest_area = smallest_container.container_area return (smallest_container, smallest_back_rotated_polygons, abs(angle), smallest_area) + def collect_polygon_shells(self): + polygon_shells = [] + for polygon in self.polygons: + polygon_shells.append(polygon.shell) + return polygon_shells + def set_boundarys(self) -> ([Point_xy], [Point_xy]): container = self.smallest_end_container boundarys_x_values = [0, 0, self.width, self.width, 0] diff --git a/mysite/plots/polygon.txt b/mysite/plots/polygon.txt index fdb043f0b59431e40f6c6ea7460221eb1f455c8e..163e42c56daac2b6a9b06a9e70119f6458c3db46 100644 --- a/mysite/plots/polygon.txt +++ b/mysite/plots/polygon.txt @@ -1,4 +1,6 @@ Polygon -[(3.0, 0.0),(0.0, 1.0),(0,0),(0.0, 4.0),(3.0, 5.0),(5.0, 3.0),(5.0, 1.0),(2.0, 0.0)] -[(2.0, 0.0),(0.0, 1.0),(0.0, 4.0),(3.0, 5.0),(5.0, 3.0),(5.0, 1.0),(2.0, 0.0)] -[(-12.0, 0.0),(0.0, 1.0),(0.0, 4.0),(3.0, 5.0),(5.0, 3.0),(5.0, 1.0),(2.0, 0.0)] \ No newline at end of file +[(686.0, 0.0), (0.0, 41.0), (289.0, 371.0), (686.0, 0.0)] +[(686.0, 0.0), (1101.9999999999995, 905.0), (1291.9999999999995, 62.0), (686.0, 0.0)] +[(1842.7583497053038, 0.0), (1286.7583497053042, 4.0), (1332.7583497053042, 513.0), (2047.7583497053038, 608.0), (2023.7583497053038, 423.0), (1842.7583497053038, 0.0)] +[(316.9999999999998, 905.0), (0.0, 1490.0), (356.9999999999998, 1527.0), (741.9999999999998, 1428.0), (724.9999999999998, 1078.0), (316.9999999999998, 905.0)] +[(586.0, 1527.0), (0.0, 1540.0), (300.0, 1762.0), (586.0, 1527.0)] \ No newline at end of file diff --git a/mysite/plots/templates/plots/get.html b/mysite/plots/templates/plots/get.html deleted file mode 100644 index 743bce7b914efe0965f47fe87e94919add9150f4..0000000000000000000000000000000000000000 --- a/mysite/plots/templates/plots/get.html +++ /dev/null @@ -1,83 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head> - <title>Bootstrap Example</title> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1"> - <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"> - <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> - <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script> -</head> -<body> - {% autoescape off %} -<div style="padding-right: 15px; padding-left: 15px;"> - - <ul class="nav nav-tabs tabs-left"> - <li class="active"><a data-toggle="tab" href="#home">Home</a></li> - {%for tab in containers%} - {% with forloop.counter|stringformat:"i" as strvalue%} - <li><a data-toggle="tab" href={{"#id"|add:strvalue}}>{{"#id"|add:strvalue}}</a></li> - {%endwith%} - {%endfor %} - </ul> - -<div class="tab-content"> - <div id="home" class="tab-pane fade in active"> - <h3>HOME</h3> - <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p> - </div> - {%for tab in containers%} - {% with forloop.counter|stringformat:"i" as strrvalue%} - <div id={{"id"|add:strrvalue}} class="tab-pane fade"> - - <h3>{{"id"|add:strrvalue}}</h3> - <p>{{tab|safe}}</p> - - </div> - {%endwith%} - {%endfor %} - - </div> -</div> - -<div style="padding-right: 15px; padding-left: 15px;"> - - <ul class="nav nav-tabs "> - - {%for tab in containers2%} - {% with forloop.counter|stringformat:"i" as str2value%} - {%if forloop.first %} - <li class="active"><a data-toggle="tab" href={{"#idd"|add:str2value}}>{{"#idd"|add:str2value}}</a></li> - {%else%} - <li><a data-toggle="tab" href={{"#idd"|add:str2value}}>{{"#idd"|add:str2value}}</a></li> - - {%endif%} - - {%endwith%} - {%endfor %} - </ul> - -<div class="tab-content"> - {%for tab2 in containers2%} - {% with forloop.counter|stringformat:"i" as str2value%} - {%if forloop.first %} - <div id={{"idd"|add:str2value}} class="tab-pane fade in active"> - <h3>{{"idd"|add:str2value}}</h3> - <p>{{tab2|safe}}</p> - {% else %} - <div id={{"idd"|add:str2value}} class="tab-pane fade"> - <h3>{{"idd"|add:str2value}}</h3> - <p>{{tab2|safe}}</p> - </div> - {% endif %} - - {%endwith%} - {%endfor %} - - </div> -</div> -</div> - -{% endautoescape %} -</body> -</html> diff --git a/mysite/plots/templates/plots/index.html b/mysite/plots/templates/plots/index.html index 35df7adb5cb8bcc5008cfc85f4d5da8966976981..d290c8537fd501969ea17810aa22de78568b99f1 100644 --- a/mysite/plots/templates/plots/index.html +++ b/mysite/plots/templates/plots/index.html @@ -1,43 +1,89 @@ -<!DOCTYPE HTML> -<html> -<head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=1"> - <title>test</title> -</head> -<body> -{% autoescape off %} -<h1>Polygons</h1> -{{polygons_plot}} -<hr> -<h1> Highclasses</h1> -{%for hc in hc_plot%} -<h2>Highclass {{forloop.counter|add:"-1"}}</h2> - {{hc}} -{% if forloop.last is not True%} -<hr style="border: 2px dashed #C0C0C0" > -{%else%} -<hr> -{%endif%} -{%endfor%} - -<h1>Highclasses -> Container</h1> -{{container_plot}} - - -{%for mini_container in mini_container_plot%} -<h2>Highclass-Container {{forloop.counter|add:"-1"}} -> Mini-Containers </h2> -{{mini_container}} -{% if forloop.last is not True%} -<hr style="border: 2px dashed #C0C0C0" > -{%else%} -<hr> -{%endif%} - -{%endfor%} -<h1>End Container</h1> -{{end_container_plot}} -{% endautoescape %} - -</body> +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> + <title>Packing Algorithm</title> + <script src="https://cdn.bokeh.org/bokeh/release/bokeh-2.2.3.min.js" + crossorigin="anonymous"></script> + <script src="https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.2.3.min.js" + crossorigin="anonymous"></script> + <script src="https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.2.3.min.js" + crossorigin="anonymous"></script> + </head> + <body> + + + <div style='display:inline'> + <h1>Drawn Polygons</h1> + {{ response|safe }} + <form style='display:inline' action="/index/" method="post"> + {% csrf_token %} + <label for="drawn_polygons"><b>Load/Clear drawn Polygons</b></label> + <input id="drawn_polygons" type="hidden" name="drawn_polygons" value="test"> + <input type="submit" onclick="myFunction()" value="load"> + </form> + <form style='display:inline' action="/clear_polygons/" method="get"> + {% csrf_token %} + <label for="clear_polygons"></label> + <input id="clear_polygons" type="hidden" name="clear_polygons" value="test"> + <input type="submit" value="clear"> + </form> + </div> + <div> + <form action="/csv_polygons/" method="post"> + {% csrf_token %} + <label for="load_csv_polygons"><b>Load CSV Polygons into PolyEditTool</b></label> + <input id="load_csv_polygons" type="hidden" name="load_csv_polygons" value="test"> + <input type="submit" value="load"> + </form> + </div> + <div> + <form action="/packing_rect_container/" target="_blank" method="get"> + {% csrf_token %} + <label for="pack_rect_container"><b>Packing Rectengular Container</b></label> + <input id="pack_rect_container" type="hidden" name="pack_polygon" value="test"> + <input type="submit" onclick="packPolygons()" value="pack"> + </form> + </div> + <div> + <form action="/packing_rotated_rect_container/" target="_blank" method="get"> + {% csrf_token %} + <label for="pack_rotated_rect_container"><b>Packing Rotated Rectengular Container</b></label> + <input id="pack_rotated_rect_container" type="hidden" name="pack_polygon" value="test"> + <input type="submit" onclick="packPolygons()" value="pack"> + </form> + </div> + <div> + <form action="/packing_convex_container/" target="_blank" method="post"> + {% csrf_token %} + <label for="pack_convex_container"><b>Packing Convex Container (degree between 1-360)</b></label> + <input id="pack_convex_container" type="number" min="1" max="360" name="angle" value=10> + <input type="submit" value="pack"> + </form> + </div> + <div> + {% autoescape off %} + <h1>Convex Polygons</h1> + {{drawn_polygons|safe}} + <h1>Convex Polygons in one Plot</h1> + {{polygons_single_plot|safe}} + + + {% endautoescape %} + </div> + + + </body> + + + + +<script> +function myFunction() { + var ds = Bokeh.documents[0].get_model_by_name('my-data-source'); + var dict1 = {x:ds.data["x"], y:ds.data["y"]}; + document.getElementById("drawn_polygons").value =JSON.stringify(dict1); +} +</script> + </html> \ No newline at end of file diff --git a/mysite/plots/templates/plots/index_new.html b/mysite/plots/templates/plots/packed_polygons.html similarity index 50% rename from mysite/plots/templates/plots/index_new.html rename to mysite/plots/templates/plots/packed_polygons.html index f495949bda7218599140638e14ccb201414e6f2a..d6fa43b18dbf5b0281ab823cb2348b16cb186641 100644 --- a/mysite/plots/templates/plots/index_new.html +++ b/mysite/plots/templates/plots/packed_polygons.html @@ -3,15 +3,21 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <title>test</title> + <title>Packed Polygons</title> </head> <body> <div> {% autoescape off %} -<h1>Polygons</h1> +<h1>Packed Polygons Steps</h1> {{plot_steps}} {% endautoescape %} </div> +<div> +<h1>Final Container Polygon Coordinates</h1> +<p>every Row stands for one Polygon<p> +{% for polygon in coordinates%} +{{polygon}}<br> +{%endfor%}</div> </body> </html> \ No newline at end of file diff --git a/mysite/plots/templates/plots/test.html b/mysite/plots/templates/plots/test.html deleted file mode 100644 index 290758950d41b60cb38a32d90c2815d8aaf8be4d..0000000000000000000000000000000000000000 --- a/mysite/plots/templates/plots/test.html +++ /dev/null @@ -1,96 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="utf-8"> - <title></title> - <script src="https://cdn.bokeh.org/bokeh/release/bokeh-2.2.3.min.js" - crossorigin="anonymous"></script> - <script src="https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.2.3.min.js" - crossorigin="anonymous"></script> - <script src="https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.2.3.min.js" - crossorigin="anonymous"></script> - </head> - <body> - - - <div style='display:inline'> - <h1>Drawn Polygons</h1> - {{ response|safe }} - <form style='display:inline' action="/test/" method="post"> - {% csrf_token %} - <label for="your_name">Load/Clear the drawn Polygons</label> - <input id="your_name" type="hidden" name="your_name" value="test"> - <input type="submit" onclick="myFunction()" value="load"> - </form> - <form style='display:inline' action="/clear_polygons/" method="get"> - {% csrf_token %} - <label for="clear_polygons"></label> - <input id="clear_polygons" type="hidden" name="clear_polygons" value="test"> - <input type="submit" value="clear"> - </form> - </div> - <div> - <form action="/csv_polygons/" method="post"> - {% csrf_token %} - <label for="load_csv_polygons">Load CSV Polygons into PolyEditTool</label> - <input id="load_csv_polygons" type="hidden" name="load_csv_polygons" value="test"> - <input type="submit" value="load"> - </form> - </div> - <!--<form style='display:inline' action="/csv_polygons/" method="get">--> - <!--{% csrf_token %}--> - <!--<label for="clear_csv_polygons"></label>--> - <!--<input id="clear_csv_polygons" type="hidden" name="clear_csv_polygons" value="test">--> - <!--<input type="submit" value="clear">--> - <!--</form>--> - - <div> - <form action="/packing_rect_container/" target="_blank" method="get"> - {% csrf_token %} - <label for="pack_rect_container">Packing Rectengular Container</label> - <input id="pack_rect_container" type="hidden" name="pack_polygon" value="test"> - <input type="submit" onclick="packPolygons()" value="pack"> - </form> - </div> - <div> - <form action="/packing_rotated_rect_container/" target="_blank" method="get"> - {% csrf_token %} - <label for="pack_rotated_rect_container">Packing Rotated Rectengular Container</label> - <input id="pack_rotated_rect_container" type="hidden" name="pack_polygon" value="test"> - <input type="submit" onclick="packPolygons()" value="pack"> - </form> - </div> - <div> - <form action="/packing_convex_container/" target="_blank" method="post"> - {% csrf_token %} - <label for="pack_convex_container">Packing Convex Container (degree between 1-360)</label> - <input id="pack_convex_container" type="number" min="1" max="360" name="angle" value=10> - <input type="submit" value="pack"> - </form> - </div> - <div> - {% autoescape off %} - <h1>Convex Polygons</h1> - {{drawn_polygons|safe}} - <h1>Convex Polygons in one Plot</h1> - {{polygons_single_plot|safe}} - - - {% endautoescape %} - </div> - - - </body> - - - - -<script> -function myFunction() { - var ds = Bokeh.documents[0].get_model_by_name('my-data-source'); - var dict1 = {x:ds.data["x"], y:ds.data["y"]}; - document.getElementById("your_name").value =JSON.stringify(dict1); -} -</script> - -</html> \ No newline at end of file diff --git a/mysite/plots/urls.py b/mysite/plots/urls.py index 14bfeaee4416597b766f877c71f84ba0bd5eee0c..ab1b5fbb8d14ac386c2b54b18ff108eddf4db9f3 100644 --- a/mysite/plots/urls.py +++ b/mysite/plots/urls.py @@ -8,7 +8,7 @@ urlpatterns = [ #path('json/', views.get_json_view, name='index2'), #path('test/', views.test, name='index3'), #path('hello/', views.hello, name='index4'), - path('test/', PolygonEditView.as_view(), name='index4'), + path('index/', PolygonEditView.as_view(), name='index4'), path('packing_rect_container/', PackingRectContainer.as_view(), name='rect_container'), path('packing_rotated_rect_container/', PackingRotatedRectContainer.as_view(), name='rotated_rect_container'), path('packing_convex_container/', PackingConvexContainer.as_view(), name='convex_container'), diff --git a/mysite/plots/views.py b/mysite/plots/views.py index 4b3b2f899d5c5754b4a2dc461874ea61139211c9..80f26595fc7c976d5a99cb2aa37b6b80a9acc7e9 100644 --- a/mysite/plots/views.py +++ b/mysite/plots/views.py @@ -51,21 +51,24 @@ def index(request): plot_steps = cc.plot_steps(render=False) plot_steps_html = file_html(plot_steps, CDN, "my plot2") - return render(request, 'plots/index_new.html', context={"plot_steps":plot_steps_html}) + return render(request, 'plots/packed_polygons.html', context={"plot_steps":plot_steps_html}) # 'high_classes': plot_high_class_list,}) # 'hc_container': hc_container}) class PackingRectContainer(View): def get(self, request, *args, **kwargs): + coordinates =[] if PolygonEditView.polygons==[]: plot_steps_html = "No Polygon" else: - cc = poly.pack_polygons(PolygonEditView.polygons) - plot_steps = cc.plot_steps(render=False) + end = poly.pack_polygons(PolygonEditView.polygons) + plot_steps = end.plot_steps(render=False) plot_steps_html = file_html(plot_steps, CDN, "my plot23") #PackingPolygons.context["packed_polygons"]=plot_steps_html - return render(request, 'plots/index_new.html', context={"plot_steps": plot_steps_html}) + coordinates = end.polygon_shells + return render(request, 'plots/packed_polygons.html', context={"plot_steps": plot_steps_html, + "coordinates":coordinates}) class PackingRotatedRectContainer(View): @@ -77,7 +80,9 @@ class PackingRotatedRectContainer(View): plot_steps = cc.plot_steps(render=False) plot_steps_html = file_html(plot_steps, CDN, "my plot23") # PackingPolygons.context["packed_polygons"]=plot_steps_html - return render(request, 'plots/index_new.html', context={"plot_steps": plot_steps_html}) + coordinates = cc.polygon_shells + return render(request, 'plots/packed_polygons.html', context={"plot_steps": plot_steps_html, + "coordinates":coordinates}) class PackingConvexContainer(View): # context = {} @@ -87,7 +92,7 @@ class PackingConvexContainer(View): # plot_steps = cc.plot_steps(render=False) # plot_steps_html = file_html(plot_steps, CDN, "my plot23") # # PackingPolygons.context["packed_polygons"]=plot_steps_html - # return render(request, 'plots/index_new.html', context={"plot_steps": plot_steps_html}) + # return render(request, 'plots/packed_polygons.html', context={"plot_steps": plot_steps_html}) def post(self, request, *args, **kwargs): if PolygonEditView.polygons==[]: plot_steps_html = "No Polygon" @@ -96,7 +101,9 @@ class PackingConvexContainer(View): cc = poly.ConvexContainer(PolygonEditView.polygons, steps=angle) plot_steps = cc.plot_steps(render=False) plot_steps_html = file_html(plot_steps, CDN, "my plot23") - return render(request, 'plots/index_new.html', context={"plot_steps": plot_steps_html}) + coordinates = cc.polygon_shells + return render(request, 'plots/packed_polygons.html', context={"plot_steps": plot_steps_html, + "coordinates":coordinates}) class ClearPolygons(View): @@ -106,7 +113,11 @@ class ClearPolygons(View): PolygonEditView.context["drawn_polygons"] = "No Polygons" PolygonEditView.context["polygons_single_plot"] = "No Polygons" PolygonEditView.polygons = [] - return HttpResponseRedirect('/test/') + PolygonEditView.plot_max_x = 100 + PolygonEditView.plot_min_x = 0 + PolygonEditView.plot_max_y = 100 + PolygonEditView.plot_min_y = 0 + return HttpResponseRedirect('/index/') class CSVPolygons(View): def get(self,request,): @@ -121,37 +132,28 @@ class CSVPolygons(View): else: polygons_single_plot_html = "No Polygons" PolygonEditView.context["polygons_single_plot"] = polygons_single_plot_html - return HttpResponseRedirect('/test/') + return HttpResponseRedirect('/index/') def post(self, request, *args, **kwargs): df = pandas.read_csv('plots/polygon.txt',sep="#") - # csv_polygons =[] - # for csv_polygon in df["Polygon"]: - # polygon_shell = eval(csv_polygon) - # polygon = poly.ConvexPolygon(polygon_shell) - # csv_polygons.append(polygon) - # plot_csv = poly.plot_polygons(csv_polygons, render=False) - # PolygonEditView.csv_polygons = csv_polygons - # PolygonEditView.polygons = PolygonEditView.drawn_polygons+csv_polygons - # polygons_single_plot = poly.plot_polygons_in_single_plot(PolygonEditView.polygons, plot_height=850, plot_width=2000, - # render=False) - # polygons_csv_plot_html = file_html(plot_csv, CDN, "my plot") - # polygons_single_plot_html = file_html(polygons_single_plot, CDN, "single plot") - # PolygonEditView.context["csv_polygons"] = polygons_csv_plot_html - # PolygonEditView.context["polygons_single_plot"] = polygons_single_plot_html - x_values=[] - y_values=[] csv_polygons = df["Polygon"] + all_x_values = [] + all_y_values = [] for polygon_str in csv_polygons: polygon = eval(polygon_str) x_tuples, y_tuples = (zip(*polygon)) x_values= list(x_tuples) y_values = list(y_tuples) + all_x_values = all_x_values +x_values + all_y_values = all_y_values + y_values PolygonEditView.colum_data_x.append(x_values) PolygonEditView.colum_data_y.append(y_values) - # PolygonEditView.colum_data_x, - # y = PolygonEditView.colum_data_y - return HttpResponseRedirect('/test/') + PolygonEditView.plot_max_x = max(all_x_values) + PolygonEditView.plot_min_x = min(all_x_values) + PolygonEditView.plot_max_y = max(all_y_values) + PolygonEditView.plot_min_y = min(all_y_values) + + return HttpResponseRedirect('/index/') @@ -178,7 +180,7 @@ class PolygonEditView(View): p = figure(x_range=(PolygonEditView.plot_min_x, PolygonEditView.plot_max_x), y_range=(PolygonEditView.plot_min_y, PolygonEditView.plot_max_y), width=1000, height=1000, title='Poly Edit Tool', tooltips=TOOLTIPS) - p.aspect_ratio = 1 + #p.aspect_ratio = 1 p1 = p.patches("x", "y", fill_alpha=0.4, source=source, fill_color="red") c1 = p.circle([], [], size=10, color='red', ) @@ -192,23 +194,18 @@ class PolygonEditView(View): PolygonEditView.context["response"] = response - return render(request, 'plots/test.html', PolygonEditView.context) + return render(request, 'plots/index.html', PolygonEditView.context) def post(self, request, *args, **kwargs): - test = request.POST["your_name"] - dict_poly = json.loads(test) - print(dict_poly["x"]) - print(dict_poly["y"]) + x_y_values_dict_str = request.POST["drawn_polygons"] + dict_poly = json.loads(x_y_values_dict_str) PolygonEditView.colum_data_x.clear() PolygonEditView.colum_data_y.clear() - for poly_x in dict_poly["x"]: PolygonEditView.colum_data_x.append(poly_x) for poly_y in dict_poly["y"]: PolygonEditView.colum_data_y.append(poly_y) - - polygon_list=[] polygons_x_y_tuple = list(zip(dict_poly["x"], dict_poly["y"])) for x,y in polygons_x_y_tuple: @@ -220,43 +217,31 @@ class PolygonEditView(View): polygon_min_y_list = [] polygon_max_y_list=[] for polygon in polygon_list: - if len(polygon)<3: - continue - if polygon[0]!= polygon[-1]: - polygon.append(polygon[0]) try: polygon2 = poly.ConvexPolygon(polygon) + polygon_max_x_list.append(polygon2.max_x) + polygon_min_x_list.append(polygon2.min_x) + polygon_max_y_list.append(polygon2.max_y) + polygon_min_y_list.append(polygon2.min_y) + drawn_polygons.append(polygon2) except: - print(polygon, " hast to convex Points") - print("konkav",list(polygon2.shell)) - #polygon_parent_class = polygon2.convex_hull - #polygon2 = poly.Polygon2(list(polygon_parent_class.exterior.coords)) - polygon_max_x_list.append(polygon2.max_x) - polygon_min_x_list.append(polygon2.min_x) - polygon_max_y_list.append(polygon2.max_y) - polygon_min_y_list.append(polygon2.min_y) - drawn_polygons.append(polygon2) + print(polygon, " has to less convex Points") + PolygonEditView.drawn_polygons = drawn_polygons PolygonEditView.polygons = drawn_polygons - PolygonEditView.plot_max_y = max(polygon_max_y_list) - PolygonEditView.plot_min_y = min(polygon_min_y_list) - PolygonEditView.plot_max_x = max(polygon_max_x_list) - PolygonEditView.plot_min_x = min(polygon_min_x_list) - - - polygons_single_plot = poly.plot_polygons_in_single_plot(drawn_polygons,plot_height=850, plot_width=2000,render=False) - plot_drawn = poly.plot_polygons(drawn_polygons,render=False) - #plot_csv = poly.plot_polygons(csv_polygons, render=False) - # print(type(test)) - # p = figure() - # p.multi_line("x", "y", source=source) - polygons_dawn_plot_html = file_html(plot_drawn, CDN, "my plot") - #polygons_csv_plot_html = file_html(plot_csv, CDN, "my plot") + if len(drawn_polygons) > 0: + PolygonEditView.plot_max_y = max(polygon_max_y_list) + PolygonEditView.plot_min_y = min(polygon_min_y_list) + PolygonEditView.plot_max_x = max(polygon_max_x_list) + PolygonEditView.plot_min_x = min(polygon_min_x_list) + + plot_drawn = poly.polygons_to_tab_plot(drawn_polygons, ncols=4, tab_poly_count=8) + polygons_drawn_plot_html = file_html(plot_drawn, CDN, "my plot") + PolygonEditView.context["drawn_polygons"] = polygons_drawn_plot_html + polygons_single_plot = poly.plot_polygons_in_single_plot(drawn_polygons, plot_height=850, plot_width=2000, + render=False) polygons_single_plot_html = file_html(polygons_single_plot, CDN, "single plot") - #self.polygons.append(response2) - PolygonEditView.context["drawn_polygons"] = polygons_dawn_plot_html - #PolygonEditView.context["csv_polygons"] = polygons_csv_plot_html PolygonEditView.context["polygons_single_plot"] = polygons_single_plot_html - return HttpResponseRedirect('/test/') + return HttpResponseRedirect('/index/') diff --git a/mysite/plots/views2_with_csv.py b/mysite/plots/views2_with_csv.py index 3592f144ff1c69ac47574ac4265e10c2a69d9612..ee633b4f6cd016dc6daef288a4c787a9fd69685e 100644 --- a/mysite/plots/views2_with_csv.py +++ b/mysite/plots/views2_with_csv.py @@ -51,7 +51,7 @@ def index(request): plot_steps = cc.plot_steps(render=False) plot_steps_html = file_html(plot_steps, CDN, "my plot2") - return render(request, 'plots/index_new.html', context={"plot_steps":plot_steps_html}) + return render(request, 'plots/packed_polygons.html', context={"plot_steps":plot_steps_html}) # 'high_classes': plot_high_class_list,}) # 'hc_container': hc_container}) @@ -62,7 +62,7 @@ class PackingRectContainer(View): plot_steps = cc.plot_steps(render=False) plot_steps_html = file_html(plot_steps, CDN, "my plot23") #PackingPolygons.context["packed_polygons"]=plot_steps_html - return render(request, 'plots/index_new.html', context={"plot_steps": plot_steps_html}) + return render(request, 'plots/packed_polygons.html', context={"plot_steps": plot_steps_html}) class PackingRotatedRectContainer(View): @@ -71,7 +71,7 @@ class PackingRotatedRectContainer(View): plot_steps = cc.plot_steps(render=False) plot_steps_html = file_html(plot_steps, CDN, "my plot23") # PackingPolygons.context["packed_polygons"]=plot_steps_html - return render(request, 'plots/index_new.html', context={"plot_steps": plot_steps_html}) + return render(request, 'plots/packed_polygons.html', context={"plot_steps": plot_steps_html}) class CSVPolygons(View): @@ -122,13 +122,13 @@ class PackingConvexContainer(View): plot_steps = cc.plot_steps(render=False) plot_steps_html = file_html(plot_steps, CDN, "my plot23") # PackingPolygons.context["packed_polygons"]=plot_steps_html - return render(request, 'plots/index_new.html', context={"plot_steps": plot_steps_html}) + return render(request, 'plots/packed_polygons.html', context={"plot_steps": plot_steps_html}) def post(self, request, *args, **kwargs): angle = int(request.POST["angle"]) cc = poly.ConvexContainer(PolygonEditView.polygons, steps=angle) plot_steps = cc.plot_steps(render=False) plot_steps_html = file_html(plot_steps, CDN, "my plot23") - return render(request, 'plots/index_new.html', context={"plot_steps": plot_steps_html}) + return render(request, 'plots/packed_polygons.html', context={"plot_steps": plot_steps_html})