在 C#.NET 中运行 JSL 文件的问题<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我正在尝试在 C#.NET 包装器中执行 JSL 文件。 我能够成功运行这些文件,但我的代码不会等待脚本完成。 下面是一个示例:
JMP.Application jmpInstance = new JMP.Application();
FileInfo fJSLFile = new FileInfo(@C:\Test\Test.JSL);
jmpInstance.RunJSLFile(fJSLFile.ToString());
如果 (jmpInstance.HasRunCommandErrorString())
{
throw new ApplicationException("JMP 脚本错误:" + jmpInstance.GetRunCommandErrorString());
}
回复:在 C#.NET 中运行 JSL 文件的问题@ChrisM_X ,
我实际上设法让它运行使用你的建议和玩的一点运气。 这是我的 C# 代码。
// Create an instance of JMP and make it visible
JMP.Application MyJMP;
MyJMP = new JMP.Application();
MyJMP.Visible = true;
MyJMP.ShowStartupWindow();
MyJMP.EnableInteractiveMode(true);
// create command
string arg1 = "base = 2"; // arguments to my User defined function in JSL
string arg2 = "expn = 3"; // arguments to my User defined function in JSL
MyJMP.RunCommand(arg1);
MyJMP.RunCommand(arg2);
string FilePathOfFileToRun = "C:\\Test.jsl";
MyJMP.RunJSLFile(FilePathOfFileToRun); // Running the user defined function
// Needed to keep JMP from automatically closing
JMP.DataTable dt = MyJMP.NewDataTable("test");
MyJMP.RunCommand(@Close(Data Table("test""), NoSave)");
回复:在 C#.NET 中运行 JSL 文件的问题@ChrisM_X ,
谢谢你的尼佩特。 我想了解,您在代码片段中的哪个位置调用了一个函数?
TestPower = function({base,expn},{default local},
res = base ^ expn ;
Retrun(res);
);让我们假设我们在 JMP 中有一个用户定义的函数,如上所示。 现在,从 C# 开始,我如何通过向它传递 base 和 exp 参数来调用此函数并运行此函数?
您分享的代码片段解决了我们如何使用 RunCommand 函数传递值的部分,但是您可以使用像这样的简单示例来更详细地解释该过程吗?
因此,如果我将上述函数作为 TestPower.jsl 存储在我的 C:\ 上,您能否分享一下我如何使用 C# 运行,通过传递参数并调用此函数?
回复:在 C#.NET 中运行 JSL 文件的问题我使用 myJMP.RunCommand(command);将数据传递给 C# 的 JMP,其中 command 是您在 C# 中构建的字符串,用于设置变量。
例子
JMP.Application myJMP = new JMP.Application();
字符串命令=“a=1”;
myJMP.RunCommand(命令);
下面的示例代码片段:
下面我在具有规格的列上设置规格限制属性:
JMP.Application myJMP = new JMP.Application();
foreach(规格中的 var 项目)
{
布尔设置道具=假;
StringBuilder SpecList = new StringBuilder();
如果 (item.Value.LowerSpec.ToLower() != "nan")
{
SpecList.Append("LSL(Expr(" + item.Value.LowerSpec.ToLower() + ")),");
设置道具=真;
}
如果 (item.Value.UpperSpec.ToLower() != "nan")
{
SpecList.Append("USL(Expr(" + item.Value.UpperSpec.ToLower() + ")),");
设置道具=真;
}
// SpecList.Length--; //从 SB 中删除最后一个字符(结束逗号)
如果(设置道具)
{
命令 = @评估(
求值表达式(" +
“列(dts,Expr(\“”+ item.Key +“\”))<<设置属性(“+
"\"规格限制\"," +
" {" + SpecList.ToString() + "显示限制( 1 )}" +
@))
); ";
myJMP.RunCommand(命令);
}
}回复:在 C#.NET 中运行 JSL 文件的问题@gpuckett ,
你能弄清楚吗? 我希望通过从 C# 向它传递参数来运行 JSL 函数。 想知道您是否可以分享任何见解?