self.swapXZ = False\r
self.swapYZ = False\r
self.extruder = 0\r
+ self.profile = None\r
\r
self.modelDisplayList = None\r
self.modelDirty = False\r
toolbarUtil.NormalButton(self.toolbar2, self.OnMoveUp, 'move-up.png', 'Move model up in print list')\r
toolbarUtil.NormalButton(self.toolbar2, self.OnMoveDown, 'move-down.png', 'Move model down in print list')\r
toolbarUtil.NormalButton(self.toolbar2, self.OnCopy, 'copy.png', 'Make a copy of the current selected object')\r
+ toolbarUtil.NormalButton(self.toolbar2, self.OnAutoPlace, 'autoplace.png', 'Automaticly organize the objects on the platform.')\r
self.toolbar2.Realize()\r
\r
sizer = wx.GridBagSizer(2,2)\r
sizer.Add(self.scaleCtrl, (0,1), flag=wx.ALIGN_BOTTOM|wx.EXPAND)\r
sizer.Add(wx.StaticText(panel, -1, 'Rotate'), (1,0), flag=wx.ALIGN_CENTER_VERTICAL)\r
sizer.Add(self.rotateCtrl, (1,1), flag=wx.ALIGN_BOTTOM|wx.EXPAND)\r
- \r
+\r
if int(profile.getPreference('extruder_amount')) > 1:\r
self.extruderCtrl = wx.ComboBox(panel, -1, '1', choices=map(str, range(1, int(profile.getPreference('extruder_amount'))+1)), style=wx.CB_DROPDOWN|wx.CB_READONLY)\r
sizer.Add(wx.StaticText(panel, -1, 'Extruder'), (2,0), flag=wx.ALIGN_CENTER_VERTICAL)\r
cp.set(section, 'swapXZ', str(item.swapXZ))\r
cp.set(section, 'swapYZ', str(item.swapYZ))\r
cp.set(section, 'extruder', str(item.extruder+1))\r
+ if item.profile != None:\r
+ cp.set(section, 'profile', item.profile)\r
i += 1\r
cp.write(open(dlg.GetPath(), "w"))\r
dlg.Destroy()\r
item.swapXZ = cp.get(section, 'swapXZ') == 'True'\r
item.swapYZ = cp.get(section, 'swapYZ') == 'True'\r
if cp.has_option(section, 'extruder'):\r
- item.extuder = int(cp.get(section, 'extruder'))-1\r
+ item.extuder = int(cp.get(section, 'extruder')) - 1\r
+ if cp.has_option(section, 'profile'):\r
+ item.profile = cp.get(section, 'profile')\r
item.updateModelTransform()\r
i += 1\r
\r
extraSizeMin = extraSizeMin + util3d.Vector3(skirtSize, skirtSize, 0)\r
extraSizeMax = extraSizeMax + util3d.Vector3(skirtSize, skirtSize, 0)\r
\r
- posX = self.machineSize.x\r
+ if extraSizeMin.x > extraSizeMax.x:\r
+ posX = self.machineSize.x\r
+ dirX = -1\r
+ else:\r
+ posX = 0\r
+ dirX = 1\r
posY = 0\r
+ dirY = 1\r
+ \r
minX = self.machineSize.x\r
minY = self.machineSize.y\r
maxX = 0\r
maxY = 0\r
- dirX = -1\r
- dirY = 1\r
for item in self.list:\r
item.centerX = posX + item.getMaximum().x * item.scale * dirX\r
item.centerY = posY + item.getMaximum().y * item.scale * dirY\r
if item.centerY + item.getSize().y >= allowedSizeY:\r
- posX = minX - extraSizeMax.x - 1\r
+ if dirX < 0:\r
+ posX = minX - extraSizeMax.x - 1\r
+ else:\r
+ posX = maxX + extraSizeMin.x + 1\r
posY = 0\r
item.centerX = posX + item.getMaximum().x * item.scale * dirX\r
item.centerY = posY + item.getMaximum().y * item.scale * dirY\r
maxY = max(maxY, item.centerY + item.getSize().y * item.scale / 2)\r
\r
for item in self.list:\r
- item.centerX -= minX / 2\r
+ if dirX < 0:\r
+ item.centerX -= minX / 2\r
+ else:\r
+ item.centerX += (self.machineSize.x - maxX) / 2\r
item.centerY += (self.machineSize.y - maxY) / 2\r
\r
- if minX < 0:\r
+ if minX < 0 or maxX > self.machineSize.x:\r
return ((maxX - minX) + (maxY - minY)) * 100\r
\r
return (maxX - minX) + (maxY - minY)\r
\r
def OnSlice(self, e):\r
put = profile.setTempOverride\r
+ oldProfile = profile.getGlobalProfileString()\r
\r
put('model_multiply_x', '1')\r
put('model_multiply_y', '1')\r
clearZ = 0\r
actionList = []\r
for item in self.list:\r
+ if item.profile != None and os.path.isfile(item.profile):\r
+ profile.loadGlobalProfile(item.profile)\r
put('machine_center_x', item.centerX - self.extruderOffset[item.extruder].x)\r
put('machine_center_y', item.centerY - self.extruderOffset[item.extruder].y)\r
put('model_scale', item.scale)\r
clearZ = max(clearZ, item.getMaximum().z * item.scale)\r
action.clearZ = clearZ\r
actionList.append(action)\r
+\r
+ if item.profile != None:\r
+ profile.loadGlobalProfileFromString(oldProfile)\r
\r
#Restore the old profile.\r
profile.resetTempOverride()\r
if self.pitch < 10:\r
self.pitch = 10\r
else:\r
- #self.offsetX += float(e.GetX() - self.oldX) * self.zoom / self.GetSize().GetHeight() * 2\r
- #self.offsetY -= float(e.GetY() - self.oldY) * self.zoom / self.GetSize().GetHeight() * 2\r
item = self.parent.selection\r
if item != None:\r
item.centerX += float(e.GetX() - self.oldX) * self.zoom / self.GetSize().GetHeight() * 2\r