'Activate_Multiply': "True",
'Center_X_mm': storedSetting("machine_center_x"),
'Center_Y_mm': storedSetting("machine_center_y"),
- 'Number_of_Columns_integer': "1",
- 'Number_of_Rows_integer': "1",
+ 'Number_of_Columns_integer': storedSetting('model_multiply_x', '1'),
+ 'Number_of_Rows_integer': storedSetting('model_multiply_y', '1'),
'Reverse_Sequence_every_Odd_Layer': DEFSET,
'Separation_over_Perimeter_Width_ratio': DEFSET,
},'speed': {
c = configBase.SettingRow(right, "Rotate (deg)", 'model_rotate_base', '0', '')
validators.validFloat(c)
configBase.settingNotify(c, self.preview3d.updateModelTransform)
+ configBase.TitleRow(right, "Multiply")
+ c = configBase.SettingRow(right, "Multiple X", 'model_multiply_x', '1', '')
+ validators.validInt(c)
+ configBase.settingNotify(c, self.preview3d.updateModelTransform)
+ c = configBase.SettingRow(right, "Multiple Y", 'model_multiply_y', '1', '')
+ validators.validInt(c)
+ configBase.settingNotify(c, self.preview3d.updateModelTransform)
# load and slice buttons.
loadButton = wx.Button(self, -1, 'Load Model')
self.modelDisplayList = glGenLists(1);\r
if self.parent.modelDirty:\r
self.parent.modelDirty = False\r
+ multiX = int(settings.getProfileSetting('model_multiply_x', '1'))\r
+ multiY = int(settings.getProfileSetting('model_multiply_y', '1'))\r
+ modelSize = self.parent.triangleMesh.getCarveCornerMaximum() - self.parent.triangleMesh.getCarveCornerMinimum()\r
glNewList(self.modelDisplayList, GL_COMPILE)\r
- glBegin(GL_TRIANGLES)\r
- for face in self.parent.triangleMesh.faces:\r
- v1 = self.parent.triangleMesh.vertexes[face.vertexIndexes[0]]\r
- v2 = self.parent.triangleMesh.vertexes[face.vertexIndexes[1]]\r
- v3 = self.parent.triangleMesh.vertexes[face.vertexIndexes[2]]\r
- glNormal3f(face.normal.x, face.normal.y, face.normal.z)\r
- glVertex3f(v1.x, v1.y, v1.z)\r
- glVertex3f(v2.x, v2.y, v2.z)\r
- glVertex3f(v3.x, v3.y, v3.z)\r
- glNormal3f(-face.normal.x, -face.normal.y, -face.normal.z)\r
- glVertex3f(v1.x, v1.y, v1.z)\r
- glVertex3f(v3.x, v3.y, v3.z)\r
- glVertex3f(v2.x, v2.y, v2.z)\r
- glEnd()\r
+ glPushMatrix()\r
+ glTranslate(-(modelSize.x+self.lineWidth*15)*(multiX-1)/2,-(modelSize.y+self.lineWidth*15)*(multiY-1)/2, 0)\r
+ for mx in xrange(0, multiX):\r
+ for my in xrange(0, multiY):\r
+ for face in self.parent.triangleMesh.faces:\r
+ glPushMatrix()\r
+ glTranslate((modelSize.x+self.lineWidth*15)*mx,(modelSize.y+self.lineWidth*15)*my, 0)\r
+ glBegin(GL_TRIANGLES)\r
+ v1 = self.parent.triangleMesh.vertexes[face.vertexIndexes[0]]\r
+ v2 = self.parent.triangleMesh.vertexes[face.vertexIndexes[1]]\r
+ v3 = self.parent.triangleMesh.vertexes[face.vertexIndexes[2]]\r
+ glNormal3f(face.normal.x, face.normal.y, face.normal.z)\r
+ glVertex3f(v1.x, v1.y, v1.z)\r
+ glVertex3f(v2.x, v2.y, v2.z)\r
+ glVertex3f(v3.x, v3.y, v3.z)\r
+ glNormal3f(-face.normal.x, -face.normal.y, -face.normal.z)\r
+ glVertex3f(v1.x, v1.y, v1.z)\r
+ glVertex3f(v3.x, v3.y, v3.z)\r
+ glVertex3f(v2.x, v2.y, v2.z)\r
+ glEnd()\r
+ glPopMatrix()\r
+ glPopMatrix()\r
glEndList()\r
if self.renderTransparent:\r
#If we want transparent, then first render a solid black model to remove the printer size lines.\r