Metasequoia BBS

| New message | Normal | Tree |
Status
Tag
Keyword
[638] / oga
[From old BBS] Response
プラグインに関してなのですが
基本的に面、辺、点、いずれかの選択ツールでありながら、
選択と同時に設定されたプラグインを実行するコマンド(ツール?)
てのは実現できないものなのでしょうか。
要はメタセコイア上でのマウスクリックに同期して何かしたいと言う事なんです。

実際には選択するたびにプラグインに設定したキーショートカットを押せば済むだけなので、その一手間を減らせるだけなのですが、
あと、それで新しく設定したボタンを複数、どこかに並べられると更に嬉しいんです。
ついでに、ドラッグ連続選択ツールでも同じこと(選択部分が追加される度にプラグイン実行)ができるとかなり応用性が広がるんじゃないかとな。

既出でしたらスイマセン。
2006-03-19 20:34
[987] Re: / oga
>基本的に面、辺、点、いずれかの選択ツールでありながら、
>選択と同時に設定されたプラグインを実行するコマンド(ツール?)
>てのは実現できないものなのでしょうか。

STATIONでMQEVENT_OBJECT_SELECTEDイベントを捕まえる事である程度実現できるようになりました、ありがとうございます

ただしコメントで
>この関数内ではオブジェクトの内容・選択状態を更に変更してはいけません。
>※アンドゥが更新される前に呼び出されます。
とありましたが、今の所とりあえず、ここで頂点の追加、面の生成、頂点色の変更、選択のClearをやってみましたが特に不具合はなく、Undoもきちんと動作してます
ブラシ選択だけは選択をキャンセルした場合何度でも再選択しようとするようで少し挙動がわからなくなります
>この関数内ではオブジェクトの内容・選択状態を更に変更してはいけません。
これに従うなら別オブジェクトや描画用の直接編集できないオブジェクトを用意して、適宜通常のオブジェクトに変換確定することで実現できますけど
これはどうしてもやってはいけないものなのですか?
あるいは他の手段で、選択や編集の度にプラグインからオブジェクトの内容や選択状態を変更する、を実現するべきなのでしょうか?
2006-10-30 10:10
[992] Re: Re: / O.Mizno
>>この関数内ではオブジェクトの内容・選択状態を更に変更してはいけません。
>これに従うなら別オブジェクトや描画用の直接編集できないオブジェクトを用意して、適宜通常のオブジェクトに変換確定することで実現できますけど
>これはどうしてもやってはいけないものなのですか?

変更通知関数内でさらに変更を行うのは、常駐型プラグインが一つだけの場合は今のところは特に何の問題もなく動作すると思います。

ただ、常駐型プラグインが例えば次のような2つがある場合、
・プラグインAは選択情報を元に頂点の位置を操作する
・プラグインBは頂点の位置情報を元に選択状態を変更する
「選択された」「頂点位置が変更された」後の挙動は果たしてどうなるでしょうか?

このような相反する挙動に対して矛盾が生じないよう何らかの対策が必要となるのですが、今のところ良い実装方法が見つからないので、とりあえず変更しないようにと注意書きをしているということです。
もしこの問題について何かご意見・ご提案などありましたらお願いします。
2006-10-31 11:03
[996] Re: Re: Re: / oga
>変更通知関数内でさらに変更を行うのは、常駐型プラグインが一つだけの場合は今のところは特に何の問題もなく動作すると思います。
>ただ、常駐型プラグインが例えば次のような2つがある場合…
>このような相反する挙動に対して矛盾が生じないよう何らかの対策が必要となるのですが、

お返事ありがとうございます。
全くその通りで、SELECTED、MODIFIEDのイベントは監視のみに限定して、そこで変更すべきではないと思い至りました。

自分は今、ブラシ選択ツールからSELECTEDイベントをつかまえて連続的に面を張るSTATIONプラグインを作っていた所なのですが、
SELECTEDイベントがつかまえられるからSTATIONにしてるだけで、全く常駐型プラグインではないですが、
選択状態の変更や面貼りはせず後でまとめて出力すれば、副作用も出さずに済み、自分の用途は既に十分満たせていると思います。


>もしこの問題について何かご意見・ご提案などありましたらお願いします。

自分が欲しいのは、マウス操作にあわせて任意のプラグインを連続的に呼び出す仕組みでして、
常駐型プラグインについて意見にはなりませんが、

SELECTEDイベントは常駐型プラグインが状態監視のみに使うものとしてそのままに、
それより前に呼び出される、変更や編集用のイベントが別にあったら如何でしょうか。
そのイベントは引数に、処理対象の面や頂点(選択済みの面や点ではなく、例えば今から選択に追加しようとしている面や点)、しようとしている処理内容(例えば選択追加)を格納していて、

Show more...
2006-11-01 11:50