#! /usr/local/bin/python import math import dislin from wxPython.wx import * class DislinFrame(wx.wxFrame): def __init__(self, parent, id, title): wx.wxFrame.__init__(self, parent, id, title,wxPoint(100, 100), wxSize(500, 400)) EVT_CLOSE(self, self.OnCloseWindow) EVT_SIZE(self, self.OnSize) EVT_MOVE(self, self.OnMove) self.main_menu = wxMenuBar() menu = wxMenu() exitID = wxNewId() menu.Append(exitID, 'Load Local Files', 'Load files from hard drive') EVT_MENU(self, exitID, self.OnFileLoadLocal) self.main_menu.Append(menu, '&File') self.SetMenuBar(self.main_menu) self.button = wxButton(self, 10, "Graph", wxPoint(20, 220)) EVT_BUTTON(self, 10, self.OnClick) wxStaticText(self, -1, "Enter Scale", wxPoint(5, 25), wxSize(75, 25)) self.scale_size = wxTextCtrl(self, 10, "500", wxPoint(220, 25), wxSize(150, 25)) wxStaticText(self, -1, "Rotation", wxPoint(5, 50), wxSize(75, 25)) self.m1 = wxTextCtrl(self, 10, "15", wxPoint(220, 50), wxSize(150, 25)) wxStaticText(self, -1, "Angle up", wxPoint(5, 75), wxSize(75, 25)) self.m2 = wxTextCtrl(self, 10, "15", wxPoint(220, 75), wxSize(150, 25)) wxStaticText(self, -1, "Radius", wxPoint(5, 100), wxSize(75, 25)) self.m3 = wxTextCtrl(self, 10, "150", wxPoint(220, 100), wxSize(150, 25)) def OnCloseWindow(self, event): self.Destroy() def OnSize(self, event): size = event.GetSize() event.Skip() def OnMove(self, event): pos = event.GetPosition() def OnFileLoadLocal(self,event): pass def OnClick(self, event): dislin.scrmod ('revers') # level 0 #dislin.metafl ('tiff') dislin.metafl ('CONS') #dislin.metafl ('WMF') #dislin.setfil('tom-1.tif') #dislin.setpag ('DA4P') dislin.setpag ('DA3L') try: num = int(self.scale_size.GetLineText(0)) xv = int(self.m1.GetLineText(0)) yv = int(self.m2.GetLineText(0)) zv = int(self.m3.GetLineText(0)) except ValueError: num = 500 xv = 15 yv = 45 zv = 150 for veiw_deg in range(36): xv = 10 * veiw_deg yv = abs(veiw_deg - 18)* 3 zv =abs(veiw_deg - 18)*10 + 50 dislin.disini () # level 1 dislin.pagera () dislin.hwfont () dislin.box3d #dislin.axstyp('CROSS') #dislin.axspos (1200, 2600) #dislin.axslen (1800, 1800) dislin.name ('X-axis', 'Pima Street') dislin.name ('Y-axis', '1st Street') dislin.name ('Z-axis', '') #dislin.pagfll(10) dislin.axis3d(140,80,20) #dislin.axspos (140,40) dislin.view3d(xv,yv,zv,'ANGLE') #dislin.view3d(35,40,100,'ABS') dislin.vfoc3d(100,60,0,'ABS') #dislin.origin(0,140) #dislin.color('BLUE') dislin.color('FORE') dislin.graf3d(0,140,0,10,0,80,0,10,0,20,0,10) #dislin.grfini(47.5,18.5,6.5,57.5,18.5,6.5,57.5,28.5,6.5) #dislin.axspos (53.1667,22.333) #dislin.axslen (10,10) #dislin.circle(0,0,4.333) #dislin.grffin() #dislin.color('BLACK') #level 3 #dislin.grid3d(2,2,'BOTTOM') #dislin.cross() #dislin.graf3d(0,100,0,10,0,60,0,10,-10,40,-10,10) dislin.box3d() #dislin.color('FORE') graph_data = (([8.5,4.5,.5],[8.5,28.5,.5],[15.5,28.5,.5],[15.5,4.5,.5]),([8.5,4.5,0],[8.5,28.5,0],[15.5,28.5,0],[15.5,4.5,0])) self.y_adj = 0 pole_data =(([8.8333,self.y_adj + 4.8333,3.70833],[10,self.y_adj + 4.8333,3.70833],[10,self.y_adj + 6,3.70833],[8.8333,self.y_adj + 6,3.70833]), ([8.8333,self.y_adj + 4.8333,4],[10,self.y_adj + 4.8333,4],[10,self.y_adj + 6,4],[8.8333,self.y_adj + 6,4]), ([8.916,self.y_adj + 4.916,3.70833],[9.916,self.y_adj + 4.916,3.70833],[10.333,self.y_adj + 4.5,.5],[8.5,self.y_adj + 4.5,.5]), ([8.916,self.y_adj + 5.916,3.70833],[9.916,self.y_adj + 5.916,3.70833],[10.333,self.y_adj + 6.333,.5],[8.5,self.y_adj + 6.333,.5]), ([8.916,self.y_adj + 4.916,3.70833],[8.916,self.y_adj + 5.916,3.70833],[8.5,self.y_adj + 6.333,.5],[8.5,self.y_adj + 4.5,.5]), ([9.25,self.y_adj + 5.25,4],[9.25,self.y_adj + 5.25,7.9583],[9.25,self.y_adj + 5.5833,7.9583],[9.25,self.y_adj + 5.5833,4]), ([9.583,self.y_adj + 5.25,4],[9.583,self.y_adj + 5.25,7.9583],[9.583,self.y_adj + 5.5833,7.9583],[9.583,self.y_adj + 5.5833,4])) self.graph_list(graph_data) self.graph_list(pole_data) self.y_adj = 5.5 pole_data =(([8.8333,self.y_adj + 4.8333,3.70833],[10,self.y_adj + 4.8333,3.70833],[10,self.y_adj + 6,3.70833],[8.8333,self.y_adj + 6,3.70833]), ([8.8333,self.y_adj + 4.8333,4],[10,self.y_adj + 4.8333,4],[10,self.y_adj + 6,4],[8.8333,self.y_adj + 6,4]), ([8.916,self.y_adj + 4.916,3.70833],[9.916,self.y_adj + 4.916,3.70833],[10.333,self.y_adj + 4.5,.5],[8.5,self.y_adj + 4.5,.5]), ([8.916,self.y_adj + 5.916,3.70833],[9.916,self.y_adj + 5.916,3.70833],[10.333,self.y_adj + 6.333,.5],[8.5,self.y_adj + 6.333,.5]), ([8.916,self.y_adj + 4.916,3.70833],[8.916,self.y_adj + 5.916,3.70833],[8.5,self.y_adj + 6.333,.5],[8.5,self.y_adj + 4.5,.5]), ([9.25,self.y_adj + 5.25,4],[9.25,self.y_adj + 5.25,7.9583],[9.25,self.y_adj + 5.5833,7.9583],[9.25,self.y_adj + 5.5833,4]), ([9.583,self.y_adj + 5.25,4],[9.583,self.y_adj + 5.25,7.9583],[9.583,self.y_adj + 5.5833,7.9583],[9.583,self.y_adj + 5.5833,4])) self.graph_list(pole_data) self.y_adj = 11 pole_data =(([8.8333,self.y_adj + 4.8333,3.70833],[10,self.y_adj + 4.8333,3.70833],[10,self.y_adj + 6,3.70833],[8.8333,self.y_adj + 6,3.70833]), ([8.8333,self.y_adj + 4.8333,4],[10,self.y_adj + 4.8333,4],[10,self.y_adj + 6,4],[8.8333,self.y_adj + 6,4]), ([8.916,self.y_adj + 4.916,3.70833],[9.916,self.y_adj + 4.916,3.70833],[10.333,self.y_adj + 4.5,.5],[8.5,self.y_adj + 4.5,.5]), ([8.916,self.y_adj + 5.916,3.70833],[9.916,self.y_adj + 5.916,3.70833],[10.333,self.y_adj + 6.333,.5],[8.5,self.y_adj + 6.333,.5]), ([8.916,self.y_adj + 4.916,3.70833],[8.916,self.y_adj + 5.916,3.70833],[8.5,self.y_adj + 6.333,.5],[8.5,self.y_adj + 4.5,.5]), ([9.25,self.y_adj + 5.25,4],[9.25,self.y_adj + 5.25,7.9583],[9.25,self.y_adj + 5.5833,7.9583],[9.25,self.y_adj + 5.5833,4]), ([9.583,self.y_adj + 5.25,4],[9.583,self.y_adj + 5.25,7.9583],[9.583,self.y_adj + 5.5833,7.9583],[9.583,self.y_adj + 5.5833,4])) self.graph_list(pole_data) self.y_adj = 16.5 pole_data =(([8.8333,self.y_adj + 4.8333,3.70833],[10,self.y_adj + 4.8333,3.70833],[10,self.y_adj + 6,3.70833],[8.8333,self.y_adj + 6,3.70833]), ([8.8333,self.y_adj + 4.8333,4],[10,self.y_adj + 4.8333,4],[10,self.y_adj + 6,4],[8.8333,self.y_adj + 6,4]), ([8.916,self.y_adj + 4.916,3.70833],[9.916,self.y_adj + 4.916,3.70833],[10.333,self.y_adj + 4.5,.5],[8.5,self.y_adj + 4.5,.5]), ([8.916,self.y_adj + 5.916,3.70833],[9.916,self.y_adj + 5.916,3.70833],[10.333,self.y_adj + 6.333,.5],[8.5,self.y_adj + 6.333,.5]), ([8.916,self.y_adj + 4.916,3.70833],[8.916,self.y_adj + 5.916,3.70833],[8.5,self.y_adj + 6.333,.5],[8.5,self.y_adj + 4.5,.5]), ([9.25,self.y_adj + 5.25,4],[9.25,self.y_adj + 5.25,7.9583],[9.25,self.y_adj + 5.5833,7.9583],[9.25,self.y_adj + 5.5833,4]), ([9.583,self.y_adj + 5.25,4],[9.583,self.y_adj + 5.25,7.9583],[9.583,self.y_adj + 5.5833,7.9583],[9.583,self.y_adj + 5.5833,4])) self.graph_list(pole_data) self.y_adj = 22.16 pole_data =(([8.8333,self.y_adj + 4.8333,3.70833],[10,self.y_adj + 4.8333,3.70833],[10,self.y_adj + 6,3.70833],[8.8333,self.y_adj + 6,3.70833]), ([8.8333,self.y_adj + 4.8333,4],[10,self.y_adj + 4.8333,4],[10,self.y_adj + 6,4],[8.8333,self.y_adj + 6,4]), ([8.916,self.y_adj + 4.916,3.70833],[9.916,self.y_adj + 4.916,3.70833],[10.333,self.y_adj + 4.5,.5],[8.5,self.y_adj + 4.5,.5]), ([8.916,self.y_adj + 5.916,3.70833],[9.916,self.y_adj + 5.916,3.70833],[10.333,self.y_adj + 6.333,.5],[8.5,self.y_adj + 6.333,.5]), ([8.916,self.y_adj + 4.916,3.70833],[8.916,self.y_adj + 5.916,3.70833],[8.5,self.y_adj + 6.333,.5],[8.5,self.y_adj + 4.5,.5]), ([9.25,self.y_adj + 5.25,4],[9.25,self.y_adj + 5.25,7.9583],[9.25,self.y_adj + 5.5833,7.9583],[9.25,self.y_adj + 5.5833,4]), ([9.583,self.y_adj + 5.25,4],[9.583,self.y_adj + 5.25,7.9583],[9.583,self.y_adj + 5.5833,7.9583],[9.583,self.y_adj + 5.5833,4])) self.graph_list(pole_data) front_wall =(([15.5,4.5,.5],[15.5,28.5,.5],[15.5,28.5,9.2083],[15.5,4.5,9.2083]), ([37.5,4.5,1.5833],[37.5,28.5,1.5833],[37.5,28.5,9.2083],[37.5,4.5,9.2083]), ([37.5,4.5,1.5833],[37.5,28.5,1.5833],[15.5,28.5,1.5833],[15.5,4.5,1.5833]), ([37.5,4.5,0],[37.5,28.5,0],[15.5,28.5,0],[15.5,4.5,0]), ([49,13.5,9.2083],[49,8.5,9.2083],[49,8.5,0],[49,13.5,0]), ([27.5,28.5,1.5833],[27.5,16.5,1.5833],[27.5,16.5,9.2083],[27.5,28.5,9.2083])) self.graph_list(front_wall) side_wall = (([15.5,4.5,0],[37.5,4.5,0],[37.5,4.5,9.2083],[15.5,4.5,9.2083]), ([27.5,16.5,1.5833],[27.5,16.5,9.2083],[37.5,16.5,9.2083],[37.5,16.5,1.5833]), ([27.5,18,1.5833],[27.5,18,9.2083],[15.5,18,9.2083],[15.5,18,1.5833]), ([15.5,28.5,0],[37.5,28.5,0],[37.5,28.5,9.2083],[15.5,28.5,9.2083]), ([37.5,28.5,0],[47.5,28.5,0],[47.5,28.5,9.2083],[37.5,28.5,9.2083]), ([37.5,22,0],[47.5,22,0],[47.5,22,9.2083],[37.5,22,9.2083]), ([47.5,22,0],[47.5,28.5,0],[47.5,28.5,9.2083],[47.5,22,9.2083]), ([45,4.5,0],[45,4.5,9.2083],[49,8.5,9.2083],[49,8.5,0])) self.graph_list(side_wall) door_data = (([15.5,16.9166,1.5833],[15.5,16.9166,8.0833],[15.5,14.3332,8.0833],[15.5,14.3332,1.5833]), ([37.5,5.5,1.5833],[37.5,5.5,8.0833],[37.5,8,8.0833],[37.5,8,1.5833]), ([37.5,17.5,1.5833],[37.5,17.5,8.0833],[37.5,20,8.0833],[37.5,20,1.5833]), ([37.5,27.5,1.5833],[37.5,27.5,8.0833],[37.5,25.5,8.0833],[37.5,25.5,1.5833]), ([31.83,16.5,1.5833],[31.83,16.5,8.0833],[34.33,16.5,8.0833],[34.33,16.5,1.5833]), ([20.5,18,1.5833],[20.5,18,8.0833],[23,18,8.0833],[23,18,1.5833]), ([33.5,4.5,1.5833],[33.5,4.5,8.0833],[36,4.5,8.0833],[36,4.5,1.5833])) self.graph_list(door_data) step_data = (([37.5,17.0416,0.79165],[38.416,17.0416,0.79165],[38.416,21.2583,0.79165],[37.5,21.2583,0.79165]), ([36.4583,3.5833,0.79165],[33.0416,3.5833,0.79165],[33.0416,4.5,0.79165],[36.4583,4.5,0.79165])) self.graph_list(step_data) dislin.color('GREEN') other_building_data = (([48,4,0],[56.5,4,0],[56.5,4,7.5],[48,4,7.5]), ([56.5,4,0],[56.5,4,7.5],[56.5,5.5,7.5],[56.5,5.5,0]),([56.5,5.5,0],[66,5.5,0],[66,5.5,7.5],[56.5,5.5,7.5])) self.graph_list(other_building_data) dislin.color('FORE') kichen_counter_data = (([43.5,17.5,3.5],[45,13.5,3.5],[47.5,13.5,3.5],[46,17.5,3.5]), ([43.5,17.5,3.33],[45,13.5,3.33],[47.5,13.5,3.33],[46,17.5,3.33]), ([45,13.5,3.5],[48,13.5,3.5],[48,8.5,3.5],[45,4.5,3.5]), ([45,13.5,3.33],[48,13.5,3.33],[48,8.5,3.33],[45,4.5,3.33]), ([43.66,17.33,3.33],[45.166,13.5,3.33],[45.166,13.5,0],[43.66,17.33,0]), ([46.5,17.33,3.83],[48,13.5,3.83],[48,13.5,0],[46.5,17.33,0]), ([45.166,13.5,3.33],[45.166,4.5,3.33],[45.166,4.5,0],[45.166,13.5,0]), ([45.833,17.5,3.83],[47.33,13.5,3.83],[48.166,13.5,3.83],[46.66,17.5,3.83]), ([45.833,17.5,3.9966],[47.33,13.5,3.9966],[48.166,13.5,3.9966],[46.66,17.5,3.9966])) self.graph_list(kichen_counter_data) #dislin.strt3d(46.5,17.5,0) #dislin.conn3d(46.5,22,0) dislin.color('BLUE') #dome_data = ([53.1667,18,6.5],[53.1667,20.165,9.5],[53.1667,22.33,11.0833], # [53.1667,24.495,9.5],[53.1667,26.66,6.5]) #self.line_list(dome_data) #dome_data = ([57.5,22.33,6.5],[55.335,22.33,9.5],[53.17,22.33,11.0833], # [51.005,22.33,9.5],[48.84,22.33,6.5]) #self.line_list(dome_data) #dome_data = ([56.37,23.86,6.5],[54.67,22.995,9.5],[53.17,22.33,11.0833], # [51.67,21.665,9.5],[49.97,20.8,6.5]) #self.line_list(dome_data) #dome_data = ([49.97,23.86,6.5],[51.67,22.995,9.5],[53.17,22.33,11.0833], # [54.67,21.665,9.5],[56.37,20.8,6.5]) #self.line_list(dome_data) big_pyramid_data = ([59.7,29.5,0],[59.7,13.8,0],[51.85,21.65,10],[59.7,29.5,0]) self.line_list(big_pyramid_data) big_pyramid_data = ([44,29.5,0],[44,13.8,0],[51.85,21.65,10],[44,29.5,0]) self.line_list(big_pyramid_data) big_pyramid_data = ([44,29.5,0],[44,13.8,0],[59.7,13.8,0],[59.7,29.5,0],[44,29.5,0]) self.line_list(big_pyramid_data) middle_pyramid_data = ([49.7,20.35,0],[49.7,7,0],[56.37,13.67,8.3],[49.7,20.35,0]) self.line_list(middle_pyramid_data) middle_pyramid_data = ([63.05,20.35,0],[63.05,7,0],[56.37,13.67,8.3],[63.05,20.35,0]) self.line_list(middle_pyramid_data) middle_pyramid_data = ([63.05,20.35,0],[63.05,7,0],[49.7,7,0],[49.7,20.35,0],[63.05,20.35,0]) self.line_list(middle_pyramid_data) small_pyramid_data = ([68.78,12.46,0],[68.78,1.46,0],[63.28,6.96,6.7],[68.78,12.46,0]) self.line_list(small_pyramid_data) small_pyramid_data = ([57.78,12.46,0],[57.78,1.46,0],[63.28,6.96,6.7],[57.78,12.46,0]) self.line_list(small_pyramid_data) small_pyramid_data = ([57.78,12.46,0],[57.78,1.46,0],[68.78,1.46,0],[68.78,12.46,0],[57.78,12.46,0]) self.line_list(small_pyramid_data) #greenhouse_data = (([57.5,28.5,0],[57.5,28.5,8],[57.5,3.5,8],[57.5,3.5,0]), # ([57.5,28.5,0],[57.5,28.5,8],[47.5,28.5,8],[47.5,28.5,0])) #self.graph_list(greenhouse_data) #roof_data = ([37.5,13.8,9.2083],[59.7,13.8,6]) #self.line_list(roof_data) dislin.color('FORE') closit_data = (([23.6667,18,1.5833],[23.6667,18,9.2083],[23.6667,20.5833,9.2083],[23.6667,20.5833,1.5833]), ([27.5,20.5833,1.5833],[27.5,20.5833,9.2083],[23.6667,20.5833,9.2083],[23.6667,20.5833,1.5833]), ([27.5,18.25,1.5833],[27.5,18.25,9.2083],[31.583,18.25,9.2083],[31.583,18.25,1.5833]), ([31.583,16.5,1.5833],[31.583,16.5,9.2083],[31.583,18.25,9.2083],[31.583,18.25,1.5833])) self.graph_list(closit_data) dislin.color('RED') old_house_line = ([45,4.5,0],[45,28.5,0]) self.line_list(old_house_line) #dislin.color('GREEN') #shower_data = (([32.5,-2,0],[32.5,-2,6.5],[32.5,2,6.5],[32.5,2,0]), # ([28.5,2,0],[28.5,2,6.5],[32.5,2,6.5],[32.5,2,0])) #self.graph_list(shower_data) #dislin.color('BLACK') dislin.disfin () def graph_list(self,list): space_point = () for i in list: space_point = i[0] dislin.strt3d(space_point[0],space_point[1],space_point[2]) space_point = i[1] dislin.conn3d(space_point[0],space_point[1],space_point[2]) dislin.strt3d(space_point[0],space_point[1],space_point[2]) space_point = i[2] dislin.conn3d(space_point[0],space_point[1],space_point[2]) dislin.strt3d(space_point[0],space_point[1],space_point[2]) space_point = i[3] dislin.conn3d(space_point[0],space_point[1],space_point[2]) dislin.strt3d(space_point[0],space_point[1],space_point[2]) space_point = i[0] dislin.conn3d(space_point[0],space_point[1],space_point[2]) def line_list(self,list): space_point = list[0] dislin.strt3d(space_point[0],space_point[1],space_point[2]) for i in list: dislin.conn3d(i[0],i[1],i[2]) #--------------------------------------------------------------------------- class TomApp(wxApp): def OnInit(self): frame = DislinFrame(NULL, -1,'House') frame.Show(true) self.SetTopWindow(frame) return true #--------------------------------------------------------------------------- app = TomApp(0) app.MainLoop()