Example #1
0
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;
}
Example #2
0
 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;
 }
Example #3
0
    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;
    }