测试一个对象是否依赖于另一个对象

绿细胞

有没有一种方法可以检查对象是否通过育儿,约束或与另一个对象的连接而相互依赖?我想在为对象添加父对象之前进行此检查,以查看它是否会导致依赖循环。

我记得3DsMax有一个命令可以准确地做到这一点。我检查了OpenMaya但找不到任何东西。cmds.cycleCheck,但这仅在当前有一个周期时才有效,这对我来说太晚了。

棘手的是,这两个对象可能位于场景层次结构中的任何位置,因此它们可能具有或不具有直接的育儿关系。


编辑

检查层次结构是否会引起任何问题相对容易:

children = cmds.listRelatives(obj1, ad = True, f = True)
if obj2 in children:
    print "Can't parent to its own children!"

但是,检查约束或连接是否是另一回事。

绿细胞

这不是最优雅的方法,但是到目前为止,这似乎是一种行之有效的快捷方法。想法是,如果发生周期,则只需撤消该操作并停止脚本的其余部分即可。使用钻机进行测试,连接的复杂程度无关紧要,它都能捕获到。

# Class to use to undo operations
class UndoStack():
    def __init__(self, inputName = ''):
        self.name = inputName

    def __enter__(self):
        cmds.undoInfo(openChunk = True, chunkName = self.name, length = 300)

    def __exit__(self, type, value, traceback):
        cmds.undoInfo(closeChunk = True)

# Create a sphere and a box
mySphere = cmds.polySphere()[0]
myBox = cmds.polyCube()[0]

# Parent box to the sphere
myBox = cmds.parent(myBox, mySphere)[0]

# Set constraint from sphere to box (will cause cycle)
with UndoStack("Parent box"):
    cmds.parentConstraint(myBox, mySphere)

# If there's a cycle, undo it
hasCycle = cmds.cycleCheck([mySphere, myBox])
if hasCycle:
    cmds.undo()
    cmds.warning("Can't do this operation, a dependency cycle has occurred!")

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

构造对象,其属性之一依赖于另一个。在C ++中

来自分类Dev

如何测试一个对象是否是另一个对象

来自分类Dev

使用依赖于另一个属性的属性初始化对象

来自分类Dev

PHPUnit测试一个依赖于另一个方法的方法

来自分类Dev

如何创建一个依赖于另一个变量的任意先前值的虚拟对象?

来自分类Dev

我可以使一个对象属性类型依赖于另一个属性类型吗?

来自分类Dev

测试一个对象是否是另一个实例类型的子类

来自分类Dev

我如何测试某个特定对象是否完全在另一个对象内?

来自分类Dev

对象是否面对另一个

来自分类Dev

测试依赖于另一个机架服务的机架服务

来自分类Dev

Dagger:为什么 dagger 需要一个不依赖于另一个对象的对象的 @inject 构造函数

来自分类Dev

如何知道一个对象是否包含另一个对象

来自分类Dev

如何检查一个对象是否包含另一个对象,例如

来自分类Dev

如何编写一个依赖于另一个插件的任务的插件?

来自分类Dev

如何使一个选择的选项依赖于另一个?

来自分类Dev

创建一个依赖于另一个Pod的Pod

来自分类Dev

在cmake中,如何使一个目标依赖于另一个目标?

来自分类Dev

使一个任务依赖于另一个任务

来自分类Dev

如何指定一个项目依赖于另一个项目?

来自分类Dev

一个CSS类依赖于另一个

来自分类Dev

在cmake中,如何使一个目标依赖于另一个目标?

来自分类Dev

Django:一个modelChoiceField 依赖于另一个modelChoiceField

来自分类Dev

如何判断一个COM对象是否已从其基础RCW中分离出来而不依赖于异常?

来自分类Dev

BizTalk地图的单元测试:如何测试依赖于另一个地图的转换的地图?

来自分类Dev

如何向后移植依赖于仅存在于测试中的另一个包的包?

来自分类Dev

猫鼬-插入两个集合:一个集合依赖于另一个集合

来自分类Dev

两个异步任务-一个依赖于python中的另一个

来自分类Dev

当一个依赖于另一个的内容时渲染2个元素

来自分类Dev

添加额外的字段以查找对象是否与另一个对象相关

Related 相关文章

  1. 1

    构造对象,其属性之一依赖于另一个。在C ++中

  2. 2

    如何测试一个对象是否是另一个对象

  3. 3

    使用依赖于另一个属性的属性初始化对象

  4. 4

    PHPUnit测试一个依赖于另一个方法的方法

  5. 5

    如何创建一个依赖于另一个变量的任意先前值的虚拟对象?

  6. 6

    我可以使一个对象属性类型依赖于另一个属性类型吗?

  7. 7

    测试一个对象是否是另一个实例类型的子类

  8. 8

    我如何测试某个特定对象是否完全在另一个对象内?

  9. 9

    对象是否面对另一个

  10. 10

    测试依赖于另一个机架服务的机架服务

  11. 11

    Dagger:为什么 dagger 需要一个不依赖于另一个对象的对象的 @inject 构造函数

  12. 12

    如何知道一个对象是否包含另一个对象

  13. 13

    如何检查一个对象是否包含另一个对象,例如

  14. 14

    如何编写一个依赖于另一个插件的任务的插件?

  15. 15

    如何使一个选择的选项依赖于另一个?

  16. 16

    创建一个依赖于另一个Pod的Pod

  17. 17

    在cmake中,如何使一个目标依赖于另一个目标?

  18. 18

    使一个任务依赖于另一个任务

  19. 19

    如何指定一个项目依赖于另一个项目?

  20. 20

    一个CSS类依赖于另一个

  21. 21

    在cmake中,如何使一个目标依赖于另一个目标?

  22. 22

    Django:一个modelChoiceField 依赖于另一个modelChoiceField

  23. 23

    如何判断一个COM对象是否已从其基础RCW中分离出来而不依赖于异常?

  24. 24

    BizTalk地图的单元测试:如何测试依赖于另一个地图的转换的地图?

  25. 25

    如何向后移植依赖于仅存在于测试中的另一个包的包?

  26. 26

    猫鼬-插入两个集合:一个集合依赖于另一个集合

  27. 27

    两个异步任务-一个依赖于python中的另一个

  28. 28

    当一个依赖于另一个的内容时渲染2个元素

  29. 29

    添加额外的字段以查找对象是否与另一个对象相关

热门标签

归档