2017年11月12日日曜日

MotionBuilderとMayaと

お疲れ様です。
あまぐりです。

MBさん面倒なんですよね。
普通になにかツール作りたい時に、UI考えるじゃないですか。

Pysideで普通にかけちゃうから。

わざわざかのMotionBuilderさんので書かないわけです。

というかMBと共通で共有する情報欲しいわけで。
座標や回転情報やらね。

かつ共通のUIであればあるほど、いいわけで。

Pysideでかくじゃないっすか。

社内ツールMBで起動しても、Mayaで起動しても同じの使いたいわけで。

とはいえ完全に外部には出せないからまぁ共通でいけるの作ったわけです。

各個人の情報を共有するときにdump使ってたわけです

だってclassで構造体みたいにやりたかったわけです。

妥協すると辞書in辞書でいいんですけど

それだと取り出す時にちょっと厄介なので

classがいいんですけど、MBさんときたら

日本語対応してないわけ(バージョンによるかも)

普通にスタッフは日本語使うのよ。

まぁ普通に日本語保存希望する人多いしまぁしゃーない

エラーはくからさ、例外処理逐一書いてられないわけ。

とりあえずjsonさん最高です。

dumpのほうが色々いいんだけど、jsonさんいいですね。

MBに色々もってくならjsonで辞書型で色々いこう。

と思った日々であります。
(UI上では問題ないんですけどJisでも問題ないんですけど)

2017年4月30日日曜日

【モーション記事じゃない】Python 辞書の作成時の登録順番を維持

あまぐりです。

最近作業中階層が非常に深かったり、
飛びまくってるところへ度々アクセスすることが多いんですね。

ので、エクスプローラーさんと行き来することが多いんですが、
案件変わるたびに入れ替えたりお気に入りフォルダやショートカットが
多大なことになってきて古いの消したりとかしてるんですが

普通にフォルダ名かぶってることがあったりするわけです
そうすると

ProjectA
ProjectA(2)

とかかってにつくわけですわお気に入り
お気に入りの方名前かえりゃいいけど
数が多くなってくると面倒くさい

ってことでMaya用ファイルブラウザが欲しかったからPysideで作って、
(Pysideで作ったのはmodelやViewの概念が使いやすかったのと、
あとウインドウのアイコン変えたかったから)
ブックマークも独自のを組んだわけですわ
csvから読み込んで辞書で

ここで問題が発生する

辞書は中の要素の順番は保証されない

保証されないんだって
だから取り出す時そのままitemを取り出すと順番が勝手に変わりやがる

やめれけろ

辞書内にlineread時のインデックス残しとくか・・・・?
とも思ったけどそれも違う

辞書内がややこしくなる

ってことで見つけたのが
from collections import OrderedDict
TestDict = OrderedDict()
あとは元々辞書宣言していたのを上みたいにしとけばいいだけ
これ辞書を作成したときの順番を維持するやつみたい

collectionsさんいつもお世話になってます
あんた本当優秀だな

import collections
TestDict = collections.OrderedDict()
from ~ が嫌いな人はこうだぜ

from collections import *
これは勘弁な

いいね

ファイルブラウザへの要望で一つ、
ブックマークの並び順を変えさせてほしいってのもきたけど、
これならなんとかなりそう。


コンテンツブラウザは重い・・・


2017年4月28日金曜日

Pyside2 csvから日本語の文字列を文字化け回避

あまぐりです。

最近社内用のデータベースありきのMaya用ブラウザー作成してる時に、
pyside2ではpysideだったころの日本語対応がうごかなくて、
C++のほうのリファレンスで調べて出てきたのも解決にはならなかったので、
どうしたもんかと思ってたら・・・

for key, value in self.ProjData.items():
if '#' in key or key == '':
continue
if asciicheck.Is_Ascii(key) == None:
key = key.decode('cp932')
m_MenuAction = QtWidgets.QAction(key, self)

まぁようは普通にデコードすりゃいけたんですが、
魔法の言葉もいるのかなと

pysideでは日本語を受け取った時これいれときゃよかったのを
QtCore.QTextCodec.setCodecForCStrings( QtCore.QTextCodec.codecForLocale() )

pyside2ではこのようにってのを Qt5ではってんで見かけた
QtCore.QTextCodec.setCodecForLocale( QtCore.QTextCodec.codecForName('utf-8') )

のこうした。

が、これいれなくても普通にデコードでよかった。
魔法の言葉いらんくなったのかな。

あとpyside2ではQtGuiのWidget系が全部 pyside2.QtWidgetsに映ってるようですが、
modelやQIconとかはQtGuiのままようだわ。

紛らわしい。

早く公式のドキュメントこないのかーい。


MotionBuilderとMayaと

お疲れ様です。 あまぐりです。 MBさん面倒なんですよね。 普通になにかツール作りたい時に、UI考えるじゃないですか。 Pysideで普通にかけちゃうから。 わざわざかのMotionBuilderさんので書かないわけです。 というかMBと共通で共有する情報欲し...