『図形の秘密基地』 =>

norihito4 の・・・

「 MS Office 『図形』 の秘密基地【VML編】」


『中空図形』・『パターン図形』 を自作する?!
 
 このページは、私の 「変な趣味」 の一つである、VML を利用した自作図形(オートシェイプ)を紹介します。
 まあ、特に需要のないことをけっこう本気でやってみる 「大人の自由研究」 ですね。
 

■はじめに
 
 MS Office (Excel / Word / Powerpoint) の図形機能を使っていて、ちょっと作図や表現が面倒・困難なことがあります。
 
 
 1. 中空を持つ図形表現
 
以下に MS Office における中空図形の作図方法を中空の数別に記します。
 
@ 中空1つ:「ドーナツ」や「フレーム」等の図形を「頂点の編集」で変形して作成。
A 中空2つ:「禁止」図形を「頂点の編集」で変形して作成する
B 中空3つ以上:???
 
@〜Bとも、輪郭の無い複数の図形で作成し、最後に直線や曲線で輪郭を付ける(さらにグループ化する)方法もあります。 
@〜Bとも、「穴の中に見える図を前面に描いて中空図形に見立てる」といった方法もありますが、中空図形とその背後の図形の位置関係を変更するとき、穴の中の図を描き直さなければなりません。
@〜Bとも、MS Powerpoint ならば、素地の図形とくり抜く図形を一緒に選択して、「描画ツール(表示)」メニューから「図形の結合」→「型抜き/合成」機能(または「切り出し」機能)で可能です。 これが最も効率的で、型抜きされた図形はフリーフォームになります。 ただし、元に戻せないので、調整は作り直しか頂点の編集で行います。
 
 2. 輪郭の有り無しが混在する図形
 
@ 切れ目、省略を表現する図形
A 半無限を表現する図形
B 複数つなげて使うパターン図形
 
いずれも、「輪郭の無い図形上の必要箇所に直線・曲線等で輪郭を描く」といった方法で作画可能ですが複雑なものを作成するとき手間がかかります。
 
 
 
 
 
 
 
■VMLで作る
 
私の解決方法は、そういった図形でよく使用するものを 「VML の path 命令で作っておく」 です。
手順は… 
 
@ メモ帳等のテキストエディタを使ってVMLのpath命令等で新たな部品のコードを作成しHTMLファイルとして保存
A @で作ったHTMLファイルをExcelで開く
B ワークシート上に現れた図形の属性を調整して使用する
 
VML は Office xp/2003 時代に図形(当時は「オートシェイプ」)を描画する言語でしたが、Office 2007 以降は DrawingML という言語で図形を描いているようです。
 と言っても、VML 図形も「ある程度」許容してくれるようです。
 「ある程度」と言ったのは、Office xp/2003 では使えていた自作図形の調整ハンドル '' が、 2007 以降では全く無視されてしまったからです。
 
正式な図形としての登録はおそらくできません。 クリップアートのようになってしまいます。
  なので、よく使う図形のストック専用のシートやファイルを作ることを推奨します。
 

 
 例を一つ紹介します。
 
 下図は VML で作成した 4×4 列の 60°丸穴パンチングメタル(performed metal sheet) の図形です。
 上下左右の境界は 2つ 3つ と、つなげて使えるように輪郭線をつけてません。
 
 
 
 
 
 輪郭線の幅を変更しても、もともと輪郭線の無い箇所には輪郭線は発生しません。(下図の右図形)
 
 
 
 
 
 この図形の VML コードは以下のような感じです。
 
 
 
 
 
 このコードを html 内で <p> と </p> の間に記述し、その html ファイルを Excel 等で開くと図形が出現します。
 VML の記述方法等はネット上にあちごち存在しますのでそちらを参照願います。
 
 
 残念ながら、この方法で作った図形(オートシェイプ)は MS Office 本来の図形と違い、3D 表現機能に完全には対応していません。
 下図に示すように、左の禁止記号の中空部分が面取りに対応しているのに対し、本図形は周囲の4辺しか面取りに対応していない上にベラッペラであることが分かります。
 
VML で作るとダメという訳ではありません。「塗り潰しあり・枠線なし」図形と「塗り潰しなし・枠線あり」図形を1度に描画して、輪郭線有り無しの混在図形を作っているため、このようなことが起こります。
 VML でも普通に作れば、「フレーム」・「ドーナツ」・「禁止記号」などの中空「基本図形」や、 Powerpoint の「型抜き/合成」・「切り抜き」で作る中空フリーフォームのように中空部の輪郭も外側の輪郭と同様に 3D 機能に対応します。
 
 
 
 
 不幸中の幸いと言うか、一応、3D 機能(面取り)を適用しても、中空部分の透過は維持されています。ペラッペラですけど。(下図参照)
 
 
 
 
 
 3D 機能(奥行き)を適用しても、同様にペラッペラです。(下図参照)
 
 
 
 
これらの欠点(?)を逆手にとって、この手の VML 図形の、MS Office 「図形」の 3D 表現への応用を考えてみました。
   → 『図形の秘密基地【3D表現&VML編】』
 

 
おすそわけサンプル
 
 コッパズカシイですが、私の自作図形(オートシェイプ)を MS Excel ファイルで提供いたします。
 今後も何か作りたくなったら作成して UP していこうかなと、ぼんやり思います。
 
 
【1】 サンプル1 「パンチングメタル」 performed.xlsx
 
 
 
 
【2】 サンプル2 「配管」 plumbing.xlsx
 
 
 

 VML 図形(オートシェイプ)についてのさらに詳しい説明は 『オートシェイプの秘密基地』 を参照願います。
 これは、MS Office xp/2003 + Frontpage2003 で VML による調整ハンドル '' 付きオリジナル図形を作る方法を記したものですが、
MS Office 2007 以降、図形の記述が VML (オートシェイプ) から DrowingML (図形) に変更され、VML も互換のためにある程度許容してくれるものの、
調整ハンドル '' が無視されてしまうため、今ではほとんど意味のない研究になってしまいました。
 とはいえ、本 HP で、 VML 図形(オートシェイプ)を自作したいと思った方にはある程度参考になるとは思います。
 

このサイトは常に工事中のようなものです。
norihito4の「秘密基地」
施工者 : norihito4(お笑いエンジニア)

改版メモ
2016/01/21 : 訂正・追記
2015/09/18 : 初版