在使用插件时,以下代码段一直存在问题:
doc.LoadFamilySymbol(@"[filepath here]", "[filename here]", out FamilySymbol symbol);
doc.Create.NewFamilyInstance(mid, symbol, d, GetLevelInformation(d), StructuralType.NonStructural);
据我在调试时所知道的,在我通过第一行之后,FamilySymbol
变量符号为空。 mid
,d
和GetLevelInformation
都可以工作并包含期望值,因此我怀疑问题出在第一行。
LoadFamilySymbol method overloads,我看不到采用您指定的两个参数。要加载特定的家庭符号,您至少需要指定所需的家庭名称和家庭类型名称。您正在使用哪个版本的Revit?
要解决此问题,请查看大量可用的示例代码,例如,在Revit SDK示例和loading a family上的Building Coder主题组中。
图我会为有类似问题的人更新,因为我确实为自己解决过。答案是,我试图在收集器中加载带有FamilyName参数而不是Name参数的Family。
此问题的解决方法是将x.Name更改为x.FamilyName,如下所示:
FilteredElementCollector collector = new FilteredElementCollector(doc);
FamilySymbol symbol = collector.OfClass(typeof(FamilySymbol))
.WhereElementIsElementType()
.Cast<FamilySymbol>()
.First(x => x.FamilyName == "[Family Name]");
有区别!感谢您的回答,杰里米。