可以使用与族将创建的元素类型相对应的族模板来创建族。
样板包含将族放置到项目中所需的信息。
大多数族样板根据从中创建的图元族类型命名:基于墙、基于天花板、基于楼板、基于屋顶、基于线、基于面。
|
族样板 |
描述 |
|
基于墙 |
用于创建将插入到墙中的构件。 |
|
基于天花板 |
用于创建将插入到天花板中的构件。基于天花板的族示例包括洒水器和嵌入式照明灯具。 |
|
基于楼板 |
用于创建将插入到楼板中的构件。 |
|
基于屋顶 |
用于创建将插入到屋顶中的构件。基于屋顶的族示例包括天窗和屋顶风扇。 |
|
独立 |
用于创建不依赖于主体的构件。独立族的示例包括家具、电器、风管和配件。 |
|
自适应 |
用于创建需要灵活适应许多独特上下文条件的构件。 |
|
基于线 |
基于线的样板可用于创建使用两点放置的详图族和模型族。 |
|
基于面 |
用于创建可修改其主体的基于工作平面的族。从此类样板创建的族可以在主体中进行复杂的切割。这些族的实例可以放置在任何表面上,无论其方向如何。 |
|
专业 |
当族需要与模型进行独特交互时使用。这些族样板仅适用于一种类型的族。例如,结构框架样板只能用于创建结构框架内容。 |
基于墙、基于天花板、基于楼板和基于屋顶的样板被称为基于主体的样板。只有当项目中存在其主体类型的图元时,才能放置基于主体的族。
使用 Teigha BIM API,您可以确定族是否是使用基于墙、基于楼板、基于面、基于天花板或基于屋顶的样板创建的。
对于尚未实例化的族,解决方案是访问 OdBm::BuiltInParameter::FAMILY_HOSTING_BEHAVIOR 参数以获取此信息。此参数值存储为整数值,整数值表示样板(主体行为)的以下含义:
- 基于墙: 1
- 基于楼板: 2
- 基于天花板: 3
- 基于屋顶: 4
- 基于面: 5
然而,使用基于线和基于图案的样板创建的族返回整数值 0,无法使用此方法确定。
OdBm::FamilyHosting::Enum 的定义是为了帮助理解族的宿主行为,例如:
OdBmDatabasePtr pDb = app->readFile(L“some_family.rfa”);
OdBmElementPtr pElem = pDb->getOwnerFamilyId().safeOpenObject();
OdTfVariant vValue;
pElem->getParam(OdBm::BuiltInParameter::FAMILY_HOSTING_BEHAVIOR, vValue);
switch (vValue.getInt32())
{
case OdBm::FamilyHosting::Wall:
// Wall hosted;
break;
case OdBm::FamilyHosting::Floor:
// Floor hosted;
break;
case OdBm::FamilyHosting::Ceiling:
// Ceiling hosted
break;
case OdBm::FamilyHosting::Roof:
// Roof hosted
break;
case OdBm::FamilyHosting::Face:
// Face hosted
break;
case OdBm::FamilyHosting::NotHosted:
// NotHosted family;
break;
default:
break;
}
族包含和引用的元素可以通过 OdBmFamily::getReferences(OdArray
例如,一个基于面的族可以有以下内容:
VariantArray 引用 . . . . . . . . . . . . 大小:1
OdBmFamilyElemRefPtr 项[0]:
句柄 ElementId. . . . . . . . . . . . . . 1537
其中 id=1537 的元素是一个拉伸体。