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

c# - 在插入过程中调整族实例的大小

我正在为 Revit 2014 创建一个插件。我想在项目中插入一个平行六面体,平行六面体必须在插入期间设置宽度、深度和/或高度。我创建了一个包含 1x1x1 立方体和 3 个实例参数的族,这些参数会根据它们的值自动调整立方体的大小(参数名为“宽度”、“深度”、“高度”)。

如果我在绘图中导入族并放置它的一个实例,并且在放置之后我更改了参数,那么立方体的大小就会正确调整。

我想知道是否有办法在将实例插入项目之前调整多维数据集的大小,我希望鼠标光标下的预览具有正确的大小。

我正在使用以下说明来放置实例:

谢谢

0 投票
2 回答
3263 浏览

revit-api - 如何使用 Revit API 检索墙的原始几何?

在一个项目中,我需要将墙的原始几何图形导出到 IFC 文件。所谓原始几何就是墙体的几何形状,没有被墙上的门窗切割,没有与屋顶、地板、梁、柱等连接。我想要的原始几何通常应该是一个像盒子一样的形状.

不幸的是,没有直接的 Revit API 可以为我提供墙的原始几何图形。element.get_Geometry 方法返回由门、窗和连接的地板、屋顶等切割的最终几何图形。

获得墙的原始几何图形的一种可能方法是我自己根据墙的参数重建几何图形,但我懒惰的方法是让 Revit 完成这项工作。我的方法有以下五个步骤:

步骤 1:启动 Revit 事务。

第 2 步:在调用 element.get_Geometry 之前,从 Revit 文档中临时删除墙中承载的门窗,以及与墙相连的屋顶和地板。

第 3 步:调用 document.Regenerate 方法来更新文档中的元素。当然,墙的几何形状也应该更新。

第 4 步:调用 element.get_Geometry 以获取我想要的原始几何图形。

第 5 步:回滚事务以使 Revit 文档保持不变。

问题出现在第 2 步。即使我删除了门窗,返回的几何图形中仍然存在开口。

我的问题是,如何删除与墙相关的所有元素?

我的 Revit 版本是 2013。我使用的 .rvt 文件是 Revit 附带的 rac_basic_sample_project.rvt。我要导出的墙是 id 为 117698 或 117654 的墙。

我的项目基于 Revit IFC 导出器源代码。

以下是我用来获取原始几何图形的代码段:

0 投票
10 回答
13968 浏览

c# - 无法加载文件或程序集'Xceed.Wpf.Toolkit

我正在为另一个应用程序 Autodesk Revit 开发一个插件,它是作为单独的 DLL 类库构建的。我正在尝试在我的一个 WPF 窗口中使用Wpf 工具包属性网格。属性网格在 Visual Studio 中显示良好,智能感知也能正常工作。但是当我尝试在加载我的加载项的情况下启动 Revit 时,我得到了以下异常。

通常,当我想从 Revit 插件引用第 3 方程序集时,我只需确保将第 3 方 DLL 复制到与我的插件 DLL 相同的位置。我检查Xceed.Wpf.Toolkit.dll并被复制到包含我的插件 DLL 的目录中。

我从错误中的日志消息中注意到它正在 Revit 程序目录中查找 DLL。复制Xceed.Wpf.Toolkit.dll到此目录后,我不再收到错误。

但是,我有现有的插件部署工具,它们依赖于位于它们自己的隔离文件夹中的插件文件。

那么,有谁知道如何让插件找到 WPF Toolkit 库?

0 投票
2 回答
3855 浏览

c# - 如何在 Revit 中获取面或平面元素的中心点

我正在做一个 Revit 宏来获取零件(地板零件)的中心点,以检查它是否在房间或空间内。我无法得到太多BoundingBox在零件外给我一个点的对象,所以我尝试使用Geometry元素内部面来获取网格顶点,但我一直在计算中点。我正在使用下面的代码片段中显示的一种相当幼稚的算法,但它给了我错误的结果,因为它似乎受到最小/最大变量的初始默认值的影响。有什么建议么?

PS:DebugTools 是我自己的自定义助手类。

0 投票
3 回答
806 浏览

c# - 如何通过 API C# 更改 Revit 2014 元素名称

我想通过 API 更改元素名称,我有以下代码。

但是为什么会出现这个错误呢?'此元素不支持分配用户指定的名称。' 或者我应该以其他方式更改名称?

请帮忙!

0 投票
2 回答
645 浏览

c# - “Autodesk.Revit.DB.Element”类型没有定义构造函数

我想创建一个类并让它从Autodesk.Revit.DB.Element该类继承

但是当我编译代码时出现以下错误

该类型Autodesk.Revit.DB.Element没有定义构造函数。

0 投票
2 回答
1381 浏览

vb.net - Autodesk.Revit.Application.ActiveDocument.Create 方法哪里去了?

Application.ActiveDocument2014 Revit API 中的命名空间在哪里?

我正在尝试使用 API 在草图平面下的 Revit 模型中绘制线条,但此时我失败了。对于“Revit”的大部分内容,我在The Building Coder关注 Jeremy Tammik 。然而,这一次,由于 Autodesk 更新/修改命名空间,他把我引向了错误的方向。我已经将他在 2011 年之前发布的一些 C#转换为 VB.NET ,它创建了一个草图平面并绘制了线条。问题是他用来实例化对象的命名空间已经改变。例如,他将变量“X”定义为Autodesk.Revit.Application对象,但此时,该命名空间已更改为Autodesk.Revit.ApplicationServices.Application.

我已经创建了一个Creation文档,Application并且我正在尝试将文档设置为等于AutoDesk.Revit.ApplicationServices.ActiveDocument.Create方法,但它似乎不再存在。我在谷歌上搜索了高低,但我似乎找不到任何东西。

谁能指出我正确的方向?

0 投票
1 回答
701 浏览

c# - 如何在 Revit 中将视图设置为自定义视图族名?

我无法看到如何将视图系列类型更改为不同的视图系列名称...例如,我有"Detail Views (Detail)",这是浏览器中放置新ViewSection.CreateDetail部分的默认位置。但我想将视图放在我创建的另一个浏览器位置,称为"Detail Views (Beam Top Detail Views)".

我试过的是section.get_Parameter(BuiltInParameter.VIEW_TYPE),它给了我它使用的名称,但它不会让我跟进.Set(NewViewName)(相同的交易)。有没有办法在输入期间直接设置它CreateDetail,还是我必须运行一个单独的事务来查找给定模式的所有视图,并在那里更改设置?

0 投票
1 回答
1835 浏览

c# - Revit C# 运行代码“OnShutDown”和“OnStartup”

“AIPAppStartup”的 Revit SDK 示例具有用于执行“OnShutDown”(关闭 Revit 会话时)或“OnStartup”(启动 Revit 会话时)的代码的预构建部分,但我希望能够为每个加载的文档运行代码。具体来说,我希望 Revit 清除与加载的特定模型关联的临时文件。

我尝试创建一个新结果,公共 Autodesk.Revit.UI.Result OnLoad(UIControlledApplication application),但这不起作用。我还尝试了另外几个 On**** 可能性(OnOpen 等),但也失败了。

是否有特定的“On*****”结果可以满足我的愿望?

0 投票
1 回答
687 浏览

c# - 在 Revit 中修改变换的 set_Basis 值

我在 Revit 中使用变换来显示单个梁的立面视图(用于详细说明)。只要梁是平的(相同的起点和终点偏移),这工作正常,但如果我有一个倾斜的梁,我不得不“压平”端点。

我试图沿着实际的起点/终点定义一个单位向量,并在穿过定义的变换“.Origin”的XY平面上垂直于该向量。然后我使用简单的方程来定义这两个向量的法线... double newx = first.Y * second.Z - first.Z * second.Y; 双newy = first.Z * second.X - first.X * second.Z;双newz = first.X * second.Y - first.Y * second.X; 双 vectlong = Math.Sqrt(newx * newx + newy * newy + newz * newz); XYZ normal = new Autodesk.Revit.DB.XYZ(newx / vectlong, newy / vectlong, newz / vectlong);

然后我将这三个向量用作我的“.set_Basis”0、1 和 2。

只要我强制光束的起点和终点是平坦的(这表明生成的“正常”是有效的),此代码就可以工作,但是当我删除代码以平坦并使用端点的实际 Z 值时斜梁,当我尝试使用这些值时程序失败。

SDK 示例通过梁中间生成截面(CreateViewSection)似乎发现了同样的问题,但程序员放弃了,只是强制程序只接受已经在同一 XY 平面上的梁,这不是真的是梁的“规则”。

我导出了我的三个向量的计算值,并验证它们都是单位长度和正交,这应该是变换所需的全部。谁能解释为什么这些基础值会失败?