Chinaunix首页 | 论坛 | 博客
  • 博客访问: 915017
  • 博文数量: 380
  • 博客积分: 3495
  • 博客等级: 中校
  • 技术积分: 3996
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-02 09:35
文章分类

全部博文(380)

文章存档

2015年(2)

2014年(5)

2013年(9)

2012年(9)

2011年(67)

2010年(103)

2009年(182)

2008年(3)

我的朋友

分类:

2011-07-31 21:15:41

下面是我对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) |
给主人留下些什么吧!~~

zczczczc123张2018-10-16 09:12:31

你好,我有点疑问想咨询一下。现在知道了bpy_interface.c是最终地点,我想找到bpy_interface.c与blender.exe的接口在哪儿,那现在根据这个回推,bpy_interface.c与wm_init_exit.c的关系,最后如何去找到bpy_interface.c与blender.exe的关系接口在哪儿呢??