MCPcopy Create free account
hub / github.com/ThatOpen/engine_web-ifc / GetCrossSections2D

Method GetCrossSections2D

src/cpp/web-ifc/geometry/IfcGeometryLoader.cpp:23–129  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

21 }
22
23 IfcCrossSections IfcGeometryLoader::GetCrossSections2D(uint32_t expressID) const
24 {
25 spdlog::debug("[GetCrossSections2D({})]", expressID);
26 auto lineType = _loader.GetLineType(expressID);
27 IfcCrossSections sections;
28 switch (lineType)
29 {
30 case schema::IFCSECTIONEDSOLIDHORIZONTAL:
31 {
32 _loader.MoveToArgumentOffset(expressID, 0);
33 auto curveId = _loader.GetRefArgument();
34
35 // faces
36 _loader.MoveToArgumentOffset(expressID, 1);
37 auto faces = _loader.GetSetArgument();
38
39 // linear position
40 _loader.MoveToArgumentOffset(expressID, 2);
41 auto linearPositions = _loader.GetSetArgument();
42
43 IfcCurve curve = GetCurve(curveId, 3);
44
45 std::vector<IfcProfile> profiles;
46 std::vector<IfcCurve> curves;
47 std::vector<uint32_t> expressIds;
48
49 for (auto &face : faces)
50 {
51 auto expressID = _loader.GetRefArgument(face);
52 IfcProfile profile = GetProfile(expressID);
53 profiles.push_back(profile);
54 curves.push_back(profile.curve);
55 expressIds.push_back(expressID);
56 }
57
58 sections.curves = curves;
59 sections.expressID = expressIds;
60
61 return sections;
62
63 break;
64 }
65 case schema::IFCSECTIONEDSOLID:
66 {
67 _loader.MoveToArgumentOffset(expressID, 0);
68 auto curveId = _loader.GetRefArgument();
69
70 // faces
71 _loader.MoveToArgumentOffset(expressID, 1);
72 auto faces = _loader.GetSetArgument();
73
74 // linear position
75 _loader.MoveToArgumentOffset(expressID, 2);
76 auto linearPositions = _loader.GetSetArgument();
77
78 IfcCurve curve = GetCurve(curveId, 3);
79
80 std::vector<IfcProfile> profiles;

Callers 1

GetAllCrossSectionsFunction · 0.80

Calls 5

debugFunction · 0.85
MoveToArgumentOffsetMethod · 0.80
GetRefArgumentMethod · 0.80
GetSetArgumentMethod · 0.80
GetLineTypeMethod · 0.45

Tested by

no test coverage detected