我正在为Revit 2014创建一个插件。 我想在项目中插入平行六面体,平行六面体必须在插入过程中设置宽度,深度和/或高度。 我创建了一个具有1x1x1多维数据集和3个实例参数的系列,可以根据它们的值自动调整多维数据集的大小(参数名为“Width”,“Depth”,Height“)。
如果我在图形中导入族并放置它的实例,并且在放置后我更改参数,则正确调整立方体的大小。
我想知道在项目中插入实例之前是否有办法调整立方体的大小,我希望鼠标光标下的预览具有正确的大小。
我正在使用以下说明来放置实例:
Application.ActiveUIDocument.PromptForFamilyInstancePlacement(familySymbol);
谢谢
答案 0 :(得分:1)
我同意上述所有内容。
是的,您只能在放置实例后更改族实例维度参数值。
是的,您可以为不同的值定义不同的类型,然后放置类型。
您可以在放置实例之前立即创建这些类型。
在Revit 2015中,您可以定义PromptForFamilyInstancePlacement放置的族类型。
宽度和高度等来自哪里?
您可以在调用PromptForFamilyInstancePlacement之前立即确定它们吗?
如果是这样,那么您可以动态创建具有这些维度的新族类型,并在调用PromptForFamilyInstancePlacement之前将其设置为活动类型。
干杯,杰里米。
答案 1 :(得分:0)
我认为在放置之前调整元素大小的唯一解决方案是为您需要的每个尺寸创建不同的族类型。根据您的需要,这可能是也可能不是一个实用的解决方案。
我的其余部分专注于在放置后操纵元素。
您是否需要您的用户能够选择展示位置?如果没有,那么您可以使用NewFamilyInstance方法放置元素(没有预览,您必须提供位置点)。
此函数返回刚刚放置的元素,因此您可以在放置后修改它
您可以使用Selection.PickPoint方法允许用户选择一个可以传递给NewFamilyInstance的放置点,但我不确定它如何适用于高程。
另一种方法是在放置元素后使用FilteredElementCollector。您可以使用FamilyInstanceFilter查找您正在使用的FamilySymbol的所有实例 由于Revit ElementId随着新元素的增加而增加(由于工件共享/同步在这里不相关而有一些例外),您可以检索具有最高ElementId的元素并安全地假设它是您刚刚放置的元素。 另一个建议是在放置元素之前运行FilteredElementCollector,然后再运行它。不同之处在于您刚放置的元素。
答案 2 :(得分:-2)
familySymbol对象不具有get_Parameter()方法吗?
我认为你可以用它来实现你的目标。