【问题标题】:How to create Revit Add-In DLL from Python如何从 Python 创建 Revit 加载项 DLL
【发布时间】:2014-02-04 17:47:13
【问题描述】:

我做了一件蠢事。我对 Revit 2014 允许在 Ruby 中使用宏感到非常兴奋,安装了 RevitRubyShell,并编写了将成为插件的内容。

小问题——IronRuby 没有 DLL 编译器。哦!

所以,我要将我的代码转换为 Python(并使用出色的 RevitPythonShell),这是我在 Revit 2014 Ruby 出现之前用于 Revit API 工作的。

我的问题是——在我将我的 Ruby 代码转换为 Python 之后,(如何)我可以创建一个 Revit 插件 DLL 吗?我知道您可以将 Python 编译为 .NET DLL,但 Revit 加载项的每个示例似乎都在 C# 中。我想留在解释型环境中,因为以这种方式在 Revit 中开发非常快。但是,如果我必须将所有内容都转换为 C# 以制作符合 IExternalApplication 接口的插件,那么在 Python(或 Ruby)中进行所有开发是没有意义的。

有人用 Python 做过 Revit 插件吗?

谢谢!

安迪

【问题讨论】:

  • 你想要编译这个项目的原因是什么?隐藏来源?还是容易部署?
  • 易于部署,比什么都重要。我将开源代码。我最终弄清楚了如何在启动时将 Ruby 代码安装到 Revit 宏模块中,所以我现在继续制作一个加载项 DLL。
  • 这个问题(我是OP)现在已经有1000多浏览量了,既然关注这么多,我就这么说吧,以后的读者可能会感兴趣:我已经将我所有的 Revit 加载项转换为 C# 和 Visual Studio Express。我发现它只是一个用于创建和调试 Revit 插件的更简单的环境。
  • +1,我也认为 C# 是一种很好的开发语言。RPS 的诞生是为了在不重新启动 Revit 的情况下测试 C# 插件的零碎部分(当时的版本 9,我想想)并测试一些 API / 探索......可能是一种混合模式,在 RPS 中快速尝试一些东西,然后将其转换为 C# 混凝土,这将是我用于专业插件开发的方式。
  • 好点!我的加载项通常会执行需要重新启动的操作,因此当我切换时,我并没有放弃 RPS 的 优势。我只是硬着头皮失去了其他好处。 :) 可能是 VS 调试和网络上大量的 C# Revit 代码示例是我很高兴只用 C# 完成这一切的原因。那,我几乎不知道 Python 。 . .

标签: python add-in revit


【解决方案1】:

查看这篇博文:Deploying RPS scripts with DeployRpsAddin

在那篇文章中,我描述了RevitPythonShell 的一项功能,让您可以创建 RevitPythonShell (RPS) 脚本的可分发版本 - 一堆要发布的脚本。

完成此操作的主要方法是提供一个用 C# 编写的包装 DLL,它将您的脚本和配置文件存储为资源,并在运行时使用 IronPython 执行它们。这仍然意味着您的 python 代码没有“编译”到 IL,但是您可以将其捆绑安装在单独的计算机上。查看DesignPerformanceViewer 了解此类插件的详细示例。

【讨论】:

  • 达人,谢谢——因为这不是严格意义上的 RPS 问题,我不想直接问你,我很感谢你通常的快速响应,即使在我“没关系”之后。
【解决方案2】:

没关系。经过更多挖掘后,发现这个 stackoverflow 答案表明 IronPython DLL 不能从 IronPython 以外的任何地方移植/调用,因此忽略了 Revit 插件。

Build .NET DLLs from Python code?(根据此链接,答案是“否”)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-14
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    相关资源
    最近更新 更多