Я пробовал очевидный путь в моем домашнем проекте с открытым исходным кодом RevitPythonShell (плагин для программного обеспечения для моделирования зданий Autodesk Revit Architecture 2010 ): code.interact()
с движком IronPython, настроенным для использования потоков .NET для STDIN
и STDOUT
. Затем я перенаправляюсь к элементу управления TextBox
. Это вроде как работает, но на самом деле это всего лишь уродливый хак.
Основная проблема заключается в том, чтобы заставить все вещи оболочки работать: стрелка вверх и стрелка вниз для истории, редактирования, копирования и вставки, EOF, подсветка синтаксиса, подсказки инструментов и т.д. Требуется много работы для получите это право, и это не проблема, которую я пытаюсь решить (я пытаюсь получить интерактивную оболочку, размещенную в Revit, не создавая идеальный графический интерфейс оболочки).
Если бы это был не проект .NET, я бы, вероятно, подумал о повторном использовании PyCrust/PyWrap, но я не уверен, это можно сделать из проекта WinForms. Есть ли что-то подобное для .NET?
Кто-нибудь когда-либо реализовал интерфейс IConsole
и может показать пример того, что мне нужно сделать? Кажется, это будет правильный маршрут (в отличие от использования модуля code
), но для жизни меня я не могу понять. Исходный код IronPython не имеет комментариев.
ОБНОВЛЕНИЕ: После того, как я попробовал некоторые вещи, я в конце концов остановился на превосходном IronLab. Он включает пример оболочки с подсветкой синтаксиса и всеми. Код был приятным и легким для интеграции. Проверьте код RevitPythonShell на подсказки о том, как вставлять его.