之所以把这个单独写个帖子,是因为对很多美术、技术美术来说,这个东西还很神秘,OLE全称是“对象链接与嵌入Object Linking Embedded”,是基于COM的,COM的全称是“组件对象模型Component Objiect Module”。名字之类的简单介绍一下,只是方便读者搜索资料。
可能接触MaxScript的对这个接触的会比较多,因为MaxScript有个createOLEObject,可以创建一个OLE对象,由此来调用Office、photoshop等软件来进行操作。相关内容可以看我这篇帖子 http://www.cnblogs.com/sitt/archive/2011/06/27/2091238.html
Maya中也可以用Python来使用有OLE接口的程序,不过Python的标准库里并没有相关的模块,如果要在Maya里使用,需要安装Python,版本根据Maya中使用的Python版本而定,并且到这里下载相应的pywin32模块安装 http://pywin32.sourceforge.net/ ,至于Maya是用的Python版本,可以查阅Maya文档的 using Maya --> General --> Python --> python in Maya : Version.此外还有些山寨的方式,例如查看Maya安装目录下的Bin下的python**.zip和python**.dll根据末尾的数字判断版本.也可以用python的platform模块,例如
import platform
print (platform.python_version())
为了Maya可以调用pywin32模块,需要将python安装目录(一般是c:\pythonxx)下的 “Lib\site-packages\”下面的pywub32.pth、pythoncom.pyc、pythoncom.pyo三个文件文件 以及win32com、win32两个文件夹复制到Maya目录下的"Python\Lib\site-packages\“目录下,当然也可以将Python的site-packages整个目录复制过来。然后就可以像下面这样使用ole接口来调用photoshop以及office等软件。
import maya.cmds as mayacmd
import win32com.client
photoshop = win32com.client.Dispatch("Photoshop.Application")
select_objects = mayacmd.ls(sl=True)
if len(select_objects) == 1 :
file_name = "C:\\outUV.png"
mayacmd.uvSnapshot(aa=True, n=file_name,xr=256,yr=256, r=255,g=255,b=255, o=True,ff='png')
photoshop.Load(file_name)