Команда "nb = NotebookCreate[]" не выполняется в Mathematica?
Если я открываю блокнот в 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 работает отлично.
1 ответ
Решение
К сожалению, кажется, что это невозможно для Mathematica v8 (и я не думаю, что многое изменилось в v9).
Насколько я понимаю, когда вы получаете доступ к ядру Mathematica из C#, это не разрешает доступ к классам Notebook, которые являются частью GUI.