self.list = []\r
self.selection = None\r
self.printMode = 0\r
+ self.alwaysAutoPlace = True\r
\r
self.machineSize = numpy.array([profile.getPreferenceFloat('machine_width'), profile.getPreferenceFloat('machine_depth'), profile.getPreferenceFloat('machine_height')])\r
self.headSizeMin = numpy.array([profile.getPreferenceFloat('extruder_head_size_min_x'), profile.getPreferenceFloat('extruder_head_size_min_y'),0])\r
toolbarUtil.NormalButton(self.toolbar, self.OnSaveProject, 'save.png', 'Save project')\r
self.toolbar.AddSeparator()\r
group = []\r
- toolbarUtil.RadioButton(self.toolbar, group, 'object-3d-on.png', 'object-3d-off.png', '3D view', callback=self.On3DClick)\r
- toolbarUtil.RadioButton(self.toolbar, group, 'object-top-on.png', 'object-top-off.png', 'Topdown view', callback=self.OnTopClick).SetValue(True)\r
+ toolbarUtil.RadioButton(self.toolbar, group, 'object-3d-on.png', 'object-3d-off.png', '3D view', callback=self.On3DClick).SetValue(self.alwaysAutoPlace)\r
+ toolbarUtil.RadioButton(self.toolbar, group, 'object-top-on.png', 'object-top-off.png', 'Topdown view', callback=self.OnTopClick).SetValue(not self.alwaysAutoPlace)\r
self.toolbar.AddSeparator()\r
toolbarUtil.NormalButton(self.toolbar, self.OnPreferences, 'preferences.png', 'Project planner preferences')\r
self.toolbar.AddSeparator()\r
toolbarUtil.NormalButton(self.toolbar2, self.OnCopy, 'copy.png', 'Make a copy of the current selected object')\r
toolbarUtil.NormalButton(self.toolbar2, self.OnSetCustomProfile, 'set-profile.png', 'Set a custom profile to be used to prepare a specific object.')\r
self.toolbar2.AddSeparator()\r
- toolbarUtil.NormalButton(self.toolbar2, self.OnAutoPlace, 'autoplace.png', 'Automaticly organize the objects on the platform.')\r
+ if not self.alwaysAutoPlace:\r
+ toolbarUtil.NormalButton(self.toolbar2, self.OnAutoPlace, 'autoplace.png', 'Automaticly organize the objects on the platform.')\r
toolbarUtil.NormalButton(self.toolbar2, self.OnSlice, 'slice.png', 'Prepare to project into a gcode file.')\r
self.toolbar2.Realize()\r
\r
self.addButton = wx.Button(self.panel, -1, "Add")\r
self.remButton = wx.Button(self.panel, -1, "Remove")\r
self.sliceButton = wx.Button(self.panel, -1, "Prepare")\r
- self.autoPlaceButton = wx.Button(self.panel, -1, "Auto Place")\r
+ if not self.alwaysAutoPlace:\r
+ self.autoPlaceButton = wx.Button(self.panel, -1, "Auto Place")\r
\r
sizer.Add(self.toolbar, (0,0), span=(1,1), flag=wx.EXPAND|wx.LEFT|wx.RIGHT)\r
sizer.Add(self.toolbar2, (0,1), span=(1,2), flag=wx.EXPAND|wx.LEFT|wx.RIGHT)\r
sizer.Add(self.addButton, (3,1), span=(1,1))\r
sizer.Add(self.remButton, (3,2), span=(1,1))\r
sizer.Add(self.sliceButton, (4,1), span=(1,1))\r
- sizer.Add(self.autoPlaceButton, (4,2), span=(1,1))\r
+ if not self.alwaysAutoPlace:\r
+ sizer.Add(self.autoPlaceButton, (4,2), span=(1,1))\r
sizer.AddGrowableCol(0)\r
sizer.AddGrowableRow(1)\r
\r
self.addButton.Bind(wx.EVT_BUTTON, self.OnAddModel)\r
self.remButton.Bind(wx.EVT_BUTTON, self.OnRemModel)\r
self.sliceButton.Bind(wx.EVT_BUTTON, self.OnSlice)\r
- self.autoPlaceButton.Bind(wx.EVT_BUTTON, self.OnAutoPlace)\r
+ if not self.alwaysAutoPlace:\r
+ self.autoPlaceButton.Bind(wx.EVT_BUTTON, self.OnAutoPlace)\r
self.listbox.Bind(wx.EVT_LISTBOX, self.OnListSelect)\r
\r
panel = wx.Panel(self.panel, -1)\r
self.printMode = 0\r
if self.printAllAtOnce.GetValue():\r
self.printMode = 1\r
+ if self.alwaysAutoPlace:\r
+ self.OnAutoPlace(None)\r
self.preview.Refresh()\r
\r
def OnSaveCombinedSTL(self, e):\r
else:\r
self.selection = None\r
self.listbox.SetSelection(-1)\r
+ if self.alwaysAutoPlace:\r
+ self.OnAutoPlace(None)\r
\r
def OnAutoPlace(self, e):\r
bestAllowedSize = int(self.machineSize[1])\r
wx.EVT_MOUSEWHEEL(self, self.OnMouseWheel)\r
self.yaw = 30\r
self.pitch = 60\r
- self.zoom = self.parent.machineSize[0] / 2 + 10\r
self.offsetX = 0\r
self.offsetY = 0\r
- self.view3D = False\r
+ self.view3D = self.parent.alwaysAutoPlace\r
+ if self.view3D:\r
+ self.zoom = 300\r
+ else:\r
+ self.zoom = self.parent.machineSize[0] / 2 + 10\r
self.allowDrag = False\r
\r
self.objColor = profile.getPreferenceColour('model_colour')\r
\r
def OnMouseLeftDown(self,e):\r
self.allowDrag = True\r
- \r
+ if not self.parent.alwaysAutoPlace and not self.view3D:\r
+ #TODO: Translate mouse X/Y to 3D X/Y/Z\r
+ for item in self.parent.list:\r
+ iMin = (item.getMinimum() * item.scale) + numpy.array([item.centerX, item.centerY, 0]) - self.parent.extruderOffset[item.extruder]\r
+ iMax = (item.getMaximum() * item.scale) + numpy.array([item.centerX, item.centerY, 0]) - self.parent.extruderOffset[item.extruder]\r
+ \r
def OnMouseMotion(self,e):\r
if self.allowDrag and e.Dragging() and e.LeftIsDown():\r
if self.view3D:\r
self.pitch = 170\r
if self.pitch < 10:\r
self.pitch = 10\r
- else:\r
+ elif not self.parent.alwaysAutoPlace:\r
item = self.parent.selection\r
if item != None:\r
item.centerX += float(e.GetX() - self.oldX) * self.zoom / self.GetSize().GetHeight() * 2\r
\r
glDisable(GL_LIGHTING)\r
\r
- if self.parent.selection == item:\r
- if item.gotHit:\r
- glColor3f(1.0,0.0,0.3)\r
- else:\r
- glColor3f(1.0,0.0,1.0)\r
- opengl.DrawBox(vMin, vMax)\r
- if item.gotHit:\r
- glColor3f(1.0,0.3,0.0)\r
- else:\r
- glColor3f(1.0,1.0,0.0)\r
- opengl.DrawBox(vMinHead, vMaxHead)\r
- elif seenSelected:\r
- if item.gotHit:\r
- glColor3f(0.5,0.0,0.1)\r
- else:\r
- glColor3f(0.5,0.0,0.5)\r
- opengl.DrawBox(vMinHead, vMaxHead)\r
- else:\r
- if item.gotHit:\r
- glColor3f(0.7,0.1,0.0)\r
+ if not self.parent.alwaysAutoPlace:\r
+ if self.parent.selection == item:\r
+ if item.gotHit:\r
+ glColor3f(1.0,0.0,0.3)\r
+ else:\r
+ glColor3f(1.0,0.0,1.0)\r
+ opengl.DrawBox(vMin, vMax)\r
+ if item.gotHit:\r
+ glColor3f(1.0,0.3,0.0)\r
+ else:\r
+ glColor3f(1.0,1.0,0.0)\r
+ opengl.DrawBox(vMinHead, vMaxHead)\r
+ elif seenSelected:\r
+ if item.gotHit:\r
+ glColor3f(0.5,0.0,0.1)\r
+ else:\r
+ glColor3f(0.5,0.0,0.5)\r
+ opengl.DrawBox(vMinHead, vMaxHead)\r
else:\r
- glColor3f(0.7,0.7,0.0)\r
- opengl.DrawBox(vMin, vMax)\r
+ if item.gotHit:\r
+ glColor3f(0.7,0.1,0.0)\r
+ else:\r
+ glColor3f(0.7,0.7,0.0)\r
+ opengl.DrawBox(vMin, vMax)\r
\r
glPopMatrix()\r
\r