- 01: 名前:SH投稿日:2006/09/12(火) 10:05
- 線の頂点の取得で、相対座標では値の取得が出来ますが、
絶対座標での取得が出来ません。
始点、終点は絶対座標で取得できますが、
頂点が絶対座標では取得できません。
何か良い方法はありませんか。お願いします。
- 03: 名前:SH投稿日:2006/09/12(火) 10:52
- 説明不足ですみません。
コネクタの頂点の事です。
- 04: 名前:yoda投稿日:2006/09/12(火) 11:25
- 一度シェイプシートのSvratchセルで、
PAR 関数を使って、ページ上の点に変換し、
その値を、読めばよいと思います。
- 05: 名前:S投稿日:2006/09/12(火) 11:43
- Svratchセルが見当たりません。
具体的にどのようにしたら良いか教えていただけませんか?
- 06: 名前:yoda投稿日:2006/09/12(火) 11:53
- Scratchセクションなどは、ユーザーが任意に挿入します。
シェイプシートの上で右ボタン、セクションの挿入をクリック
します。
たとえば、Scratch.X1には、
PNTX(PAR(PNT(Geometry1.X3,Geometry1.Y3)))
Scratch.Y1には、
PNTY(PAR(PNT(Geometry1.X3,Geometry1.Y3)))
と言う式を入れた場合は、コネクタの3番目の点
のページ座標X,Yが別々に得られます。
- 07: 名前:SH投稿日:2006/09/12(火) 12:07
- ありがとうございます。
VISIOでは何も操作せず、VBAのみで
絶対座標を取得することは不可能でしょうか?
- 08: 名前:yoda投稿日:2006/09/12(火) 12:10
- もちろん可能ですが、自分で座標変換しなければなりません。
- 09: 名前:yoda投稿日:2006/09/12(火) 12:45
- すみません。XYToPage メソッドがありました。
私は使ったことがありませんので、調べてみてください。
- 10: 名前:SH投稿日:2006/09/12(火) 13:33
- ありがとうございます。
XYToPageメソッドの使い方が良く分からなかったので
自分で座標変換する事にしました。
- 11: 名前:yoda投稿日:2006/09/12(火) 14:02
- 自分の勉強のために、シェイプシートの関数の場合と
同じ条件で、作ってみました。
Sub test()
Dim shp As Visio.Shape
Dim x As Double, y As Double, Px As Double, Py As Double
Set shp = ActiveWindow.Selection(1)
x = shp.Cells("Geometry1.X3").ResultIU
y = shp.Cells("Geometry1.Y3").ResultIU
shp.XYToPage x, y, Px, Py
x = x * 25.4
y = y * 25.4
Px = Px * 25.4
Py = Py * 25.4
Debug.Print x, y, Px, Py
End Sub
簡単な座標計算なら自分でした方が早そうです。
■トップに戻る リロード 全レスを表示
|