また騙された...
はい、日本に何人居るかわからないIllustratorSDK使用者のためのブログです。
その他、大多数の皆様、おやすみなさい
Illustrator内部には、ユニーク(一意)なID(AIUIDRef)があり、
それをArtに設定して使用することができます。
で、ですね、そのIDの参照(AIUIDREFRef)なんかも持つことが出来て、
例えば、
「プラグインで、2つのArtを関連付け、1つのArtが変更された、場合に他方のArtも変更する」
なんて事をしたい場合に、それぞれのArtにIDを設定します。
で、さらに、お互いのIDの参照をそれぞれに持たしておくわけですね。
あとは、kAIArtSelectionChangedNotifierが飛んできたときに、
選択Art内に、対象のArtがあった場合、自身に設定した参照から、
他方のArtを探して、そちらも変更するように実装すればよいと。
ちなみに、ちゃんとIDの参照からArtを探してくれるAPI
(AIUIDUtilsSuite::GetReferencedArt)も用意されてるわけですよ。
うわーーーー、なんて便利なんでしょう!!!
と、思ってはいけません...
このIDの参照ですが、対象のArtを移動、Undo、移動とやってると、
内部で、おかしくなるようで、AIUIDUtilsSuite::GetReferencedArtが正しく動かなくなります。
で、さらにですね。
AIUIDUtilsSuite::GetReferencedArtが使えないなら、
ツリー構造を辿って、自力でArtを探せばよいかと思ってたんですけど、
使って確認してると、IDの参照(AIUIDREFRef)が存在しないIDをさしてたりするんですね...
で、AIUIDRef、AIUIDREFRefを使って、Undoする動作を含め、
Illustratorを動作させ続けると、どうやっても、落ちます...
結論:
「AIUIDRef、AIUIDREFRefは使うな」
その他、大多数の皆様、おやすみなさい
Illustrator内部には、ユニーク(一意)なID(AIUIDRef)があり、
それをArtに設定して使用することができます。
で、ですね、そのIDの参照(AIUIDREFRef)なんかも持つことが出来て、
例えば、
「プラグインで、2つのArtを関連付け、1つのArtが変更された、場合に他方のArtも変更する」
なんて事をしたい場合に、それぞれのArtにIDを設定します。
で、さらに、お互いのIDの参照をそれぞれに持たしておくわけですね。
あとは、kAIArtSelectionChangedNotifierが飛んできたときに、
選択Art内に、対象のArtがあった場合、自身に設定した参照から、
他方のArtを探して、そちらも変更するように実装すればよいと。
ちなみに、ちゃんとIDの参照からArtを探してくれるAPI
(AIUIDUtilsSuite::GetReferencedArt)も用意されてるわけですよ。
うわーーーー、なんて便利なんでしょう!!!
と、思ってはいけません...
このIDの参照ですが、対象のArtを移動、Undo、移動とやってると、
内部で、おかしくなるようで、AIUIDUtilsSuite::GetReferencedArtが正しく動かなくなります。
で、さらにですね。
AIUIDUtilsSuite::GetReferencedArtが使えないなら、
ツリー構造を辿って、自力でArtを探せばよいかと思ってたんですけど、
使って確認してると、IDの参照(AIUIDREFRef)が存在しないIDをさしてたりするんですね...
で、AIUIDRef、AIUIDREFRefを使って、Undoする動作を含め、
Illustratorを動作させ続けると、どうやっても、落ちます...
結論:
「AIUIDRef、AIUIDREFRefは使うな」
Comments