------------------------------------------------------------------------------------------------
| 383 | |
| 384 | // ------------------------------------------------------------------------------------------------ |
| 385 | void ResolveObjectPlacement(aiMatrix4x4 &m, const Schema_2x3::IfcObjectPlacement &place, ConversionData &conv) { |
| 386 | if (const Schema_2x3::IfcLocalPlacement *const local = place.ToPtr<Schema_2x3::IfcLocalPlacement>()) { |
| 387 | IfcMatrix4 tmp; |
| 388 | ConvertAxisPlacement(tmp, *local->RelativePlacement, conv); |
| 389 | |
| 390 | m = static_cast<aiMatrix4x4>(tmp); |
| 391 | |
| 392 | if (local->PlacementRelTo) { |
| 393 | aiMatrix4x4 tmpM; |
| 394 | ResolveObjectPlacement(tmpM, local->PlacementRelTo.Get(), conv); |
| 395 | m = tmpM * m; |
| 396 | } |
| 397 | } else { |
| 398 | IFCImporter::LogWarn("skipping unknown IfcObjectPlacement entity, type is ", place.GetClassName()); |
| 399 | } |
| 400 | } |
| 401 | |
| 402 | // ------------------------------------------------------------------------------------------------ |
| 403 | bool ProcessMappedItem(const Schema_2x3::IfcMappedItem &mapped, aiNode *nd_src, std::vector<aiNode *> &subnodes_src, unsigned int matid, ConversionData &conv) { |
no test coverage detected