50 std::unordered_map<std::string,
59 if (thisG4Volume->getSolid() !=
nullptr)
return thisG4Volume->getSolid();
65 auto sourceName = s->
getSystem() +
"/" + *copyOf;
67 if (sourceG4Volume->getSolid() !=
nullptr)
return sourceG4Volume->getSolid();
74 std::vector<std::string> cadParameters;
78 if (cadParameters.size() > 1) {
79 fileName = cadParameters[0];
80 if (!numeric_value(cadParameters[1], scale)) {
82 "G4CadSystemFactory: volume <%1> has a non-numeric scale <%2>; using 1.0", g4name,
87 else if (cadParameters.size() == 1) {
88 double legacyScale = 1.0;
89 if (numeric_value(cadParameters[0], legacyScale)) { scale = legacyScale; }
90 else { fileName = cadParameters[0]; }
93 G4String g4filename = fileName;
96 std::string extension =
100 if (extension ==
"ply" || extension ==
"stl") {
101 auto mesh = CADMesh::TessellatedMesh::From(g4filename,
102 CADMesh::File::ASSIMP());
106 mesh->SetScale(CLHEP::mm * scale);
109 mesh->SetReverse(
false);
111 thisG4Volume->setSolid(mesh->GetSolid(),
log);
112 return thisG4Volume->getSolid();
116 log->warning(
"G4CadSystemFactory: file <%1> has unsupported extension <%2>", fileName, extension);