キーストロークによるグラフビルダーの主グリッド線の表示/非表示を切り替えるグラフ ビルダーの主要なグリッド線 (X と Y の両方) の表示を切り替えるようにアドインを構成したいのですが、JSL 部分で苦労しています...GB オブジェクトと SendToReport( .. Dispatch... コードですが、X 軸と Y 軸に関連付けられた変数名が必要なようで、アドインはそれらが何であるかを知りません。
これは実行可能ですか?
これまでに私が持っているものは次のとおりです。
// steps to get last_gb scriptable object...<BR /><BR />// send setting change<BR />last_gb << SendToReport(
Dispatch(
{},
"myXaxis",
ScaleBox,
{ Label Row (Show Major Grid( not(Label Row (Show Major Grid ) ) ) ) ) }
),
Dispatch(
{},
"myXYaxis",
ScaleBox,
{ Label Row (Show Major Grid( not(Label Row (Show Major Grid ) ) ) ) ) }
)
)データの探索と視覚化Re: グラフビルダーの主要グリッド線の表示をキーストロークで切り替えるこんにちは@BHarris 、
軸ボックスを使用して主グリッドを表示してみてはいかがでしょうか?
send を使用してレポート メッセージを送信する場合、1 つのアイデアは、get variable message を使用して変数を取得することです。
// #1 Example for Axis Box
gb_rpt = gb_ob << Report();
gb_rpt[axis box( 1 )] << Show Major Grid( 1 );
gb_rpt[axis box( 2 )] << Show Major Grid( 1 );
// #2 Example for send to report
var1 = gb_ob << Get Variable( 1 );
var2 = gb_ob << Get Variable( 2 );
Eval(
Substitute(
Expr(
gb_ob << send to report(
Dispatch(
{},
_var_,
ScaleBox,
{Label Row( Show Major Grid( 1 ) )}
)
)
),
Expr( _var_ ), Eval( Char( var1[1] ) )
)
);
それがあなたの問題に役立つことを願っています。
Re: グラフビルダーの主要グリッド線の表示をキーストロークで切り替えるこれは非常に近いです!スクリプトを実行するたびにグリッドの状態のオンとオフを切り替えたいのですが、これでできるのはグリッドをオンにすることだけです。AxisBox からグリッドの状態を読み取る方法を理解するのに約 1 時間を費やしましたが、「ラベル行」に到達するとドキュメントが非常にまばらになってしまいます...
主要送電網の現在の状態を読み取るにはどうすればよいですか?
Re: グラフビルダーの主要グリッド線の表示をキーストロークで切り替えるもっと良い方法があるかもしれませんが、試すことができる 1 つのオプションは、<< get スクリプトを axisbox に送信し、そこから Show Major Grid を取得することです。 そこにまったく表示されない場合は、ユーザーのプロパティから値を取得できるはずです
axis_script = axisbox << get script();
cur_gridvalue = Try(
axis_script["Label Row"]["Show Major Grid"];
Print("Grid");
, // not found
Arg(Arg(Get Preference(Major Grid Lines)));
Print("Preference");
);
Re: グラフビルダーの主要グリッド線の表示をキーストロークで切り替えるもっと近くに!最初の x 軸ボックスと最初の y 軸ボックスのグリッド線がオフになりましたが、多軸プロット上のすべての軸ボックスではありませんでした。

すべての軸ボックスを反復処理するにはどうすればよいですか?これまでに私が持っているものは次のとおりです。
Names Default To Here( 1 );
win = Get Window List();
//Find graph builder windows
graphs = Filter Each({w}, win,
If(Length(w << XPath("//OutlineBox[@helpKey='Graph Builder']")) > 0, 1, 0)
);
gb = graphs[N Items(graphs)][OutlineBox("Graph Builder")] << Get Scriptable Object;
gb_rpt = gb << Report();
gb_axis1 = gb_rpt[AxisBox( 1 )];
gb_axis2 = gb_rpt[AxisBox( 2 )];
axis_script = gb_axis1 << get script();
cur_gridvalue = Try(
axis_script["Label Row"]["Show Major Grid"], // not found
Arg( Arg( Get Preference( Major Grid Lines ) ) )
);
If( cur_gridValue,
gb_axis1 << Show Major Grid( 0 );
gb_axis2 << Show Major Grid( 0 );
,
gb_axis1 << Show Major Grid( 1 );
gb_axis2 << Show Major Grid( 1 );
);(追伸)私一人では、「get script」や「arg( arg(」) を理解することはできなかったでしょう。私は 25 年の経験を積んで、半ば有能なスクリプタであると感じていますが、それでも JSL にかなり迷っているように感じています。JSL が何をしているのかを知るのは非常に難しいことがよくあります。)
Re: グラフビルダーの主要グリッド線の表示をキーストロークで切り替える<< XPath を使用してすべての AxisBox 参照を取得し、それらをループして 1 つずつ変更するか、同じメッセージをすべてに送信します。 変更したくない軸ボックスを変更しないようにするには、追加のチェックが必要になる場合があります。
axisboxes = gb_rpt << XPath("//AxisBox");
<< Get XML は、参照を絞り込むのに役立つ特定のものが AxisBox 内にあるかどうかを確認するときに役立ちます (charID が 1 つである可能性があります)。 その後、XPath クエリを変更してこれを使用し、より正確にすることができます。

Re: グラフビルダーの主要グリッド線の表示をキーストロークで切り替えるそれはできました!グラフ ビルダーのすべてのプロットでグリッド線のオン/オフを切り替えるスクリプトが必要な場合の解決策は次のとおりです。
Names Default To Here( 1 );
win = Get Window List();
//Find graph builder windows
graphs = Filter Each( {w}, win,
If( Length( w << XPath( "//OutlineBox[@helpKey='Graph Builder']" ) ) > 0,
1,
0
)
);
gb = graphs[N Items( graphs )][Outline Box( "Graph Builder" )] << Get Scriptable Object;
gb_rpt = gb << Report();
gb_axis1 = gb_rpt[AxisBox( 1 )];
axis_script = gb_axis1 << get script();
cur_gridvalue = Try(
axis_script["Label Row"]["Show Major Grid"], // not found
Arg( Arg( Get Preference( Major Grid Lines ) ) )
);
axisboxes = gb_rpt << XPath( "//AxisBox" );
For Each( {anAxisBox,anIndex}, axisboxes,
If( cur_gridValue,
anAxisBox << Show Major Grid( 0 ),
anAxisBox << Show Major Grid( 1 )
)
);ジャーモとユウイチの協力に感謝します!
***************************************
ps。「<< Get XML」のヒントがまったく理解できません。4 つの異なる場所に配置してみましたが、「」を含む XML はまったく取得されませんでした (ただし、大量の XML は取得できましたが)。 。)。JSL のスクリプトをどのようにして習得しましたか?
Re: グラフビルダーの主要グリッド線の表示をキーストロークで切り替える私はスクリプトを書くだけでスクリプトを学びました (スクリプトを作成する方法は、さまざまなことを試し、ドキュメントを読み (JSL の場合は通常、この順序です: スクリプト索引、スクリプトガイド、JMP コミュニティ、JSL 構文リファレンス)、さらに多くのことを試し、たくさん失敗する、しかし、最終的にはほとんどの場合、何らかの有効な解決策を得ることができます)。
<< get xml を jmp オブジェクトの分析層またはレポート層に送信できると思います。 場合によっては、最初に添え字を付けてから << get xml を使用することで、より正しい参照に近づけることもできますが、この場合はそれを gb に送信しただけです。 以下は、Big Class.jmp を使用した他の例であり、その後、スクリプトに配置した場所です。 通常、ログをクリアし、<< get xml 行を実行し、ログをクリックして、ctrl+f を使用して何かを検索します (探しているものがわかっている場合)。 非常に大きな XML を探索する必要がある場合は、xml を .xml ファイルとして保存し、xml の構文を強調表示するアプリケーションで開くと便利です (通常は notepad++ で十分です)。

Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << Select Rows([1, 2]) << Hide and Exclude(1) << Clear Select;
gb = dt << Graph Builder(
Size(528, 456),
Show Control Panel(0),
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Smoother(X, Y, Legend(10)))
);
// Report(gb) << Get Xml; // works also on report
gb << Get XML; // run just this line to see xml in log or use Write() (write is the cleanest option)
// Write(gb << Get XML);
// xml_str = gb << get xml;
// show(xml_str);
where_tb = Report(gb) << XPath("//TextBox[contains(text(), 'Where(')]");
where_tb << Text Color("Blue"); // usually used to hide where text << Set Visibility("Collapse");
ここでは、スクリプト内に << Get XML を配置し、一度実行して XML を確認してから、コードからその行を削除します。これは、通常、既製のスクリプトに << Get XML を残すことに意味がないためです。
