スクリプトを編集するスクリプト標準の等高線プロット出力を取得し、プロットを列に並べ替えるスクリプトがあります。
から

に

テキスト ボックスの配置が原因でスクリプトが誤作動しています。
結果を取得する別の方法はありますか? そうでない場合、現在のスクリプトを何らかの方法で調整して並べ替えることはできますか? 親スクリプトが子スクリプトに対して検索/置換を実行して調整を実行できるかどうか疑問に思っています。
clear Globals();
Delete Symbols();
window = Get Window List();
wName = window << Get Window Title;
nWindows = N Items( window );
For( i = nWindows, i > 0, i--,
If( Contains( wName[i], "Contour Plot" ),
obj = window[i]["Contour Plot?"] << Get Scriptable Object;
Show(obj);
obj << Save Script for All Objects;
obj << Close Window;
Break();
);
);
spt = Window( "Script Window" );
spt << Bring Window To Front;
spt2 = spt[Script Box(1)];
spt2 << Get Line Text( 3 );
spt2 << Set Line Text (3, "Line Up Box( N Col( 3 ), Spacing( 2 ),");
spt2 << run();
spt2 << Close Window;
自動化とスクリプトRe: スクリプトを編集するスクリプトJMP18を使用できる場合は、最上位の赤い三角形からレイアウトを変更するだけです。

JMP17 にはもうアクセスできず、JMP18 でさまざまなオプションをテストして同様の結果を得ることができるかどうかもわかりませんが、これらのテキスト ボックスを考慮することはできます (ncol を 6 に増やして非表示にする / ncol を 3 のままにして削除する)。また、by 列として使用されている列を特定し、By を使用せずにその情報を使用してプラットフォームを再構築することもできます (複数回実行し、必要に応じてフォーマットします)。
Re: スクリプトを編集するスクリプトcurrent report()["Conto?"]
ありがとう、とても役に立ちました:)
Re: スクリプトを編集するスクリプトOutlineBoxesのスクリプトを収集し、すべての ( Where情報 + プロット) をV リスト ボックス内にカプセル化し、 Lineup ボックスを介してV リスト ボックスを配置することができます。
// ask every Outline Box for a scriptable object
obs = (current report() << xpath("//OutlineBox")) << get scriptable object;
// ask the scriptable objects for a script
scripts = obs << get Script;
// prepare a template LineUp Box
myExpr = Expr( Line Up Box( N Col( 3 ), Spacing( 2 )));
// wrap the scripts with V List Box and put them into the template
For each({script}, scripts,
Eval (Substitute(Expr(Insert Into(myExpr, Expr(V list Box (_content_)))), Expr(_content_), Name Expr(script)))
);
// use the template in a new window
New Window("overview", myExpr);
Re: スクリプトを編集するスクリプトすべてのオブジェクトに対するスクリプトを使用して、元のアプローチに近づきます。
// there is no
// myScript = (current report()[OutlineBox(1)] << get scriptable object) << get Script for All Objects;
// : (
(current report()[OutlineBox(1)] << get scriptable object) << save Script for All Objects;
sw = Window( "Script Window" );
myScript = Parse(sw[Script Box(1)] << get text);
//--------------------------
<BR />// prepare a Template for the Line Up Box
myExpr = Expr( Line Up Box( N Col( 3 ), Spacing( 2 )));<BR />
// take the V list Box - it contains the Countour Plot commands
myScript = (Extract Expr(myScript, V List Box (Wild List())));
// cycle through Contour Plot commands, "wrap" with V List Box and insert into template
For each({command}, Name Expr(myScript), // an I-DONT-CARE of VLBs
wrapped = Insert (Expr(V list Box ()), Name Expr(command));
Insert Into(myExpr, Name Expr(wrapped))
);
// generate the report
New Window("overview", myExpr);
For Each関数のプログラマーに心から感謝します!!
素晴らしい : )
リスト、連想配列、行列だけでなく、任意の式で動作します:)

Re: スクリプトを編集するスクリプト私は少し違ったやり方をしました。半導体能力データテーブルから等高線図を生成し、次のスクリプトを実行しました。
Clear Globals();
Delete Symbols();
window = Get Window List();
wName = window << Get Window Title;
nWindows = N Items( window );
For( i = nWindows, i > 0, i--,
If( Contains( wName[i], "Contour Plot" ),
obj = window[i]["Contour Plot?"] << Get Scriptable Object;
Break();
)
);
script = Char( obj << get bygroup script );
obj << Close Window;
Eval( Parse( "New Window(\!"Contours\!",lineupbox(ncol(3), spacing(2)," || script || "));" ) );
この出力を得るには

Re: スクリプトを編集するスクリプトああ、そうですね、 get bygroup script()はすでにありました。確かに、この方法の方がずっと簡単ですね : )
(current report()["Contour?"] << get scriptable object) << get by group script
かなり頑丈です。
JMP17で動作します(最初のプロットと通信します)

...そして JMP18 (グループ プラットフォームと対話):

レポート コマンドの戻り値を使用する場合は、スクリプトを 1 回だけ取得するように注意する必要があります。
cp =Contour Plot( ... ,By() ); // returns a list
//cp << get script; // 1 script per plot (N times, message sent to a list)<BR />// cp << get bygroup script; // returns the by group Script N times (message sent to a list)
cp[1] << get bygroup script; // 1x :)</img>
Re: スクリプトを編集するスクリプト
@hogi は書きました:
... 非常に堅牢です。JMP17 (最初のプロットと通信) および JMP18 (グループ プラットフォームと通信) で動作します。
ああ、このステートメントは、groupby スクリプトを取得する方法だけを示しています。
(current report()["Contour?"] << get scriptable object) << get by group script
完全なものではありません...
JMP 18 以降では、スクリプトはGroupPlatform を返すため、 Lineup Box を使用してレイアウトを制御することはできなくなりました。
次に、この外側の部分をスキップし、 GroupPlatform を直接使用してレイアウトを制御できます ( @jthiによって言及された赤い三角形のオプション)。
ラインアップボックスによるツリー構造(スクリプトによるグループ化)

[選択されたアウトラインボックス = 1 番目のプロット]
以前のアプローチによるツリー構造:
