Microsoft のVisioで図を描くとして、オブジェクトにテキストを載せたとします。
通常、オブジェクトを回転させたらテキスト部分も一緒に回転するけど、それを自動で水平に保つやり方。
だいぶ前にそういう動作をする図を見て、少々ヘルプなど見てもどうやるかわからなかったのでほっといたんだけど、VISIOの解説書(MSのサイトを分かり易く再編) 見ながらシェイプシートのいじり方を見ていたら分かった。
ちなみに試したVisioは2003、資料は2000用だった、多分2007でも似たようなもんだろう。
追記:2007でも2010でもOKでした
デフォルトの動作を確認

矢印を作ってテキストを乗っける、これに角度をつけていくと、

このくらいなら見れる、が、もう少し角度をつけると...

読みづらっ。
こういうのは 「テキスト ブロック ツール」を使ってテキスト部分だけ回転してあげればいいんだけど、

読みやすくすることはできたが、毎回調整するのも面倒。
これをシェイプシートを調整することで、矢印を少々回転させても、テキストが水平方向に保たれるようにできる。
シェイプシートを開く
たまたま見つけたVISIOの解説書を読んで、Visioはドロー系で、オブジェクトはベクタで管理しているというのを認識した。そういえばそうなんだよなー。
テンプレ使って、適当に線引いてりゃそれなりの図が描ける、GUIが楽なので普段全然意識しなかったな。
で、オブジェクト情報は シェイプシート というのに保管されていると。
調整したいオブジェクトを選択して、ファイルメニューからシェイプシートを開く。


結構いじり甲斐のありそうなものが出てきたな。
シェイプシートで、テキスト領域の動作を変更する
で、シェイプシート内の「Text Transform」セクションの 「TxtAngle」という行がテキストブロックの向きを決定している。
しかし初期状態では「Text Transform」セクションが表示されていなかったり(※)するので、セクションを手動で追加する。
※ 「テキスト ブロック ツール」で一度でも角度を調節していれば表示されている。
シェイプシートの適当なところで右クリック、操作したいセクションを挿入する。


ここでは「Text Transform」やね。

「TxtAngle」があることが確認できる。
ここを変更することでテキストブロックの角度を調節することができるんだが...
テキストブロックは、相対座標で管理されている
"TxtAngle=0" なら、これを保護して常に "0" になるようにすればいいんじゃないかと思いきやそうではない。
実際に矢印を回転させるとわかるけど、ここは0から動かない。オブジェクトのベースからの相対的な角度という扱いなので、ベースが斜めなら斜めに表示される。
GUIからテキストブロックの回転を保護しても、ベースにつられてくるくる回るのはこういう仕組みだからとここでやっと気付いた。。もしかして常識なのかもしれないが、数字で見るまでは気付かないもんだ。
ではどうすりゃいいかってのが、『ベースが x度 傾いたらテキストは反対向きにx度( -x度 )傾ける。』というやりかた。
このベースの角度に対応するのが、「Shape Transform」の「Angle」、これを利用て常に角度を自動調整させないと、テキスト水平の野望は達成できない。
なるほどねー、"=GUARD(0 deg)" とかではできないわけだ。
テキストブロックの角度を、シェイプの角度に対応させて反対に傾ける
「Shape Transform」の「Angle」、これはそのまま変数として利用できるので「TxtAngle」に突っ込む。


これまでを踏まえて、「TxtAngle」 に"-Angle" と入力。これでテキストブロックはオブジェクトと逆向きに回転してくれ、結果的に水平に表示される。
他の要素を評価して、左右反転にも対応
折角なのでちょっと応用する、"TxtAngle = -Angle" のまま、左右反転してみよう。

(ノ∀`)アチャー
左右反転したということで、"-Angle"では反対の反対で2倍なのだ。
シェイプシートでみると、『オブジェクトを左右反転させる=「Shape Transform」の「FlipY」フラグTrue』 ということになっている。

ならこれをチェックさせて、TxtAngleを調整させればOKだというわけで。

適当に入れたIF文だったが...

全く普通に動作してくれた、もっと考慮すべき条件はいろいろあると思うけど、大体これの応用でいけそうだ。
コピペ用のテキストはこちら。
IF(FlipY,Angle,-Angle)
Visioの情報は探しにくい?
VISIOの解説書 の序文にもあるが、ここらは全部MSの公開しているドキュメントに載っているはずなんだけど、えらい探しにくい。
昔調べた時は、全然わかんなかったもんなぁ。
ということで、この記事も間接的にVisioの情報にたどり着くヒントになったら良いなということも込めて作成。
よりよいやり方は公式参照。
0 件のコメント:
コメントを投稿