DIAdemで等高線グラフを作成し、カーソルで選択している座標及び等高線の高さを確認する

更新しました May 22, 2023

環境

ソフトウェア

  • DIAdem

複数の変数に依存する特性についての計測結果は、個々の変数に対する測定値のグラフ表示もしくは等高線図による表示を行い、データの評価をします。DIAdem VIEWでは等高線図表示のパネルを使用することにより、測定データw等高線図表示する事ができ、カーソルで指定した座標における値を確認できます。また、VBスクリプトを使用する事でカーソルで指定している値に対し、指定したショートカットキーを押す事で、プログラムで指定した処理を行う事もできます。これらの機能を組み合わせることで計測データを等高線図で確認し、カーソルで指定した値を記録・解析する操作を自動化する事ができます。ここではサンプルデータを用いて等高線図の作成と設定、VBスクリプトの作成とショートカットキーへの登録を行い、解析の自動化について確認します。
 
1overview.png

DIAdem VIEWで等高線を使用する

1. DIAdemを起動し、VIEWを開き、表示形式を等高線に変更します。
 
1setcontour.png

2. Data Portalから3つのデータをShiftを押しながら選択し、ドラッグ&ドロップで等高線の表示領域にロードします。
 
2loaddata.png

3. 等高線を右クリックし、「座標情報表示」を選択します。カーソルを移動したときにx,y,zの座標が表示される事を確認します。ここで表示されている座標情報はクリップボードにコピーし、使用する事ができます。
 
3dispCoordInfo.png
 

DIAdem SCRIPTで等高線のカーソルの座標を取得するショートカットキーを作成する

1. DIAdem SCRIPTを開き、下記のスクリプトを入力します。
 
Option Explicit
Dim x,y,oMyCursor
Set oMyCursor = View.ActiveSheet.Cursor

x=oMyCursor.X1
y=oMyCursor.Y1

D3GridCalcAll =0
D3GridPolyg ="convex hull"
D3NodeMeth ="n neigh. pts"
D3NodeNo =5
D3InterpMethChn ="SISPL Surface"
Dim z : z = ChnD3InterpPoint("[1]/[1]","[1]/[2]","[1]/[3]", x, y)
MsgBox("x = " & x & vbCr & "y =  " & y  & vbCr & "z = " & z)

2. 上記のスクリプトを実行するとDIAdem VIEWの等高線のカーソル位置の座標がメッセージボックスで表示されます。
 
5scritp.png

3. スクリプトをショートカットキーに登録します。まずこのスクリプトを保存します。保存したスクリプトをショートカットキーに登録するには下記の手順で事前定義設定を作成します。
 
9regis.png

4. 事前定義設定を行ったスクリプトをショートカットキーで実行します。DIAdem VIEWに戻り、等高線にて任意の場所をカーソルで選択し、Shitf + F2を押すとスクリプトで設定した内容が実行され、座標位置情報がポップアップで表示されます。
 
11shortcut.png

スクリプトの内容を変更する事でカーソルの位置の座標に対して解析処理やデータ保存を行うことができます。

次のステップ

特定の組み合わせのx,y座標から対応するy値を自動解析で取得する

上記のスクリプトではx, yの値をカーソルの位置から取得し、対応するz値を取得しています。x, yの値を連続的に変化させながら、それらに対応するzの値を保存するにはVBスクリプトを編集する必要があります。

例えば(x,y) = (5, 5), (10, 10), (15, 15), (20, 20), (25, 25)の5点のz値を求め、Data Portalに保存する場合、下記のスクリプトとなります。
 
Option Explicit
Dim x,y
x =array(5,10,15,20,25)
y =array(5,10,15,20,25)

D3GridCalcAll =0
D3GridPolyg ="convex hull"
D3NodeMeth ="n neigh. pts"
D3NodeNo =5
D3InterpMethChn ="SISPL Surface"

Dim oMyGrp, oMyChn, i
Set oMyGrp = Data.Root.ChannelGroups(1)
Set oMyChn = oMyGrp.Channels.Add("AnalysisResults",DataTypeFloat64)

For i = 0 to 4
oMyChn(i+1)= ChnD3InterpPoint("[1]/[1]","[1]/[2]","[1]/[3]", x(i), y(i))
Next

このスクリプトをDIAdem SCRIPTのスクリプト実行より実行します。
 
10スクリプト実行.png

下記の通り、それぞれの座標のz値がAnalysisResultsとして保存されます。
 
11AnalysisResults.png
 

Data Portalに作成したx, yの配列の値を使用して自動解析を行う

x,yの配列をData Portalから読み込む場合、下記の手順でスクリプトの挙動を確認できます。まず、Data Portalのチャンネルを右クリックし、新規より新しいチャンネルを作成します。ここではまず、xチャンネルを作成し、任意の値を5つ入力します。yについても同様にチャンネル作成と値の入力を行います。
 
16createx.png

スクリプト上の変更点はData Portalよりxとyの配列をスクリプト上に読み込む部分となり、下記の様なスクリプトとなります。
Option Explicit
Dim oMyChn, x, y
Set oMyChn = Data.GetChannel("[1]/x")
x = oMyChn.GetValuesBlock(1,5)
Set oMyChn = Data.GetChannel("[1]/y")
y = oMyChn.GetValuesBlock(1,5)

D3GridCalcAll =0
D3GridPolyg ="convex hull"
D3NodeMeth ="n neigh. pts"
D3NodeNo =5
D3InterpMethChn ="SISPL Surface"

Dim oMyGrp, oMyChn1, i
Set oMyGrp = Data.Root.ChannelGroups(1)
Set oMyChn1 = oMyGrp.Channels.Add("AnalysisResults",DataTypeFloat64)

For i = 0 to 4
oMyChn1(i+1)= ChnD3InterpPoint("[1]/[1]","[1]/[2]","[1]/[3]", x(i), y(i))
Next

上記スクリプトを実行すると下記の様に指定したz値を取得できます。
 
15res.png
 

VIEWの各次元のキューサーの値はDimensions collectionからもアクセスでき、例えばZ次元については下記の様にアクセス・表示する事ができます。
print(View.ActiveSheet.Cursor.Dimensions("Z-Cursor").Value1)
print(View.ActiveSheet.Cursor.Dimensions(3).Value2)