用mel编写自定义节点的属性编辑器界面比较麻烦,而且网上例子又少,下面给出一个范例,说明基本的格式
  1. // 初始化节点时调用
  2. global proc initControl(string $attrName)
  3. {
  4. // 传进来的参数是节点属性名,使用这个方法获得节点名称
  5. string $nodeName = `plugNode $attrName`;
  6. setUITemplate -pst "attributeEditorTemplate";
  7. button -label "Compute Weight" -c ("cageDeform -init -name " + $nodeName) computeWeightButton;
  8. setUITemplate -ppt;
  9. }
  10. // 修改节点时(例如点击另一个同类节点)调用
  11. // 此函数的目的是对按钮绑定的命令做相应修改,使其能应用于相应节点
  12. global proc modifyControl(string $attrName)
  13. {
  14.   // 当attrName = “cageDeformer1.noAttr”
  15. // plugNode 命令能够提取节点名字cageDeformer1
  16. string $nodeName = `plugNode $attrName`;
  17. print $nodeName;
  18. button -e -c ("meshControl -init -name " + $nodeName) computeWeightButton;
  19. }
  20. // 函数名同文件名一样,同节点名cageDeformer对应
  21. global proc AEcageDeformerTemplate(string $nodeName)
  22. {
  23. editorTemplate -beginScrollLayout;
  24.         // 新建一个卷展栏
  25. editorTemplate -beginLayout "Weight Scheme" -collapse false;
  26. // addControl自动指定合适类型的控件
  27. editorTemplate -addControl "maxNeighbourNum";
  28. editorTemplate -addControl "weightPower";
  29.          // 在指定的时机调用前面的函数
  30. editorTemplate -callCustom "initControl" "modifyControl" "noAttr";
  31. editorTemplate -endLayout;
  32. editorTemplate -suppress "outMesh";
  33. editorTemplate -suppress "inControlMesh";
  34. editorTemplate -suppress "refMesh";
  35. editorTemplate -suppress "refControlMesh";
  36. editorTemplate -beginLayout "Node Behavior" -collapse true;
  37. editorTemplate -addControl "nodeState";
  38. editorTemplate -addControl "caching";
  39. editorTemplate -endLayout;
  40. editorTemplate -addExtraControls;
  41. editorTemplate -endScrollLayout;
  42. }


下面是-callCustom的文档解释

Specifies that at this point in the template when building the dialog, the procedure specified by the first argument is to be called to create some UI objects when a new node type is edited. The procedure specified by the second argument is to be called if an attribute editor already exists and another node of the same type is now to be edited. The replacing procedure should connect any controls created by the creating procedure to the equivalent attributes in the new node. A list of zero or more attributes specifies the attributes which the two procedures will involve. The procedures should have the signature:
proc AEcustomNew(string attributeName1, string attributeName2)

The number of attributes specified in the call should correspond to the number of attributes in the procedure signature.

用mel编写自定义节点的属性编辑器界面的更多相关文章

  1. 流程图GGEditor 之 自定义节点相关属性

    自定义节点 注册 -- registerNode 我们通过以下接口往 G6 全局注册节点: // 注册节点 G6.registerNode(name, { // 绘制 draw(item) {   r ...

  2. [翻译] Writing Property Editors 编写属性编辑器

    Writing Property Editors 编写属性编辑器   When you select a component in the designer its properties are di ...

  3. (spring-第13回【IoC基础篇】)PropertyEditor(属性编辑器)--实例化Bean的第五大利器

    上一篇讲到JavaBeans的属性编辑器,编写自己的属性编辑器,需要继承PropertyEditorSupport,编写自己的BeanInfo,需要继承SimpleBeanInfo,然后在BeanIn ...

  4. django “如何”系列4:如何编写自定义模板标签和过滤器

    django的模板系统自带了一系列的内建标签和过滤器,一般情况下可以满足你的要求,如果觉得需更精准的模板标签或者过滤器,你可以自己编写模板标签和过滤器,然后使用{% load %}标签使用他们. 代码 ...

  5. SpringBoot编写自定义的starter 专题

    What’s in a name All official starters follow a similar naming pattern; spring-boot-starter-*, where ...

  6. Fabric Engine2.0的自定义节点功能

    Fabric Engine是一个多用途的引擎,针对maya等软件写节点写功能很方便.尤其是canvas节点编辑面板,提供了大量现有的功能供用户调用,当然这些节点功能都是可被用户编辑修改的,除此之外还提 ...

  7. SpringMVC源码阅读:属性编辑器、数据绑定

    1.前言 SpringMVC是目前J2EE平台的主流Web框架,不熟悉的园友可以看SpringMVC源码阅读入门,它交代了SpringMVC的基础知识和源码阅读的技巧 本文将通过源码(基于Spring ...

  8. 属性编辑器,即PropertyEditor-->Spring IoC

    在Spring配置文件里,我们往往通过字面值为Bean各种类型的属性提供设置值:不管是double类型还是int类型,在配置文件中都对应字符串类型的字面值.BeanWrapper填充Bean属性时如何 ...

  9. Spring经常使用属性的注入及属性编辑器

    对于对象的注入,我们使用ref方式,能够指定注入的对象.以下看下对于基本类型的注入.以及当spring无法转换基本类型进行注入时,怎样编写一个相似转换器的东西来完毕注入. 一.基本类型的注入 以下写一 ...

随机推荐

  1. AJAX编程-封装ajax工具函数

    即 Asynchronous [e'sɪŋkrənəs] Javascript And XML,AJAX 不是一门的新的语言,而是对现有技术的综合利用.本质是在HTTP协议的基础上以异步的方式与服务器 ...

  2. ArcGIS使用Python脚本工具

    在Pyhton写的一些代码,用户交互不方便,用户体验比较差,不方便重用.在ArcGIS中可以将用写的Python代码导入到ToolBox中,这样用起来就比较方便了.这里用按要素裁剪栅格的Python来 ...

  3. Android项目实战(九):CustomShapeImageView 自定义形状的ImageView

    一个两年前出来的第三方类库,具有不限于圆形ImageView的多种形状ImageView,项目开发必备 github下载地址:https://github.com/MostafaGazar/Custo ...

  4. UIButton在不同状态下显示不同背景色

    参考自:原文地址(内容与原文并无区别,只是自己以后方便使用整理了一下) 1.UIButton的background是不支持在针对不同的状态显示不同的颜色. 2.UIButton的backgroundI ...

  5. 发布的时候Archive灰色

    主要是因为发布的时候要选为将模拟器选择一下,选为Generic iOS Device. 来自为知笔记(Wiz)

  6. 【读书笔记】iOS-UIFont-动态下载系统提供的字体-官方代码

    一,工程目录 二,AppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOption ...

  7. bootstrap3 兼容IE8浏览器

    近期在使用bootstrap这个优秀的前端框架,这个框架非常强大,框架里面有下拉菜单.按钮组.按钮下拉菜单.导航.导航条.面包屑.分页.排版.缩略图.警告对话框.进度条.媒体对象等,bootstrap ...

  8. find locate

    locate执行前先 updatedb 然后locate vstore 就可以了 find 加 -name 比如 find -name vstore 按理说 locate要快点,毕竟是数据库嘛 一:l ...

  9. 编写一个Java程序,计算半径为3.0的圆周长和面积并输出结果。把圆周率π定义为常量,半径定义为变量,然后进行计算并输出结果。

  10. SQL Server 2008 R2——VC++ ADO 操作 多线程操作 代码结构

    ==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...