- 01: 名前:ほし投稿日:2002/07/23(火) 16:48
- ポリラインの数値を取得したいのですが
どのようにすればいいのでしょうか?
式ではなく、値そのものがほしいのですが・・・
- 03: 名前:ほし投稿日:2002/07/24(水) 08:29
- ええ。C++です。
あまりみかけないようですが・・・
getResultでは終点座標とポリライン式というのが取れるんですが
値そのものではないようです。,
NURBStoとかも同様です。
GetPolylineData()というのを見つけましたが
うまく値が取得できない(?使い方が悪いのか)ところです。
- 04: 名前:ほし投稿日:2002/07/24(水) 08:32
- あ、すみません。
CVisioCellクラスですね・・・
CVisioShapeクラスの話でした。
試してみます、ありがとうございました。
- 05: 名前:ほし投稿日:2002/07/24(水) 11:50
- やはり、成功しません。…
CVisioCellクラスのgetResult()の引数がおかしいのかな?
行き詰まってしまいました。
使い方の分かる方、ご教授お願いします。
- 06: 名前:なか投稿日:2002/07/24(水) 14:02
- なかです。
ポリラインのこと知らずに適当なこと言ってすいません。
getResultで取得できるのはセルが存在するものだけですから
ポリラインの座標の取得は根本的にできませんね。
取得するにはGetPolylineData()を使うしかないようです。
- 07: 名前:なか投稿日:2002/07/25(木) 12:39
- なかです。
GetPolylineData()を使えばポリラインの座標が取得できる
こと確認しました。
もう解決したかも知れませんが一応
以下にサンプルソースを記載します。
CVisioSection section;
CVisioRow row;
hr = shape.Section(visSectionFirstComponent, section);
check_valid(hr, section);
hr = section.Row(2, row);
check_valid(hr, row);
SAFEARRAY FAR* xyArray;
hr = row.GetPolylineData(visGeomWHPct, &xyArray);
if ( !SUCCEEDED(hr) ) goto CU;
double HUGEP *pdb;
hr = SafeArrayAccessData(xyArray, (void HUGEP* FAR*)&pdb);
if ( !SUCCEEDED(hr) ) goto CU;
for (ULONG i = 0; i < xyArray->cbElements; i++)
{
double dbData = pdb[i];
}
SafeArrayUnaccessData(xyArray);
SafeArrayDestroy(xyArray);
- 08: 名前:ほし投稿日:2002/07/25(木) 13:35
- ありがとうございます。
なかなか出来ないので嫌になって
少し距離をおいてたんです。
使わせていただきます。
- 09: 名前:なか投稿日:2002/07/25(木) 16:09
- なかです。
記載したサンプルソースに一部誤りがありましたので修正版を記載します。
CVisioSection section;
CVisioRow row;
hr = shape.Section(visSectionFirstComponent, section);
check_valid(hr, section);
hr = section.Row(2, row);
check_valid(hr, row);
SAFEARRAY FAR* xyArray;
hr = row.GetPolylineData(visGeomWHPct, &xyArray);
if ( !SUCCEEDED(hr) ) goto CU;
double HUGEP *pdb;
hr = SafeArrayAccessData(xyArray, (void HUGEP* FAR*)&pdb);
if (FAILED(hr))
goto CU;
// 以下修正箇所
long lBound, uBound;
if ( NOERROR == SafeArrayGetLBound(xyArray, 1, &lBound) &&
NOERROR == SafeArrayGetUBound(xyArray, 1, &uBound) )
{
long cElements = uBound-lBound+1;
for (long i = 0; i < cElements; i++)
// ここまで
{
double dbData = pdb[i];
}
}
SafeArrayUnaccessData(xyArray);
- 10: 名前:ほし投稿日:2002/07/25(木) 16:31
- わざわざありがとうございます。
ちょうど、トラぶってたのでこちらでやってみます。
- 11: 名前:ほし投稿日:2002/08/02(金) 16:34
- やっと、できました。
随分時間がかかってしまいましたが成功ししました。
ありがとうございます。
■トップに戻る リロード 全レスを表示
|