127: 動的コネクタの頂点のX,Y指定 |
全レス ■ ▼ ▲
|
- 01: 名前:yuka投稿日:2006/03/23(木) 11:56
- ログ検索をしてみたのですが、見当たらなかったので
投稿しました。VISIO初心者のvisio2000+vb6です。
やりたいことは、
@動的コネクタをドロップ。
A頂点を追加する。
B始点、中間点、終点のXY座標を指定する。
です。
試行錯誤しながらA頂点を追加するところまでは
できたのですが、頂点を追加すると始点と終点の位置が
ずれてしまいます。
また黒い線を引きたいのですが、うまく引けません。
そしてBXY座標の指定の仕方が
よくわかりません。
うまく説明できないので、プログラムを載せますね。
’動的コネクタをドロップ
Set vStencil = Application.Documents.OpenEx("基本フローチャート.vss", visOpenDocked)
Set vConnectorMaster = vStencil.Masters("動的コネクタ")
Set shpObj = ActivePage.Drop(vConnectorMaster, 20 / 25.4, 20 / 25.4)
’始点と終点の位置を指定
shpObj.Cells("BeginX").Formula = "100mm"
shpObj.Cells("BeginY").Formula = "100mm"
shpObj.Cells("EndX").Formula = "140mm"
shpObj.Cells("EndY").Formula = "140mm"
’指定の方法、あってますでしょうか??
’Aセクションに行の追加 頂点を追加する
For i = 1 To 4
shpObj.AddRow visSectionFirstComponent + "0", visRowLast, visTagLineTo
Next i
’Bここで頂点のXY座標を指定したいのですが
’XYにwidthを使わずに直接値を指定することはできないのでしょうか??
shpObj.CellsSRC(visSectionFirstComponent, visRowVertex + 1, visX).Formula = "width * 0.3"
shpObj.CellsSRC(visSectionFirstComponent, visRowVertex + 1, visY).Formula = "width * 0"
shpObj.CellsSRC(visSectionFirstComponent, visRowVertex + 2, visX).Formula = "width * 0.3"
shpObj.CellsSRC(visSectionFirstComponent, visRowVertex + 2, visY).Formula = "width * 0.3"
shpObj.CellsSRC(visSectionFirstComponent, visRowVertex + 3, visX).Formula = "width * 0.6"
shpObj.CellsSRC(visSectionFirstComponent, visRowVertex + 3, visY).Formula = "width * 0.3"
以上、何か良い方法がございましたら
宜しくお願い致します。
- 02: 名前:M1号投稿日:2006/03/23(木) 13:18
- >Bここで頂点のXY座標を指定したいのですが
ここでブレークしましたが、始点終点はズレてはいませんでした。
>また黒い線を引きたいのですが、うまく引けません。
下から右上(矢印付)にL字型のシェイプですよね?
>’XYにwidthを使わずに直接値を指定することはできないのでしょうか??
単位をつけなければインチになりますが直接値を入れることはできますよ。
- 03: 名前:yuka投稿日:2006/03/23(木) 15:38
- 早速のご回答ありがとうございます。
>>Bここで頂点のXY座標を指定したいのですが
>ここでブレークしましたが、始点終点はズレてはいませんでした。
うまく説明できずにすみません。
BeginX、EndXなどの値は変わっていないのですが
図面上の図が指定した位置からズレてしまっているようなんです。
また頂点を追加すると三角形のような図が表示されます。
>>また黒い線を引きたいのですが、うまく引けません。
>下から右上(矢印付)にL字型のシェイプですよね?
そうですね。
頂点を追加すると、やりたいこととは違う動きを
してしまうようです。
>>’XYにwidthを使わずに直接値を指定することはできないのでしょうか??
>単位をつけなければインチになりますが直接値を入れることはできますよ。
ホントですか??
例えば、下図のような図を描く際に、
コネクタの頂点のXYを指定するには
どのようにすれば宜しいでしょうか?
_
|_|
|
| ̄
| ̄
| ̄|
 ̄
- 04: 名前:yuka投稿日:2006/03/23(木) 16:06
- 図形が正しく表示できませんでした。
すみませんでした。
こちらの方へ添付させていただきました。
http://www.mster.co.jp/visiosquare/cgi-bin/cbbs/cbbs.cgi [source] [check]
図のように階段状に頂点を指定していきたい場合、
どのようにすれば宜しいでしょうか?
宜しくお願い致します。
- 05: 名前:yoda投稿日:2006/03/23(木) 20:22
- 横入りですみませんが、yukaさんの言う頂点を追加しようと、手動で
ダイナミックコネクタのシェイプシートを開き、Geometry1セクションに、
行の挿入を試したのですが、拒否されました。
みたところ、プロテクトがかかっているわけでもないのに、なぜでしょう?
アドインかなにかのイベントで監視しているのでしょうか?
しかし、図面の画面で、コネクタを変形すると、自動的に行が挿入され
ますし、マクロの記録で撮ったマクロを再実行すると、そのとおりには
ならないにしても、一応階段状にはなります。何じゃこれ?
- 06: 名前:yoda投稿日:2006/03/23(木) 20:50
- >マクロの記録で撮ったマクロを再実行すると、そのとおりには
>ならないにしても、一応階段状にはなります。
しっかり調べてみると、これは間違いで、記録したマクロではだめです。
また、別に作成したマクロでも、AddRowメソッドは、全く受け付けない
ようです。ということは、図面の画面でしたように、マクロでもしないと
いけないということでしょうか?たとえば、コントロールポイントを移動
するとか。
- 07: 名前:yoda投稿日:2006/03/23(木) 21:01
- ダイナミックコネクタでは、行の挿入はできないので、他のコネクタ
を使えばよいでしょう。「Visioエキストラ」の中の「コネクタ」ステンシルに、
昔のコネクタがありますから、その中の、ダイナミックでないものに対して
AddRowメソッドを実行すれば、良いかもしれません。
- 08: 名前:M1号投稿日:2006/03/24(金) 09:38
- 動的コネクタはVisio の内部関数を使ってダイナミックに座標計算しているので
自分で思ったような形状には整形できないようです。
再計算を保留させて座標を指定しても保留解除後に勝手に変形してしまうようです。
- 09: 名前:yuka投稿日:2006/03/24(金) 10:37
- yodaさま、M1号さまご回答ありがとうございます。
私もいろいろ試してみましたが、やはり思い通りの形には
ならないようですね・・・。
動的コネクタによる階段状の表示はあきらめたいと思います。
いろいろとありがとうございました!
- 10: 名前:削除されました投稿日:削除されました
- 削除されました
■トップに戻る リロード 単独スレ表示
| |