Skip to main content

cpapi

OpenMaya api 封装

目录

快速开始

如果你的Maya有pip那么

cd "C:\Program Files\Autodesk\Maya2022\bin"
mayapy -m pip install cpapi

如果没有

  1. 打开C:\Users\PC\Documents\maya文件夹
  2. 进入scripts文件夹,如果没有就创建它
  3. 下载完整的cpapi代码
  4. 解压并进入解压完成的文件夹
  5. 将src目录中的cpapi文件夹复制到scripts
  6. 打开maya2018,如果已经打开了就重启它
  7. 打开脚本编辑器并执行以下示例代码
from __future__ import unicode_literals, print_function
from cpapi.all import MItDependencyNodes, MGlobal

MGlobal.displayWarning("场景节点有: {}".format([i.thisNode() for i in MItDependencyNodes()]))

功能介绍

MayaApi数组的封装

本模块提供了对MayaApi数组的封装让其可以顺利的融入Python循环机制中

from __future__ import unicode_literals, print_function


def test_array():
    import cpapi.all as api
    print("test float array>> ", [i for i in api.MFloatArray(10, 0)])


test_array()
test float array>>  [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

迭代器的封装

不仅如此还提供了迭代器的封装

from __future__ import unicode_literals, print_function


def test_iter():
    import cpapi.all as api
    itdg = api.MItDependencyNodes()
    print("test itdg>> ", [itdg.thisNode() for _ in itdg])


test_iter()
test itdg>>  [<maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE990A4990> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE990A4B10> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE990A4B70> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9ABD8420> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9ABD8870> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9ABD8C60> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9ABD8060> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A4E7420> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE99D49450> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79D060> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79D600> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79D660> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79D6F0> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79D780> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79D810> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79D8A0> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79D8D0> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79D900> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79D930> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79D960> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79D990> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79D9C0> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79D9F0> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DA20> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DA50> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DA80> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DAB0> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DAE0> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DB10> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DB40> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DB70> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DBA0> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DBD0> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DC00> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DC30> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DC60> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DC90> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DCC0> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DCF0> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DD20> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DD50> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DD80> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DDB0> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DDE0> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DE10> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DE40> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DE70> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DEA0> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DED0> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DF00> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DF30> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DF60> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DF90> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A79DFC0> >, <maya.OpenMaya.MObject; proxy of <Swig Object of type 'MObject *' at 0x000001CE9A57D030> >]

迭代器模块

迭代器模块与MayaApi迭代器的封装无关,这个模块是一个提供不同迭代器的模块

from __future__ import unicode_literals, print_function


def test():
    import cpapi.iter as cpit
    print("test iter_node>> ", cpit.iter_node())
    print("test iter_dag_node>> ", cpit.iter_dag_node())
    print("test selected_node>> ", cpit.selected_node())
    print("test selected>> ", cpit.selected())


test()
test iter_node>>  <generator object <genexpr> at 0x000001CE9AFD2360>
test iter_dag_node>>  <generator object <genexpr> at 0x000001CE9A780678>
test selected_node>>  <generator object <genexpr> at 0x000001CE9AFD23A8>
test selected>>  <generator object <genexpr> at 0x000001CE9AFD23A8>

工具集模块

工具集模块就是字面意思,一堆工具函数

from __future__ import unicode_literals, print_function


def test():
    import cpapi.all as api
    import cpapi.utils as cputils
    print("test selected>> ", cputils.selected())
    o = api.MFnDependencyNode().create("joint", "joint1")
    print("test mobject_to_mdagpath>> ", cputils.mobject_to_mdagpath(o))
    print("test mobject_to_muuid>> ", cputils.mobject_to_muuid(o))
    p = cputils.mobject_to_mdagpath(o)

    print("test mdagpath_to_mobject>> ", cputils.mdagpath_to_mobject(p))
    print("test mdagpath_to_muuid>> ", cputils.mdagpath_to_muuid(p))
    uid = cputils.mdagpath_to_muuid(p)

    print("test muuid_to_mdagpath>> ", cputils.muuid_to_mdagpath(uid))
    print("test muuid_to_mobject>> ", cputils.muuid_to_mobject(uid))

    print("test name_to_mobject>> ", cputils.name_to_mobject("joint1"))
    print("test name_to_mdagpath>> ", cputils.name_to_mdagpath("joint1"))
    print("test name_to_components>> ", cputils.name_to_components("joint1"))
    print("test name_to_components_mobject>> ", cputils.name_to_components_mobject("joint1"))
    print("test name_to_muuid>> ", cputils.name_to_muuid("joint1"))

    print("test active_selectionlist>> ", cputils.active_selectionlist())
    print("test selected>> ", cputils.selected())


test()
test selected>>  []
test mobject_to_mdagpath>>  MDagPath("|joint1")
test mobject_to_muuid>>  <maya.OpenMaya.MUuid; proxy of <Swig Object of type 'MUuid *' at 0x0000023AF06941E0> >
test mdagpath_to_mobject>>  MObject(not null, type=kJoint)
test mdagpath_to_muuid>>  <maya.OpenMaya.MUuid; proxy of <Swig Object of type 'MUuid *' at 0x0000023AF0694210> >
test muuid_to_mdagpath>>  MDagPath("|joint1")
test muuid_to_mobject>>  MObject(not null, type=kJoint)
test name_to_mobject>>  MObject(not null, type=kJoint)
test name_to_mdagpath>>  MDagPath("|joint1")
test name_to_components>>  (MDagPath("|joint1"), MObject(null))
test name_to_components_mobject>>  MDagPath("|joint1")
test name_to_muuid>>  <maya.OpenMaya.MUuid; proxy of <Swig Object of type 'MUuid *' at 0x0000023AF0694150> >
test active_selectionlist>>  MSelectionList([])
test selected>>  []

版权说明

该项目签署了Apache-2.0 授权许可,详情请参阅 LICENSE

Release files for cpapi 1.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cpapi 1.0.4
File Size Uploaded
cpapi-1.0.4.tar.gz 26.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cpapi 1.0.4
File Interpreter ABI Platform
cpapi-1.0.4-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 63.2 kB

Release files / cpapi-1.0.4.tar.gz

Download URL cpapi-1.0.4.tar.gz
Size 26.2 kB
Tags Source
SHA-256 checksum
How to use checksums
8bea5030e1e066cc4f18326efaa07b8d5627c105ce44b469f6f7764c1953ec22
BLAKE2b-256 checksum
How to use checksums
46a7a8757bbaeefddc983bb00e60d5edd895bf82d5fbdead879291ef6f0f4a14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.6

Release files / cpapi-1.0.4-py2.py3-none-any.whl

Download URL cpapi-1.0.4-py2.py3-none-any.whl
Size 37.0 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
d281db292b9c1073692f4b6871a46fbaebccfd57b6647113b1192818d3c2b99c
BLAKE2b-256 checksum
How to use checksums
9348d38e81ca973e86e30647c3d70a9002054743e32a8e8b276f35ed7f346847
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.6

Release history Release notifications | RSS feed

This release

1.0.4 This release

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page