```c++
#include <maya/MFnPlugin.h>
#include <maya/MFnMesh.h>
#include <maya/MSelectionList.h>
#include <maya/MGlobal.h>
MStatus printSelectedMeshes()
{
MStatus status;
// 获取当前选中的物体
MSelectionList selection;
MGlobal::getActiveSelectionList(selection);
// 遍历选中物体并打印信息
for (unsigned int i = 0; i < selection.length(); i++)
{
MObject obj;
selection.getDependNode(i, obj);
MFnMesh mesh(obj, &status);
if (status)
{
MString name = mesh.name();
MGlobal::displayInfo(name);
}
}
return MS::kSuccess;
}
MStatus initializePlugin(MObject obj)
{
MStatus status;
MFnPlugin plugin(obj, "YourName", "1.0", "Any", &status);
if (status == MS::kSuccess)
{
status = plugin.registerCommand("printSelectedMeshes", printSelectedMeshes);
CHECK_MSTATUS_AND_RETURN_IT(status);
}
return status;
}
MStatus uninitializePlugin(MObject obj)
{
MStatus status;
MFnPlugin plugin(obj);
status = plugin.deregisterCommand("printSelectedMeshes");
CHECK_MSTATUS_AND_RETURN_IT(status);
return status;
}
```
这是什么东西的插件程序,你看下对应的插件的编写文档,或者贴出你的错误信息给我看看。
status = plugin.registerCommand("printSelectedMeshes", printSelectedMeshes::creator);
问题可能出在这里,注册命令时需要提供一个命令的函数指针,而不是直接提供函数名
不知道你这个问题是否已经解决, 如果还没有解决的话:这段C++代码大致上没有明显的错误,但还是有一些需要注意的地方。
#include
部分引入的是Maya的头文件,所以确保你已经正确安装了Maya并且已经配置好了开发环境。printSelectedMeshes
函数是用来打印所选物体的信息的,但是这个函数并没有直接被Maya调用的地方。可能是在其他地方调用了这个函数,或者是在插件的初始化过程中调用。initializePlugin
函数中,plugin.registerCommand
用来注册一个名为printSelectedMeshes
的命令。这样在Maya中就可以通过命令行的方式来调用该函数了。需要确保函数名唯一且未被其他已注册的插件使用。uninitializePlugin
函数中,plugin.deregisterCommand
用来注销之前注册的命令。这是为了确保插件被正确卸载时不会出现内存泄漏。status
被多次使用,但是没有进行错误处理。建议在每一步操作时都进行错误检查,可以通过MStatus
对象的函数MStatus::error()
或者MStatus::statusCode()
来判断是否发生错误并作出相应的处理。请注意,我只是根据提供的代码进行分析,并且对Maya插件编程不是很熟悉。如果有更深入的问题需要解答,请参考Maya的官方文档或者请教其他专业人士。
已解决,谢谢大佬