• Maya+VS编程入门初体验(HelloWorld)


    Maya2018 + VS2017 环境搭建见 博客

    1. 项目:

    VS 新建了一个 MEL Command类型的项目(MayaProject)

    2. HelloWorld代码

    #include<maya/MSimple.h>
    
    // Use helper macro to register a command with Maya.  It creates and
    // registers a command that does not support undo or redo.  The 
    // created class derives off of MPxCommand.
    //
    DeclareSimpleCommand( MayaProject, "", "2018");
    
    MStatus sayHello::doIt(const MArgList& args )
    {
    
        MStatus stat = MS::kSuccess;
    
        displayInfo("Hello World!");
    
        // Since this class is derived off of MPxCommand, you can use the
    
        // inherited methods to return values and set error messages
    
        //
    
        setResult( "sayHello command executed!/n" );
    
        return stat;
    
    }

    3.  运行,debug文件夹中出现了一个mll文件

    4. 把mll文件拷贝到C:MyProgramAutoDeskMaya2018inplug-ins目录下,然后重新打开maya

    菜单->窗口->设置/首选项->插件管理器

    MayaProject插件加载进来

    5. 在maya底部的MEL脚本编辑器中输入脚本,对插件进行测试

    6. 脚本编辑器显示 结果

     附一个创建球模型的代码:(我还没有运行出来)

    //
    // Copyright (C) 
    // 
    // File: MayaProjectCmd.cpp
    //
    // MEL Command: MayaProject
    //
    // Author: Maya Plug-in Wizard 2.0
    //
    
    // Includes everything needed to register a simple MEL command with Maya.
    // 
    #include <maya/MSimple.h>
    #include <maya/MGlobal.h>
    #include <maya/MDagPath.h>
    #include <maya/MSelectionList.h>
    #include <maya/MFnDagNode.h>
    #include <maya/MIOStream.h>
    #include <maya/MFnMesh.h>
    #include <maya/MFloatPointArray.h>
    #include <maya/MString.h>
    #include <maya/MItSelectionList.h>
    #include <maya/MItMeshVertex.h>
    #include <maya/MStringArray.h>
    
    
    // Use helper macro to register a command with Maya.  It creates and
    // registers a command that does not support undo or redo.  The 
    // created class derives off of MPxCommand.
    //
    DeclareSimpleCommand( MayaProject, "", "2018");
    
    MStatus MayaProject::doIt( const MArgList& args )
    //
    //    Description:
    //        implements the MEL MayaProject command.
    //
    //    Arguments:
    //        args - the argument list that was passes to the command from MEL
    //
    //    Return Value:
    //        MS::kSuccess - command succeeded
    //        MS::kFailure - command failed (returning this value will cause the 
    //                     MEL script that is being run to terminate unless the
    //                     error is caught using a "catch" statement.
    //
    {
        MStatus stat = MS::kSuccess;
        MSelectionList selection;
    
        MGlobal::getActiveSelectionList(selection);
        MDagPath dagPath, dagPath_1;
        MObject component, component_1;
        MItSelectionList iter(selection);
    
        selection.getDagPath(0, dagPath, component);
        MItMeshVertex meshIter(dagPath, component, &stat);
        MStringArray verIndexArray;
        if (stat == MS::kSuccess)
        {
            for (; !meshIter.isDone(); meshIter.next())
            {
                MPoint pt = meshIter.position(MSpace::kObject);
                MItMeshVertex meshIter_1(dagPath);
                for (; !meshIter_1.isDone(); meshIter_1.next())
                {
                    MPoint pt_1 = meshIter_1.position(MSpace::kObject);
                    if (abs(-pt.x - pt_1.x) < 0.01
                        && abs(pt.y - pt_1.y) < 0.01 
                        && abs(pt.z - pt_1.z) < 0.01)
                    {
                        verIndexArray.append(MString("") + meshIter_1.index());
                        break;
                    }
                }
            }
        }
    
        // Since this class is derived off of MPxCommand, you can use the 
        // inherited methods to return values and set error messages
        //
        setResult(verIndexArray );
    
        return stat;
    }

    参考:

    https://blog.csdn.net/xdhstc/article/details/40355155(球模型代码来源)

    https://blog.csdn.net/huadingjin/article/details/8083277

    https://blog.csdn.net/mincau/article/details/7925520

    https://baijiahao.baidu.com/s?id=1608682630689528579&wfr=spider&for=pc(github/WendyAndAndy/MayaDev)

  • 相关阅读:
    LightOJ 1203--Guarding Bananas(二维凸包+内角计算)
    断言assert()与调试帮助
    POJ 3528--Ultimate Weapon(三维凸包)
    POJ 2208--Pyramids(欧拉四面体体积计算)
    HDU 1411--校庆神秘建筑(欧拉四面体体积计算)
    HDU 1241 DFS
    HDU 2037(贪心)
    一次傻乎乎的错误QAQ
    封装Qt的SQLite接口类
    最小生成树(Kruskal算法)模板
  • 原文地址:https://www.cnblogs.com/farewell-farewell/p/10974006.html
Copyright © 2020-2023  润新知