def __init__(self, parent, projectPlannerWindow): attribList = (glcanvas.WX_GL_RGBA, glcanvas.WX_GL_DOUBLEBUFFER, glcanvas.WX_GL_DEPTH_SIZE, 24, glcanvas.WX_GL_STENCIL_SIZE, 8) glcanvas.GLCanvas.__init__(self, parent, attribList = attribList) self.parent = projectPlannerWindow self.context = glcanvas.GLContext(self) wx.EVT_PAINT(self, self.OnPaint) wx.EVT_SIZE(self, self.OnSize) wx.EVT_ERASE_BACKGROUND(self, self.OnEraseBackground) wx.EVT_LEFT_DOWN(self, self.OnMouseLeftDown) wx.EVT_MOTION(self, self.OnMouseMotion) wx.EVT_MOUSEWHEEL(self, self.OnMouseWheel) self.yaw = 30 self.pitch = 60 self.zoom = self.parent.machineSize[0] / 2 + 10 self.offsetX = 0 self.offsetY = 0 self.view3D = False self.allowDrag = False self.objColor = profile.getPreferenceColour('model_colour')
def __init__(self, parent, projectPlannerWindow): attribList = (glcanvas.WX_GL_RGBA, glcanvas.WX_GL_DOUBLEBUFFER, glcanvas.WX_GL_DEPTH_SIZE, 24, glcanvas.WX_GL_STENCIL_SIZE, 8) glcanvas.GLCanvas.__init__(self, parent, attribList = attribList) self.parent = projectPlannerWindow self.context = glcanvas.GLContext(self) wx.EVT_PAINT(self, self.OnPaint) wx.EVT_SIZE(self, self.OnSize) wx.EVT_ERASE_BACKGROUND(self, self.OnEraseBackground) wx.EVT_LEFT_DOWN(self, self.OnMouseLeftDown) wx.EVT_MOTION(self, self.OnMouseMotion) wx.EVT_MOUSEWHEEL(self, self.OnMouseWheel) self.yaw = 30 self.pitch = 60 self.offsetX = 0 self.offsetY = 0 self.view3D = self.parent.alwaysAutoPlace if self.view3D: self.zoom = 300 else: self.zoom = self.parent.machineSize[0] / 2 + 10 self.allowDrag = False self.objColor = profile.getPreferenceColour('model_colour')
def updateProfileToControls(self): self.objColor[0] = profile.getPreferenceColour('model_colour') self.objColor[1] = profile.getPreferenceColour('model_colour2') self.objColor[2] = profile.getPreferenceColour('model_colour3') self.objColor[3] = profile.getPreferenceColour('model_colour3')
def saveSceneStream(s, filename, objects): xml = StringIO.StringIO() xml.write('<?xml version="1.0" encoding="utf-8"?>\n') xml.write('<amf unit="millimeter" version="1.1">\n') n = 0 for obj in objects: n += 1 xml.write(' <object id="%d">\n' % (n)) xml.write(' <mesh>\n') xml.write(' <vertices>\n') vertexList, meshList = obj.getVertexIndexList() for v in vertexList: xml.write(' <vertex>\n') xml.write(' <coordinates>\n') xml.write(' <x>%f</x>\n' % (v[0])) xml.write(' <y>%f</y>\n' % (v[1])) xml.write(' <z>%f</z>\n' % (v[2])) xml.write(' </coordinates>\n') xml.write(' </vertex>\n') xml.write(' </vertices>\n') matID = 1 for m in meshList: xml.write(' <volume materialid="%i">\n' % (matID)) for idx in xrange(0, len(m), 3): xml.write(' <triangle>\n') xml.write(' <v1>%i</v1>\n' % (m[idx])) xml.write(' <v2>%i</v2>\n' % (m[idx+1])) xml.write(' <v3>%i</v3>\n' % (m[idx+2])) xml.write(' </triangle>\n') xml.write(' </volume>\n') matID += 1 xml.write(' </mesh>\n') xml.write(' </object>\n') n += 1 xml.write(' <constellation id="%d">\n' % (n)) for idx in xrange(1, n): xml.write(' <instance objectid="%d">\n' % (idx)) xml.write(' <deltax>0</deltax>\n') xml.write(' <deltay>0</deltay>\n') xml.write(' <deltaz>0</deltaz>\n') xml.write(' <rx>0</rx>\n') xml.write(' <ry>0</ry>\n') xml.write(' <rz>0</rz>\n') xml.write(' </instance>\n') xml.write(' </constellation>\n') for n in xrange(0, 4): xml.write(' <material id="%i">\n' % (n + 1)) xml.write(' <metadata type="Name">Material %i</metadata>\n' % (n + 1)) if n == 0: col = profile.getPreferenceColour('model_colour') else: col = profile.getPreferenceColour('model_colour%i' % (n + 1)) xml.write(' <color><r>%.2f</r><g>%.2f</g><b>%.2f</b></color>\n' % (col[0], col[1], col[2])) xml.write(' </material>\n') xml.write('</amf>\n') zfile = zipfile.ZipFile(s, "w", zipfile.ZIP_DEFLATED) zfile.writestr(os.path.basename(filename), xml.getvalue()) zfile.close() xml.close()