pass\r
\r
class ProjectObject(stl.stlModel):\r
- def __init__(self, filename):\r
+ def __init__(self, parent, filename):\r
super(ProjectObject, self).__init__()\r
\r
self.load(filename)\r
\r
+ self.parent = parent\r
self.filename = filename\r
self.scale = 1.0\r
self.rotate = 0.0\r
self.modelDirty = True\r
\r
def clone(self):\r
- p = ProjectObject(self.filename)\r
+ p = ProjectObject(self.parent, self.filename)\r
\r
p.centerX = self.centerX + 5\r
p.centerY = self.centerY + 5\r
p.updateModelTransform()\r
\r
return p\r
+ \r
+ def clampXY(self):\r
+ if self.centerX < -self.getMinimum().x * self.scale + self.parent.extruderOffset[self.extruder].x:\r
+ self.centerX = -self.getMinimum().x * self.scale + self.parent.extruderOffset[self.extruder].x\r
+ if self.centerY < -self.getMinimum().y * self.scale + self.parent.extruderOffset[self.extruder].y:\r
+ self.centerY = -self.getMinimum().y * self.scale + self.parent.extruderOffset[self.extruder].y\r
+ if self.centerX > self.parent.machineSize.x + self.parent.extruderOffset[self.extruder].x - self.getMaximum().x * self.scale:\r
+ self.centerX = self.parent.machineSize.x + self.parent.extruderOffset[self.extruder].x - self.getMaximum().x * self.scale\r
+ if self.centerY > self.parent.machineSize.y + self.parent.extruderOffset[self.extruder].y - self.getMaximum().y * self.scale:\r
+ self.centerY = self.parent.machineSize.y + self.parent.extruderOffset[self.extruder].y - self.getMaximum().y * self.scale\r
\r
class projectPlanner(wx.Frame):\r
"Main user interface window"\r
while cp.has_section('model_%d' % (i)):\r
section = 'model_%d' % (i)\r
\r
- item = ProjectObject(unicode(cp.get(section, 'filename'), "utf-8"))\r
+ item = ProjectObject(self, unicode(cp.get(section, 'filename'), "utf-8"))\r
item.centerX = float(cp.get(section, 'centerX'))\r
item.centerY = float(cp.get(section, 'centerY'))\r
item.scale = float(cp.get(section, 'scale'))\r
dlg.SetWildcard("STL files (*.stl)|*.stl;*.STL")\r
if dlg.ShowModal() == wx.ID_OK:\r
for filename in dlg.GetPaths():\r
- item = ProjectObject(filename)\r
+ item = ProjectObject(self, filename)\r
profile.putPreference('lastFile', item.filename)\r
self.list.append(item)\r
self.selection = item\r
bestAllowedSize = i\r
bestArea = area\r
self._doAutoPlace(bestAllowedSize)\r
+ for item in self.list:\r
+ item.clampXY()\r
self.preview.Refresh()\r
\r
def _doAutoPlace(self, allowedSizeY):\r
if item != None:\r
item.centerX += float(e.GetX() - self.oldX) * self.zoom / self.GetSize().GetHeight() * 2\r
item.centerY -= float(e.GetY() - self.oldY) * self.zoom / self.GetSize().GetHeight() * 2\r
- if item.centerX < -item.getMinimum().x * item.scale + self.parent.extruderOffset[item.extruder].x:\r
- item.centerX = -item.getMinimum().x * item.scale + self.parent.extruderOffset[item.extruder].x\r
- if item.centerY < -item.getMinimum().y * item.scale + self.parent.extruderOffset[item.extruder].y:\r
- item.centerY = -item.getMinimum().y * item.scale + self.parent.extruderOffset[item.extruder].y\r
- if item.centerX > self.parent.machineSize.x + self.parent.extruderOffset[item.extruder].x - item.getMaximum().x * item.scale:\r
- item.centerX = self.parent.machineSize.x + self.parent.extruderOffset[item.extruder].x - item.getMaximum().x * item.scale\r
- if item.centerY > self.parent.machineSize.y + self.parent.extruderOffset[item.extruder].y - item.getMaximum().y * item.scale:\r
- item.centerY = self.parent.machineSize.y + self.parent.extruderOffset[item.extruder].y - item.getMaximum().y * item.scale\r
+ item.clampXY()\r
self.Refresh()\r
else:\r
self.allowDrag = False\r