BlenderCN论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2340|回复: 2

blender中的python调用路线

[复制链接]
发表于 2011-7-31 21:30:02 | 显示全部楼层 |阅读模式
下面是我对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调用的起点文件。
发表于 2011-8-3 10:34:16 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2011-8-13 10:25:50 | 显示全部楼层
ot->是什么意思?这个看不懂,谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Blender最新中文教学视频|Blender头条|小黑屋|手机版|Archiver|Blender中国 ( 蜀ICP备17002929号 )360网站安全检测平台

GMT+8, 2019-12-8 21:20 , Processed in 0.015543 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表