2015-12-09 1 views
-2

У меня есть набор библиотек в Python (API Maya Python), что я хотел бы иметь некоторые обертки в C#. В настоящее время у них есть возможность вызвать код python, построив строки и отправив их в python-движок, но предпочтет иметь intellisense/правильные сигнатуры функций python в C#. Существует ли такой инструмент? Или есть лучший способ интегрировать python в рабочий процесс C#?Каков правильный способ интеграции Maya C# api с существующими скриптами?

+1

«Вопросы, предлагающие нам рекомендовать или находить книгу, инструмент, библиотеку программного обеспечения, учебное пособие или другие ресурсы за пределами сайта, не относятся к теме для переполнения стека, поскольку они склонны привлекать упрямые ответы и спам. Вместо этого опишите проблему и что было сделано до сих пор, чтобы решить эту проблему ». – johnnyRose

+0

Проблема описана как «Вызов кода API Maya Python из плагина C# приводит к тому, что код, подверженный ошибкам», но это то, что я делал до сих пор. – Joe

+0

Вопрос связан с совместимостью языка, если есть инструмент, который помогает с этим, что является лучшим форумом (SE или нет), чтобы узнать об этом? Я пробовал искать. – Joe

ответ

1

dotnet API действительно разработан в той же модели, что и C++ api: вы должны писать код для управления запущенной Maya, а затем предоставлять тонкую оболочку в виде команд Mel, которые пользователь может вызывать напрямую или с помощью инструментов и меню. К сожалению, это означает, что для вызова сценариев изнутри плагина требуется совместное путешествие по слою сценария с затратами на конвертацию. Кроме того, вам нужно будет написать C# для анализа результатов команды в python или mel и решить, как реагировать, что будет кошмаром, даже если оно работает.

Возможно, лучше создать код C# как меньший. автономную часть, которая ожидает, что ее можно будет контролировать из сценариев (которые могут быть либо mel, либо Python - вы получаете это для «free», когда ваш плагин предоставляет commnads).

Python Tools for Visual Studio действительно дает некоторую степень автозаполнения кода Python внутри визуальной студии, но я не думаю, что он будет работать в файле .CS. Если вам действительно нужно предоставить значительное количество скриптов (в отличие от минималистского дизайна, который, как я считаю, по-прежнему считается превосходным), вы можете поддерживать отдельный проект PTVS для создания инфраструктуры python в качестве подпроекта, а затем пакетных файлов создает в качестве ресурсов плагин C#. Однако, помимо вещей, которые вы не можете избежать - например (boo! Hiss!) AETemplates - разумная стратегия заключается в том, чтобы рассматривать плагин как поставщик высокопроизводительных функций, вызываемых из сценария, а не наоборот.

+0

Справедливо, в некоторых случаях с Maya нужно называть C# из python, а в некоторых случаях - python из C#. Вопрос связан с ситуацией, когда вы пишете плагин на C# и API-интерфейс python, предоставляемый Maya, проще использовать, чем C++/C#. Имея функции python, более доступные в Visual Studio, я ищу здесь. Я тоже был в поиске более общего решения по принципу «есть ли SWIG для python», но это почему-то делает его недоступным для SO (спасибо за попытку воскресить мой вопрос, хотя). – Joe

+0

В заданной области python вы можете получить все имена, используя отражение, и получить имена в этих именах и т. Д. Ad infinitum - вот как это делают IDE, такие как PVTS или PyCharm. Тем не менее, это большая работа, чтобы сделать все правильно. Вы можете сделать версию cheapo, используя модуль 'inspect', но, вероятно, недостаточно помочь решить вашу проблему – theodox