标题：MEL
最低设备清单
最低设备清单：MEL （Minimum Equipment List）　
主最低设备清单：MMEL （Master Minimum Equipment List）　
MMEL是由航空器制造国的民航当局、适航机构制订的，用于指导航空器用户、航空公司具体编写MEL的纲领性文件，它规定了该型号飞机允许带有哪些不工作的仪表和设备放行，并对工作仪表设备的最低放行数量以及保留故障放行的限制条款作出了原则上的要求。　最低设备清单是由航空器营运人制定，经过本国适航机构批准的重要技术文件，MEL制定的依据是 主最低设备清单 MMEL。MEL是在其基础上，根据本航空公司所选飞机构型上的不同，并结合本公司运行水平、经验等差异性，对特定型号并带有序号和注册号的航空器制定的在一定期限内可以允许不工作设备和系统的文件。　MEL应当遵守相应航空器型号的MMEL，或比其更为严格。　
MEL的主要用途
就是充分利用飞机设计的安全余度，在保证运行安全的前提下在规定的期限内允许保留故障继续飞行，合理运用MEL可有效提高飞机的利用率和航班正点率，降低运营成本。值得注意的是，MEL不是航空器的维护标准，决不是提倡带故障飞行，维修部门应尽早完成排故工作。
为有效地使用Maya，你并不非得精通MEL。但是，熟悉MEL可以加深你使用Maya的专业能力。使用MEL的许多方面可以由只有很少编程经验或者没有经验者所使用。喜欢MEL并不非得喜欢编程。有一些方法，它们可以使你获得MEL的好处而不必考虑编程的细节。一旦当你进行了产生MEL脚本语言的尝试，你会发现MEL可以给你提供可以想象到的最先进的数字化画图的方法。
举例为了获得Maya的输出，大部分可以使用MEL来做。这里是你可以使用MEL来工作的一些例子：
·使用MEL指令脱开Maya的用户界面，快速地产生热键，访问更深的要点。
·给属性输入准确的值，脱开由界面强制引起的拘谨的限制。
·对特定的场景自定义界面，对一个特定的项目改变缺省设置。
·产生MEL程序和执行用户建模、动画、动态和渲染任务的脚本程序。
mel语言是maya自己的一套编程语言，是比较偏底层的东西。如果你稍有编程基础的话，可以很容易掌握它。我们可以看到除了maya的插件（maya内部很多组件也都是以插件形式存在的）以外，所有的操作都可以在script editor窗口中有相应的MEL语言与之对应。例如：创建一个常规的polygon球体，打开windows-->General Editors-->Script Editor，可以看到：polySphere -r 1 -sx 20 -sy 20 -ax 0 1 0 -tx 2 -ch 1;；这句话的意思是创建一个polygon球体（polySphere），其半径为1（-r 1），x、y轴向的分段皆为20（-sx 20 -sy 20），轴向为Y轴向上（-ax 0 1 0），显示方式为有锯齿贴图（-tx 2），并带有历史纪录（-ch 1）。参见help中的polySphere词条。 
学习最好的方法还是买书自己学，可以参考《Maya动画师MEL脚本编程全攻略》（以前看过，很快就能上手）。 
附上我以前学习的一些笔记，希望能给你一些帮助： 
1.得到所有被选中对象的列表并存入数组：“string $sel[] = `ls -sl`;” 
2.在表达式中可以直接用“=”给对象的属性赋值或取值；而mel中则必须通过getAttr和setAttr来实现，这种方式效率比较低 
3.“==”是判断是否相等；“!=”不等于 
4.定义变量：“float $rotation_value;” 
5.为对象添加属性：Window-->Attribute Editor；Attributes-->Add Attribute 
6.在数学表达式中的向量：可以对向量中的单个分值赋值，如：$abc.x=3；但是不可以这样赋值：$abc=<<$abc.x,1,1>> 
7.向量运算（Maya中的点都是向量存储，因此要定位的话向量比较重要）：向量相减：代表向量从一个点移到另一个点所需行进的方向和距离，减数指向被减数 
8.向量操作：unit（格式化）/unit($vectoer1)；mag（长度）/mag($vectoer1)；angle（夹角，弧度制，如果想获得角度将它乘以180/pi，方向为逆时针）/angle($vector1l,$vector2)；cross（叉积，与两个向量正交，即垂直的第三个向量，其长度为：dot运算）/cross($vector1l,$vector2)；dot（=mag($vector1)*mag($vector2)*cos(angle($vector1,$vector2))）/($vector1l,$vector2)；rot（将一个向量绕着由另一个向量所定义的轴旋转一定的角度）/rot($vector1,$vector_axis,$degrees) 
9.检测两个向量平行或垂直：dot(unit($vector1),unit($vector2))，如果=0，那么垂直；如果=1，那么平行 
10.在mel语言中，不能把属性值赋给变量，必须用如下格式获得：$val=`getAttr expression1.time`; 
11.连接属性：connectAttr 属性1 属性2 
12.创建表达式：express -string "属性1=值";；适用于mel中对属性的赋值 
13.变量：数组变量/$t={1,2,3};声明变量/int $t; 
14.全局变量：Maya要求在每一个使用全局变量的域中重新声明该变量，如： 
global int $a=1; 
proc print_a(){ 
global int $a; 
print($a); 
} 
print_a(); 
15.将一个整数转换为一个浮点数：float(3);；将浮点数转换为整数：int(3.7)，结果为向下取整=3 
16.算术比较运算：print(5>6);结果为：0或1 
17.运算符：+,-,*,/,%,+=,-=,*=,/=,++,--,&&,||,! 
18.取相邻最大整数：ceil($f)；取相邻最小整数：floor($f) 
19.在mel中的向量：不能直接将一个值赋给向量的一个分量，如：$abc.x=3；必须这样赋值：$abc=<<$abc.x,1,1>> 
20.分隔字符串：tokenize "string1" $myarray;得到的结果将是以空白符来拆分字符串，并存入数组中；又：tokenize "string1" "char" $myarray;将得到以char来拆分字符串，并存入数组中 
21.数组中所有没有被赋值的元素默认为0 
22.数组的尺寸：size($myarray) 
23.如果需要在脚本中使用一个非常的数组，在结束时使用mel中的clear命令清楚该数组：clear $myarray 
24.模式选择：-c标记或不适用标记将选择创建模式；-q选择查询模式；-e选择编辑模式 
如：sphere -q -radius nurbsSphere1 返回半径 
sphere -e -radius 15 nurbsSphere1 修改半径 
25.当希望存储命令的返回值时，可以在赋值运算的右边将命令置入反引号（``）中。如：string $coneNodeNames[]=`cone -name testing2` 
26.使用eval命令：string $spherecommand="sphere"; string $nodenames[]=eval($spherecommand);表示创建一个球体，将sphere命令的返回值存入$nodenames数组中 
27.在脚本中有三种运行mel命令的方法：（一）如果不关心返回值，作为独立一行的语句独立运行；（二）如果想将返回值存入一个变量，将其放入反引号中；（三）如果想在字符串中构造命令并执行它，使用eval函数命令。