92 std::shared_ptr<CSGObject> createShape(Poco::XML::Element *pElem);
93 std::shared_ptr<CSGObject> createShape(std::string shapeXML,
bool addTypeTag =
true);
95 static std::shared_ptr<CSGObject> createSphere(
const Kernel::V3D &
centre,
double radius);
96 static std::shared_ptr<CSGObject> createHexahedralShape(
double xlb,
double xlf,
double xrf,
double xrb,
double ylb,
97 double ylf,
double yrf,
double yrb);
119 static std::string sphereAlgebra(
const int surfaceID);
120 std::string parseSphere(Poco::XML::Element *pElem, std::map<
int, std::shared_ptr<Surface>> &prim,
int &l_id);
121 std::string parseInfinitePlane(Poco::XML::Element *pElem, std::map<
int, std::shared_ptr<Surface>> &prim,
int &l_id);
122 std::string parseInfiniteCylinder(Poco::XML::Element *pElem, std::map<
int, std::shared_ptr<Surface>> &prim,
124 std::string parseCylinder(Poco::XML::Element *pElem, std::map<
int, std::shared_ptr<Surface>> &prim,
int &l_id);
125 std::string parseHollowCylinder(Poco::XML::Element *pElem, std::map<
int, std::shared_ptr<Surface>> &prim,
int &l_id);
128 std::string parseCuboid(Poco::XML::Element *pElem, std::map<
int, std::shared_ptr<Surface>> &prim,
int &l_id);
129 std::string parseInfiniteCone(Poco::XML::Element *pElem, std::map<
int, std::shared_ptr<Surface>> &prim,
int &l_id);
130 std::string parseCone(Poco::XML::Element *pElem, std::map<
int, std::shared_ptr<Surface>> &prim,
int &l_id);
132 static std::string parseHexahedronFromStruct(
const Hexahedron &hex, std::map<
int, std::shared_ptr<Surface>> &prim,
134 Hexahedron parseHexahedron(Poco::XML::Element *pElem);
135 std::string parseHexahedron(Poco::XML::Element *pElem, std::map<
int, std::shared_ptr<Surface>> &prim,
int &l_id);
136 std::string parseTaperedGuide(Poco::XML::Element *pElem, std::map<
int, std::shared_ptr<Surface>> &prim,
int &l_id);
137 std::string parseTorus(Poco::XML::Element *pElem, std::map<
int, std::shared_ptr<Surface>> &prim,
int &l_id);
138 std::string parseSliceOfCylinderRing(Poco::XML::Element *pElem, std::map<
int, std::shared_ptr<Surface>> &prim,
141 Poco::XML::Element *getShapeElement(Poco::XML::Element *pElem,
const std::string &
name);
142 Poco::XML::Element *getOptionalShapeElement(Poco::XML::Element *pElem,
const std::string &
name);
143 static double getDoubleAttribute(Poco::XML::Element *pElem,
const std::string &
name);
144 Kernel::V3D parsePosition(Poco::XML::Element *pElem);
145 void createGeometryHandler(Poco::XML::Element *,
const std::shared_ptr<CSGObject> &);
146 static std::string insertMatrixTag(
const std::string &tagName,
const Kernel::Matrix<double> &matrix, std::string xml);
148 static std::optional<Kernel::Matrix<double>> matrixFromXMLTag(
const std::string &xml,
const std::string &tagName);