问题标签 [revit-api]

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 投票
3 回答
1571 浏览

c# - 来自自定义位置的 WCF 客户端配置

我是 WCF 的新手,正在尝试制作我的第一个服务(一个简单的使用情况报告服务)。我浏览了示例和教程并创建了一个服务。我有一个简单的测试程序,可以运行我的核心代码并发送报告。目前我在调试器中本地运行,但是运行这个简单的 exe 程序托管服务,发送报告,服务创建日志文件,就像它应该做的那样......一切都很好。

现在,我的实际程序是另一个在其 API (Autodesk Revit) 中运行的商业程序的插件。当我在 Revit API 中运行完全相同的代码时,我收到一个错误,即没有定义端点。我的猜测是这是因为它正在寻找主要的 Revit.exe.config 显然不会定义我的端点。我为我的 dll 创建了一个 .config 文件(MyLibrary.dll.config),并在我的代码的执行目录中,它正确定义了端点,但似乎无法识别。

所以我的问题是如何让它从这个配置文件中加载连接设置?还是我应该这样做的另一种方式?我愿意以某种方式或其他方式在代码中设置它,只是无法弄清楚如何让它连接......

我不确定这是否重要,但这是在独立程序中运行的配置:

我抛出端点异常的构造函数很简单:

这是引发的异常:

任何帮助将不胜感激...

0 投票
1 回答
2436 浏览

c# - 反序列化 Json XYZ 点

欧特克 Revit 开发

我将一个 XYZ 点从一个容器(点和标签)中的一个类(点)序列化到一个文件中。

通过这个方法

我得到了这个结果

{"点":{"bboxmin":{"Z":-1000.0,"Y":-100.0,"X":-100.0},"bboxmax":{"Z":-0.1,"Y":100.0 ,"X":100.0}},"tg":{"eId":"666470","text":"coor: Kiss me"}}

在反序列化时,我得到所有点的结果为 (0.0,0.0,0.0) 的值,这是无法将读取值解析为其适当类型的结果。

反序列化方法

我希望我能找到一种方法来转换和覆盖这种混乱。

编辑:精确 Newton.JSon 输出

{"点":{"bboxmin":{"Z":-1000.0,"Y":-100.0,"X":-100.0},"bboxmax":{"Z":-0.1,"Y":100.0 ,"X":100.0},"sboxmin":{"Z":-10.277690406517843,"Y":-13.533464566929133,"X":-13.389107611548557},"sboxmax":{"Z":16.510826771653544,"Y": 13.533464566929133,"X":13.389107611548557},"vorEyP":{"Z":30.114082470913921,"Y":34.471718543415037,"X":-7.7202528373680934},"vorFwD":{"Z":-0.57735026918962573,"Y": -0.57735026918962584,"X":0.57735026918962573},"vorUP":{"Z":0.816496580927726,"Y":-0.408248290463863,"X":0.40824829046386296},"v3dname":"-4Ard86296},"v3dname"-4Ar"Tags":{"eId":"666470","origin":{"Z":1154.5239372729186,"Y":1164.3934060532893,"X":-1119.6229882673815},"text":"coor: Kiss me"," ledelbo":{"Z":1157.6807845880096,"Y":1163.9955344285622,"X":-1116.8640125770175}}}

标记类

积分等级

0 投票
1 回答
810 浏览

c# - Revit API 中的偏移命令

如何在我的 C# 插件中使用 offset 命令?我有要包含在偏移和偏移值中的线/弧的列表。我找不到要使用的命令。

我认为该ElementTransformUnit课程包含可以做的事情,但似乎没有...

谢谢

0 投票
1 回答
489 浏览

revit - Revit API:“PickObject”不显示对话框窗口

我只是做了这里写的,但我遇到了问题__window__.Topmost = True

(所以,我直接从 Shell 运行)

这是我的完整代码:

事实上,如果我这样做,我会收到一条错误消息,说“return”是外部函数。如果我用其他东西改变'return'行,比如elem = Element.GetGeometryObjectFromReference(pickedRef),那么它说有一个意外的缩进(当然我检查了缩进,正常应该没问题)。

最后,如果我评论该__window__.Topmost行,那么我没有收到错误消息。

您是否也遇到过问题?

但是我最大的问题是,最后,我选择了一个元素,但我没有看到弹出对话框窗口,并显示预期的消息“请选择一个组”)。那是从哪里来的?我猜“最顶层”命令只是将外壳带回顶部,所以它不是来自那个......

有什么线索吗?

非常感谢 !

0 投票
1 回答
1305 浏览

c# - Revit API 构建:如何在对话框中放置下拉列表?

我正在使用C#为这个名为Revit Autodesk.

我想显示一个显示下拉列表的对话框,然后用户可以从该列表中进行选择。

我启动了一个新对象,称为

它向我显示了一个对话框,但我无法向其中添加下拉列表。

有什么帮助吗?

0 投票
1 回答
983 浏览

c# - 获取数量和统一的所有建筑元素 - Revit Api

对于 revit 2014 上的导出加载项,我需要获取打开的项目中的所有建筑元素。

要获取元素,我目前正在使用 logicalfilter :

然后我使用类别 ID 上的一些过滤器解析它们,使用 Element.Category.Id.IntegerValue 将其与我的数组中的每个元素进行比较。

我可以获取所有元素,但缺少一些参数:

  • 我有多少这种类型的元素?(如 N 门)。
  • 我应该使用哪个单位(m2、m3、m、kg 等)
  • 该元素中有哪些材料?(我知道我可以使用 GetMaterialIds() 方法获取元素的 materialIds,但它似乎只返回一些材料,而不是全部)

另外,当我获取元素时,有些元素没有名称,或者像“300x75”这样的无意义名称,而不是元素名称(例如木门)。

0 投票
1 回答
1825 浏览

ironpython - ImportError:没有名为 wpf 的模块(仅在 Revit 环境中)- 用户界面

我可以在使用 ipy 解释器启动的 VS 上创建一个简单的工作 UI,但是当我尝试在 Revit 环境(revit python shell 或宏)中启动它时,我收到以下错误:ImportError: No module named wpf

wpf 是一个内置模块,所以我认为我没有忘记任何参考或pythonpath。

我检查了两个 sys.version(来自 stackoverflow 上的帖子的想法): import sys print sys.version

并在 revitpythonshell 和 Ironpython 控制台上得到相同的结果: 2.7.4 (IronPython 2.7.4 (2.7.0.40) on .NET 4.0.30319.18444 (64-bit)) un2.7.4 (IronPython 2.7.4 (2.7.0.40) on .NET 4.0.30319.18444(64 位))

任何想法 ?

0 投票
2 回答
9737 浏览

c# - 如何使用c#获取revit中所有元素的列表

我想添加一个插件,它读取具有 RevitId 字符串的数据文件并绘制它们。

我不知道如何使用 C# 根据字符串 elementId 在 Revit 中查找给定元素。

我知道这给了我一个文件,但我不知道如何获取所有的 ID。我正在考虑使用一个 foreach 循环来检查元素 id 的字符串与文档中所有元素的字符串,直到找到匹配项。然后,我可以操纵它。

0 投票
1 回答
2141 浏览

c# - Find a view filter Revit Api

I am trying to use a filter to show/hide a certain element on the view. The family is from catogary GenericModel. I use the same code snippet that on the help on the autodesk site it works fine in its original state (catogary is walls) but when I changed it to GenericModel I got the following error: "One of the given rules refers to a parameter that does not apply to this filter's categories." I suspect that something wrong with the typeOf(FamilyInstance). The original code on Autodesk site is:

http://help.autodesk.com/view/RVT/2014/ENU/?guid=GUID-B6FB80F2-7A17-4242-9E95-D6056090E85B

and here is my code

0 投票
1 回答
84 浏览

c# - 如何避免重新启动 Revit

我已经使用 Revit API 以编程方式为我的应用程序分配了一个快捷方式。除非我重新启动 Revit 2015,否则快捷键不会反映。如何避免重新启动 Revit?有什么方法可以让我在分配快捷键后不必重新启动 Revit 2015?