chiark / gitweb /
Merge pull request #323 from smorloc/master
[cura.git] / Cura / gui / simpleMode.py
1 from __future__ import absolute_import
2
3 import wx
4
5 from Cura.util import profile
6
7 class simpleModePanel(wx.Panel):
8         "Main user interface window for Quickprint mode"
9         def __init__(self, parent):
10                 super(simpleModePanel, self).__init__(parent)
11                 
12                 #toolsMenu = wx.Menu()
13                 #i = toolsMenu.Append(-1, 'Switch to Normal mode...')
14                 #self.Bind(wx.EVT_MENU, self.OnNormalSwitch, i)
15                 #self.menubar.Insert(1, toolsMenu, 'Normal mode')
16
17                 printTypePanel = wx.Panel(self)
18                 self.printTypeNormal = wx.RadioButton(printTypePanel, -1, 'Normal quality print', style=wx.RB_GROUP)
19                 self.printTypeLow = wx.RadioButton(printTypePanel, -1, 'Fast low quality print')
20                 self.printTypeHigh = wx.RadioButton(printTypePanel, -1, 'High quality print')
21                 self.printTypeJoris = wx.RadioButton(printTypePanel, -1, 'Thin walled cup or vase')
22
23                 printMaterialPanel = wx.Panel(self)
24                 self.printMaterialPLA = wx.RadioButton(printMaterialPanel, -1, 'PLA', style=wx.RB_GROUP)
25                 self.printMaterialABS = wx.RadioButton(printMaterialPanel, -1, 'ABS')
26                 self.printMaterialDiameter = wx.TextCtrl(printMaterialPanel, -1, profile.getProfileSetting('filament_diameter'))
27                 
28                 self.printSupport = wx.CheckBox(self, -1, 'Print support structure')
29                 
30                 sizer = wx.GridBagSizer()
31                 self.SetSizer(sizer)
32
33                 sb = wx.StaticBox(printTypePanel, label="Select a print type:")
34                 boxsizer = wx.StaticBoxSizer(sb, wx.VERTICAL)
35                 boxsizer.Add(self.printTypeNormal)
36                 boxsizer.Add(self.printTypeLow)
37                 boxsizer.Add(self.printTypeHigh)
38                 boxsizer.Add(self.printTypeJoris)
39                 printTypePanel.SetSizer(wx.BoxSizer(wx.VERTICAL))
40                 printTypePanel.GetSizer().Add(boxsizer, flag=wx.EXPAND)
41                 sizer.Add(printTypePanel, (0,0), flag=wx.EXPAND)
42
43                 sb = wx.StaticBox(printMaterialPanel, label="Material:")
44                 boxsizer = wx.StaticBoxSizer(sb, wx.VERTICAL)
45                 boxsizer.Add(self.printMaterialPLA)
46                 boxsizer.Add(self.printMaterialABS)
47                 boxsizer.Add(wx.StaticText(printMaterialPanel, -1, 'Diameter:'))
48                 boxsizer.Add(self.printMaterialDiameter)
49                 printMaterialPanel.SetSizer(wx.BoxSizer(wx.VERTICAL))
50                 printMaterialPanel.GetSizer().Add(boxsizer, flag=wx.EXPAND)
51                 sizer.Add(printMaterialPanel, (1,0), flag=wx.EXPAND)
52
53                 sb = wx.StaticBox(self, label="Other:")
54                 boxsizer = wx.StaticBoxSizer(sb, wx.VERTICAL)
55                 boxsizer.Add(self.printSupport)
56                 sizer.Add(boxsizer, (2,0), flag=wx.EXPAND)
57
58                 self.printTypeNormal.SetValue(True)
59                 self.printMaterialPLA.SetValue(True)
60
61         def setupSlice(self):
62                 put = profile.putProfileSetting
63                 get = profile.getProfileSetting
64
65                 put('layer_height', '0.2')
66                 put('wall_thickness', '0.8')
67                 put('solid_layer_thickness', '0.6')
68                 put('fill_density', '20')
69                 put('skirt_line_count', '1')
70                 put('skirt_gap', '6.0')
71                 put('print_speed', '50')
72                 put('print_temperature', '220')
73                 put('support', 'None')
74                 put('retraction_enable', 'False')
75                 put('retraction_min_travel', '5.0')
76                 put('retraction_speed', '40.0')
77                 put('retraction_amount', '4.5')
78                 put('retraction_extra', '0.0')
79                 put('travel_speed', '150')
80                 put('max_z_speed', '3.0')
81                 put('bottom_layer_speed', '25')
82                 put('cool_min_layer_time', '10')
83                 put('fan_enabled', 'True')
84                 put('fan_layer', '1')
85                 put('fan_speed', '100')
86                 put('extra_base_wall_thickness', '0.0')
87                 put('sequence', 'Loops > Perimeter > Infill')
88                 put('force_first_layer_sequence', 'True')
89                 put('infill_type', 'Line')
90                 put('solid_top', 'True')
91                 put('fill_overlap', '15')
92                 put('support_rate', '50')
93                 put('support_distance', '0.5')
94                 put('joris', 'False')
95                 put('cool_min_feedrate', '5')
96                 put('bridge_speed', '100')
97                 put('raft_margin', '5')
98                 put('raft_base_material_amount', '100')
99                 put('raft_interface_material_amount', '100')
100                 put('bottom_thickness', '0.0')
101
102                 if self.printSupport.GetValue():
103                         put('support', 'Exterior Only')
104
105                 nozzle_size = float(get('nozzle_size'))
106                 if self.printTypeNormal.GetValue():
107                         put('wall_thickness', nozzle_size * 2.0)
108                         put('layer_height', '0.2')
109                         put('fill_density', '20')
110                 elif self.printTypeLow.GetValue():
111                         put('wall_thickness', nozzle_size * 1.4)
112                         put('layer_height', '0.25')
113                         put('fill_density', '10')
114                         put('print_speed', '80')
115                         put('cool_min_layer_time', '3')
116                         put('bottom_layer_speed', '40')
117                 elif self.printTypeHigh.GetValue():
118                         put('wall_thickness', nozzle_size * 2.0)
119                         put('layer_height', '0.1')
120                         put('fill_density', '30')
121                         put('bottom_layer_speed', '15')
122                         put('bottom_thickness', '0.2')
123                 elif self.printTypeJoris.GetValue():
124                         put('wall_thickness', nozzle_size * 1.5)
125                         put('layer_height', '0.3')
126                         put('solid_layer_thickness', '0.9')
127                         put('fill_density', '0')
128                         put('joris', 'True')
129                         put('extra_base_wall_thickness', '15.0')
130                         put('sequence', 'Infill > Loops > Perimeter')
131                         put('force_first_layer_sequence', 'False')
132                         put('solid_top', 'False')
133                         put('support', 'None')
134                         put('cool_min_layer_time', '3')
135
136                 put('filament_diameter', self.printMaterialDiameter.GetValue())
137                 if self.printMaterialPLA.GetValue():
138                         put('filament_density', '1.00')
139                         put('enable_raft', 'False')
140                         put('skirt_line_count', '1')
141                 if self.printMaterialABS.GetValue():
142                         put('filament_density', '0.85')
143                         put('enable_raft', 'True')
144                         put('skirt_line_count', '0')
145                         put('fan_layer', '1')
146                         put('bottom_thickness', '0.0')
147                         put('print_temperature', '260')
148                 put('plugin_config', '')
149
150         def updateProfileToControls(self):
151                 pass