ショートプログラム

図形上を移動するシェイプ  
Visio2019に対応していますVisio2016に対応していますVisio2013に対応しています

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

テンプレートファイルはLineMove.zip(48.7KB)からダウンロードして下さい。

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

図形上を移動するシェイプ.vsdm をVisioで開くと、なにやら落書きが出てきます。
落書きを間違って公開した訳ではありません。


それでは、メニューの「開発」「マクロ」を選択し表示されたマクロウィンドウから「図形上を移動するシェイプ.modSub.Animation_Start」を選択し「実行」をクリックして下さい。


円のシェイプが落書きの線をなぞって動き出しましたか?

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

本題の前にちょっと寄り道してみましょう。
メニューの「ホーム」から「自在曲線」を選択し曲線を書いてみます。

作図した曲線に名前を設定します。
作図したシェイプを選択してメニューから「開発」「図形名」を選択し、表示されたダイアログで「名前」に「TargetShape」を入力して「OK」をクリックします。

また、既に作図されていた線を選択して同様の手順で「TargetShape_BK」など別の名前へ変更します。面倒な場合は、線を削除しても良いです。

図形名を変更した後で、先ほどと同じ手順でマクロを実行してみて下さい。
今書いた曲線の上を、円のシェイプがなぞって移動します。

あくまでも曲線の名前が「TargetShape」の図形をなぞって移動するプログラムですので、「TargetShape」という図形が一つである必要がありますのでご注意ください。。

本題

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

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

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

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

マクロの概要

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

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

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

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

付録

同じ仕組みを使って綺麗に作った例を紹介します。
CarAnimation.zip(47.5KB)

このページの先頭へ