閉じた図形自身が重なっている部分の塗りつぶし |
- 01: 名前:damia投稿日:2007/11/16(金) 17:18
- visio2003を使用しています。
CADから変換した図形の中に、閉じた図形自身が
重なっているものがあります。
これを塗りつぶしたいのですが、重なった部分がうまく
塗りつぶされません。
フレキシブルで幅のあるテープを使って、よじれないように、
英小文字筆記体「L」の形を作ったとします。
この「テープ」を塗りつぶすような操作をしたいのですが、
「テープ」が重なっている部分が塗りつぶされません。
「テープ」に囲まれた長円部を塗りつぶさず、重なった部分を
塗りつぶすようにする簡単な方法はないでしょうか。
今は、一度「図形」→「合成操作」→「切り出し」を行って、「テープ」に
囲まれた部分の塗りつぶしを解除するということをしていますが、
こういう箇所が大量にあって……。
- 02: 名前:yoda投稿日:2007/11/16(金) 19:43
- 合成捜査のメニューの下の方にある、結合(J)ではどうですか?
- 03: 名前:yoda投稿日:2007/11/16(金) 19:51
- 図形のシェイプシートを開くと、Fil Format というセクションがあります。
その中のFillForegndTransセルの値は、普通ゼロ%になっていますが、
これを、たとえば50%に変え、図形を重ねると、重なった部分の色が
濃くなります。
- 04: 名前:yoda投稿日:2007/11/16(金) 20:01
- こんな感じになります。
http://www.mster.co.jp/visiosquare/cgi-bin/cbbs/file/1195210746.lzh [source] [check]
- 05: 名前:damia投稿日:2007/11/19(月) 10:15
- ありがとうございます。でもちょっと違うのです。
┌──┐あるCADが出力した10個の座標値を元に
│┌┐│左のような閉じた図形を描いて塗りつぶし
└┘││ます。
┌──┘│左図の場合はvisio上でもまったく問題
└───┘ありません。
┌──┐ところが、同じ10個の座標値が左図のような
│┌┐│図形を構成することがあります。座標値を
││││出力したCADでは、中央やや左下の
┌┼┼┘│┼┼
└┼┼─┘┼┼の内側も塗りつぶされているものとして
└┘ 扱うことになっていますが、visioでは、
この部分は塗りつぶされません。
┌──┐座標値を解析して、最初から左図のように
│┌┐│描画させれば良い訳ではありますが、これは
││││VBAで作るにしてもなかなか大変そうです。
┌┘└┘│元の10個の座標値で描画したまま、
└┐┌─┘┼┼
└┘ ┼┼の内側も塗りつぶすような方法はない
ものでしょうか。
- 06: 名前:yoda投稿日:2007/11/19(月) 11:37
- これでは、どうですか?
手間はだいぶかかりますが、図形の数がおおいなら、マクロを
つくることも、考えた方がよいかもしれませんね。
http://www.mster.co.jp/visiosquare/cgi-bin/cbbs/file/1195439715.lzh [source] [check]
- 07: 名前:damia投稿日:2007/11/19(月) 12:14
- ありがとうございます。
やはり、この、最初に書いたような方法しかないですか。
マクロを作るとなると、「中心の正方形を削除」するときに、
中心の正方形をどう選択するかで悩みそう……。
もう少し、悩んでみます。
- 08: 名前:yoda投稿日:2007/11/19(月) 13:56
- どの方向を見ても、白いところがない図形を、
消せばよいのではないかと思います。
- 09: 名前:damia投稿日:2007/11/19(月) 17:29
- 目で見て判断して消す図形を選択するならそうなのですが、
CADからの読み込み時に自動で行いたいので……。
切り出しを行った後、削除すべき図形を自動的に判定することは
可能でしょうか。
05では、二重に重なっている例でしたが、三重、四重と
重なることもありえるので……。
閉じた図形自身が重なっている場合、xorではなくorで
塗りつぶすかどうかを決めてくれるようなオプションなどは、
ないものでしょうか。
- 10: 名前:yoda投稿日:2007/11/19(月) 19:51
- こうすれば、中心の正方形を消さなくてもできるのでは、ないでしょうか。
http://www.mster.co.jp/visiosquare/cgi-bin/cbbs/file/1195469374.lzh [source] [check]
- 11: 名前:yoda投稿日:2007/11/19(月) 20:41
- >閉じた図形自身が重なっている場合、xorではなくorで
>塗りつぶすかどうかを決めてくれるようなオプションなどは、
>ないものでしょうか。
私も、そういうのないかなと思って、探したのですが、
Visioには、なさそうでした。
- 12: 名前:visGeek投稿日:2007/11/20(火) 21:22
- これでどうでしょうか。
http://www.mster.co.jp/visiosquare/cgi-bin/cbbs/file/1195561260.lzh [source] [check]
- 13: 名前:yoda投稿日:2007/11/22(木) 21:04
- Visioの塗りつぶしのアルゴリズムは、最初に出会った境界から塗り始め
次に出会った境界で塗り終わる、というような方法のようですので、
自分自身の図形が重なり合ったところを、白抜きにしてしまうようです。
これは、VBAのSpatialNeighborsプロパティでも、同様のようです。
そこで、自分自身との交わりを、白ぬきにしてしまうことを、避けるには、
別のアルゴリズムを使って、塗りつぶす必要があります。
図形の外形線を、シェイプシートのGeometryセクションで見ると、
また、新しくアップロードBBSにアップした図
http://www.mster.co.jp/visiosquare/cgi-bin/cbbs/file/1195732259.png [source] [check]
のように、外形線に方向性がありますから、このことを利用した方法で、
ユーザー独自にラスターを引いて、塗りつぶしをする、そのような方法を
考える必要があるような気がいたします。
- 14: 名前:yoda投稿日:2007/11/23(金) 09:11
- 上の図がさらに複雑に絡み合うと、もう、一筋縄では、ゆかない
ようにみえます。
下のURLのサイトにも、ちょっと書いてありますが、
http://www.hyuki.com/yukiwiki/wiki.cgi?VectorDrawing [source] [check]
主題のように、自分自身に交わる図形のことを、自己交差する図形
というようです。そして、自己交差図形は、自己交差しない、
いくつかの図形に分割して、塗りつぶしを行うようです。
そういうアルゴリズムは、多分Visioでは、採用していないでしょうから、
そういうアルゴリズムを採用しているソフト(あるかどうか知りません)
に持っていって、塗りつぶしをする必要があるのかも、知れませんね。
質問者様のご質問にあった、集合論演算の機能があったとしても、
自己交差図形には、多分、適用できないでしょう。
|
|