编辑脚本的脚本我有一个脚本,它采用标准轮廓图输出并将图重新排列成列。
从

到

文本框的放置导致脚本失败。
有没有其他方法可以得到结果?如果没有,我可以以某种方式调整当前脚本来对其进行排序吗?我想知道父脚本是否可以在子脚本上执行查找/替换来执行一些调整?
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;
自动化和脚本回复:编辑脚本的脚本如果你可以使用 JMP18,那么你可以从最高级别的红色三角形修改布局

我再也无法访问 JMP17,我不确定我是否能在 JMP18 中获得类似的结果来测试不同的选项,但您可以考虑这些文本框(将 ncol 增加到 6 并隐藏它们/将 ncol 保留为 3 并删除它们)。您还可以确定哪一列被用作 by 列,并使用该信息重建平台而不使用 By(多次运行并根据需要设置格式)。
回复:编辑脚本的脚本current report()["Conto?"]
谢谢,非常有用:)
回复:编辑脚本的脚本您可以收集OutlineBox的脚本,将每个(其中信息 + 情节)封装在V 列表框中,并通过Lineup Box排列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);
回复:编辑脚本的脚本更接近原始方法...所有对象的脚本:
// 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函数的程序员!
精彩的 : )
它适用于任何表达式,而不仅仅是列表,关联数组和矩阵:)

回复:编辑脚本的脚本我的做法有些不同。我从半导体能力数据表生成了轮廓图,然后运行了以下脚本
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 || "));" ) );
得到这个输出

回复:编辑脚本的脚本啊,对了, get bygroup脚本()已经在那里了。确实,这样容易多了:)
(current report()["Contour?"] << get scriptable object) << get by group script
非常坚固。
它与 JMP17 一起工作(与第一个图对话)

... 和 JMP18(与集团平台对话):

如果使用报告命令的返回值,则必须小心仅获取脚本 1x:
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>
回复:编辑脚本的脚本
@hogi写道:
... 非常强大。它与 JMP17(与第一个图对话)和 JMP18(与 Group Platform 对话)配合使用
哦,这句话只是指如何获取groupby脚本的方式:
(current report()["Contour?"] << get scriptable object) << get by group script
不是为了完整的东西......
在 JMP 18 及更高版本中,脚本返回GroupPlatform - 并且Lineup Box不再能够控制布局。
然后你可以跳过这个外部部分并直接使用GroupPlatform来控制布局( @jthi提到的红色三角形选项)。
通过Lineup Box 构建树状结构(按脚本分组)

[选定的轮廓框 = 第一个图]
通过以前的方法实现的树结构:
