def test_lib_floatcanvas_fc_polygon(self): fccanvas = fc.FloatCanvas(self.frame) obj = fc.Polygon((2, 2)) fccanvas.AddObject(obj) fccanvas.Destroy()
def __init__(self,parent, id,title,position,size): wx.Frame.__init__(self,parent, id,title,position, size) self.CreateStatusBar() # Add the Canvas NC = NavCanvas.NavCanvas(self, size= (500,500), ProjectionFun = None, Debug = 0, ) self.Canvas = NC.Canvas self.Show(True) # --- draw link between centroids --- # build link link_pts = get_line_pts([-100,-170],[500,301],order=4, num=100) # construct arrow in center of line arrow_coords = build_arrow(link_pts, arrow_length=3) # plot the link and arrowhead self.Canvas.AddObject(FloatCanvas.Polygon(arrow_coords,FillColor='Blue',InForeground=True)) #self.Canvas.AddObject(FloatCanvas.Line(link_pts,LineWidth=2,InForeground=False)) cmap = plt.cm.Blues num_colors = len(link_pts) colors = [cmap(1.*i/num_colors) for i in range(num_colors)] # import random # r = lambda: random.randint(0,255) for i in range(0,len(link_pts)-1): #color = '#%02X%02X%02X' % (r(),r(),r()) color = mcolors.rgb2hex(colors[i]) #color = colors[i][:-1] self.Canvas.AddObject(FloatCanvas.Line((link_pts[i],link_pts[i+1]),LineColor=color,LineWidth=2,InForeground=False)) # --- draw rounded rectangle objects --- # draw some boxes draw_rounded_rectangle(self.Canvas,(-100,-170),width=200, height=100) draw_rounded_rectangle(self.Canvas,(500,301), width=250, height=150) # zoom to bounding box self.Canvas.ZoomToBB() return None
def OnClickLeft(self, event): with open('testjson.json', 'r') as file1: T = json.load(file1) for room, dim in T.items(): for par, dim1 in dim.items(): if par == "topright_pos_y": xx = int(T[room]["topright_pos_x"]) y1 = int(T[room]["topright_pos_y"]) yy = 0 - y1 # changing the +Y-axis to -Y-axis ll = int(T[room]["length"]) bb = int(T[room]["breadth"]) drline1 = FloatCanvas.Line([(xx, yy), (xx + ll, yy)], LineWidth=4, LineColor='black') self.Canvas.AddObject(drline1) drline2 = FloatCanvas.Line([(xx, yy), (xx, yy - bb)], LineWidth=4, LineColor='black') self.Canvas.AddObject(drline2) drline3 = FloatCanvas.Line([(xx + ll, yy), (xx + ll, yy - bb)], LineWidth=4, LineColor='black') self.Canvas.AddObject(drline3) drline4 = FloatCanvas.Line([(xx, yy - bb), (xx + ll, yy - bb)], LineWidth=4, LineColor='black') self.Canvas.AddObject(drline4) self.Canvas.Draw() if par == "nodes": for i in range(len(T[room]["nodes"])): N.append(int(T[room][par][i]["node_id"])) X.append(int(T[room][par][i]["node_pos_x"])) Y.append(int(T[room][par][i]["node_pos_y"])) for node_par, node_val in T[room][par][i].items(): if T[room][par][i]["type"] == "s": cir = FloatCanvas.Circle([ int(T[room][par][i]["node_pos_x"]), -int(T[room][par][i]["node_pos_y"]) ], 7, FillColor='red') self.Canvas.AddObject(cir) if T[room][par][i]["type"] == "p": rect = FloatCanvas.Rectangle([ int(T[room][par][i]["node_pos_x"]), -int(T[room][par][i]["node_pos_y"]) ], (8, 8), FillColor='blue') self.Canvas.AddObject(rect) if T[room][par][i]["type"] == "k": poly = FloatCanvas.Polygon([ (int(T[room][par][i]["node_pos_x"]) - 4, -int(T[room][par][i]["node_pos_y"]) - 4), (int(T[room][par][i]["node_pos_x"]) + 4, -int(T[room][par][i]["node_pos_y"]) - 4), (int(T[room][par][i]["node_pos_x"]) + 4, -int(T[room][par][i]["node_pos_y"]) + 4), (int(T[room][par][i]["node_pos_x"]) - 4, -int(T[room][par][i]["node_pos_y"]) + 4) ], FillColor='yellow') self.Canvas.AddObject(poly) if T[room][par][i]["type"] == "r": poly1 = FloatCanvas.Polygon([ (int(T[room][par][i]["node_pos_x"]), -int(T[room][par][i]["node_pos_y"]) - 7), (int(T[room][par][i]["node_pos_x"]) - 7, -int(T[room][par][i]["node_pos_y"]) + 7), (int(T[room][par][i]["node_pos_x"]) + 7, -int(T[room][par][i]["node_pos_y"]) + 7) ], FillColor='cyan') self.Canvas.AddObject(poly1) if room == "Blank_Area": points = [(int(T[room]['x1']), -int(T[room]['y1'])), (int(T[room]['x2']), -int(T[room]['y2'])), (int(T[room]['x3']), -int(T[room]['y3'])), (int(T[room]['x4']), -int(T[room]['y4'])), (int(T[room]['x5']), -int(T[room]['y5'])), (int(T[room]['x6']), -int(T[room]['y6'])), (int(T[room]['x7']), -int(T[room]['y7'])), (int(T[room]['x8']), -int(T[room]['y8'])), (int(T[room]['x9']), -int(T[room]['y9'])), (int(T[room]['x10']), -int(T[room]['y10'])), (int(T[room]['x11']), -int(T[room]['y11']))] blankarea = FloatCanvas.Polygon(points, LineWidth=4, LineColor='black', FillColor="#95bce7", FillStyle='Solid') self.Canvas.AddObject(blankarea) # Dialog Box to input the limiting distance dlg_limit = wx.TextEntryDialog(self, 'Enter the Limiting Distance:') if dlg_limit.ShowModal() == wx.ID_OK: limit = int(dlg_limit.GetValue()) dlg_limit.Destroy() # Drawing lines for shortest distances between two nodes for i in range(len(N)): for j in range(len(N)): dist = self.distance_calc(X[i], -Y[i], X[j], -Y[j]) if dist < limit: self.Canvas.AddObject( FloatCanvas.Line([(X[i], -Y[i]), (X[j], -Y[j])], LineColor='Black', LineStyle='Solid', LineWidth=1)) self.Canvas.Draw()
def process_jsonfile(self, T): for room, dim in T.items(): for par, dim1 in dim.items(): if par == "topright_pos_y": xx = int(T[room]["topright_pos_x"]) y1 = int(T[room]["topright_pos_y"]) yy = 0 - y1 # changing the +Y-axis to -Y-axis ll = int(T[room]["length"]) bb = int(T[room]["breadth"]) drline1 = FloatCanvas.Line([(xx, yy), (xx + ll, yy)], LineWidth=4, LineColor='black') self.Canvas.AddObject(drline1) drline2 = FloatCanvas.Line([(xx, yy), (xx, yy - bb)], LineWidth=4, LineColor='black') self.Canvas.AddObject(drline2) drline3 = FloatCanvas.Line([(xx + ll, yy), (xx + ll, yy - bb)], LineWidth=4, LineColor='black') self.Canvas.AddObject(drline3) drline4 = FloatCanvas.Line([(xx, yy - bb), (xx + ll, yy - bb)], LineWidth=4, LineColor='black') self.Canvas.AddObject(drline4) self.Canvas.Draw() if par == "Nodes": for i in range(len(T[room]["Nodes"])): N.append(int(T[room][par][i]["node_id"])) X.append(int(T[room][par][i]["node_pos_x"])) Y.append(int(T[room][par][i]["node_pos_y"])) for node_par, node_val in T[room][par][i].items(): print("----", T[room][par][i]["node_id"], "------") if T[room][par][i]["type"] == "s": cir = FloatCanvas.Circle([ int(T[room][par][i]["node_pos_x"]), -int(T[room][par][i]["node_pos_y"]) ], 7, FillColor='red') self.Canvas.AddObject(cir) print(T[room][par][i]["type"]) if T[room][par][i]["type"] == "k": poly = FloatCanvas.Polygon([ (int(T[room][par][i]["node_pos_x"]) - 4, -int(T[room][par][i]["node_pos_y"]) - 4), (int(T[room][par][i]["node_pos_x"]) + 4, -int(T[room][par][i]["node_pos_y"]) - 4), (int(T[room][par][i]["node_pos_x"]) + 4, -int(T[room][par][i]["node_pos_y"]) + 4), (int(T[room][par][i]["node_pos_x"]) - 4, -int(T[room][par][i]["node_pos_y"]) + 4) ], FillColor='yellow') self.Canvas.AddObject(poly) print(T[room][par][i]["type"]) if T[room][par][i]["type"] == "r": rect = FloatCanvas.Rectangle([ int(T[room][par][i]["node_pos_x"]), -int(T[room][par][i]["node_pos_y"]) ], (8, 8), FillColor='blue') self.Canvas.AddObject(rect) print(T[room][par][i]["type"]) if room == "Blank_Area": points = [(int(T[room]['x1']), -int(T[room]['y1'])), (int(T[room]['x2']), -int(T[room]['y2'])), (int(T[room]['x3']), -int(T[room]['y3'])), (int(T[room]['x4']), -int(T[room]['y4'])), (int(T[room]['x5']), -int(T[room]['y5'])), (int(T[room]['x6']), -int(T[room]['y6'])), (int(T[room]['x7']), -int(T[room]['y7'])), (int(T[room]['x8']), -int(T[room]['y8'])), (int(T[room]['x9']), -int(T[room]['y9'])), (int(T[room]['x10']), -int(T[room]['y10'])), (int(T[room]['x11']), -int(T[room]['y11']))] blankarea = FloatCanvas.Polygon(points, LineWidth=4, LineColor='black', FillColor="#95bce7", FillStyle='Solid') self.Canvas.AddObject(blankarea)
def OnClickLeft(self,event): with open('testjson.json','r') as file1: T = json.load(file1) for room,dim in T.items(): for par,dim1 in dim.items(): if par == "topright_pos_y": xx=int(T[room]["topright_pos_x"]) y1=int(T[room]["topright_pos_y"]) yy=0-y1 # changing the +Y-axis to -Y-axis ll=int(T[room]["length"]) bb=int(T[room]["breadth"]) drline1 = FloatCanvas.Line([(xx,yy),(xx+ll,yy)],LineWidth=4,LineColor='black') self.Canvas.AddObject(drline1) drline2 = FloatCanvas.Line([(xx,yy),(xx,yy-bb)],LineWidth=4,LineColor='black') self.Canvas.AddObject(drline2) drline3 = FloatCanvas.Line([(xx+ll,yy),(xx+ll,yy-bb)],LineWidth=4,LineColor='black') self.Canvas.AddObject(drline3) drline4 = FloatCanvas.Line([(xx,yy-bb),(xx+ll,yy-bb)],LineWidth=4,LineColor='black') self.Canvas.AddObject(drline4) self.Canvas.Draw() if par == "nodes": for i in range(len(T[room]["nodes"])): N.append(int(T[room][par][i]["node_id"])) X.append(int(T[room][par][i]["node_pos_x"])) Y.append(int(T[room][par][i]["node_pos_y"])) # Drawing Nodes for node_par,node_val in T[room][par][i].items(): if T[room][par][i]["type"] == "s": cir = FloatCanvas.Circle([int(T[room][par][i]["node_pos_x"]),-int(T[room][par][i]["node_pos_y"])],7,FillColor = 'red') self.Canvas.AddObject(cir) if T[room][par][i]["type"] == "p": rect = FloatCanvas.Rectangle([int(T[room][par][i]["node_pos_x"]),-int(T[room][par][i]["node_pos_y"])],(8,8),FillColor='blue') self.Canvas.AddObject(rect) if T[room][par][i]["type"] == "k": poly = FloatCanvas.Polygon([(int(T[room][par][i]["node_pos_x"])-4,-int(T[room][par][i]["node_pos_y"])-4), (int(T[room][par][i]["node_pos_x"])+4,-int(T[room][par][i]["node_pos_y"])-4), (int(T[room][par][i]["node_pos_x"])+4,-int(T[room][par][i]["node_pos_y"])+4), (int(T[room][par][i]["node_pos_x"])-4,-int(T[room][par][i]["node_pos_y"])+4)], FillColor='yellow') self.Canvas.AddObject(poly) if T[room][par][i]["type"] == "r": poly1 = FloatCanvas.Polygon([(int(T[room][par][i]["node_pos_x"]),-int(T[room][par][i]["node_pos_y"])-7), (int(T[room][par][i]["node_pos_x"])-7,-int(T[room][par][i]["node_pos_y"])+7), (int(T[room][par][i]["node_pos_x"])+7,-int(T[room][par][i]["node_pos_y"])+7)], FillColor='cyan') self.Canvas.AddObject(poly1) # Drawing and highlighting the unused area if room == "Blank_Area": points = [(int(T[room]['x1']),-int(T[room]['y1'])), (int(T[room]['x2']),-int(T[room]['y2'])), (int(T[room]['x3']),-int(T[room]['y3'])), (int(T[room]['x4']),-int(T[room]['y4'])), (int(T[room]['x5']),-int(T[room]['y5'])), (int(T[room]['x6']),-int(T[room]['y6'])), (int(T[room]['x7']),-int(T[room]['y7'])), (int(T[room]['x8']),-int(T[room]['y8'])), (int(T[room]['x9']),-int(T[room]['y9'])), (int(T[room]['x10']),-int(T[room]['y10'])), (int(T[room]['x11']),-int(T[room]['y11']))] blankarea = FloatCanvas.Polygon(points,LineWidth=4,LineColor='black',FillColor = "SKY BLUE" , FillStyle='Solid') self.Canvas.AddObject(blankarea) # Making edges for distances < 100 between two nodes for i in range (len(N)): for j in range (len(N)): dist = self.distance_calc(X[i],-Y[i],X[j],-Y[j]) if dist < 100: self.Canvas.AddObject(FloatCanvas.Line([(X[i],-Y[i]),(X[j],-Y[j])], LineColor = 'Black', LineStyle='Solid',LineWidth=1)) self.Canvas.Draw()
def OnClickLeft(self, event): with open('testjson.json', 'r') as file1: T = json.load(file1) for room, dim in T.items(): for par, dim1 in dim.items(): if par == "topright_pos_y": xx = int(T[room]["topright_pos_x"]) y1 = int(T[room]["topright_pos_y"]) yy = 0 - y1 ll = int(T[room]["length"]) bb = int(T[room]["breadth"]) drline1 = FloatCanvas.Line([(xx, yy), (xx + ll, yy)], LineWidth=4, LineColor='black') self.Canvas.AddObject(drline1) self.Canvas.Draw() drline2 = FloatCanvas.Line([(xx, yy), (xx, yy - bb)], LineWidth=4, LineColor='black') self.Canvas.AddObject(drline2) self.Canvas.Draw() drline3 = FloatCanvas.Line([(xx + ll, yy), (xx + ll, yy - bb)], LineWidth=4, LineColor='black') self.Canvas.AddObject(drline3) self.Canvas.Draw() drline4 = FloatCanvas.Line([(xx, yy - bb), (xx + ll, yy - bb)], LineWidth=4, LineColor='black') self.Canvas.AddObject(drline4) self.Canvas.Draw() self.Canvas.Draw() if par == "nodes": for i in range(len(T[room]["nodes"])): for node_par, node_val in T[room][par][i].items(): if T[room][par][i]["type"] == "s": cir = FloatCanvas.Circle([ int(T[room][par][i]["node_pos_x"]), 0 - int(T[room][par][i]["node_pos_y"]) ], 7, FillColor='red') self.Canvas.AddObject(cir) if T[room][par][i]["type"] == "p": rect = FloatCanvas.Rectangle([ int(T[room][par][i]["node_pos_x"]), 0 - int(T[room][par][i]["node_pos_y"]) ], (8, 8), FillColor='blue') self.Canvas.AddObject(rect) if T[room][par][i]["type"] == "k": poly = FloatCanvas.Polygon( [(int(T[room][par][i]["node_pos_x"]) - 4, 0 - int(T[room][par][i]["node_pos_y"]) - 4), (int(T[room][par][i]["node_pos_x"]) + 4, 0 - int(T[room][par][i]["node_pos_y"]) - 4), (int(T[room][par][i]["node_pos_x"]) + 4, 0 - int(T[room][par][i]["node_pos_y"]) + 4), (int(T[room][par][i]["node_pos_x"]) - 4, 0 - int(T[room][par][i]["node_pos_y"]) + 4)], FillColor='yellow') self.Canvas.AddObject(poly) if T[room][par][i]["type"] == "r": poly1 = FloatCanvas.Polygon( [(int(T[room][par][i]["node_pos_x"]), 0 - int(T[room][par][i]["node_pos_y"]) - 7), (int(T[room][par][i]["node_pos_x"]) - 7, 0 - int(T[room][par][i]["node_pos_y"]) + 7), (int(T[room][par][i]["node_pos_x"]) + 7, 0 - int(T[room][par][i]["node_pos_y"]) + 7)], FillColor='cyan') self.Canvas.AddObject(poly1) self.Canvas.Draw() if room == "Blank_Area": points = [(int(T[room]['x1']), 0 - int(T[room]['y1'])), (int(T[room]['x2']), 0 - int(T[room]['y2'])), (int(T[room]['x3']), 0 - int(T[room]['y3'])), (int(T[room]['x4']), 0 - int(T[room]['y4'])), (int(T[room]['x5']), 0 - int(T[room]['y5'])), (int(T[room]['x6']), 0 - int(T[room]['y6'])), (int(T[room]['x7']), 0 - int(T[room]['y7'])), (int(T[room]['x8']), 0 - int(T[room]['y8'])), (int(T[room]['x9']), 0 - int(T[room]['y9'])), (int(T[room]['x10']), 0 - int(T[room]['y10'])), (int(T[room]['x11']), 0 - int(T[room]['y11']))] blankarea = FloatCanvas.Polygon(points, LineWidth=4, LineColor='black', FillColor="SKY BLUE", FillStyle='Solid') self.Canvas.AddObject(blankarea) self.Canvas.Draw()
def OnClickBrowse(self, event): self.SetStatusText("Find the json file...") openFileDialog = wx.FileDialog(self.properties_panel, "Open", "", "", "*.*", wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) openFileDialog.ShowModal() self.SetStatusText(openFileDialog.GetPath()) self.filename = openFileDialog.GetFilename() self.dirname = openFileDialog.GetDirectory() with open(os.path.join(self.dirname, self.filename), "r") as file1: node_data = json.load(file1) T = node_data for room, dim in T.items(): if room == "Blank_Area": points = [(int(T[room]['x1']), int(T[room]['y1'])), (int(T[room]['x2']), int(T[room]['y2'])), (int(T[room]['x3']), int(T[room]['y3'])), (int(T[room]['x4']), int(T[room]['y4'])), (int(T[room]['x5']), int(T[room]['y5'])), (int(T[room]['x6']), int(T[room]['y6'])), (int(T[room]['x7']), int(T[room]['y7'])), (int(T[room]['x8']), int(T[room]['y8'])), (int(T[room]['x9']), int(T[room]['y9'])), (int(T[room]['x10']), int(T[room]['y10'])), (int(T[room]['x11']), int(T[room]['y11']))] blankarea = FloatCanvas.Polygon(points, LineWidth=4, LineColor='black') self.nav_canvas.AddObject(blankarea) self.nav_canvas.Draw() file_dir = os.path.dirname(openFileDialog.GetPath()) file = os.path.basename(openFileDialog.GetPath()) file_name, file_ext = os.path.splitext(file) out_file_path = os.path.join(file_dir, file_name) G = nx.Graph() for key1, val1 in node_data.items(): for key2, val2 in val1.items(): if (key2 == "Nodes"): for i in range(len(node_data[key1]["Nodes"])): G.add_node(node_data[key1][key2][i]["id"]) for key3 in node_data[key1][key2][i]: G.nodes[node_data[key1][key2][i]["id"]][ key3] = node_data[key1][key2][i][key3] logging.debug(str(list(G.nodes(data=True)))) # =============================== Input a value for "limit" ====================================== dlg_limit = wx.TextEntryDialog(self.nav_canvas, 'Input the limit value:', 'Limit Value ?') if dlg_limit.ShowModal() == wx.ID_OK: limit = int(dlg_limit.GetValue()) dlg_limit.Destroy() # ================================================================================================= G.add_weighted_edges_from(edge_calc(G, limit, param='distance')) option = True #-----sbt #making different kinds of o/p files if (option == True): store_pickle(G, out_file_path + '_pickle') make_graphml(G, out_file_path + '_gml') make_dotfile(G, out_file_path + '_dot') draw_graph(G, out_file_path + '_graph') return (G, out_file_path) openFileDialog.Destroy()