ショートプログラム

図形上を移動するシェイプ  Visio2003に対応していますVisio2007に対応しています

今回は、前回に引き続きアニメーション関係の話題です。(2007.9.21)
円のシェイプが、自由曲線上をなぞって移動します。

テンプレートファイルはmove.lzh(38.2kb)からダウンロードして下さい。

ダウンロードした圧縮ファイルは解凍し、適当なフォルダへ入れて下さい。

図形上を移動するシェイプ.vsdをVisioで開くと、なにやら落書きが出てきます。

落書きを間違ってUPした訳ではありません。

それでは、メニューの「ツール/マクロ/Module1/図形上を移動させる」を選択してみて下さい。

エラーが出たときは、落書きを左クリックで選択してから、もう一度「図形上を移動させる」を選択してみて下さい。
円のシェイプが落書きをなぞって動き出しましたか?

本題・・の前に、ちょっと寄り道

本題の前にちょっと寄り道してみましょう。
最初からある自由曲線を「切り取り」で消して、自由曲線ツールを使って自由曲線を書いてみます。

そして、メニューの「ツール/マクロ/Module1/図形上を移動させる」を選択してみて下さい。
今書いた自由曲線の上を、円のシェイプがなぞって移動します。

自由曲線が複数ある場合は、選択している方の自由曲線をなぞって移動します。

本題

自由曲線のシェイプシートの「Geometry1」という所にあるNURBSという値が、自由曲線の持つ曲線の情報です。

これは、曲線が通る座標を一つずつ記録したものではなく、無数の頂点の座標を記録したものです。

この情報から自由曲線が通る座標を計算し、その座標を円のシェイプの座標として与えてやれば、円のシェイプは自由曲線の上をなぞって移動していくわけです。

短い説明ですが、それだけ簡単な仕組みで動いていた、ということです。

マクロの概要

本題で仕組みを説明しましたので、大体わかると思います。
今回のマクロはそれ自体が短いですね。

NURBSの値の要素の数だけ、FOR文で次のことを繰り返しています。

  1. 曲線の一部の情報を、NURBSから取得する。
  2. その情報から、曲線が通る座標を配列xyArrayに取得する。
  3. 配列xyArrayに得られた座標を、ウェイトをかけながら円のシェイプの図形情報PinX,PinYに書き込む。

これで、円のシェイプが自由曲線の上をなぞって移動します。(移動しているように見えます。)

付録

同じ仕組みを使って綺麗に作った例を紹介します。
car.lzh(45.9kb)

このページの先頭へ