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): oldSimpleMode = self._isSimpleMode self._isSimpleMode = profile.getPreference('startMode') == 'Simple' if self._isSimpleMode and not oldSimpleMode: self._scene.arrangeAll() self.sceneUpdated() self._machineSize = numpy.array([profile.getPreferenceFloat('machine_width'), profile.getPreferenceFloat('machine_depth'), profile.getPreferenceFloat('machine_height')]) self._objColors[0] = profile.getPreferenceColour('model_colour') self._objColors[1] = profile.getPreferenceColour('model_colour2') self._objColors[2] = profile.getPreferenceColour('model_colour3') self._objColors[3] = profile.getPreferenceColour('model_colour4') self._scene.setMachineSize(self._machineSize) self._scene.setSizeOffsets(numpy.array(profile.calculateObjectSizeOffsets(), numpy.float32)) self._scene.setHeadSize(profile.getPreferenceFloat('extruder_head_size_min_x'), profile.getPreferenceFloat('extruder_head_size_max_x'), profile.getPreferenceFloat('extruder_head_size_min_y'), profile.getPreferenceFloat('extruder_head_size_max_y'), profile.getPreferenceFloat('extruder_head_size_height')) if self._selectedObj is not None: scale = self._selectedObj.getScale() size = self._selectedObj.getSize() self.scaleXctrl.setValue(round(scale[0], 2)) self.scaleYctrl.setValue(round(scale[1], 2)) self.scaleZctrl.setValue(round(scale[2], 2)) self.scaleXmmctrl.setValue(round(size[0], 2)) self.scaleYmmctrl.setValue(round(size[1], 2)) self.scaleZmmctrl.setValue(round(size[2], 2))
def __init__(self, parent, projectPlannerWindow): super(PreviewGLCanvas, self).__init__(parent) self.parent = projectPlannerWindow 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.dragType = '' self.viewport = None self.allowDrag = False self.tempMatrix = None self.objColor = profile.getPreferenceColour('model_colour')
def saveScene(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(filename, "w", zipfile.ZIP_DEFLATED) zfile.writestr(os.path.basename(filename), xml.getvalue()) zfile.close() xml.close()
def saveScene(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(filename, "w", zipfile.ZIP_DEFLATED) zfile.writestr(os.path.basename(filename), xml.getvalue()) zfile.close() xml.close()
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_colour4')
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_colour4")