Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Python创建Revit加载项DLL_Python_Add In_Revit - Fatal编程技术网

如何从Python创建Revit加载项DLL

如何从Python创建Revit加载项DLL,python,add-in,revit,Python,Add In,Revit,我做了一件蠢事。我对Revit 2014允许Ruby中的宏感到非常兴奋,安装了RevitRubyShell,并编写了即将成为外接程序的内容 小问题——IronRuby没有DLL编译器。哦 因此,我将把代码转换为Python(并使用优秀的RevitPythonShell),这是我在Revit 2014 Ruby出现之前用于Revit API工作的代码 我的问题是——在我将Ruby代码转换为Python之后,(如何)创建Revit加载项DLL?我知道您可以将Python编译为.NET DLL,但Re

我做了一件蠢事。我对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外接程序吗

谢谢


安迪

没关系。在进一步挖掘之后,我们发现了这个stackoverflow答案,它表明IronPython DLL除了IronPython之外,其他任何东西都不可移植/调用,因此没有Revit加载项

(根据此链接,答案是“否”)

查看此博客帖子:

在那篇文章中,我描述了的一个功能,让您创建一个可分发版本的RevitPythonShell(RPS)脚本—一组要发布的脚本


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

您希望编译该项目的原因是什么?隐藏来源?还是简单部署?简单部署,比什么都重要。我要把代码开源。我最终找到了如何在启动时在Revit宏模块中安装Ruby代码的方法,因此我现在将介绍如何制作一个外接程序DLL。这个问题(我是OP)现在有1000多个视图,因此,由于人们对它非常关注,我要说,这可能会引起未来读者的兴趣:我已将所有Revit加载项转换为C#和Visual Studio Express。我发现它只是一个更容易创建和调试Revit加载项的环境。+1,我还认为C#是一种很好的开发语言。RPS的诞生是为了在不重新启动Revit(我想当时是版本9)的情况下测试C#Addin的各个部分,并且还可以测试一些API/exploration。。。也许在RPS中快速尝试一些东西,然后将其转化为C#concrete的混合模式将是我用于专业插件开发的方式。这一点很好!我的外接程序经常做一些需要重新启动的事情,所以在切换时我并没有放弃RPS的好处。我只是因为失去了其他的好处而忍气吞声。:)可能是由于VS调试和web上大量的C#Revit代码示例,我很高兴能用C#完成这一切。我几乎不懂Python。Daren,谢谢——因为这不是一个严格意义上的RPS问题,我不想直接问你,我感谢你通常的快速回答,即使在我说“没关系”之后。