问题标签 [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 回答
34 浏览

python - 如何修复“ValueError:”" 在使用这种多对多关系之前,"klant" 字段需要有一个值。"

以下是进口:

这是我定义的第一个类。它是动作的状态 (Actie),它有一个 status-id 和一个 status-name,max_length 属性为 5(todo、doing、done)

这是第二类Klant,意思是客户。它有一个 id、一个客户名称和来自客户的用户,这是一个 ManyToManyField,指的是 django 给我的 User-table 中的用户。

这是 Actie 类(动作或用户确定的动作),它有一个 id、一个动作名称、一个动作状态(指上面的状态表)、动作发布日期、结束日期(期限)和一个客户 ID,它指的是 Klant。

这就是我在 shell 中所做的:

所以我现在的问题是我必须做些什么来修复这个 ValueError?

0 投票
2 回答
60 浏览

python - 如何在另一个表的特定属性上设置 ForeignKey?

这是我的头等舱 Klant,意思是客户。它有一个 id、一个客户名称和来自客户的用户,这是一个 ManyToManyField,指的是 django 给我的 User-table 中的用户。

这是 Actie 类(动作或用户确定的动作),它有一个 id、一个动作名称、一个动作发布日期、一个结束日期(截止日期)、一个引用 Klant 和 actie_gebruiker 的客户 ID我想从 Klant 表中引用 klant_gebruiker。

所以我现在的问题是我必须做什么才能将 actie_gebruiker 的值设置为 Klant 表中的属性 klant_gebruiker?

0 投票
3 回答
6376 浏览

bounding-box - 如何使用 Revit API 从 Revit Element 获取边界框,然后调用该边界框的中心

我正在尝试围绕其中心点旋转 Revit 元素。为此,我需要选择一个 Revit 元素并找到它的中心点,然后使用该元素中心点的坐标创建一条线。

完成此操作的最佳方法是将 Revit 元素包装在边界框中,然后找到该框的中心。我的问题是我不确定如何做到这一点。

我正在使用 pyRevit (惊人的工具),我被困在如何使用边界框包装选定元素或检索其现有边界框。

任何帮助将不胜感激!我真的很想学习 Revit API 并了解一切是如何工作的。我正在取得进展,但还有很多事情要解开。

提前感谢您查看我到目前为止所拥有的内容。如果有任何需要进一步澄清的地方,请告诉我!

编辑:

@CyrilWaechter

我想你是对的。使用 LocationPoint 可能更有意义。我查看了您链接的脚本(谢谢顺便说一句!),我尝试在我的代码中实现这一部分。

我正在通过此语句传递 ElementId,但出现错误,“Wall”对象没有属性“GetTransform”。你能帮我理解这个吗?

编辑2:感谢@JeremyTammik 和@CyrilWaechter,您的见解帮助我了解了哪里出错了。虽然我仍然觉得 Revit API 中的某些属性不明确,但我能够让我的代码正确执行。我将在下面发布我能够工作的代码。

0 投票
0 回答
3329 浏览

python - 从 Dynamo Python 脚本中的 X、Y 和 Z 列表创建点

我有 3 个列表,每个是点的 X、Y 和 Z 坐标。我尝试使用 Dynamo 的 Point.ByCoordinates 节点,但它不接受列表作为输入。

我尝试创建一个 Python 脚本来帮助我,但是我对 python 很陌生,有人可以在这里帮助我吗?

到目前为止,这是我出来的,但我不知道如何处理了。提前致谢!

0 投票
0 回答
387 浏览

python - pyrevit 中的 FilteredElementCollector 出现意外错误

python、pyRevit 和 Revit API 的初学者,如果我的问题措辞不佳,我深表歉意。今天我用pyRevit开发了一个简单的按钮工具,然后几分钟后停止工作,没有任何改变(我知道)

我的工具将所有具有排除元素的组添加到选择中。它工作了一段时间,然后开始抛出这个错误,我无法做出正面或反面:

例外:函数 `anonymous-namespace'::FilteredElementCollector_constructor 或集合中的一项的输入参数“文档”在文件 d:\ship\2018_px64\source\revit\revitdbapi\APIFilteredElementCollectorProxy.cpp 的第 326 行为空。参数名称:文档

错误消息中的路径不是我在计算机上识别的路径。这是相关代码(回溯到第 24 行,即“groups = FilteredElementCollector...”:

非常感谢任何解决方案,甚至帮助破译错误消息。

0 投票
1 回答
2165 浏览

revit-api - 通过 Selection.SetElementIds 将选择修改为第一个元素

我在编写让 med 选择我选择的第一个元素的脚本时遇到问题。这对我很有用,因为我从时间表中选择了正确的 Air Terminal(在那里我可以看到我想要使用的类似气流),并从选择中使用命令 Create Similar。The trouble is that this command does not work when multiple elements are selected. 因此,我想要列表中的第一个对象。这是我正在尝试的代码:

这将返回以下错误消息:

异常:Microsoft.Scripting.ArgumentTypeException:预期的 int,得到 ElementId 好的,然后我会尝试替换

这似乎有效,但未修改选择

我刚刚开始编写 RPS 脚本,但我希望有人能告诉我我在这里做错了什么,即使它很明显。

谢谢你。凯尔

编辑:谢谢杰里米,为我解决了这个问题!诀窍是生成一个列表,而不是 python 列表。.Add 方法是我没有得到的。

如果有人感兴趣,最终代码:

0 投票
2 回答
1967 浏览

revit-api - Revit API 中的高级图元过滤

我正在关注此 youtube 视频 ( https://www.youtube.com/watch?v=WU_D2qNnuGg&index=7&list=PLc_1PNcpnV5742XyF8z7xyL9OF8XJNYnv ) 中显示的示例,该示例说明了 Revit API 中的过滤方法优于通常的迭代。但是我的代码比迭代方法慢得多:
过滤方法-0.16 秒
迭代方法-0.06 秒

我使用过滤方法的代码是:

对于迭代,使用了以下代码。

0 投票
1 回答
131 浏览

github - 无法在 revitpythonshell2018 上导入模块 revit python 包装器 (rpw)

我想将 revit python 包装器与 revitpythonshell 一起使用。我从https://github.com/gtalarico/revitpythonwrapper将revit python wrapper repo 克隆到我的桌面上。那我应该怎么做才能让 revitpythonshell 可以访问这个模块呢?所有 rpw doc ( https://revitpythonwrapper.readthedocs.io/en/latest/installation.html ) 说的是克隆 revitpythonshell repo。我在这里错过了什么吗?

0 投票
1 回答
57 浏览

python - 如何使代码返回 [True, False] 列表?

我正在尝试编写一个代码,根据输入返回一个布尔值列表。

我执行以下操作:

该代码只有两个可能的输入“FC”或“BF”。

  • 如果选择的输入是“FC”,则输出应该是一个布尔列表:

    /li>
  • 如果选择的输入是“BF”,输出应该是:

    /li>
0 投票
2 回答
317 浏览

revit-api - 如何获取空间天花板上方物体的空间信息?

我是一名 MEP 工程师,我想在(房间边界)天花板上方添加有关机械设备、管道附件和管道附件的空间信息。

我的第一个想法是使用 BoundingBoxIntersectsFilter 和 Outline 并ClosedShell.GetBoundingBox().Max.Z从空间修改,然后使用 aBoundingBoxIntersectsFilter来捕获我的元素。这种方法有效,但我会在注意限于六面的空间上方的准确性方面遇到问题。这是因为大纲只需要点。现在,我想我需要将我的空间转换为实体几何并修改 Z 值,然后使用ElementIntersectsElementFilter,但我目前正在弄清楚使用哪些方法来修改我的空间几何。

也许我需要使用GetGeometryObjectFromReference,但我并不真正了解如何使用Reference。我看到get_Geometry已经在这里使用过,但我需要帮助如何使用它。具体来说,这是我不明白如何在python代码中实现的代码:

非常感谢任何朝着正确方向的踢!

凯尔