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, "", ""); 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:\MyProgram\AutoDesk\Maya2018\bin\plug-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, "", ""); 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(, 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)
Maya+VS编程入门初体验(HelloWorld)的更多相关文章
- javaWeb快速入门+——初体验-HelloWorld
文章转载自 https://www.cnblogs.com/1906859953Lucas/p/10821840.html 练习成品下载 https://www.lanzous.com/i9fljkj ...
- gulp快速入门&初体验
前言 一句话先 gulp 是一个可以简单和自动化"管理"前端文件的构建工具 先说我以前的主要工作,我主要是做游戏服务端的,用c++/python,所以我对东西的概念理解难免要套到自 ...
- Scala 深入浅出实战经典 第66讲:Scala并发编程实战初体验
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
- Android开发学习之路--网络编程之初体验
一般手机都是需要上网的,一般我们的浏览器就是个webview.这里简单实现下下功能,先编写Android的layout布局: <?xml version="1.0" enco ...
- Netty 入门初体验
Netty简介 Netty是一款异步的事件驱动的网络应用程序框架,支持快速开发可维护的高性能的面向协议的服务器和客户端.Netty主要是对java 的 nio包进行的封装 为什么要使用 Netty 上 ...
- Node.js入门初体验
今天有一个类似网络爬虫的需求,本来打算用我还算熟悉的asp或者asp.NET来做这个事情,但是写了这么长时间js,asp的语法实在不喜欢,VS又早被我卸掉了,思来想去打算用一下最近比较火的Node.j ...
- Spring入门初体验
Spring其实就是一个容器,让我们更方便的拿到想要的对象. 1.编写一个service // userService.java public interface userService { publ ...
- angularjs入门初体验
1. http://www.zouyesheng.com/angular.html#toc39
- 我的Go语言学习之旅二:入门初体验 Hello World
好吧,全部的程序猿们都已经习惯了.学习不论什么一门语言,我们都会以Hello World实例開始我们的学习,我也不例外.先来一个简单的样例 打开编辑器 (能够用记事本,我已经习惯 Notepad++了 ...
随机推荐
- 2018牛客网暑期ACM多校训练营(第二场):discount(基环树DP)
题意:有N个不同的商品,每个商品原价是Pi元,如果选择打折,可以减少Di元. 现在加一种规则,每个商品有一个友好商品Fai,如果i用原价买,则可以免费买Fai. 现在问买到所有物品的最小价格. 思路 ...
- idea启动项目连接mysql数据库后台报duplicate name异常
自己写的sql语句在MySQL数据库中运行是没有问题的 但是在使用idea启动项目的时候,后台在运行这行sql语句的时候居然报错了,duplicate name:重复的名字,最后自己经过思考,修改了一 ...
- redux沉思录
要素:store.reducer.dispatch/subscribe connect:将业务逻辑剥离到容器类,数据的双向绑定: 数据.操作.UI分离.命令封装 核心思想:对共享状态的维护: 核心代码 ...
- Trie Service
Description Build tries from a list of <word, freq> pairs. Save top 10 for each node. Example ...
- Docker for Window 数据库路径注意事项
Windows和Linux的文件路径格式不同,以第一行为例的话要改为//D/work/fronent-api:/www //D:标识D盘,如果是其他盘,如F盘://F/
- LeetCode 953. Verifying an Alien Dictionary
原题链接在这里:https://leetcode.com/problems/verifying-an-alien-dictionary/ 题目: In an alien language, surpr ...
- (尚034)Vue_案例_数据存储优化(代码优化!!!)
最好能将上述代码抽取成一个模块(读json数据+写json数据) 1.在src下新建文件夹util(util文件夹用于放入工具的模块) 2.*使用localStorage存储数据的工具模块* 一个模块 ...
- 如何使用Microsoft的驱动程序验证程序解释无法分析的崩溃转储文件
这篇文章解释了如何使用驱动程序验证工具来分析崩溃转储文件. 使用Microsoft驱动程序验证工具 如果您曾经使用Windows的调试工具来分析崩溃转储,那么毫无疑问,您已经使用WinDbg打开了一个 ...
- React渲染和事件处理
一.列表渲染 ①在列表中,绑定数组成员会直接把成员渲染 <div id="app"></div> <script src="node_mod ...
- 《Elasticsearch实战》读书笔记
遗留问题: 1._source字段和field字段的区别 2.q和search的区别(查询请求中) 3.输入关键字的大小写,参考prefix查询,match_phrase_prefix查询(4.4.2 ...