😕

MASH Visibility のFalloffでアイコンが見失われる場合の対処【Maya2016 Ext2】

2020/11/01に公開

Maya 2016 Extension 2(a.k.a 2016.5)のMASHを使っていて遭遇したエラーです。

2016.5がRender SetupやMASHなどいろいろ追加された面白いバージョンなのですが、2017で正式版となる機能のベータという側面も多々あります。

そんなわけでMASHも変なエラーに遭遇したりします。たとえば

# Error: file: C:/Program Files/Autodesk/Maya2016.5/plug-ins/MASH/scripts/MASHfalloffButtons.mel line 22: 'MASH_QListWidgetExtend' object has no attribute 'iconsPath'
# Traceback (most recent call last):
#   File "<maya console>", line 1, in <module>
#   File "C:\Program Files\Autodesk\Maya2016.5\plug-ins\MASH\scripts\MASHlistQtWidget.py", line 54, in build_qt_widget
#     widget = MASHlistQtWidget(node, wantedType, attr, sourceAttr, postCmd, label)
#   File "C:\Program Files\Autodesk\Maya2016.5\plug-ins\MASH\scripts\MASHlistQtWidget.py", line 33, in __init__
#     self.listWidget = MASH_QListWidgetExtend(wantedType, node, attr, sourceAttr, postCmd, label)
#   File "C:\Program Files\Autodesk\Maya2016.5\plug-ins\MASH\scripts\MASHlistQtWidget.py", line 95, in __init__
#     self.checkConnections()
#   File "C:\Program Files\Autodesk\Maya2016.5\plug-ins\MASH\scripts\MASHlistQtWidget.py", line 128, in checkConnections
#     icon = QtGui.QIcon(self.iconsPath+"ae_MASH_Falloff.png")
# AttributeError: 'MASH_QListWidgetExtend' object has no attribute 'iconsPath' # 

Falloff Objectのリストでcreateする分には問題ありませんが、
そのシーンを閉じて開いて、
Falloff Objectのリストを見ようとすると、上記のエラーが出てしまいFalloff Objectのリストが開きません。


MASH_QListWidgetExtend オブジェクトの iconsPath アトリビュートが、定義されるより先に呼ばれているのでエラーになっているようです。

〜Maya2016.5\plug-ins\MASH\scripts
にインストールされている「MASHlistQtWidget.py」を開いてみてみます。

line 76から MASH_QListWidgetExtend クラスの定義が始まっていますが、
iconsPath はその最後の方で定義されています。↓こういう内容

mashPath = mel.eval('getenv("MASH_LOCATION")')
self.iconsPath = mashPath+'icons/'

なのに、それより前に書かれている「checkConnections」関数の中で iconsPath が使われてしまってます。

さきほどの2行をcheckConnectionsより前に書き写せば、エラーが発生しなくなります。

多分2016.5以降のバージョンでは無くなっているエラーだと思うので、対処は不要です。多分。

Discussion