function Slicer_checkPlatformColor(&$array_cartridge = array(), &$custom_change = FALSE) { $cr = 0; $multi_part = FALSE; $array_platform = array(); $array_color = array(); Slicer_listModel($array_model); $array_platform = json_decode($array_model, TRUE); $custom_change = FALSE; if (is_null($array_platform)) { $cr = ERROR_EMPTY_PLATFORM; } else { $CI =& get_instance(); $CI->load->helper('printerstate'); $cr = ERROR_OK; // get the extruder which we need foreach ($array_platform as $model) { $colors = $model[SLICER_TITLE_COLOR]; foreach ($colors as $color) { $array_color[] = (int) $color + SLICER_OFFSET_VALUE_COLOR2EXTRUDER; } } // check if it's multipart model if (count($array_color) > 1) { $multi_part = TRUE; } $array_color = array_unique($array_color); foreach ($array_color as $number_color) { $abb_cartridge = PrinterState_cartridgeNumber2Abbreviate($number_color); if ($abb_cartridge == 'error') { $cr = ERROR_WRONG_PRM; break; } $array_cartridge[] = $abb_cartridge; // we do not check filament status when starting slicing 20140807 // if (PrinterState_getFilamentStatus($abb_cartridge)) { // continue; // } // else if ($abb_cartridge == 'l') { // $cr = ERROR_MISS_LEFT_FILA; // break; // } // else { // $cr = ERROR_MISS_RIGT_FILA; // break; // } } // check if we have done some custom changes to force local slicing or not if ($multi_part == TRUE) { foreach ($array_platform as $model) { if ($model[SLICER_PRM_XROT] != 0 || $model[SLICER_PRM_YROT] != 0 || $model[SLICER_PRM_SCALE] != 100) { $custom_change = TRUE; break; } } } } return $cr; }
public function platformmodel() { $cr = 0; $display = ''; $this->load->helper('slicer'); $cr = Slicer_listModel($display); if ($cr != ERROR_OK) { $this->_return_cr($cr); } else { $this->load->library('parser'); $this->output->set_status_header($cr, $display); $this->output->set_content_type(RETURN_CONTENT_TYPE_JSON); $this->parser->parse('plaintxt', array('display' => $display)); } return; }
function slice() { $ret_val = 0; $status_current = NULL; $list_display = array(); $template_data = array(); $current_stage = 'wait_slice'; $current_scale = 100; $current_xrot = 0; $current_yrot = 0; $current_zrot = 0; $current_scale_max = 100; $current_xsize = 0; $current_ysize = 0; $current_zsize = 0; $multi_part = FALSE; $heat_bed = $this->config->item('heat_bed'); // redirect the client when in slicing $this->load->helper('corestatus'); $ret_val = CoreStatus_checkInIdle($status_current); // check status in slicing if ($ret_val == FALSE || $status_current == CORESTATUS_VALUE_SLICE) { $this->output->set_header('Location: /sliceupload/slicestatus'); return; } $this->load->helper(array('zimapi', 'printerstate', 'slicer')); if ($this->input->get('callback') !== FALSE) { $current_stage = 'wait_print'; } else { // need preset list only in wait slice mode $list_preset = ZimAPI_getPresetListAsArray(); foreach ($list_preset as $preset) { //TODO add rollback function to get correct values here $list_display[] = array('name' => $preset[ZIMAPI_TITLE_PRESET_NAME], 'id' => $preset[ZIMAPI_TITLE_PRESET_ID], 'infill' => isset($preset[ZIMAPI_TITLE_PRESET_INFILL]) ? $preset[ZIMAPI_TITLE_PRESET_INFILL] : '30%', 'skirt' => isset($preset[ZIMAPI_TITLE_PRESET_SKIRT]) ? $preset[ZIMAPI_TITLE_PRESET_SKIRT] : 0, 'raft' => isset($preset[ZIMAPI_TITLE_PRESET_RAFT]) ? $preset[ZIMAPI_TITLE_PRESET_RAFT] : 0, 'support' => isset($preset[ZIMAPI_TITLE_PRESET_SUPPORT]) ? $preset[ZIMAPI_TITLE_PRESET_SUPPORT] : 1); } usort($list_display, 'ZimAPI_usortComparePreset'); } try { $tmp_string = NULL; $tmp_array = NULL; // $this->load->helper('slicer'); $ret_val = Slicer_listModel($tmp_string); $tmp_array = json_decode($tmp_string, TRUE); if ($ret_val == ERROR_OK && count($tmp_array)) { $current_scale = $tmp_array[0][SLICER_PRM_SCALE]; $current_xrot = $tmp_array[0][SLICER_PRM_XROT]; $current_yrot = $tmp_array[0][SLICER_PRM_YROT]; $current_zrot = $tmp_array[0][SLICER_PRM_ZROT]; $current_xsize = number_format($tmp_array[0][SLICER_TITLE_XSIZE], 1); $current_ysize = number_format($tmp_array[0][SLICER_TITLE_YSIZE], 1); $current_zsize = number_format($tmp_array[0][SLICER_TITLE_ZSIZE], 1); $current_scale_max = floor($tmp_array[0][SLICER_TITLE_MAXSCALE]); if (count($tmp_array[0][SLICER_TITLE_COLOR]) > 1) { $multi_part = TRUE; } } } catch (Exeception $e) { $this->load->helper('printerlog'); PrinterLog_logError('synchronize slicer model info error', __FILE__, __LINE__); } $this->load->library('parser'); $this->lang->load('sliceupload/slice', $this->config->item('language')); // parse the main body $template_data = array('home' => t('home'), 'back' => t('back'), 'slice_button' => t('slice_button'), 'goto_preset' => t('goto_preset'), 'value_rho' => ZIMAPI_VALUE_DEFAULT_RHO, 'value_delta' => ZIMAPI_VALUE_DEFAULT_DELTA, 'value_theta' => ZIMAPI_VALUE_DEFAULT_THETA, 'preset_list' => $list_display, 'current_stage' => $current_stage, 'goto_hint' => t('goto_hint'), 'wait_preview' => t('wait_preview'), 'wait_slice' => t('wait_slice'), 'wait_in_slice' => t('wait_in_slice'), 'near_button' => t('near_button'), 'far_button' => t('far_button'), 'color_default' => PRINTERSTATE_VALUE_DEFAULT_COLOR, 'preview_fail' => t('preview_fail'), 'setmodel_fail' => t('setmodel_fail'), 'scale_rotate_title' => t('scale_rotate_title'), 'scale_title' => t('scale_title'), 'rotate_title' => t('rotate_title'), 'select_hint' => t('select_hint'), 'rotate_x_title' => t('rotate_x_title'), 'rotate_y_title' => t('rotate_y_title'), 'rotate_z_title' => t('rotate_z_title'), 'set_model_button' => t('set_model_button'), 'reset_model_button' => t('reset_model_button'), 'preset_title' => t('preset_title'), 'slice_risk_confirm' => t('slice_risk_confirm'), 'model_key_smax' => SLICER_TITLE_MAXSCALE, 'model_key_xsize' => SLICER_TITLE_XSIZE, 'model_key_ysize' => SLICER_TITLE_YSIZE, 'model_key_zsize' => SLICER_TITLE_ZSIZE, 'model_scale' => $current_scale, 'model_xrot' => $current_xrot, 'model_yrot' => $current_yrot, 'model_zrot' => $current_zrot, 'model_xsize' => $current_xsize, 'model_ysize' => $current_ysize, 'model_zsize' => $current_zsize, 'model_smax' => $current_scale_max, 'multi_part' => $multi_part ? 'true' : 'false', 'enable_heatbed' => t('enable_heatbed'), 'heat_bed' => $heat_bed ? 'true' : 'false', 'checked_heatbed' => $heat_bed ? 'checked="checked"' : NULL); $this->_parseBaseTemplate(t('sliceupload_slice_pagetitle'), $this->parser->parse('sliceupload/slice', $template_data, TRUE), '<!-- client rendering part --> <script type="text/javascript" src="/assets/rendering/ivmatrix3d.js"></script> <script type="text/javascript" src="/assets/rendering/ivwindow3d.js"></script> <script type="text/javascript" src="/assets/rendering/ivspace3d.js"></script> <script type="text/javascript" src="/assets/rendering/ivmtl3d.js"></script> <script type="text/javascript" src="/assets/rendering/ivmesh3d.js"></script> <script type="text/javascript" src="/assets/rendering/ivnode3d.js"></script> <script type="text/javascript" src="/assets/rendering/ivextra.js"></script> <script type="text/javascript" src="/assets/rendering/stl.js"></script> <script type="text/javascript" src="/assets/rendering/zpviewer.js"></script>'); return; }