`
schi
  • 浏览: 201333 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

API中的选择操作

阅读更多
  我们已经知道如何使用API获取当前所选物体,但单是获取当前所选物体有时并不能满足我们的操作需求,可能我们还要对其进行替换选择、添加、删除等等的操作,下面我们就来看看如何在API中执行这些选择操作。

  在场景中创建两个Cube,使用默认名称"pCube1","pCube2"就行,默认是选择"pCube2"的,我们要将其替换为"pCube1",执行下面的代码
import maya.OpenMaya as om

# 将选择替换成"pCube1"
om.MGlobal.selectByName('pCube1',om.MGlobal.kReplaceList)

  MGlobal是静态类提供常用的API全局方法,它在OpenMaya.py中定义,所以我们第一步就是导入OpenMaya模块
import maya.OpenMaya as om

  selectByName就是我们要使用的方法,它接受两个参数,第一个是物体名称(MString);第二个是列表更改参数(MGlobal.ListAdjustment),默认是MGlobal.kAddToList,它决定了当前的选择列表的修改,有如下几个参数
  • kReplaceList:将所给的物体替换成当前的选择列表
  • kXORWithList:如果所给的物体已经存在当前的选择列表中就把它从列表中移除,如果不存在就把它加进来
  • kAddToList:将所给的物体加入当前的选择列表中
  • kRemoveFromList:将所给的物体从当前的选择列表中移除

  所以我们的代码是
om.MGlobal.selectByName('pCube1',om.MGlobal.kReplaceList)

  将"pCube2"加入选择
om.MGlobal.selectByName('pCube2',om.MGlobal.kAddToList)

  或使用kXORWithList参数,因为"pCube2"不存在当前的选择列表中
om.MGlobal.selectByName('pCube2',om.MGlobal. kXORWithList)

  要取消物体的选择可以使用上面的kRemoveFromList参数,也可以使用unselectByName方法,如
om.MGlobal.unselectByName('pCube1')

  getActiveSelectionList的另一个例子
# 获取当前所选物体
selected = om.MSelectionList()
om.MGlobal.getActiveSelectionList(selected)

# 对它们进行迭代
for i in range(selected.length()):
    obj = om.MObject()
    
    # 返回第i个被选择的DG节点
    selected.getDependNode(i,obj)
    
    # 给被选择的物体附加方法集
    fn = om.MFnDependencyNode(obj)
    
    # 在脚本编辑器中显示物体的名称
    print fn.name()

  如果要设置当前的选择列表,就要使用setActiveSelectionList方法了,下面的代码会选择场景中的所有多边形的shape
# 要选择的类型,mesh是多边形
type = om.MFn.kMesh
# 创建选择列表
selected = om.MSelectionList()
# 创建迭代器
it = om.MItDependencyNodes(type)
while not it.isDone():
    selected.add(it.thisNode())
    it.next()
    
# 设置selected为当前的选择列表
om.MGlobal.setActiveSelectionList(selected)
0
0
分享到:
评论

相关推荐

    JAVA_API1.6文档(中文)

    定义了用于多路复用的、非阻塞 I/O 操作的选择器。 java.nio.channels.spi 用于 java.nio.channels 包的服务提供者类。 java.nio.charset 定义用来在字节和 Unicode 字符之间转换的 charset、解码器和编码器。 ...

    javaEE中文api.J2EE中文API

    会话信息的范围仅限于当前 Web 应用程序 ServletContext 因此存储在一个上下文中的信息在另一个上下文中不是直接可见的 ">不用担心英文j2eeapi看不懂了 提供一种方式 跨多个页面请求或对 Web 站点的多次访问标识用户...

    Java 1.6 API 中文 New

    定义了用于多路复用的、非阻塞 I/O 操作的选择器。 java.nio.channels.spi 用于 java.nio.channels 包的服务提供者类。 java.nio.charset 定义用来在字节和 Unicode 字符之间转换的 charset、解码器和编码器。 java....

    JavaAPI1.6中文chm文档 part1

    定义了用于多路复用的、非阻塞 I/O 操作的选择器。 java.nio.channels.spi 用于 java.nio.channels 包的服务提供者类。 java.nio.charset 定义用来在字节和 Unicode 字符之间转换的 charset、解码器和编码器。 ...

    JQuery_1.5API中文参考手册

    具有高效灵活的CSS选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。jQuery兼容各种主流浏览器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等。 JQuery_1.5API中文参考手册

    JavaAPI中文chm文档 part2

    定义了用于多路复用的、非阻塞 I/O 操作的选择器。 java.nio.channels.spi 用于 java.nio.channels 包的服务提供者类。 java.nio.charset 定义用来在字节和 Unicode 字符之间转换的 charset、解码器和编码器。 ...

    Phantomjs API 中文版

    它不仅是个隐形的浏览器,提供了诸如CSS选择器、支持Web标准、DOM操作、JSON、HTML5、Canvas、SVG等,同时也提供了处理文件I/O的操作,从而使你可以向操作系统读写文件等。PhantomJS的用处可谓非常广泛,诸如网络...

    jQuery EasyUI 1.3.6 离线简体中文API文档

    datagrid:添加“ctrlSelect”属性,在启用多行选择的时候允许使用Ctrl键+鼠标点击的方式进行多选操作; slider:添加“converter”属性,该属性允许用户决定如何将一个值转换为进度条位置或进度条位置值; ...

    VC中应用Windows API函数编写的文件操作小程序

    应用Windows API函数编写,实现文件的选择,打开和超链接形式的显示,并写入新的文件。一共有两种写入和实现的方式。

    VB编程资源大全(源码 API)

    这个程序演示如何建立画刷句柄以及将它选择到一个图形设备句柄中(3KB) 10,cleardoc.ZIP 清除"文档"菜单中的快捷方式和加入快捷方式(2KB) 11,BMenu.ZIP 建立位图菜单(3KB) 12,Format.ZIP 磁盘格式化演示程序(2KB...

    精通WindowsAPI 函数 接口 编程实例

    6.4.1 PS API与Tool help API 176 6.4.2 遍历系统中的进程 178 6.4.3 列举进程的模块、线程 182 6.4.4 进程的堆使用、内存占用、虚拟内存大小,页面错误情况 184 6.5 动态链接库 185 6.5.1 加载、释放DLL...

    java api最新7.0

    定义了用于多路复用的、非阻塞 I/O 操作的选择器。 java.nio.channels.spi 用于 java.nio.channels 包的服务提供者类。 java.nio.charset 定义用来在字节和 Unicode 字符之间转换的 charset、解码器和编码器。 java....

    webdriver API中文版

    webdriver API中文版 webdriver API中文版 2 1.1 下载selenium2.0的lib包 2 1.2 用webdriver打开一个浏览器 2 1.3 打开测试页面 3 1.4 GettingStarted 3 ...第6章 在selenium2.0中使用selenium1.0的API 22

    精通Windows.API-函数、接口、编程实例.pdf

    执行demo中的示例方式 在编译环境下进入demo目录,执行nmake命令在bin目录下生成可执行文件 注:demo无注释,对应书本中部分示例。 目录 第1章 Windows应用程序开发入门 1 1.1 第一个实例程序 1 1.1.1 start....

    Hibernate中文API

    所以选择哪种方式完全取决于你,你可以使你的选择与你的应用程序设计相吻合。 所有的持久化类(persistent classes)都要求有无参的构造器,因为Hibernate必须使用Java反射机制来为你创建对象。构造器...

    PI数据库API开发文档

    PI 实时数据库API开发文档 PI(Plant Information System)是由美国OSI Software公司开发的一套基于Client/Server结构的商品化软件应用平台,是过程工业全厂信息集成的必然选择。作为工厂底层控制网络与上层管理...

    java jdk-api-1.6 中文 chmd

    定义了用于多路复用的、非阻塞 I/O 操作的选择器。 java.nio.channels.spi 用于 java.nio.channels 包的服务提供者类。 java.nio.charset 定义用来在字节和 Unicode 字符之间转换的 charset、解码器和编码器。 ...

    VB 超强的API浏览器 (源代码)

    在声明C#结构体时如果结果体中有数值数组类型, 结构体中的这个成员会被声明成不安全代码, 若要正确编译代码 ,请在单击VS.net中“项目”菜单“属性”菜单项, 在出来的选项卡上选择“生成”, 选中那个选项卡中的...

    利用API函数实现串口通信

    利用API函数实现了串口通信功能,发送和接收可选择字符格式,含有周期性发送功能,有兴趣可以帮忙优化一下

Global site tag (gtag.js) - Google Analytics