⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gcodemodule.cc

📁 CNC 的开放码,EMC2 V2.2.8版
💻 CC
📖 第 1 页 / 共 2 页
字号:
    maybe_new_line();    if(interp_error) return;    if(metric) { xoffset /= 25.4; zoffset /= 25.4; }    PyObject *result = PyObject_CallMethod(callback, "tool_offset", "dd",            zoffset, xoffset);    if(result == NULL) interp_error ++;    Py_XDECREF(result);}void SET_FEED_REFERENCE(double reference) { }void SET_CUTTER_RADIUS_COMPENSATION(double radius) {}void START_CUTTER_RADIUS_COMPENSATION(int direction) {}void STOP_CUTTER_RADIUS_COMPENSATION(int direction) {}void START_SPEED_FEED_SYNCH() {}void START_SPEED_FEED_SYNCH(double sync, bool vel) {}void STOP_SPEED_FEED_SYNCH() {}void START_SPINDLE_COUNTERCLOCKWISE() {}void START_SPINDLE_CLOCKWISE() {}void SET_SPINDLE_MODE(double) {}void STOP_SPINDLE_TURNING() {}void SET_SPINDLE_SPEED(double rpm) {}void ORIENT_SPINDLE(double d, int i) {}void PROGRAM_STOP() {}void PROGRAM_END() {}void FINISH() {}void PALLET_SHUTTLE() {}void CHANGE_TOOL(int tool) {}void SELECT_TOOL(int tool) {}void OPTIONAL_PROGRAM_STOP() {}bool GET_BLOCK_DELETE() { return 0; }void DISABLE_FEED_OVERRIDE() {}void DISABLE_FEED_HOLD() {}void ENABLE_FEED_HOLD() {}void DISABLE_SPEED_OVERRIDE() {}void ENABLE_FEED_OVERRIDE() {}void ENABLE_SPEED_OVERRIDE() {}void MIST_OFF() {}void FLOOD_OFF() {}void MIST_ON() {}void FLOOD_ON() {}void CLEAR_AUX_OUTPUT_BIT(int bit) {}void SET_AUX_OUTPUT_BIT(int bit) {}void SET_AUX_OUTPUT_VALUE(int index, double value) {}void CLEAR_MOTION_OUTPUT_BIT(int bit) {}void SET_MOTION_OUTPUT_BIT(int bit) {}void SET_MOTION_OUTPUT_VALUE(int index, double value) {}void TURN_PROBE_ON() {}void TURN_PROBE_OFF() {}void STRAIGHT_PROBE(double x, double y, double z,                     double a, double b, double c,                    double u, double v, double w) {    _pos_x=x; _pos_y=y; _pos_z=z;     _pos_a=a; _pos_b=b; _pos_c=c;    _pos_u=u; _pos_v=v; _pos_w=w;    if(metric) { x /= 25.4; y /= 25.4; z /= 25.4; u /= 25.4; v /= 25.4; w /= 25.4; }    maybe_new_line();    if(interp_error) return;    PyObject *result =        PyObject_CallMethod(callback, "straight_probe", "fffffffff",                            x, y, z, a, b, c, u, v, w);    if(result == NULL) interp_error ++;    Py_XDECREF(result);}void RIGID_TAP(double x, double y, double z) {    if(metric) { x /= 25.4; y /= 25.4; z /= 25.4; }    maybe_new_line();    if(interp_error) return;    PyObject *result =        PyObject_CallMethod(callback, "rigid_tap", "fff",            x, y, z);    if(result == NULL) interp_error ++;    Py_XDECREF(result);}double GET_EXTERNAL_MOTION_CONTROL_TOLERANCE() { return 0.1; }double GET_EXTERNAL_PROBE_POSITION_X() { return _pos_x; }double GET_EXTERNAL_PROBE_POSITION_Y() { return _pos_y; }double GET_EXTERNAL_PROBE_POSITION_Z() { return _pos_z; }double GET_EXTERNAL_PROBE_POSITION_A() { return _pos_a; }double GET_EXTERNAL_PROBE_POSITION_B() { return _pos_b; }double GET_EXTERNAL_PROBE_POSITION_C() { return _pos_c; }double GET_EXTERNAL_PROBE_POSITION_U() { return _pos_u; }double GET_EXTERNAL_PROBE_POSITION_V() { return _pos_v; }double GET_EXTERNAL_PROBE_POSITION_W() { return _pos_w; }double GET_EXTERNAL_PROBE_VALUE() { return 0.0; }double GET_EXTERNAL_POSITION_X() { return _pos_x; }double GET_EXTERNAL_POSITION_Y() { return _pos_y; }double GET_EXTERNAL_POSITION_Z() { return _pos_z; }double GET_EXTERNAL_POSITION_A() { return _pos_a; }double GET_EXTERNAL_POSITION_B() { return _pos_b; }double GET_EXTERNAL_POSITION_C() { return _pos_c; }double GET_EXTERNAL_POSITION_U() { return _pos_u; }double GET_EXTERNAL_POSITION_V() { return _pos_v; }double GET_EXTERNAL_POSITION_W() { return _pos_w; }void INIT_CANON() {}void GET_EXTERNAL_PARAMETER_FILE_NAME(char *name, int max_size) {    PyObject *result = PyObject_GetAttrString(callback, "parameter_file");    if(!result) { name[0] = 0; return; }    char *s = PyString_AsString(result);        if(!s) { name[0] = 0; return; }    memset(name, 0, max_size);    strncpy(name, s, max_size - 1);}int GET_EXTERNAL_LENGTH_UNIT_TYPE() { return CANON_UNITS_INCHES; }CANON_TOOL_TABLE GET_EXTERNAL_TOOL_TABLE(int tool) {    CANON_TOOL_TABLE t = {0,0,0,0,0,0,0};    if(interp_error) return t;    PyObject *result =        PyObject_CallMethod(callback, "get_tool", "i", tool);    if(result == NULL ||        !PyArg_ParseTuple(result, "idddddi", &t.id, &t.zoffset, &t.xoffset,                           &t.diameter, &t.frontangle, &t.backangle,                           &t.orientation))            interp_error ++;    Py_XDECREF(result);    return t;}int GET_EXTERNAL_DIGITAL_INPUT(int index) { return 1; }double GET_EXTERNAL_ANALOG_INPUT(int index) { return 1.0; }void WAIT(int index, int input_type, int wait_type, int timeout) { }void user_defined_function(int num, double arg1, double arg2) {    if(interp_error) return;    maybe_new_line();    PyObject *result =        PyObject_CallMethod(callback, "user_defined_function",                            "idd", num, arg1, arg2);    if(result == NULL) interp_error++;    Py_XDECREF(result);}void SET_FEED_REFERENCE(int ref) {}int GET_EXTERNAL_QUEUE_EMPTY() { return true; }CANON_DIRECTION GET_EXTERNAL_SPINDLE() { return 0; }int GET_EXTERNAL_TOOL_SLOT() { return 0; }int GET_EXTERNAL_SELECTED_TOOL_SLOT() { return 0; }double GET_EXTERNAL_FEED_RATE() { return 0; }double GET_EXTERNAL_TRAVERSE_RATE() { return 0; }int GET_EXTERNAL_FLOOD() { return 0; }int GET_EXTERNAL_MIST() { return 0; }CANON_PLANE GET_EXTERNAL_PLANE() { return 1; }double GET_EXTERNAL_SPEED() { return 0; }int GET_EXTERNAL_TOOL_MAX() { return CANON_TOOL_MAX; }void DISABLE_ADAPTIVE_FEED() {} void ENABLE_ADAPTIVE_FEED() {} int GET_EXTERNAL_FEED_OVERRIDE_ENABLE() {return 1;}int GET_EXTERNAL_SPINDLE_OVERRIDE_ENABLE() {return 1;}int GET_EXTERNAL_ADAPTIVE_FEED_ENABLE() {return 0;}int GET_EXTERNAL_FEED_HOLD_ENABLE() {return 1;}int GET_EXTERNAL_AXIS_MASK() {    if(interp_error) return 7;    PyObject *result =        PyObject_CallMethod(callback, "get_axis_mask", "");    if(!result) { interp_error ++; return 7 /* XYZABC */; }    if(!PyInt_Check(result)) { interp_error ++; return 7 /* XYZABC */; }    int mask = PyInt_AsLong(result);    Py_DECREF(result);    return mask;}double GET_EXTERNAL_TOOL_LENGTH_XOFFSET() {    return tool_xoffset;}double GET_EXTERNAL_TOOL_LENGTH_ZOFFSET() {    return tool_zoffset;}bool PyFloat_CheckAndError(const char *func, PyObject *p)  {    if(PyFloat_Check(p)) return true;    PyErr_Format(PyExc_TypeError,            "%s: Expected double, got %s", func, p->ob_type->tp_name);    return false;}double GET_EXTERNAL_ANGLE_UNITS() {    PyObject *result =        PyObject_CallMethod(callback, "get_external_angular_units", "");    if(result == NULL) interp_error++;    double dresult = 1.0;    if(!result || !PyFloat_CheckAndError("get_external_angle_units", result)) {        interp_error++;    } else {        dresult = PyFloat_AsDouble(result);    }    Py_XDECREF(result);    return dresult;}double GET_EXTERNAL_LENGTH_UNITS() {    PyObject *result =        PyObject_CallMethod(callback, "get_external_length_units", "");    if(result == NULL) interp_error++;    double dresult = 0.03937007874016;    if(!result || !PyFloat_CheckAndError("get_external_length_units", result)) {        interp_error++;    } else {        dresult = PyFloat_AsDouble(result);    }    Py_XDECREF(result);    return dresult;}bool check_abort() {    PyObject *result =        PyObject_CallMethod(callback, "check_abort", "");    if(!result) return 1;    if(PyObject_IsTrue(result)) {        Py_DECREF(result);        PyErr_Format(PyExc_KeyboardInterrupt, "Load aborted");        return 1;    }    Py_DECREF(result);    return 0;}USER_DEFINED_FUNCTION_TYPE USER_DEFINED_FUNCTION[USER_DEFINED_FUNCTION_NUM];CANON_MOTION_MODE motion_mode;void SET_MOTION_CONTROL_MODE(CANON_MOTION_MODE mode, double tolerance) { motion_mode = mode; }void SET_MOTION_CONTROL_MODE(double tolerance) { }void SET_MOTION_CONTROL_MODE(CANON_MOTION_MODE mode) { motion_mode = mode; }CANON_MOTION_MODE GET_EXTERNAL_MOTION_CONTROL_MODE() { return motion_mode; }#define RESULT_OK (result == INTERP_OK || result == INTERP_EXECUTE_FINISH)PyObject *parse_file(PyObject *self, PyObject *args) {    char *f;    char *unitcode=0, *initcode=0;    int error_line_offset = 0;    struct timeval t0, t1;    int wait = 1;    if(!PyArg_ParseTuple(args, "sO|ss", &f, &callback, &unitcode, &initcode))        return NULL;    for(int i=0; i<USER_DEFINED_FUNCTION_NUM; i++)         USER_DEFINED_FUNCTION[i] = user_defined_function;    gettimeofday(&t0, NULL);    metric=false;    interp_error = 0;    last_sequence_number = -1;    _pos_x = _pos_y = _pos_z = _pos_a = _pos_b = _pos_c = 0;    _pos_u = _pos_v = _pos_w = 0;    interp_init();    interp_open(f);    maybe_new_line();    int result = INTERP_OK;    if(unitcode) {        result = interp_read(unitcode);        if(!RESULT_OK) goto out_error;        result = interp_execute();    }    if(initcode && RESULT_OK) {        result = interp_read(initcode);        if(!RESULT_OK) goto out_error;        result = interp_execute();    }    while(!interp_error && RESULT_OK) {        error_line_offset = 1;        result = interp_read();        gettimeofday(&t1, NULL);        if(t1.tv_sec > t0.tv_sec + wait) {            if(check_abort()) return NULL;            t0 = t1;        }        if(!RESULT_OK) break;        error_line_offset = 0;        result = interp_execute();    }out_error:    interp_close();    if(interp_error) {        if(!PyErr_Occurred()) {            PyErr_Format(PyExc_RuntimeError,                    "interp_error > 0 but no Python exception set");        }        return NULL;    }    PyErr_Clear();    maybe_new_line();    if(PyErr_Occurred()) { interp_error = 1; goto out_error; }    PyObject *retval = PyTuple_New(2);    PyTuple_SetItem(retval, 0, PyInt_FromLong(result));    PyTuple_SetItem(retval, 1, PyInt_FromLong(last_sequence_number + error_line_offset));    return retval;}static int maxerror = -1;static int find_maxerror(void) {    int i=0;    for(;;i++) {        if(!_rs274ngc_errors[i] || !strcmp(_rs274ngc_errors[i], "The End"))            return i;    }}static char savedError[LINELEN+1];static PyObject *rs274_strerror(PyObject *s, PyObject *o) {    int err;    if(!PyArg_ParseTuple(o, "i", &err)) return NULL;    if(err < 0 || err >= maxerror) {        return PyString_FromString("Error number out of range");    }    interp_new.error_text(err, savedError, LINELEN);    return PyString_FromString(savedError);}PyMethodDef gcode_methods[] = {    {"parse", (PyCFunction)parse_file, METH_VARARGS, "Parse a G-Code file"},    {"strerror", (PyCFunction)rs274_strerror, METH_VARARGS, "Convert a numeric error to a string"},    {NULL}};PyMODINIT_FUNCinitgcode(void) {    PyObject *m = Py_InitModule3("gcode", gcode_methods,                "Interface to EMC rs274ngc interpreter");    PyType_Ready(&LineCodeType);    PyModule_AddObject(m, "linecode", (PyObject*)&LineCodeType);    maxerror = find_maxerror();    PyObject_SetAttrString(m, "MAX_ERROR", PyInt_FromLong(maxerror));    PyObject_SetAttrString(m, "MIN_ERROR",            PyInt_FromLong(INTERP_MIN_ERROR));}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -