`
schi
  • 浏览: 205289 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Add MEL syntax highlighting for expression editor[给表达式编辑器添加mel的高光显示]

阅读更多
I don't use mel for years. But it would be great to have syntax highlighting in the expression editor. It's not that hard since maya build wiht Qt. Actually it's very easy to do it if you good at Qt. Here I'm gonna show you how to do it with PySide.
我n久没用过mel了,不过如果expression editor能有mel的高亮显示还是挺不错的。要添加这个并不难,因为maya是基于Qt的界面。实际上是一件很简单的事情,如果你擅长Qt的话。我在这里使用PySide来完成它。

Implementation[实现]
  1. You need a QSyntaxHighlighter | 你需要一个QSyntaxHighlighte
  2. apply the syntax highlighting rules to the expression editor's document | 把高亮显示的规则应用到expression editor的文档中


You can define your own mel QSyntaxHighlighter if you want. I not gonna do that I'll use the script editor's.
So the implementation should be
你也可以以定义你自己的mel QSyntaxHighlighter。我就直接使用脚本编辑器里的。我需要这么做
  1. open a expression editor, find it with PySide, find the QTextEdit in the expression editor | 打开expression editor,使用PySide找到它,再找到它的QTextEdit
  2. create a window with a mel cmdScrollFieldExecuter, this window will never show, and it'll create a mel QSyntaxHighlighter for you | 创建一个mel脚本编辑器窗口,这个窗口永远也不会显示,它会创建一个mel QSyntaxHighlighter
  3. find the mel QSyntaxHighlighter | 找到mel QSyntaxHighlighter
  4. apply it to the expression editor's document | 把它应用到expression editor的文档中


# --------------------------------------------------------------------------------
# Copyright (c) 2013 Mack Stone. All rights reserved.
# 
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
# 
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
# 
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
# --------------------------------------------------------------------------------

from maya import cmds

from PySide import QtGui
#from PyQt4 import QtGui

def showExpEditor():
    """
    Add mel syntax highlighting for expression editor. Support Maya2011-2014
    """
    tempWin = "mytempmelwin_xxxxxxxxxx"
    # open expression editor
    cmds.ExpressionEditor()
    
    mapp = QtGui.QApplication.instance()
    if not mapp: return mapp
    mwin = mapp.activeWindow()
    if mwin.objectName() != "MayaWindow":
        mwin = mwin.parent()
    # finde expression editor
    expEditor = mwin.findChild(QtGui.QWidget, "expressionEditorWin")
    expTextEd = expEditor.findChild(QtGui.QTextEdit)
    
    # create a mel cmdScrollFieldExecuter
    if cmds.window(tempWin, ex=1): cmds.deleteUI(tempWin)
    cmds.window(tempWin)
    cmds.columnLayout()
    cmds.cmdScrollFieldExecuter(sourceType="mel")
    
    # find tempWin
    melWin = mwin.findChild(QtGui.QWidget, tempWin)
    # find the SyntaxHighlighter
    melHighlighter = melWin.findChild(QtGui.QSyntaxHighlighter)
    melHighlighter.setDocument(expTextEd.document())

showExpEditor()


How about the auto completions in the expression editor?[mel命令自动完成呢]
I can't find the QCompleter from the Script Editor. Autodesk may implement it on the QTextEdit or somewhere. So if you want the auto completions you have to do it yourslef.
我没找到QCompleter,Autodesk 应该是用过其它方式来实现的,所以你需要自己去实现了。

No desktop snapshot. Just try the code and have fun with it.
分享到:
评论

相关推荐

    MEL Syntax Highlight File for UltraEdit

    MEL Syntax Highlight File for UltraEdit

    mel脚本编辑器 maya三维动画师必可少的工具

    EditPlus虽然不是专门为Maya定制的脚本编辑器,但因其强大的文本编辑功能,如多文档界面、代码折叠、宏录制和播放,以及对多种编程语言的良好支持,包括Mel,使得它成为许多Maya用户首选的第三方编辑器。 使用Mel...

    Maya的Expression表达式教程

    ### Maya的Expression表达式教程 #### 10.1 表达式简介 表达式是Maya中一种强大的工具,允许用户通过编写简单的脚本来控制物体的属性。这些属性可以是物体的位置、旋转、缩放等特性。通过使用表达式,用户能够实现...

    maya的MEL基础教程

    在命令行中输入MEL命令,或者在脚本编辑器中执行它们,以实现各种功能。 2. **Script Editor**:这是Maya中的一个核心工具,用于编写、测试和调试MEL脚本。用户可以直接在编辑器中输入命令,通过shelf按钮运行选定...

    maya的Mel教程

    - **Script Editor(脚本编辑器)**: 是一个内置在Maya中的工具,用于编写、编辑和运行Mel脚本。 #### 三、Mel命令的学习与实践 1. **命令的使用**: 学习Mel命令是掌握Mel的基础。例如,使用`sphere -radius 27.5 -...

    maya mel/python编辑器

    3. **Maya中的Mel/Python编辑器**:Maya内建了用于编写和执行MEL和Python脚本的编辑器。用户可以通过这些编辑器直接在Maya界面中编写、测试和运行脚本,极大地提高了工作效率。编辑器通常包含语法高亮、自动完成等...

    Mel Scripting for Maya Animators

    ### MEL Scripting for Maya Animators #### 一、引言 《MEL Scripting for Maya Animators》是一本专为Maya用户设计的书籍,旨在帮助他们掌握MEL(Maya Embedded Language)脚本语言,进而提升其在动画制作方面的...

    Maya Mel基础教程

    要运行例子程序,你可以把它们粘贴到Maya的脚本语言编辑器(Script Editor)里,并选择Edit > Execute就可以了。使自己进一步地熟悉脚本语言编辑器的要点,执行脚本程序,并把程序保存到Maya的script目录中的一个文件...

    MAYA常用时间表达式

    ### MAYA常用时间表达式详解 #### 一、时间与帧表示法 在MAYA中,时间可以采用多种方式来表示,其中最基本的是通过`time`和`frame`两个关键词来实现。 - **`time`**:表示当前动画的时间(以秒为单位)。 - **`...

    Mel语言.pdf

    11. Maya用户界面元素:MEL脚本可以与Maya的用户界面交互,如ScriptEditor、Outliner、Help等,以提供丰富的交互式脚本操作。 12. Maya的锁定和关键帧:文件中展示了如何锁定一个对象属性,并且如何控制属性的关键...

    Maxsun_MS-H61MEL_msh61mel19.zip

    【标题】"Maxsun_MS-H61MEL_msh61mel19.zip" 提供的是铭瑄(Maxsun)MS-H61MEL主板的BIOS固件更新,版本号为msh61mel19。这个压缩包是官方发布的最新BIOS固件,用于确保主板性能的稳定性和兼容性。 【描述】中提到...

    maya_mel_语言大全

    Maya MEL(Maya Embedded Language)是一种强大的脚本语言,专为Autodesk Maya软件设计,用于自动化和自定义工作流程。MEL语言大全是学习和掌握MEL的基础,它包含了大量的函数、命令和语法,旨在帮助用户提高工作...

    MAYA MEL 语言基础教程

    MAYA MEL 语言基础教程 MAYA MEL 语言是 Maya 提供的一种嵌入式语言,用于扩展和定制 Maya 的功能。MEL 语言可以帮助用户深入使用 Maya,提高工作效率和专业能力。 MEL 语言基础 MEL 语言是 Maya 的核心语言,...

    MAYA 破碎 MEL

    - **表达式驱动**:MEL的表达式功能可以链接对象的属性,让破碎效果更自然。例如,可以使用`setExpression`命令将一个碎片的位置与另一个碎片的旋转关联起来,模拟碎片间的相互影响。 5. **优化和渲染**: - **...

    Mule3.6 Expression Language By 火花

    通过使用默认的 MEL 表达式评估器,可以一致地访问和操作信息,而无需依赖多种不同的表达式评估器。 5. **与消息处理器的集成**:MEL 表达式可以在消息处理器中工作,修改处理器处理消息的方式,例如进行路由或...

    mel.rar_Mel_dtw_mel filter_mel.rar_三角滤

    这个名为"mel.rar_Mel_dtw_mel_filter_mel.rar_三角滤"的压缩包包含了一个自编程序,旨在计算Mel三角滤波器的系数,这对于我们理解这种滤波器的工作原理非常有帮助。 Mel滤波器是基于听觉感知模型的频率变换方法,...

    MEL学习笔记

    根据提供的“MEL学习笔记”的内容,我们可以提炼出关于MEL语言的一些基础知识点。MEL是一种用于Maya软件中的脚本语言,主要用于动画、建模等任务的自动化处理。下面将详细解释这些知识点: ### 1. 数据类型 #### ...

    An adaptive algorithm for mel-cepstral analysis of speech

    本文介绍了一种语音梅尔倒谱分析方法及其自适应算法。梅尔倒谱分析是一种用于语音信号处理的技术,它可以提取出语音信号的特征参数,这些参数对于语音合成、识别以及相关的声学处理非常重要。传统上,可以通过线性...

Global site tag (gtag.js) - Google Analytics