【问题标题】:What's the right way to integrate the Maya C# api with existing scripts? [closed]将 Maya C# api 与现有脚本集成的正确方法是什么? [关闭]
【发布时间】:2015-12-09 16:21:16
【问题描述】:

我有一组 Python 库(Maya Python API),我想在 C# 中包含一些包装器。目前能够通过构造字符串并将它们发送到 python 引擎来调用 python 代码,但更愿意在 C# 中使用智能感知/正确的 python 函数签名。这样的工具存在吗?或者有没有更好的方法将 python 集成到 C# 工作流中?

【问题讨论】:

  • “要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,描述问题以及迄今为止为解决问题所做的工作。”
  • 这个问题被描述为“从 C# 插件调用 Maya Python API 代码导致代码容易出错”,但这就是我迄今为止一直在做的事情。
  • 这个问题与语言互操作性有关,如果有一个工具可以帮助解决这个问题,有什么更好的论坛(SE 与否)来查询它?我显然尝试过谷歌搜索。
  • 我没有这方面的经验,但总有softwarerecs.stackexchange.com
  • 未来的选民:我编辑了 OP 的标题和描述——这看起来像是一个软件记录,但它确实是一个合法的策略问题

标签: c# python maya maya-api


【解决方案1】:

dotnet API 实际上是围绕与 C++ api 相同的模型设计的:您将编写代码来操作正在运行的 Maya,然后以用户可以直接调用或使用工具调用的 Mel 命令的形式提供一个瘦包装器菜单。不幸的是,这意味着从插件内部调用脚本需要通过脚本层来回往返,并伴随着转换成本。另外,您将不得不编写 C# 来解析 python 或 mel 中的命令结果并决定如何做出反应,即使它有效,这也将是一场噩梦。

将 C# 代码设计得更小可能更好。期望通过脚本控制的独立部分(可以是 mel 或 Python——当您的插件公开命令时,您可以“免费”获得它)。

Python Tools for Visual Studio 确实为 Visual Studio 中的 Python 代码提供了一定程度的自动完成功能,但我认为它不适用于 .CS 文件。如果你真的需要提供大量的脚本(而不是坚持极简设计,我仍然认为它更好)你可以维护一个单独的 PTVS 项目来创建 python 基础设施作为子项目,然后将文件打包它在 C# 插件中创建为资源。然而,除了你无法避免的事情——比如(嘘!嘶嘶声!)AETemplates——理智的策略是将插件视为从脚本调用的高性能函数的提供者,而不是相反。

【讨论】:

  • 很公平,在某些情况下使用 Maya 需要从 python 调用 C#,在某些情况下 - 从 C# 调用 python。这个问题涉及到一个人用C#编写插件的情况,而Maya提供的python API比C++/C#更简单。在 Visual Studio 中更容易使用 python 函数是我在这里寻找的。我在寻找一个更通用的解决方案,类似于“python 是否有 SWIG”,但这以某种方式使其成为 SO 的限制(尽管感谢您尝试重新提出我的问题)。跨度>
  • 在给定的 python 作用域中,您可以使用反射获取所有名称,并获取这些名称中的名称,等等。无限 - 这就是像 PVTS 或 PyCharm 这样的 IDE 的做法。然而,要做正确的事情需要做很多工作。您可以使用 inspect 模块做一个便宜的版本,但它可能不足以解决您的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多