#! /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)) if wxPlatform == '__WXMSW__': icon = wxIcon('Starport.ico', wxBITMAP_TYPE_ICO) self.SetIcon(icon) 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, "", wxPoint(220, 25), wxSize(150, 25)) wxStaticText(self, -1, "Rotation", wxPoint(5, 50), wxSize(75, 25)) self.m1 = wxTextCtrl(self, 10, "", wxPoint(220, 50), wxSize(150, 25)) wxStaticText(self, -1, "Angle up", wxPoint(5, 75), wxSize(75, 25)) self.m2 = wxTextCtrl(self, 10, "", wxPoint(220, 75), wxSize(150, 25)) wxStaticText(self, -1, "Radius", wxPoint(5, 100), wxSize(75, 25)) self.m3 = wxTextCtrl(self, 10, "", wxPoint(220, 100), wxSize(150, 25)) wxStaticText(self, -1, "M4", wxPoint(5, 125), wxSize(75, 25)) self.m4 = wxTextCtrl(self, 10, "", wxPoint(220, 125), 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): 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)) #ot = int(self.m4.GetLineText(0)) except ValueError: num = 500 xv = 30 yv = 20 zv = 150 ot = 500 dislin.scrmod ('revers') # level 0 dislin.metafl ('cons') #dislin.setpag ('da4p') dislin.setpag ('DA3L') dislin.disini () # level 1 #dislin.autres() #dislin.pagfll(10) #dislin.axis3d(150,140,150) #dislin.view3d(xv,yv,zv,'ANGLE') #dislin.origin(0,140) #dislin.color('BLUE') dislin.graf3(0,100,0,10,-10,60,-10,10,0,15,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(10,10,'BOTTOM') #dislin.cross() #dislin.graf3d(0,100,0,10,0,60,0,10,-10,40,-10,10) #dislin.box3d() 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]), ([28.5,-2,0],[28.5,4.5,0],[28.5,4.5,9.2083],[28.5,-2,9.2083]), ([48,13.5,8.2083],[48,8.5,8.2083],[48,8.5,0],[48,13.5,0]), ([37.5,-2,0],[37.5,4.5,0],[37.5,4.5,9.2083],[37.5,-2,9.2083]), ([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],[46.5,28.5,0],[46.5,28.5,8.2083],[37.5,28.5,9.2083]), ([37.5,22,0],[46.5,22,0],[46.5,22,8.2083],[37.5,22,9.2083]), ([46.5,22,0],[46.5,28.5,0],[46.5,28.5,8.2083],[46.5,22,8.2083]), ([37.5,-2,0],[45,4.5,0],[45,4.5,8.8589],[37.5,-2,9.2083]), ([45,4.5,0],[45,4.5,8.8589],[48,8.5,8.2083],[48,8.5,0]), ([37.5,-2,0],[28.5,-2,0],[28.5,-2,9.2083],[37.5,-2,9.2083])) 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) #other_building_data = (([48,4,0],[58,4,0],[58,4,10],[48,4,10]), # ([48,4,0],[48,0,0],[48,0,10],[48,4,10])) #self.graph_list(other_building_data) #dislin.color('YELLOW') 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) dome_data = ([49.97,23.86,6.5],[53.1667,26.66,6.5],[56.37,23.86,6.5], [57.5,22.33,6.5],[56.37,20.8,6.5],[53.1667,18,6.5],[49.97,20.8,6.5],[48.84,22.33,6.5]) self.line_list(dome_data) greenhouse_data = (([57.5,22.33,0],[57.5,22.33,6.5],[57.5,3.5,6.5],[57.5,3.5,0]), ([57.5,22.33,0],[57.5,22.33,6.5],[56.37,23.86,6.5],[56.37,23.86,0]), ([53.1667,26.66,0],[53.1667,26.66,6.5],[56.37,23.86,6.5],[56.37,23.86,0]), ([53.1667,26.66,0],[53.1667,26.66,6.5],[49.97,23.86,6.5],[49.97,23.86,0]), ([48.84,22.33,0],[48.84,22.33,6.5],[49.97,23.86,6.5],[49.97,23.86,0]), ([48.84,22.33,0],[48.84,22.33,6.5],[46.5,22.33,6.5],[46.5,22.33,0])) self.graph_list(greenhouse_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('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 = () xmat = [] ymat = [] zmat = [] for i in list: space_point = i[0] xmat.append(space_point[0]) ymat.append(space_point[1]) zmat.append(space_point[2]) #dislin.strt3d(space_point[0],space_point[1],space_point[2]) space_point = i[1] xmat.append(space_point[0]) ymat.append(space_point[1]) zmat.append(space_point[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[2] xmat.append(space_point[0]) ymat.append(space_point[1]) zmat.append(space_point[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] xmat.append(space_point[0]) ymat.append(space_point[1]) zmat.append(space_point[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[0] #dislin.conn3d(space_point[0],space_point[1],space_point[2]) dislin.setres(50,50) dislin.curve3(xmat,ymat,zmat,len(list)) def line_list(self,list): xmat = [] ymat = [] zmat = [] for i in list: xmat.append(i[0]) ymat.append(i[1]) zmat.append(i[2]) dislin.curve3(xmat,ymat,zmat,len(list)) #--------------------------------------------------------------------------- class TomApp(wxApp): def OnInit(self): frame = DislinFrame(NULL, -1,'House') frame.Show(true) self.SetTopWindow(frame) return true #--------------------------------------------------------------------------- app = TomApp(0) app.MainLoop()