【问题标题】:The command "nb = NotebookCreate[]" fails within Mathematica?Mathematica 中的命令“nb = NotebookCreate[]”失败?
【发布时间】:2013-01-28 20:05:13
【问题描述】:

如果我在 Mathematica 中打开一个笔记本并输入“nb=NotebookCreate[]”,它会按预期创建一个新的笔记本窗口。

但是,如果我在 C# 中尝试相同的命令,它会失败,并且不会打开新的笔记本窗口:

IKernelLink ml = MathLinkFactory.CreateKernelLink();
ml.WaitAndDiscardAnswer();
string cmd = @"nb = NotebookCreate[]";
string result = ml.EvaluateToOutputForm(cmd, 0);

// result is now "$Failed".

请注意,如果我传入“2+2”,它会返回“4”,这证明到 Mathematica 内核的链接运行良好。

【问题讨论】:

  • 附注让这项工作令人惊奇的原因之一是我可以将调试信息从我的 C# 控制台应用程序泵入 Mathematica 中的交互式工作簿,尤其是交互式 3-D 图形。
  • 在此示例中使用 C# 直接从盒子数据创建的笔记本,可能对您有些用处:stackoverflow.com/a/7321479/879601
  • 如果您将其迁移到 mathematica.stackexchange.com,您可能会得到更好的响应——标记它以引起版主注意,如果您愿意,请提出此请求。
  • 另一个可以提供帮助的链接:stackoverflow.com/a/8279901/879601

标签: c# .net .net-4.0 wolfram-mathematica mathlink


【解决方案1】:

不幸的是,这对于 Mathematica v8 来说似乎是不可能的(我认为 v9 没有太大变化)。

据我了解,当您从 C# 访问 Mathematica 内核时,这不允许访问作为 GUI 一部分的 Notebook 类。

【讨论】:

  • 你确定不可能吗? NotebookCreate[] 需要定义 $FrontEnd(即必须启动 FrontEnd 并连接到内核)。我怀疑您根本没有连接前端。尝试在纯 MathKernel 会话中评估 NotebookCreate[] - 您将按预期得到 $Failed
猜你喜欢
  • 1970-01-01
  • 2014-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多