这段时间在做族库,在做到最后需要与Revit连同时,希望可以用户选择下载然后直接在Revit中布置构件,查找API ,发现可以使用PromptForFamilyInstancePlacementOptions方法实现族放置。

代码 比较简单,只不过需要记住,由于PromptForFamilyInstancePlacementOptions会自己创建一个事务,所以使用的话需要将此方法挪出事务。

code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Family family;

using (Transaction trans = new Transaction(app.ActiveUIDocument.Document,"load family"))
{
trans.Start();

var loadFamily = app.ActiveUIDocument.Document.LoadFamily(
localPath + ttn.Name + ".rfa", new RevitLoadFamily(),
out family);

//如果下载失败则提示
if (!loadFamily)
{
MessageBox.Show(ttn.Name +
$"cant find the family , \r\n localPath:{localPath + ttn.Name + ".rfa"}");
return;
}

trans.Commit();
}

var symbol =
app.ActiveUIDocument.Document.GetElement(family.GetFamilySymbolIds().First()) as
FamilySymbol;

app.ActiveUIDocument.PromptForFamilyInstancePlacement(symbol);