示例#1
0
    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")
示例#2
0
	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))
示例#3
0
	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')
示例#4
0
    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')
示例#5
0
文件: amf.py 项目: smeraz24/3DPrinter
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()
示例#6
0
文件: amf.py 项目: AJMartel/3DPrinter
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()
示例#7
0
	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')
示例#8
0
 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")
示例#9
0
 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')