1

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

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

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

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

Application.ActiveUIDocument.PromptForFamilyInstancePlacement(familySymbol);

谢谢

4

3 回答 3

1

我同意上面所说的一切。

是的,您只能在放置实例后更改族实例尺寸参数值。

是的,您可以为不同的值定义不同的类型,然后放置类型。

您可以在放置实例之前立即创建这些类型。

在 Revit 2015 中,您可以通过 PromptForFamilyInstancePlacement 定义放置哪种族类型。

宽度和高度等来自哪里?

您能否在调用 PromptForFamilyInstancePlacement 之前立即确定它们?

如果是这样,那么您可以动态创建具有这些维度的新族类型,并将其设置为在调用 PromptForFamilyInstancePlacement 之前的活动类型。

干杯,杰里米。

于 2014-04-19T17:54:57.233 回答
0

我相信在放置之前调整元素大小的唯一解决方案是为您需要的每种尺寸创建不同的族类型。根据您的需要,这可能是也可能不是实际的解决方案。

我的其余答案集中在放置后操纵元素。

您是否需要您的用户能够选择展示位置的位置?如果没有,那么您可以使用 NewFamilyInstance 方法来放置元素(没有预览,您必须提供位置点)。
此函数返回刚刚放置的元素,因此您可以在放置后对其进行修改。
您可以使用 Selection.PickPoint 方法让用户选择一个放置点,您可以将其传递给 NewFamilyInstance,但我不确定这如何与高程一起使用。

另一种方法是在放置元素后使用 FilteredElementCollector。您可以使用 FamilyInstanceFilter 来查找您正在使用的 FamilySymbol 的所有实例。
由于 Revit ElementId 会随着新元素的放置而增加(由于工作共享/同步导致的一些例外情况与此处无关),您可以检索具有最高 ElementId 的元素并安全地假定它是您刚刚放置的元素。
另一个建议是在放置元素之前运行 FilteredElementCollector,然后再运行它。不同之处在于您刚刚放置的元素。

于 2014-02-21T14:39:55.797 回答
-2

familySymbol 对象没有 get_Parameter() 方法吗?

我认为您可以使用它来实现您的目标。

于 2014-02-21T03:03:25.893 回答