バージョン2.5x時代のように3桁までに丸め込みたいという話をされたので色々試してみた
一括変換なら楽なのだけれど、個別に値を調整したいらしいので
クリップボード中の数値を丸め込む方式で試作。
import bpy class RoundingClipboard(bpy.types.Operator): bl_idname = "text.roundclip" bl_label = "round_data_on_clipboard" def execute(self, context): #bpy.ops.text.copy() #クリップボードデータの取得 clipboard = context.window_manager.clipboard try: if isinstance(clipboard, float): rounded = round( clipboard,3) context.window_manager.clipboard = rounded #bpy.ops.text.paste() else: rounded = str( round( float(clipboard), 3) ) context.window_manager.clipboard = rounded print(rounded) #bpy.ops.text.paste() except: pass return {'FINISHED'} def register(): bpy.utils.register_module(__name__) def unregister(): bpy.utils.unregister_module(__name__) if __name__ == "__main__": #unregister() register()
Blenderは数値をコピーしても文字列として内部で保持しているらしい
Phthonの文字列を数値に変換できるかはstr.isdigit()で調べれるということだけど
手元の環境ではfloat値の場合もFalseが返されてしまうので文字列チェックはなし。
本当はパネル上で動くようにオペレーターを割り当てたり
パネル上でのショートカットで動くようにしたかったけれど現状ではやり方が分からなくて現状では未完成だけれど
Blenderでクリップボードの中身を制御する例としてアップしておきます
0 件のコメント:
コメントを投稿