问题标签 [revitpythonshell]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
291 浏览

numpy - 如何在 IronPython for Revit API 中使用 NumPy?

我正在使用 python 在 Revit API 中编写脚本。我正在寻找使用 NumPy,因为我正在尝试生成一个点阵网格来放置家庭。但是,我知道 NumPy 与 IronPython 不兼容,因为它是用 CPython 编写的。有解决方案吗?如果没有,有没有什么好的方法可以在不使用像 NumPy 这样的外部包的情况下生成点的格子网格?

0 投票
0 回答
126 浏览

ironpython - 如何在 Ironpython 将列表转换为数组?

我想将 list[int] 转换为 array[int] 或将 int 转换为 array[int]

我试图安装 Mathnet.numerics。但我不知道我在哪里安装它以及如何安装..

这是我的 revit 发电机代码(ironpython)。在List.RemoveItemAtIndex(lst,p), p 是必须的array[int]。但我无法改变它。

错误代码是“预期的数组 [int],得到 int”

0 投票
1 回答
927 浏览

python - 带有 ISelectionFilter 的 PickObjects 不允许我选择任何东西,为什么?

我正在尝试通过使用 GUI 选择一个空间以在 Revit MEP 2019 中使用,并存储选择以供在脚本中进一步使用。代码是用 pyRevit 编写的。该脚本从 shell 和 addin 按钮运行,但是当进入选择模式(PickObject 方法)时,我根本不允许选择任何东西。我没有收到任何错误,只是在 GUI 中输入选择工具时没有任何内容可供选择。

我已经在代码中评论了我尝试过的没有用的代码。

我不明白问题出在哪里,我最好的猜测是在过滤器定义中。帮助字符串“选择空间(房间)”在左下角正确显示,当我应该在视图中选择某些内容时,除了视口之外的所有内容都会变成灰色。鼠标变成了某种“禁止”的符号。

我将非常感谢一些帮助。提前感谢任何可能希望提供帮助的人!

0 投票
1 回答
271 浏览

c# - IronPython 和 Revit API - 如何在列表框中显示项目属性(属性名称)?

我是一名建筑师,通过 Revit 逐渐爱上了编码。但不幸的是,由于仍然是一个终极菜鸟,我需要任何愿意加入的人的帮助。我也是 Stackoverflow 菜鸟,所以我不知道是否可以,并且在社区中发布这样的问题更多辅导的,然后解决问题。但无论如何,这里是这样:我正在尝试创建一个能够同时从 Revit 族编辑器中删除多个参数的应用程序。我在 C# 方面取得了成功,但是由于我想转移到 Python,因为作为初学者更容易进入,所以我做了很多浏览,但由于 OOP 知识有限而没有任何帮助。如何在列表框中显示 Family 参数名称,或者如果列表框中已经有字符串名称,如何将所选项目与 FamilyParameterSet 中的实际参数进行比较?

我有一个起始代码,可以从家庭管理器收集所有参数。我将它投射到列表中。然后一个选项是使用要在列表框中列出的参数的名称属性,但我不知道返回并检查列表或循环列表以将参数集中的名称与从列表框中选择的名称进行比较。因此,我选择了将 Family 参数直接放入列表框中的另一个选项,但我无法显示实际的 Name 属性。这段 C# 代码可能对我有帮助,但我不知道如何在 Python 中重新创建它,因为我的 OOP 经验真的很差。 ListBox 上的项目显示为类名

我需要函数 RemoveParameter 具有 Family 参数的所有 .Id 比例,以便将它们从 Family 参数集中删除。在代码的开头(对于不知道 Revit API 的人)“fps”表示 FamilyParameterSet 被转换为 Python 列表“paramsList”。所以我需要从列表框中选择的项目中删除 FPS 的成员。

0 投票
1 回答
340 浏览

c# - 带有位图图像的 Revit 功能区面板按钮,没有 RevitPythonShell 或 C#(仅限 Ironpython)?

我是一名架构师(真正的架构师,而不是软件架构师 :))尝试使用 Revit API 并将自己引入编码世界。我已经使用 C# 完成了一部分,但切换到 Python,希望初始步骤会以这种方式更快。回到正题,我创建了一个应用程序并使用 RevitPythonShell 部署了一个 DLL。我在功能区面板中创建了一个按钮,但想创建位图图像,这样看起来不错。有什么方法可以将位图图像添加到应用程序中,这样我就可以在没有安装 RPS 的情况下在 Revit 实例上使用它?

以前我使用 C# 创建了相同的应用程序,并且运行顺利。但是使用Python,有一个问题。在 Revit 功能区面板上创建控件时,需要传入 DLL 的路径以及该 DLL 中实现 IExternalCommand 的类的完全限定名称(包括命名空间)。但是,在使用 Python 时,这是不可能的,至少我不知道该怎么做。

Daren Thomas 在使用 RPS 作为 Stratup 脚本时有一个很好的指导(https://github.com/daren-thomas/scripting-autodesk-revit-with-revitpythonshell/blob/master/more_control_over_the_ribbonpanel.md)但是有什么办法可以避免这种情况,只是为了部署新脚本或“翻译”Revit API 的 PushButtonData 构造函数的类名?

这张图片显示了我想要实现的目标。它显示了我的 C# vs Python 应用程序。

例子

0 投票
3 回答
1046 浏览

pycharm - 如何使用 PyCharm 导入 Revit 和 pyRevit 库?

这是我在这里的第一个问题,希望不会是我的最后一个问题。由于我已经使用了很多人的一些答案,我想首先感谢你们所有人。

上下文:我正在为 Revit 开发一个模块,为此,我使用 pyRevit 与 Revit API 进行交换。pyRevit 允许我使用 Python 编写代码,我使用 PyCharm IDE 编写代码。

问题:当我尝试导入库时,出现“未解决的引用”错误消息。否则,该模块已经在 Revit 上运行,因此在使用它时可以顺利导入。

我已经尝试将文件夹的路径添加到 Files --> Settings --> Project Interpreter --> Interpreter path,然后将该文件夹标记为源文件夹(右键单击 --> Mark Directory As --> Source Root),然后使缓存无效/重新启动。路径是:

我还尝试在文件-> 设置--> 项目结构--> 添加内容根目录中添加这些文件夹。完成后,它们会出现在项目根目录中。在这里,右侧的导入失败(没有足够的声誉来发布图片,所以这是一个链接)

项目结构和红色导入

所以一切都被标记为“未解决的参考”,即使是系统导入。如何帮助 Pycharm 正确读取这些库、删除所有导入错误并简化自动完成和开发?我想知道 Revit 库是否受到保护,但在这种情况下,它至少应该与 pyRevit 和 System 一起使用。

任何帮助将不胜感激。

更新:将 Pyrevit 文件夹添加到项目结构并将其标记为源文件夹并单击文件 --> 无效缓存/重新启动后,pyRevit 的导入就可以了。好消息。

对于 Revit 文件夹(以及 Microsoft .NET 库,如 mscorlib(用于 List)),我认为它会失败,因为它们是从 C# 语言编译的。有没有办法使用 Python IDE 在 C# 中导入库,或者至少可以识别内部结构和函数名称?

0 投票
2 回答
594 浏览

revit-api - Revit Python Shell:如何在项目中没有实例的情况下获取“管道类型”系列的类型名称?

最终目标是将我想要的 PipeType(Plex Wire)的 ElementId 传递给 Pipe.Create,但我不知道如何在没有要检查的 Pipe 实例的项目中选择正确的 PipeType ElementId。

在一个测试项目中,我使用了 Transfer Project Standards 来引入我想要使用的 PipeType,并手动创建了一些 Pipe 实例来检查......

...但正如我所提到的,我希望能够从包含所需 PipeTypes(来自项目模板)的项目中使用 Pipe.Create,但没有预先存在的 Pipe 实例。

谢谢

0 投票
0 回答
41 浏览

sqlite - 我正在尝试提取值并将它们放在 .db 中以供以后使用,但是我的代码有问题,我什至无法再加载 SQLite

使用:-IronPython -AutoDesk -Revit (PyRevit) -Revit API -SQLite3

我的代码如下:

此代码曾经在 PyRevit 中工作,但现在不能,并出现以下错误:

Exception : System.IO.IOException: Could not add reference to assembly IronPython.SQLite

请告知,这是一个大型项目的早期步骤之一,因此耽误了我的工作。

我期待你的回复。

0 投票
0 回答
65 浏览

pip - 子进程的包依赖

使用子进程模块,我试图从 Iron python 调用 c-python 并将输出返回到 Iron python。

我正在为 revit 的 dynamo 开发 Iron python IDE,我的桌面上有一个 c-python 脚本并运行它。

问题是我如何确定最终用户是否可以使用 c-python 中的包?由于最终用户会不习惯进入 cmd 提示符并安装每个包(土木工程师甚至可能不知道这一点),我正在寻找一种方法在后台使用 Iron python 打开 cmd 并安装必要的包(如果以前没有的话)安装。

0 投票
2 回答
668 浏览

revit-api - 使用 Revit api 2020 的 Revit API 壁厚

我在 revit api 工作以获得特殊房间的墙壁,这是我使用投影射线技术完成的部分。这是我无法做壁厚的要点。有什么办法可以提取壁厚。我正在使用 revit 2020。谢谢