mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-06 03:36:03 +08:00
Add scale/rotate controls to project planner.
This commit is contained in:
parent
ab1e4729ad
commit
b438918d92
@ -68,9 +68,9 @@ class projectPlanner(wx.Frame):
|
|||||||
self.remButton = wx.Button(self, -1, "Remove")
|
self.remButton = wx.Button(self, -1, "Remove")
|
||||||
self.sliceButton = wx.Button(self, -1, "Slice")
|
self.sliceButton = wx.Button(self, -1, "Slice")
|
||||||
|
|
||||||
sizer.Add(self.toolbar, (0,0), span=(1,1), flag=wx.EXPAND)
|
sizer.Add(self.toolbar, (0,0), span=(1,3), flag=wx.EXPAND)
|
||||||
sizer.Add(self.preview, (1,0), span=(3,1), flag=wx.EXPAND)
|
sizer.Add(self.preview, (1,0), span=(4,1), flag=wx.EXPAND)
|
||||||
sizer.Add(self.listbox, (0,1), span=(2,2), flag=wx.EXPAND)
|
sizer.Add(self.listbox, (1,1), span=(1,2), flag=wx.EXPAND)
|
||||||
sizer.Add(self.addButton, (2,1), span=(1,1))
|
sizer.Add(self.addButton, (2,1), span=(1,1))
|
||||||
sizer.Add(self.remButton, (2,2), span=(1,1))
|
sizer.Add(self.remButton, (2,2), span=(1,1))
|
||||||
sizer.Add(self.sliceButton, (3,1), span=(1,1))
|
sizer.Add(self.sliceButton, (3,1), span=(1,1))
|
||||||
@ -82,6 +82,24 @@ class projectPlanner(wx.Frame):
|
|||||||
self.sliceButton.Bind(wx.EVT_BUTTON, self.OnSlice)
|
self.sliceButton.Bind(wx.EVT_BUTTON, self.OnSlice)
|
||||||
self.listbox.Bind(wx.EVT_LISTBOX, self.OnListSelect)
|
self.listbox.Bind(wx.EVT_LISTBOX, self.OnListSelect)
|
||||||
|
|
||||||
|
panel = wx.Panel(self, -1)
|
||||||
|
sizer.Add(panel, (4,1), span=(1,2))
|
||||||
|
|
||||||
|
sizer = wx.GridBagSizer(2,2)
|
||||||
|
panel.SetSizer(sizer)
|
||||||
|
|
||||||
|
self.scaleCtrl = wx.TextCtrl(panel, -1, '')
|
||||||
|
self.rotateCtrl = wx.SpinCtrl(panel, -1, '', size=(21*4,21), style=wx.SP_ARROW_KEYS)
|
||||||
|
self.rotateCtrl.SetRange(0, 360)
|
||||||
|
|
||||||
|
sizer.Add(wx.StaticText(panel, -1, 'Scale'), (0,0), flag=wx.ALIGN_CENTER_VERTICAL)
|
||||||
|
sizer.Add(self.scaleCtrl, (0,1), flag=wx.ALIGN_BOTTOM|wx.EXPAND)
|
||||||
|
sizer.Add(wx.StaticText(panel, -1, 'Rotate'), (1,0), flag=wx.ALIGN_CENTER_VERTICAL)
|
||||||
|
sizer.Add(self.rotateCtrl, (1,1), flag=wx.ALIGN_BOTTOM|wx.EXPAND)
|
||||||
|
|
||||||
|
self.scaleCtrl.Bind(wx.EVT_TEXT, self.OnScaleChange)
|
||||||
|
self.rotateCtrl.Bind(wx.EVT_SPINCTRL, self.OnRotateChange)
|
||||||
|
|
||||||
self.SetSize((800,600))
|
self.SetSize((800,600))
|
||||||
|
|
||||||
def OnClose(self, e):
|
def OnClose(self, e):
|
||||||
@ -165,6 +183,8 @@ class projectPlanner(wx.Frame):
|
|||||||
if self.listbox.GetSelection() == -1:
|
if self.listbox.GetSelection() == -1:
|
||||||
return
|
return
|
||||||
self.selection = self.list[self.listbox.GetSelection()]
|
self.selection = self.list[self.listbox.GetSelection()]
|
||||||
|
self.scaleCtrl.SetValue(str(self.selection.scale))
|
||||||
|
self.rotateCtrl.SetValue(int(self.selection.rotate))
|
||||||
self.preview.Refresh()
|
self.preview.Refresh()
|
||||||
|
|
||||||
def OnAddModel(self, e):
|
def OnAddModel(self, e):
|
||||||
@ -285,12 +305,29 @@ class projectPlanner(wx.Frame):
|
|||||||
|
|
||||||
self.updateModelTransform(item)
|
self.updateModelTransform(item)
|
||||||
|
|
||||||
|
item.centerX = -item.getMinimum().x + 5
|
||||||
|
item.centerY = -item.getMinimum().y + 5
|
||||||
|
|
||||||
|
def OnScaleChange(self, e):
|
||||||
|
if self.selection == None:
|
||||||
|
return
|
||||||
|
try:
|
||||||
|
self.selection.scale = float(self.scaleCtrl.GetValue())
|
||||||
|
except ValueError:
|
||||||
|
self.selection.scale = 1.0
|
||||||
|
self.preview.Refresh()
|
||||||
|
|
||||||
|
def OnRotateChange(self, e):
|
||||||
|
if self.selection == None:
|
||||||
|
return
|
||||||
|
self.selection.rotate = float(self.rotateCtrl.GetValue())
|
||||||
|
self.updateModelTransform(self.selection)
|
||||||
|
|
||||||
def updateModelTransform(self, item):
|
def updateModelTransform(self, item):
|
||||||
scale = item.scale
|
rotate = item.rotate / 180.0 * math.pi
|
||||||
rotate = item.rotate
|
scaleX = 1.0
|
||||||
scaleX = scale
|
scaleY = 1.0
|
||||||
scaleY = scale
|
scaleZ = 1.0
|
||||||
scaleZ = scale
|
|
||||||
if item.flipX:
|
if item.flipX:
|
||||||
scaleX = -scaleX
|
scaleX = -scaleX
|
||||||
if item.flipY:
|
if item.flipY:
|
||||||
@ -497,15 +534,15 @@ class PreviewGLCanvas(glcanvas.GLCanvas):
|
|||||||
glDisable(GL_LIGHTING)
|
glDisable(GL_LIGHTING)
|
||||||
|
|
||||||
if self.parent.selection == item:
|
if self.parent.selection == item:
|
||||||
if item.gotHit:
|
|
||||||
glColor3f(1.0,0.3,0.0)
|
|
||||||
else:
|
|
||||||
glColor3f(1.0,1.0,0.0)
|
|
||||||
opengl.DrawBox(vMin, vMax)
|
|
||||||
if item.gotHit:
|
if item.gotHit:
|
||||||
glColor3f(1.0,0.0,0.3)
|
glColor3f(1.0,0.0,0.3)
|
||||||
else:
|
else:
|
||||||
glColor3f(1.0,0.0,1.0)
|
glColor3f(1.0,0.0,1.0)
|
||||||
|
opengl.DrawBox(vMin, vMax)
|
||||||
|
if item.gotHit:
|
||||||
|
glColor3f(1.0,0.3,0.0)
|
||||||
|
else:
|
||||||
|
glColor3f(1.0,1.0,0.0)
|
||||||
opengl.DrawBox(vMinHead, vMaxHead)
|
opengl.DrawBox(vMinHead, vMaxHead)
|
||||||
elif seenSelected:
|
elif seenSelected:
|
||||||
if item.gotHit:
|
if item.gotHit:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user