问题标签 [revit]

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 回答
235 浏览

.net - 如何在 IronPython 中访问 .NET API 对象的覆盖属性?

我正在使用 IronPython 为 Autodesk Revit Architecture 2010 的插件 API 创建一个外壳,以加快学习他们的 API。

API 提供的类之一是Autodesk.Revit.Elements.RoomAutodesk.Revit.Element.

我真的很想阅读Room.Name,但这就是繁荣!在我身上,就像这样Room覆盖了ElementsName属性:

这当然隐藏了吸气剂......

给定一个类型的对象,Room我如何访问基类 getter?

我试过了

但似乎 .NET 派生类没有基本属性。

0 投票
3 回答
4815 浏览

.net - 我可以让默认 AppDomain 使用某些程序集的卷影副本吗?

我为什么要这样做的简短解释:

我正忙于为 Autodesk Revit Architecture 2010 编写插件。测试我的插件代码非常麻烦,因为我必须为每个调试会话重新启动 Autodesk,手动加载 Revit 项目,单击加载项选项卡,然后启动我的插件。这只是花费了太长时间。

我编写了第二个插件来托管 IronPython 解释器。这样,我可以使用 Revit 提供的 API。但最终,必须用 C# 重写代码并进行调试。

很简单,我想:只需从 IronPython 脚本加载插件 DLL 并运行它。这确实有效,但是一旦加载,我就无法在 Visual Studio 中重新编译,因为 DLL 现在已加载到 Revits AppDomain 中。

很简单,我想(在 StackOverflow 的帮助下):只需在新的 AppDomain 中加载 DLL。唉,RevitAPI 对象无法编组到另一个 AppDomain,因为它们不扩展MarshalByRefObject.

我想我可能会对影子副本有所了解。ASP.NET 似乎正在这样做。但是阅读 MSDN 上的文档,似乎我只能在创建AppDomain 时指定这一点。

我可以为当前(默认)AppDomain 更改此设置吗?我可以强制它使用来自特定目录的 DLL 的影子副本吗?

0 投票
1 回答
3064 浏览

api - 如何在 Autodesk Revit Architecture 2010 中使用类型绑定设置共享参数的值?

我有一个共享参数UValue绑定到 Autodesk Revit Architecture 2010 中的Wall类型TypeBinding

我可以通过以下方式轻松访问参数:

这个参数的值可以看一下

但是当我这样做时

我得到一个错误:

InvalidOperationException:由于对象的当前状态,操作无效。

检查时,参数ReadOnly属性设置为false

0 投票
1 回答
1262 浏览

c# - Autodesk Revit MEP 2010 .NET API C# 房间到门的关系

在 C# 中使用 VS 2008 和 Autodesk Revit MEP 2010 我试图找出门是否连接到房间:

这种方法不起作用,因为 的返回值elementDoor.get_Parameter(BuiltInParameter.FROM_ROOM_ID)总是null

我在Building Coder 博客上读到

内置参数不是 API 的官方支持部分。将来,我们预计它将被正确公开为属性的数据所取代。

这种说法是真的吗?谁能指出一种有效的方法来获得门和房间之间的关系?

0 投票
5 回答
302 浏览

windows - 如何让某人进入测试?

好的。我们的产品有效。Beta 测试人员实际上正在完成他们的工作。下一次迭代的时间。但如何保证质量?我们需要一个测试员!

我如何让刚从街上开始测试的人?我不知道如何自己做(我是开发人员,而不是测试人员)!

我们是一个小团队:

  • 2 位架构师(如在建筑领域,而不是软件领域,他们是这里的领域专家)弄清楚要建造什么
  • 我建造它
  • 和一个新人在我们推出版本之前做一些测试

我们没有人知道如何专业地做到这一点。到目前为止,我们有:

  • 一堆跨越我们想要测试的配置的虚拟机
    • 各种版本的windows
    • 德语和英语,我们的客户可能会使用这两种语言
    • 我们正在编写的主机软件(Autodesk Revit Architecture 2010,我们正在构建一个用于能量计算的插件)
  • 描述我做过的一些测试的文本文档(安装了 xyz 版本,做了这个,做了那个等)
  • 一个错误跟踪系统,测试人员可以添加他发现的所有错误

我希望我们需要一个测试脚本。但是怎么做?谁?什么?什么时候?

0 投票
1 回答
938 浏览

c# - 使用 Revit Api 放置库零件

我正在使用 Revit API 导入族符号。下面的代码虽然可以将族加载到 Revit 中,但您必须手动将其从族树中拖动或使用相关的族工具插入。

我如何让它达到询问用户他们想要放置它的位置的程度?(类似于在编辑族时单击“加载到项目”),因此他们不必从族树中拖动它。

0 投票
1 回答
865 浏览

c# - C#需要等待COM事件触发才能继续执行而不控制事件

我读过其他一些看起来相似的问题,但我仍然很困惑,而且似乎没有一个答案对我有用,所以我决定再问一个问题。请多多包涵,我不是很精通线程和什么。

我正在制作的应用程序是 Revit Structure 的第 3 方插件。它们的工作方式是我拥有一个类库,其中包含一个实现接口的类,当它被称为我的应用程序运行时。

我的工具是一个打印工具,它旨在自动打印到 PDF。我正在尝试将我的代码移至使用 PdfCreator 打印 PDF(Revit 中的打印方式是您设置打印机并在 API 中调用“打印”方法,因此除了通过打印机)。

PDFCreator 有一个很棒的 COM 接口,允许您设置它的设置,以及订阅在每个文档打印后触发的事件。我多次调用 hte print 方法,所以我想等到一切都完成,然后在我的代码中做一些事情。

我的逻辑是这样的:

  1. 用户选择要打印的东西
  2. 点击打印按钮(在我的 WPF 窗口上)
  3. 我的代码然后设置 PDF 创建者设置,并注册以收听事件
  4. 我调用 Print() api 方法,然后需要一些时间来打印每个项目
  5. 然后,我希望在打印完所有内容后收到警报,并对文档进行一些“后期处理”。
  6. 后期处理包括重命名/移动 PDF 等等

我的问题是,当我调用 print 方法时,我的代码不会等待 PDFcreator 事件,它只是继续并退出,这意味着后处理永远不会被触发。

我需要做的是以某种方式等待事件,而不会阻塞。

在阅读了其他一些问题后,我尝试了这个:

  • AutoResetEvent,并使用 WaitOne,直到事件处理程序调用 Set()。这只是卡在 WaitOne 上并且从未继续。
  • Application.DoEvents 直到事件处理程序设置了某个类变量。
  • 我尝试创建一个新线程来注册活动,但这似乎没有帮助

如何让事件在新线程上触发,然后提醒当前线程继续?或者我怎样才能让代码等待事件触发?

如果您需要更多信息,请告诉我,很乐意提供。

0 投票
3 回答
1094 浏览

revit - 在 Revit 中如何以编程方式进行干扰检测?

更准确地说,我如何确定一个实体是否与另一个元素相交?我查看了 Revit API,找不到任何相关信息。

0 投票
2 回答
1869 浏览

visual-studio-2008 - 如何在 Visual Studio 2008 中创建 Revit 插件 Windows 安装程序

手动安装 Revit 2011 插件的过程:

  1. 将加载项 DLL 放在所需位置,例如C:Program Files\RevitAddin\RvtAddin.dll
  2. 创建 .addin xml 文件,其中包含有关加载项的信息(位置、完整的类名等)。此“.addin”文件必须放在以下位置之一:
    • 对于 Windows 7:C:\ProgramData\Autodesk\Revit\Addins\2011\
    • 对于 Windows XP:C:\Documents and Settings\All Users\Application Data\Autodesk\Revit\Addins\2011\

我可以使用 Visual Studio 2008 安装项目轻松完成第一步。对于第二步,我可能需要使用自定义操作来创建 xml .addin 文件。我不知道如何将信息(输出位置)从安装程序传递到自定义操作。

0 投票
1 回答
1972 浏览

c# - 如何在 Revit 中获取所有参数选择?

有一个元素的参数有 5 个选项(组合框的样式)。我知道如何获取当前选定的选项,但有没有办法检索其他 4 个选项?