2020年5月31日日曜日

メッシュのシェル毎に頂点グループを作成

# http://www.janpijpers.com/finding-vertex-groups-in-maya/
import maya.OpenMaya as oldOpenMaya
import time
# メッシュのシェル毎に頂点グループを作成
def getVertexGroups(mesh, vtxSelectionSet):
    selList = oldOpenMaya.MSelectionList()
    selList.add(mesh)
    mObject = oldOpenMaya.MObject()
    selList.getDependNode(0, mObject)
    iterVertLoop = oldOpenMaya.MItMeshVertex(mObject)
    talkedToNeighbours = set()
    districtList = []
    for currentIndex in vtxSelectionSet:
        districtHouses = set()
        if not currentIndex in talkedToNeighbours:
            districtHouses.add(currentIndex)
            currentNeighbours = getNeighbours(iterVertLoop, currentIndex)
            while currentNeighbours:
                newNeighbours = set()
                for neighbour in currentNeighbours:
                    if neighbour in vtxSelectionSet and not neighbour in talkedToNeighbours:
                        talkedToNeighbours.add(neighbour)
                        districtHouses.add(neighbour)
                        newNeighbours = newNeighbours.union(getNeighbours(iterVertLoop, neighbour))
                currentNeighbours = newNeighbours
            districtList.append(districtHouses)
    return sorted(districtList, key=lambda x:min(x))

def getNeighbours(mVtxItter, index):
    mVtxItter.setIndex(index, oldOpenMaya.MScriptUtil().asIntPtr())
    intArray = oldOpenMaya.MIntArray()
    mVtxItter.getConnectedVertices(intArray)
    return set(int(x) for x in intArray)

selected = set(cmds.ls(sl=True, o=False, fl=True)) - set(cmds.ls(sl=True, o=True))
vtxSelectionSet = set([int(x.split(".vtx[")[-1][:-1]) for x in selected])
meshName = "pSphere1"
start = time.time()
vertexGroups = getVertexGroups(meshName, vtxSelectionSet)
print "Duration: %s seconds" %str(time.time()- start)

for groep, entries in enumerate(vertexGroups):
    print "Groep : " ,groep
    print "\tMin : " ,min(entries)
    print "\tMax : " ,max(entries)

2019年12月15日日曜日

vscode tips



# ターミナルでpythonを終了する
ctrl + c

# ショートカット
ターミナル開閉 Ctrl + Shift + M
大文字に変換
Ctrl + u
小文字に変換
Ctrl + l
行ソート
F1 → 「Sort Lines」入力
対応する括弧にジャンプ
Ctrl + Shift + \
MayaPort:Mayaにスクリプト送信・実行する
Alt + Shift + p
行コメント記号をトグル
F8
ブロックコメント記号をトグル
Shift + Alt + A
プリントデバッグ
文字をコピーして改行してから
Ctrl + J
定義にジャンプ
F12
元位置に戻る
Ctrl + -
Alt + ←
矩形選択
# キーボード
Ctrl + Alt + ↑or↓
# マウス
Alt + Shift + 左ドラッグ
マルチカーソル化
Alt + 左クリック(ドラッグでは無い。クリックした箇所にカーソルが増える)
スニペット
Tab
ブックマーク
Ctrl + Alt + K
次のブックマークに移動
Ctrl + Alt + L
前のブックマークに移動
Ctrl + Alt + J
サイドバーを開く/閉じる
Ctrl + B
エディタグループを横断してのアクティブエディタの切り替え(フォーカスの移動)
Ctrl + PageUp or PageDown
1つ目のエディタグループにフォーカスを移動 
Ctrl + 1
アクティブなエディタを隣のエディタグループに移動する
Ctrl + Alt + ← or →
次のマッチを選択に追加
Ctrl + D
選択ワードの全マッチを選択
Ctrl + F2
選択部分の全マッチを選択
Ctrl + Shift + L
フォントサイズ変更
Ctrl + + or -
アクティブなファイルのパスをコピー
Ctrl + K P
折り返しする/しないの切り替え
Alt + Z
指定行に移動
Ctrl + G

# 操作 tips
# スペースをタブに置き換える
右下ステータスバーの該当箇所をクリック
# もしくは
コマンドパレットで「indent」と入力して[インデントをタブに変換]コマンドを実行


# 新規作成ファイルのフォーマットを指定 言語モード
https://blog.shibata.tech/entry/2017/02/03/182821


# 設定ファイル
# 色設定 "workbench.colorCustomizations": { // "editor.lineHighlightBackground":"#70b178", // 現在行の背景色 "quickInput.foreground":"#bbbebc", // クイック入力の文字 "quickInput.background":"#0d2210", // クイック入力の背景 "list.inactiveSelectionForeground":"#cf6f00", // 非アクティブペインの選択アイテム背景 "contrastActiveBorder":"#cf6f00", // アクティブなタブのボーダーライン "list.focusForeground":"#0a0a0a", // リストの選択アイテムの背景 "list.focusBackground":"#c5c5c5", // リストの選択アイテムの背景 "list.hoverForeground":"#0a0a0a", // リストのカーソルホバーアイテムの背景 "list.hoverBackground":"#d6d6d6", // リストのカーソルホバーアイテムの背景 }, # TODO Highlight用設定 "todohighlight.keywords": [ "①", "②", "③", "④", "⑤", "⑥", "⑦", "⑧", "⑨", "※", "!", // { // "text": "※", // "color": "black", // "backgroundColor": "#d6cc00", // "overviewRulerColor": "grey" // }, ], "todohighlight.defaultStyle": { "color": "red", "backgroundColor": "#ffbf00", "border": "1px solid white", },

# pythonだけ自動整形ON "editor.formatOnSave": false, "[python]": { "editor.formatOnSave": true },

# 最大文字数位置にラインを表示
    "editor.rulers": [
        {"column": 110, "color": "#5f0000"},
    ],

除外ファイルの指定
対象ファイルより上のフォルダに? .gitignore ファイルを作成、以下の様に指定する
# 拡張子が.exeのファイルを除外する
*.exe
# Bin/binディレクトリとその中身を除外する
[Bb]in/
# 特定のディレクトリの中の特定の拡張子のファイルを除外する
out/*.log

2019年12月14日土曜日

tips

# google tips -------------------------------------------

# 本文に全てを含む
allintext:パソコン スマホ MAC

# 通常の検索に加えて、本文内での検索を指定
アプリ intext:アンドロイド

# ウェブサイトを指定
site:https://www.apple.com バッテリー交換

# ファイルの拡張子を指定
"TLS 1.3" filetype:pdf

# ソーシャルメディア名を指定
富士山 @twitter


# chrome tips --------------------------------------------------------

ショートカット
Ctrl + Shift + tab 前のタブに移動
Ctrl + Shift + d タブ上にあるページを一気にブックマーク
 Ctrl + p PDFに保存

# youtube Tips --------------------------------------------------------

ショートカット
shift + n 次の動画
shift + p 前の動画
スペース 再生・一時停止
5秒巻き戻し
5秒早送り
10秒巻き戻し J
10秒早送り L
動画の最初へ Home
動画の最後へ End
フルスクリーンの切り替え F
ミュートの切り替え M
1コマ進む .(一時停止した状態で)
1コマ戻る ,(一時停止した状態で)
スロー再生 <(Shift + ,)
倍速再生 >(Shift + . )
次の動画 shift + n
前の動画 shift + p


# Everything tips -----------------------------------------------------------

# 大文字小文字を識別
 case:regex:^GUI.py$

# 正規表現を使う
regex:\.ma$

# ファイルだけにマッチさせる
file:regex:\.ma$

# 指定フォルダ以下で検索
検索文字列 path:フォルダパス
 例1:.html path:R:\Firefox_ScrapBook\data
 例2:フォルダ以下のmaファイルを検索
    regex:file:.ma$ path:C:\users\Maya

# 親フォルダ+ファイル名で検索
.*\\フォルダパス\\action.py

# 適合パスの取得の例
Cドライブ以下で途中のフォルダ名に「onenote」がある「cache」フォルダ
^C.*\\onenote.*\\cache$

# 使い方の具体例
例:「Eドライブにある、ファイル名に「001」と「avi」のついたpngファイルを探したい」
検索窓に 「*.png e:\ 001 avi」 と入力。
Everythingでは、このように「ファイル名」「パス名」等々、複数の条件を半角スペースで追加して行く事で
目的のファイルを検索する事が可能です。(or検索したい場合は「 | 」で挟んでいく)


# ファイルやフォルダを検索対象から除外
メニューバー > 「ツール」 > 「オプション」 > 「除外」から
検索対象から外したいファイルやフォルダを追加して行きます。
AND検索、OR検索を上手く使えれば、この除外機能はあんまり使わなくて済む。

# ゴミ箱を除外する
オプションの除外項目で以下パスを直接入力で追加
C:\$RECYCLE.BIN\

# 検索履歴有効化
ツール>オプション>履歴>検索履歴を有効にする、をチェック

# skype Tips ----------------------------------------------------------

# 受け取ったデータ
C:\Users\ログイン名\AppData\Roaming\Skype\My Skype Received Files


# Win tips -------------------------------------------------------

# QTTabBarの注意
色々バージョン違いが存在するので注意。使ってるのは以下のやつ
http://qttabbar-ja.wikidot.com/qttabbar
インストールしても有効にならない(ツールバーが出な)場合は
Explorerのデフォルトメニューを表示してからそこの右クリック
メニューからQTを選択する

# IME ショートカット
[CTRL]+ [U]・・・・ひらがな
[CTRL]+ [I]・・・・全角カタカナ
[CTRL]+ [O]・・・・半角カタカナ
[CTRL]+ [P]・・・・全角英数

# アンケートフォーム
https://docs.google.com/forms/u/0/

# テンプフォルダを開く
エクスプローラで以下のパスを入力
%temp%

# Media Playerの関連付けを設定するには
コントロール パネル\プログラム\既定のプログラム\既定のプログラムを設定する\プログラムの関連付けを設定する

# 仮想デスクトップ
隣のデスクトップに移動 Windows + Ctrl + → or ←

# 指定時間後にシャットダウン/再起動
コマンドプロンプトを管理者権限で起動して以下のコマンドを実行
# 10秒後にシャットダウン
shutdown -s -t 10
# 10秒後再起動
shutdown -r -t 10

# 環境変数を設定する
・デスクトップのエクスプローラアイコン/コンテキストメニュー/プロパティ → システムの詳細設定/環境変数
・コンパネ/システム/システムの詳細設定/環境変数
・Win + Pause/システムの詳細設定/環境変数

# 規定のアプリを変更する方法
コントロール パネル\すべてのコントロール パネル項目\既定のプログラム\既定のプログラムを設定する

# ショートカット
 Win+Home アクティブウィンドウ以外を最小化
デスクトップ表示 Win + d
エクスプローラ Win + e
ウィンドウズの設定 Win + i
システム情報の表示 Win + Pause
Win+X→U→R 再起動
Win+X→U→U シャットダウン
Win+X→U→I サインアウト
新しいフォルダを作る Ctrl + Shift + n


# バッチ tips -------------------------------------------------------

コマンドプロンプトを最小化してコマンド実行、バッチ処理等
@echo off
cd /d %~dp0
:最小化状態で実行する
if not "%X_MIMIMIZED%"=="1" (
    set X_MIMIMIZED=1
    start /min cmd /c,"%~0" %*
    exit
)
:これ以下に必要な処理を書く
echo "最小化!"
c:\Python27\python c:\tmp_C\test.py


# wacom -----------------------------------------

筆圧が無効になった場合は、コンパネ>管理ツール>サービス
で、wacomアイテムのプロパティを開いて、サービスの状態>停止 → 開始
以上で直らない場合は、停止の後、スタートアップの種類>無効 → 適用
プロパティを開きなおして、スタートアップの種類>自動 → 適用 → サービスの状態>開始
OKボタンで閉じる
# 最初にペンタブのUSBをPCから抜いておかないと駄目な場合もあり


# エクセルTips excel tips -------------------------------------------------------

# 図形などのオブジェクトをマウスだけで他のオブジェクトの位置に合わせて配置する方法
https://excel-master.net/graphics/object-match-object/
「ページレイアウト」タブをクリック
「配置」をクリック
「図形の位置に合わせる」をクリック

# Excel自動保存ファイル
C:\Documents and Settings\ユーザー名\Application Data\Microsoft\Excel

# フローチャート
他の人がセルに直接フローを書いているのを見て、目から鱗が落ちました。
これなら検索も出来るし、矢印も真っ直ぐ引けるじゃな~い!ヤッター

スクロールの際に一部を固定
固定したい行、列の次のセルを選んで、表示タブ/ウィンドウ枠の固定

+ボタンで列を畳む
データタブ/グループ化

# ショートカット
Ctrl+PageUp/Down:シート移動
Ctrl+Space:列選択
Shift+Space:行選択
Shift+Space → Ctrl+c,Ctrl++:行全体をコピーして挿入


エクセルマクロ
○ファイル名の取得方法
=MID(CELL("filename"),SEARCH("[",CELL("filename"))+1, SEARCH("]",CELL("filename"))-SEARCH("[",CELL("filename"))-1)
○ファイルの保存場所の取得方法
=MID(CELL("filename",$A$1),1,FIND("[",CELL("filename",$A$1))-1)
○シート名の取得方法
=MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,31)


# プルダウンリストを作る
http://www.eurus.dti.ne.jp/~yoneyama/Excel/n-kis_list.htm
リストとして表示したいセル範囲を選択後、左上の名前ボックスにリスト名を入力
プルダウンリストを表示したいセルを選択して「データ」タブの「データ入力規則」をクリック
「設定」タブの入力値の種類をリストに変更。元の値に「=リスト名」を入力

定義した名前を削除したい場合は、「数式」タブの「名前の管理」をクリック。リストを選択して削除

# プルダウンで選択した要素によって背景色を変更する
ホームタブ/条件付き書式設定
新しいルール→数式を使用して~→「=$E1="OK"」等と入力→書式ボタン→背景色設定
適用先に「=$A:$F」等と入力→OKボタン
参考:https://www.google.co.jp/search?hl=ja&q=%E6%9D%A1%E4%BB%B6%E4%BB%98%E3%81%8D%E6%9B%B8%E5%BC%8F#hl=ja&q=%E6%9D%A1%E4%BB%B6%E4%BB%98%E3%81%8D%E6%9B%B8%E5%BC%8F+excel2007


2019年11月5日火曜日

kazamimi tips

LMB + ctrl + shift + alt
    //最前面固定
MMB + ctrl + shift + alt
    //最前面解除

// 対応ウィンドウ
MMB
    //閉じる
MMB + ctrl
    //最小化

// Vscode, Chrome, Firefox, サクラエディタ
MMB + ctrl
    //閉じる
MMB + ctrl + alt
    //最小化

// エクスプローラ ファイルリスト部分
MMB + alt
    //1つ上の階層に移動

// Maya メインウィンドウ以外
MMB + ctrl
    //閉じる

// Motionbuilder
MMB + ctrl
    //閉じる
MMB + ctrl + alt
    //最小化

// Screenpresso
MMB
    //閉じる