FAMOS
カーブウィンドウに関するFAQ
QX軸を1/3オクターブラベル表示すると[目盛]の設定に「1月3日」と表示される。
Qグループ名は異なるが、ファイル名が同じデータに対して共通のCCVファイルを適用したい
FAQ ID:s033
以下のようにグループ名は異なるが、ファイル名が同じデータがあります。これらのグループ変数にカーブウィンドウ設定(CCVファイル)を適用したい。
しかし、グループ名が異なるため、適用できません。
チャンネルの置き換えを行うことで対応できます。
注意このシーケンスを実行させる前に、以下のコマンドを実行してダミーデータを作成してください。
_dummy1 = Ramp(0,1,10)
_dummy2 = Ramp(0,1,10)
_dummy3 = Ramp(0,1,10)
_dummy4 = Ramp(0,1,10)
この後、これらの変数を表示させ、希望する設定を行います。設定後にカーブウィンドウのメニュー“<>/名前を付けて保存”をクリックして、_dummy1.CCVなど適当な名前で保存してください。
;ダミーデータの作成
_dummy1 = Ramp(0,1,10)
_dummy2 = Ramp(0,1,10)
_dummy3 = Ramp(0,1,10)
_dummy4 = Ramp(0,1,10)
;カーブウィンドウ設定(CCVファイル)を読み出します。
_err = CvConfig( _dummy1, "_dummy1.CCV")
_err = CvConfig( _dummy2, "_dummy2.CCV")
_err = CvConfig( _dummy3, "_dummy3.CCV")
_err = CvConfig( _dummy4, "_dummy4.CCV")
;カーブウィンドウの内容のみ置き換えます。
_err = CvReplaceChannel( _dummy1, Test2:sample1, "_dummy1")
_err = CvReplaceChannel( _dummy2, Test2:sample2, "_dummy2")
_err = CvReplaceChannel( _dummy3, Test2:sample3, "_dummy3")
_err = CvReplaceChannel( _dummy4, Test2:sample4, "_dummy4")
Qシーケンスを使ってマーカーを表示させる
Q凡例を表示させたくない(シーケンス)
FAQ ID:c019
シーケンスから凡例の表示をコントロールする関数は用意されていません。
このような場合、カーブウィンドウのテンプレートファイルを利用します。
以下に手順を示します。
(1)適当なカーブウィンドウを表示させる。
例えば、”a=Ramp( 0, 1, 10 )”などと打ち込んで変数を作成してください。
この変数をカーブウィンドウに表示させます。
(2)この変数をカーブウィンドウから削除します。
カーブウィンドウ上で右クリックして、コンテキストメニューから”波形の追加”を選択してください。変数”a”を選択して、削除してください。
この結果、空のカーブウィンドウが作成されます。
(3)マニュアル時と同様にカーブウィンドウメニュー”オプション/凡例”をクリックして、”凡例の表示”リストから”表示しない”を選択します。
(4)この設定をテンプレートとして保存します。
カーブウィンドウメニュー”<>/名前をつけて保存”を選択して適切な場所へこの設定を保存します。
ここまでが準備です。
以降でシーケンスからの利用方法を説明します。
(1)シーケンスで最初に空のテンプレートを呼び出します。
err = CvConfig( Sintest1, "c\test.ccv")
指定する変数は適当でかまいません。
以下のコマンドを実行しても、Sintest1はカーブウィンドウには表示されません。
2)この空のテンプレートに対して表示したい変数を追加します。
CvYAxis( Sintest1, Sintest1, 0, 0, 0, 400, -2)
CvYAxis( Sintest1, Sintest2, 0, 0, 0, 400, -2)
このように凡例が表示されないカーブウィンドウを作成できます。
Q目盛数を設定する(シーケンス)
Qカーソルで指定した2点を通る直線を求める
FAQ ID:s011
Show DATA
CvWin( DATA, 9)
Ret=BoxMessage("Line1設定", "Line1を決定するポイントにカーソルを置き、
確定した後でOKボタンを押してください", "!1")
X1 = CvCursor( DATA, 1)
X2 = CvCursor( DATA, 2)
Y1 = Value( Check1, X1)
Y2 = Value( Check1, X2)
Point1 = XYof(leng(0,2), Leng(0,2))
Point1[1].x = X1
Point1[2].X = X2
Point1[1].y = Y1
Point1[2].y = Y2
CvYAxis( DATA, 2)
CvYAxis( DATA, Point1, 0, 0, 0, 400+5000+70000, -2)
2点間の直線の係数を求めるために関数"Poly"を使用します。
Polyは標準波形しか引数に使用できないので、一度標準波形に変換します。
TempLine = XYdt( Point1.X, Point1.Y, 0.01)
Line1Coff = Poly( TempLine, 1, 2)
Line1 = Line1Coff[2]*ramp( Min(Check1Volt),
(Max(Check1Volt) - Min(Check1Volt))/100, 100)+Line1Coff[1]
CvYAxis( DATA, Line1, 0, 0, 0, 400, -2)
Qカーソルを使って値を取得する方法
FAQ ID:s009
カーソル位置の値を取得し、Excelにデータを転送します。
カーソルを使って値を取得すると、測定ポイントからずれるので修正しています。
;-----------------------------------------------
;ファイルの指定
;-----------------------------------------------
filename = DlgFileName("c:\imc\dat", "dat", "ファイルを開く", 0)
If TLeng( filename)=0
del FileName
ExitSequence
Else
FAMOS
Load <filename>DATA
del filename
Show DATA
End
;-----------------------------------------------
;ウィンドウ設定
;-----------------------------------------------
CvWin( DATA, 9) ;カーソルのみを表示
CvWin( DATA, 3) ;オーバービューウィンドウを表示
CvWin( DATA, 10) ;ナビゲータを表示
CvXAxis( DATA, XOff?(DATA), XOff?(DATA)+Leng?(DATA)/10*XDel?(DATA), 0)
CvYAxis( DATA, DATA, 0, 0, 0, 50000+4000+200, -2)
;-----------------------------------------------
;ダミーデータ
;-----------------------------------------------
P_X = Leng( 0, 0)
P_Y = Leng( 0, 0)
Point = XYOf( P_X, P_Y)
CvYAxis( DATA, Point, 0, 0, 0, 70000+5000+400, -2)
;-----------------------------------------------
;コメント文字列
;-----------------------------------------------
crlf = TAdd( SvToChar(0x0d), SvToChar(0x0a))
Text = TAdd( "カーソル位置が決定したら<再試行>ボタンを押してください。", crlf)
Text = TAdd( text, "シーケンスを終了する場合、<キャンセル>ボタンを押してください。")
exit=1
While exit
err = BoxMessage("",Text, "!3")
If Err=0
;-----------------------------------------------
;キャンセルならシーケンスを終了
;-----------------------------------------------
exit=0
Else
;-----------------------------------------------
;継続する場合、データを取得してExcelに転送
;-----------------------------------------------
xLeft = CvCursor(DATA,1)
xLeft = xLeft-Mod((xLeft-XOff?( DATA)), XDel?( DATA)) ;測定点に値を設定
P_X = Join( P_X, xLeft) ;測定点をカーブウィンドウに表示
P_Y = Join( P_Y, Value( DATA, xLeft))
Point = XYOf( P_X, P_Y)
Cell_1 = TAdd( "R", TForm( exit, "F00")) ;Excelに転送
Cell_N = TAdd( Cell_1, "C1")
err = DDESet( "Excel","Sheet1", Cell_N, TForm( exit, "F00"), 1)
Cell_N = TAdd( Cell_1, "C2")
err = DDESet( "Excel","Sheet1", Cell_N, xLeft, 1)
Cell_N = TAdd( Cell_1, "C3")
err = DDESet( "Excel","Sheet1", Cell_N, Value( DATA, xLeft), 1)
exit = exit+1
End
End