下面是我对blender中如何调用python脚本文件或是python语句的跟踪。
首先是按下面的路径,初始化python库
main() creator.c
WM_init() wm_init_exit.c <--没弄明白,为什么要在windows manager中调用,虽然说注释说一个字符串变量是在windows manager初始化后才有值的, 不过在WM_init()调用后再调用不是一样吗?
BPY_python_start() bpy_interface.c
Py_Initialize() byp_interface.c
下面是脚本或是在文本编辑器中正在编辑的python语句的执行路径。
首先是用下面的类似语句, 注册一个菜单到UI中。
WM_operatortype_append(TEXT_OT_run_script);
下面就是一个菜单或者说operator注册时需要初始化的内容。
SCRIPT_OT_python_file_run() script_edit.c TEXT_OT_run_script() text_ops.c
/* identifiers */
ot->name= "Run python file";
ot->description= "Run Python file";
ot->idname= "SCRIPT_OT_python_file_run";
ot->flag = OPTYPE_UNDO;
/* api callbacks */
ot->exec= run_pyfile_exec;
ot->poll= ED_operator_areaactive;
如果选择相应的菜单后,会调用下面的函数,
run_pyfile_exec() script_edit.c or run_script() text_ops.c
BPY_filepath_exec() byp_interface.c or BPY_text_exec() byp_interface.c
python_script_exec() byp_interface.c <---在这里, 会真正的执行相应的脚本或是语句。
下面是一个python的退出后清理内存的调用,没有仔细看。
BPY_python_end() byp_interface.c
Py_Finalize() byp_interface.c
从上面的基本调用关系可以看出, 最终的处理都指向下面的文件。
byp_interface.c
也就是说。bpy_interface.c文件才是我们的python调用的最终处理地点。
这个文件也的确是我们要分析python调用的起点文件。
阅读(2579) | 评论(1) | 转发(0) |