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

Method addToTree

src/Mod/Material/App/ModelLoader.cpp:219–315  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

217}
218
219void ModelLoader::addToTree(std::shared_ptr<ModelEntry> model,
220 std::map<std::pair<QString, QString>, QString>* inheritances)
221{
222 std::set<QString> exclude;
223 exclude.insert(QStringLiteral("Name"));
224 exclude.insert(QStringLiteral("UUID"));
225 exclude.insert(QStringLiteral("URL"));
226 exclude.insert(QStringLiteral("Description"));
227 exclude.insert(QStringLiteral("DOI"));
228 exclude.insert(QStringLiteral("Inherits"));
229
230 auto yamlModel = model->getModel();
231 if (!model->getLibrary()->isLocal()) {
232 throw InvalidLibrary();
233 }
234 auto library = model->getLibrary();
235 auto base = model->getBase().toStdString();
236 auto name = model->getName();
237 auto directory = model->getDirectory();
238 auto uuid = model->getUUID();
239
240 QString description = yamlValue(yamlModel[base], "Description", "");
241 QString url = yamlValue(yamlModel[base], "URL", "");
242 QString doi = yamlValue(yamlModel[base], "DOI", "");
243
244 Model::ModelType type =
245 (base == "Model") ? Model::ModelType_Physical : Model::ModelType_Appearance;
246
247 Model finalModel(library, type, name, directory, uuid, description, url, doi);
248
249 // Add inheritance list
250 if (yamlModel[base]["Inherits"]) {
251 auto inherits = yamlModel[base]["Inherits"];
252 for (auto it = inherits.begin(); it != inherits.end(); it++) {
253 QString nodeName = QString::fromStdString((*it)["UUID"].as<std::string>());
254
255 finalModel.addInheritance(nodeName);
256 }
257 }
258
259 // Add property list
260 auto yamlProperties = yamlModel[base];
261 for (auto it = yamlProperties.begin(); it != yamlProperties.end(); it++) {
262 std::string propName = it->first.as<std::string>();
263 if (!exclude.contains(QString::fromStdString(propName))) {
264 // showYaml(it->second);
265 auto yamlProp = yamlProperties[propName];
266 auto propDisplayName = yamlValue(yamlProp, "DisplayName", "");
267 auto propType = yamlValue(yamlProp, "Type", "");
268 auto propUnits = yamlValue(yamlProp, "Units", "");
269 auto propURL = yamlValue(yamlProp, "URL", "");
270 auto propDescription = yamlValue(yamlProp, "Description", "");
271 // auto inherits = yamlValue(yamlProp, "Inherits", "");
272
273 ModelProperty property(QString::fromStdString(propName),
274 propDisplayName,
275 propType,
276 propUnits,

Callers 1

loadLibraryMethod · 0.80

Calls 15

InvalidLibraryClass · 0.85
isLocalMethod · 0.80
toStdStringMethod · 0.80
addInheritanceMethod · 0.80
insertMethod · 0.45
getModelMethod · 0.45
getLibraryMethod · 0.45
getBaseMethod · 0.45
getNameMethod · 0.45
getDirectoryMethod · 0.45
getUUIDMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected