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

Function makeThreeJSViewer

src/cpp/test/dumpToThree.h:288–334  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

286 }
287
288 inline std::string makeThreeJSViewer(std::vector<glm::dvec3> input, std::vector<uint32_t> indices)
289 {
290 std::stringstream obj;
291 if (input.size() > 0)
292 {
293 // Generate OBJ data for lines
294 for (size_t i = 0; i < input.size(); i++)
295 {
296 obj << "v " << input[i].x << " " << input[i].y << " " << input[i].z << "\n";
297 }
298
299 if (indices.size() > 0)
300 {
301 for (size_t i = 0; i < indices.size() - 1; i += 2)
302 {
303 obj << "l " << (indices[i] + 1) << " " << (indices[i + 1] + 1) << "\n";
304 }
305 }
306 else
307 {
308 for (size_t i = 0; i < input.size() - 1; ++i)
309 {
310 obj << "l " << (i + 1) << " " << (i + 2) << "\n";
311 }
312 }
313 }
314
315 // Escape OBJ data for embedding in JavaScript
316 std::string objData = obj.str();
317 std::string escapedObjData;
318 for (char c : objData)
319 {
320 if (c == '\n') escapedObjData += "\\n";
321 else if (c == '"') escapedObjData += "\\\"";
322 else escapedObjData += c;
323 }
324
325 // Replace placeholder with escaped OBJ data
326 std::string html = THREE_JS_VIEWER_TEMPLATE;
327 size_t pos = html.find(R"({})");
328 if (pos != std::string::npos)
329 {
330 html.replace(pos, 2, escapedObjData);
331 }
332
333 return html;
334 }
335
336 inline std::string makeThreeJSViewer(std::vector<std::vector<glm::dvec2>> lines)
337 {

Callers 3

DumpLinesToHtmlFunction · 0.85
DumpIfcGeometryThreeFunction · 0.85
DumpCurveToHtmlFunction · 0.85

Calls 2

ToObjThreeFunction · 0.85
sizeMethod · 0.80

Tested by

no test coverage detected