MCPcopy Create free account
hub / github.com/FreeCAD/FreeCAD / libraryMaterials

Method libraryMaterials

src/Mod/Material/App/ExternalManager.cpp:482–516  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

480}
481
482std::shared_ptr<std::vector<LibraryObject>>
483ExternalManager::libraryMaterials(const QString& libraryName)
484{
485 auto materialList = std::make_shared<std::vector<LibraryObject>>();
486
487 connect();
488
489 Base::PyGILStateLocker lock;
490 try {
491 if (_managerObject.hasAttr("libraryMaterials")) {
492 Py::Callable libraries(_managerObject.getAttr("libraryMaterials"));
493 Py::Tuple args(1);
494 args.setItem(0, Py::String(libraryName.toStdString()));
495 Py::List list(libraries.apply(args));
496 for (auto library : list) {
497 auto entry = Py::Object(library);
498 if (!checkMaterialLibraryObjectType(entry)) {
499 throw InvalidMaterial();
500 }
501
502 materialList->push_back(materialLibraryObjectTypeFromObject(entry));
503 }
504 }
505 else {
506 Base::Console().log("\tlibraryMaterials() not found\n");
507 throw ConnectionError();
508 }
509 }
510 catch (Py::Exception& e) {
511 Base::PyException e1; // extract the Python error text
512 throw LibraryNotFound(e1.what());
513 }
514
515 return materialList;
516}
517
518std::shared_ptr<std::vector<LibraryObject>>
519ExternalManager::libraryMaterials(const QString& libraryName,

Callers 1

getMaterialTreeMethod · 0.45

Calls 11

InvalidMaterialClass · 0.85
ConnectionErrorClass · 0.85
toStdStringMethod · 0.80
LibraryNotFoundClass · 0.70
connectFunction · 0.50
StringClass · 0.50
ObjectClass · 0.50
applyMethod · 0.45
push_backMethod · 0.45
logMethod · 0.45
whatMethod · 0.45

Tested by

no test coverage detected