我正在為一些自訂圖表建立一個工具。 我希望與我共享該工具的用戶能夠輕鬆修改該工具。 為了減少進入障礙,我想使用在主函數中呼叫的子函數。 每個子功能將代表整個主功能的一小部分。
我的問題:是否可以將圖形產生器中“Dispatch”的參數替換為函數? 或者是否有另一種標準方法來創建我不知道的較小的子函數。
感謝吉姆的詳盡回覆。 我想我必須將它作為文本傳遞並以某種方式解析它,但我當然沒有預料到它如此難看! 哦,好吧,我想這就是我為擁有這樣一個利基需求而付出的代價。 不過這對我來說是完美的。 只要我可以隱藏主函數中的大部分醜陋程式碼,我就很高興,因為我的目標是讓最終用戶不要打擾它。 目前我是社群的接受者,但我希望隨著我在 JMP 中的腳本編寫方面獲得更多經驗,我可以透過貢獻來回報幫助。
這是一些可以實現您想要的功能的程式碼,但它不是很漂亮。您想要的是能夠透過替換來產生程式碼,而這在 JMP 中處理得不好。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
myfunc = Function( {},
return =
"\[Dispatch(
{},
"2",
ScaleBox,
{Min( 92.9916666666667 ), Max( 127 ), Inc( 5 ), Minor Ticks( 1 ),
Add Ref Line( 118.356215277778, "Solid", "Black", "", 1 )}
)]\"
);
Eval(
Substitute(
Expr(
Bivariate( Y( :NPN1 ), X( :PNP1 ), SendToReport( __dispatch__ ) )
),
Expr( __dispatch__ ), Parse( myfunc )
)
);
JMP 可以處理平台結構內組件的替換,例如傳遞最小值。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
mymin = 80;
Bivariate(
Y( :NPN1 ),
X( :PNP1 ),
SendToReport(
Dispatch(
{},
"2",
ScaleBox,
{Min( Eval( mymin ) ), Max( 127 ), Inc( 5 ), Minor Ticks( 1 ),
Add Ref Line( 118.356215277778, "Solid", "Black", "", 1 )}
)
)
);
或者我認為首選的方法是產生預設圖,然後在生成後設定參數,其中可以使用對函數的呼叫來有條件地設定所需的項目;
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
myfunc = function({},
Report( biv )[Axis Box( 1 )] << Min( 80 );
);
biv = Bivariate(
Y( :NPN1 ),
X( :PNP1 ),
SendToReport(
Dispatch(
{},
"2",
ScaleBox,
{Min( 92.9916666666667 ), Max( 127 ), Inc( 5 ), Minor Ticks( 1 ),
Add Ref Line( 118.356215277778, "Solid", "Black", "", 1 )}
)
)
);
myfunc;嗨吉姆,
謝謝回覆。 不過,我會盡力讓我的問題更清楚。
假設在我的 JSL 腳本的 Graph Builder 中,我有一些程式碼區塊,例如:
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(... etc例如,在這個例子中,我正在自訂線條的顏色。
我是否可以在另一個 JSL 腳本中建立一個函數,例如:
myDispatch=Function(
{},
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(.... etc然後在 JSL 腳本中,我將使用 myDispatch() 來代替調度函數。
我已經嘗試過這個,雖然它沒有記錄任何錯誤,但它不應用我的函數(即圖表僅使用預設的線條顏色等並忽略我的函數)。 如果不在圖形生成器本身中明確輸入參數,我就無法讓它工作。
非常感謝
如果你看:
幫助==>腳本索引==>圖形產生器
透過將請求傳遞到平台,您將看到可以在圖形產生器中操作的所有各種組件。所有這些都可以放入使用者建置函數中。
