diff --git a/CHANGELOG b/CHANGELOG
index 1a7a68652ca51a923b80e13a2ff3fcb5194b4e52..1d76aabdf6380cc11e81c7520ff15f46b33aa597 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -3,14 +3,16 @@ BornAgain-1.20?
     * R3, C3 <- kvector_t, cvector_t
     * QzScan, AlphaScan <- QSpecScan, AngularSpecScan
     * SimulationResult::convertedBinCenters <- axis
-    * Pyramid2,3,4 <- AnisoPyramid, Tetrahedron, Pyramid
+    * Formfactors:
+      * Pyramid2,3,4 <- AnisoPyramid, Tetrahedron, Pyramid
+      * Bipyramid4 <- Cuboctahedron
     * Interference... <- InterferenceFunction...
   > API: further changes:
     * Polarizer and analyzer are now set by function Instrument::setPolFilters
     * Support soft-matter reflectometry parameterization files of Anaklasis
     * Remove FormFactorDot to avoid its inherent inconsistencies (use small sphere instead)
     * Remove unused/undocumented functions Layer::setThickness, setMaterial
-> GUI changes:
+  > GUI changes:
     * Executable renamed to bornagain, except under Windows, where it is still BornAgain
     * Support "*.001" files generated by Nicos at SANS-1 of MLZ / FRM2
     * Improved file chooser for 2d data import
diff --git a/Doc/FFCatalog/fig/ff2/sim_Bipyramid4.py b/Doc/FFCatalog/fig/ff2/sim_Bipyramid4.py
index 1f6fe68f77a45ab1f21a9bc5b0e21202ed0cac12..b999709a4b4bb7922c63ced9d15c459cb4cc0d17 100755
--- a/Doc/FFCatalog/fig/ff2/sim_Bipyramid4.py
+++ b/Doc/FFCatalog/fig/ff2/sim_Bipyramid4.py
@@ -12,9 +12,9 @@ results = []
 for i in range(n):
     omega = 45*i/(n - 1)
     title = r'$\omega=%d^\circ$' % omega
-    ff = ba.FormFactorCuboctahedron(8*nm, 5*nm, 0.5, 60*deg)
+    ff = ba.FormFactorBipyramid4(8*nm, 5*nm, 0.5, 60*deg)
     trafo = ba.RotationZ(omega*deg)
     data = bp.run_simulation(det, ff, trafo)
     results.append(bp.Result(i, data, title))
 
-bp.make_plot(results, det, "ff_Cuboctahedron")
+bp.make_plot(results, det, "ff_Bipyramid4")
diff --git a/Examples/varia/AllFormFactorsAvailable.py b/Examples/varia/AllFormFactorsAvailable.py
index 929f0b34a1c5ebe7a9d32b84b1e12f9bd4e654de..a11db3d5ea0375840b4224306f1212601c53006a 100755
--- a/Examples/varia/AllFormFactorsAvailable.py
+++ b/Examples/varia/AllFormFactorsAvailable.py
@@ -16,7 +16,7 @@ formfactors = [
     ba.FormFactorCantellatedCube(15, 6),
     ba.FormFactorCone(10, 13, 60*deg),
     ba.FormFactorCone6(10, 13, 60*deg),
-    ba.FormFactorCuboctahedron(20, 13, 0.7, 60*deg),
+    ba.FormFactorBipyramid4(20, 13, 0.7, 60*deg),
     ba.FormFactorCylinder(8, 16),
     ba.FormFactorDodecahedron(5),
     ba.FormFactorEllipsoidalCylinder(8, 13, 16),
diff --git a/GUI/Model/Sample/FormFactorItemCatalog.cpp b/GUI/Model/Sample/FormFactorItemCatalog.cpp
index 2edff6f1a8f22d39c54044bd927e311ffce5a305..8afb625d4f9fadd69ba8c37a3b666ab13f5fb25e 100644
--- a/GUI/Model/Sample/FormFactorItemCatalog.cpp
+++ b/GUI/Model/Sample/FormFactorItemCatalog.cpp
@@ -29,7 +29,7 @@ FormFactorItem* FormFactorItemCatalog::create(Type type)
         CREATE(Box);
         CREATE(Cone);
         CREATE(Cone6);
-        CREATE(Cuboctahedron);
+        CREATE(Bipyramid4);
         CREATE(Cylinder);
         CREATE(Dodecahedron);
         CREATE(EllipsoidalCylinder);
@@ -65,7 +65,7 @@ QVector<FormFactorItemCatalog::Type> FormFactorItemCatalog::types()
             Type::Box,
             Type::Cone,
             Type::Cone6,
-            Type::Cuboctahedron,
+            Type::Bipyramid4,
             Type::Cylinder,
             Type::Dodecahedron,
             Type::EllipsoidalCylinder,
@@ -94,7 +94,7 @@ QVector<FormFactorItemCatalog::Type> FormFactorItemCatalog::hardParticleTypes()
             Type::Box,
             Type::Cone,
             Type::Cone6,
-            Type::Cuboctahedron,
+            Type::Bipyramid4,
             Type::Cylinder,
             Type::Dodecahedron,
             Type::EllipsoidalCylinder,
@@ -151,8 +151,8 @@ FormFactorItemCatalog::UiInfo FormFactorItemCatalog::uiInfo(Type type)
         return {"Cone6", ":/SampleDesignerToolbox/images/ff_Cone6_64x64.png",
                 "A truncated pyramid, based on a regular hexagon"};
 
-    case Type::Cuboctahedron:
-        return {"Cuboctahedron", ":/SampleDesignerToolbox/images/ff_Cuboctahedron_64x64.png",
+    case Type::Bipyramid4:
+        return {"Bipyramid4", ":/SampleDesignerToolbox/images/ff_Bipyramid4_64x64.png",
                 "Compound of two truncated pyramids with a common square base "
                 "and opposite orientations"};
 
@@ -256,7 +256,7 @@ FormFactorItemCatalog::Type FormFactorItemCatalog::type(const FormFactorItem* it
     CHECK(Box);
     CHECK(Cone);
     CHECK(Cone6);
-    CHECK(Cuboctahedron);
+    CHECK(Bipyramid4);
     CHECK(Cylinder);
     CHECK(Dodecahedron);
     CHECK(EllipsoidalCylinder);
diff --git a/GUI/Model/Sample/FormFactorItemCatalog.h b/GUI/Model/Sample/FormFactorItemCatalog.h
index bdf5d3b0ba066bed29271a37854339705bfdbb12..2e6c6da2da300e1f511afcbc76c17d64b66ca457 100644
--- a/GUI/Model/Sample/FormFactorItemCatalog.h
+++ b/GUI/Model/Sample/FormFactorItemCatalog.h
@@ -32,7 +32,7 @@ public:
         Box = 4,
         Cone = 5,
         Cone6 = 6,
-        Cuboctahedron = 7,
+        Bipyramid4 = 7,
         Cylinder = 8,
         Dodecahedron = 9,
         EllipsoidalCylinder = 10,
diff --git a/GUI/Model/Sample/FormFactorItems.cpp b/GUI/Model/Sample/FormFactorItems.cpp
index 2866a1b7f214d8ffa94cb1ecde273fc1197da597..d271210b148c8475d092c296b607233a2454ed98 100644
--- a/GUI/Model/Sample/FormFactorItems.cpp
+++ b/GUI/Model/Sample/FormFactorItems.cpp
@@ -105,7 +105,7 @@ std::unique_ptr<IBornFF> Cone6Item::createFormFactor() const
 
 /* ------------------------------------------------ */
 
-CuboctahedronItem::CuboctahedronItem()
+Bipyramid4Item::Bipyramid4Item()
 {
     m_length.init("Length", "Side length of the common square base", 20.0, Unit::nanometer,
                   "length");
@@ -118,9 +118,9 @@ CuboctahedronItem::CuboctahedronItem()
     m_alpha.init("Alpha", "Dihedral angle between base and facets", 60.0, Unit::degree, "alpha");
 }
 
-std::unique_ptr<IBornFF> CuboctahedronItem::createFormFactor() const
+std::unique_ptr<IBornFF> Bipyramid4Item::createFormFactor() const
 {
-    return std::make_unique<FormFactorCuboctahedron>(length(), height(), heightRatio(),
+    return std::make_unique<FormFactorBipyramid4>(length(), height(), heightRatio(),
                                                      alpha() * Units::deg);
 }
 
diff --git a/GUI/Model/Sample/FormFactorItems.h b/GUI/Model/Sample/FormFactorItems.h
index 6201c101db2369bd9307944f51355c19ef2323f1..09a4caecf86a3b8e3137712954a0875ea5042302 100644
--- a/GUI/Model/Sample/FormFactorItems.h
+++ b/GUI/Model/Sample/FormFactorItems.h
@@ -142,9 +142,9 @@ public:
     }
 };
 
-class CuboctahedronItem : public FormFactorItem {
+class Bipyramid4Item : public FormFactorItem {
 public:
-    CuboctahedronItem();
+    Bipyramid4Item();
     std::unique_ptr<IBornFF> createFormFactor() const override;
 
     FF_PROPERTY(length, Length)
diff --git a/GUI/View/FromDomain/FromDomain.cpp b/GUI/View/FromDomain/FromDomain.cpp
index 9ba5b7e6e6db8471592a8fb8f9dc86a5514271bf..57423d64730d0a31bacd0a1ff5a2e04aa26611de 100644
--- a/GUI/View/FromDomain/FromDomain.cpp
+++ b/GUI/View/FromDomain/FromDomain.cpp
@@ -876,8 +876,8 @@ void GUI::Transform::FromDomain::setFormFactor(std::variant<ParticleItem*, MesoC
         formfactorItem->setBaseEdge(formfactor->baseEdge());
         formfactorItem->setHeight(formfactor->height());
         formfactorItem->setAlpha(Units::rad2deg(formfactor->alpha()));
-    } else if (const auto* formfactor = dynamic_cast<const FormFactorCuboctahedron*>(iFormFactor)) {
-        auto* formfactorItem = addFormFactorItem<CuboctahedronItem>(parent);
+    } else if (const auto* formfactor = dynamic_cast<const FormFactorBipyramid4*>(iFormFactor)) {
+        auto* formfactorItem = addFormFactorItem<Bipyramid4Item>(parent);
         formfactorItem->setLength(formfactor->length());
         formfactorItem->setHeight(formfactor->height());
         formfactorItem->setHeightRatio(formfactor->heightRatio());
diff --git a/GUI/View/Realspace/RealSpaceMesoCrystalUtils.cpp b/GUI/View/Realspace/RealSpaceMesoCrystalUtils.cpp
index 861b741eb4bb3bca667cc2b039d6ae7a89224200..2649db7ea2dd1874eb9aa49ba91caafc40811e26 100644
--- a/GUI/View/Realspace/RealSpaceMesoCrystalUtils.cpp
+++ b/GUI/View/Realspace/RealSpaceMesoCrystalUtils.cpp
@@ -103,12 +103,12 @@ bool isPositionInsideMesoCrystal(const IBornFF* outerShape, R3 positionInside)
 
         if (std::pow(positionInside.x(), 2) + std::pow(positionInside.y(), 2) <= std::pow(k_z, 2))
             check = true;
-    } else if (const auto* ff_Cuboctahedron =
-                   dynamic_cast<const FormFactorCuboctahedron*>(outerShape)) {
-        double L = ff_Cuboctahedron->length();
-        double H = ff_Cuboctahedron->height();
-        double rH = ff_Cuboctahedron->heightRatio();
-        double alpha = ff_Cuboctahedron->alpha();
+    } else if (const auto* ff_Bipyramid4 =
+                   dynamic_cast<const FormFactorBipyramid4*>(outerShape)) {
+        double L = ff_Bipyramid4->length();
+        double H = ff_Bipyramid4->height();
+        double rH = ff_Bipyramid4->heightRatio();
+        double alpha = ff_Bipyramid4->alpha();
 
         double total_Height = H + rH * H;
 
@@ -116,7 +116,7 @@ bool isPositionInsideMesoCrystal(const IBornFF* outerShape, R3 positionInside)
             || positionInside.z() < 0 || positionInside.z() > total_Height)
             return check;
 
-        // half-length of square (i.e. horizontal cross-section of Cuboctahedron) at a given height
+        // half-length of square (i.e. horizontal cross-section of Bipyramid4) at a given height
         double l_z = L / 2 - std::abs(H - positionInside.z()) / std::tan(alpha);
         if (std::abs(positionInside.x()) <= l_z && std::abs(positionInside.y()) <= l_z)
             check = true;
diff --git a/GUI/View/Realspace/TransformTo3D.cpp b/GUI/View/Realspace/TransformTo3D.cpp
index 678bb94a42db2891c68888cb0c0ca6bf01ccbf14..02bfa850ef7b32b96c74cc9d225c3dbfc8de65d2 100644
--- a/GUI/View/Realspace/TransformTo3D.cpp
+++ b/GUI/View/Realspace/TransformTo3D.cpp
@@ -97,12 +97,12 @@ GUI::View::TransformTo3D::createParticlefromFormfactor(const IBornFF* ff)
         double alpha = ff_Cone6->alpha();
         return std::make_unique<GUI::RealSpace::Particles::Cone6>(baseedge, height, alpha);
     }
-    if (const auto* ff_Cuboctahedron = dynamic_cast<const FormFactorCuboctahedron*>(ff)) {
-        double length = ff_Cuboctahedron->length();
-        double height = ff_Cuboctahedron->height();
-        double height_ratio = ff_Cuboctahedron->heightRatio();
-        double alpha = ff_Cuboctahedron->alpha();
-        return std::make_unique<GUI::RealSpace::Particles::Cuboctahedron>(length, height,
+    if (const auto* ff_Bipyramid4 = dynamic_cast<const FormFactorBipyramid4*>(ff)) {
+        double length = ff_Bipyramid4->length();
+        double height = ff_Bipyramid4->height();
+        double height_ratio = ff_Bipyramid4->heightRatio();
+        double alpha = ff_Bipyramid4->alpha();
+        return std::make_unique<GUI::RealSpace::Particles::Bipyramid4>(length, height,
                                                                           height_ratio, alpha);
     }
     if (const auto* ff_Cylinder = dynamic_cast<const FormFactorCylinder*>(ff)) {
diff --git a/GUI/View/SampleDesigner/SampleDesigner.qrc b/GUI/View/SampleDesigner/SampleDesigner.qrc
index 95da4aab9b5a5b2c357fa5af126ca06d961a07f4..5aa4dd09ccc3dd88b5c2530f314a42c6cca09006 100644
--- a/GUI/View/SampleDesigner/SampleDesigner.qrc
+++ b/GUI/View/SampleDesigner/SampleDesigner.qrc
@@ -24,7 +24,7 @@
         <file>images/ff_Cone6_64x64.png</file>
         <file>images/ff_Cone_64x64.png</file>
         <file>images/ff_CosineRipple_64x64.png</file>
-        <file>images/ff_Cuboctahedron_64x64.png</file>
+        <file>images/ff_Bipyramid4_64x64.png</file>
         <file>images/ff_Cylinder_64x64.png</file>
         <file>images/ff_Dodecahedron_64x64.png</file>
         <file>images/ff_EllipsoidalCylinder_64x64.png</file>
diff --git a/GUI/View/SampleDesigner/images/ff_Cuboctahedron_64x64.png b/GUI/View/SampleDesigner/images/ff_Bipyramid4_64x64.png
similarity index 100%
rename from GUI/View/SampleDesigner/images/ff_Cuboctahedron_64x64.png
rename to GUI/View/SampleDesigner/images/ff_Bipyramid4_64x64.png
diff --git a/GUI/ba3d/mesh/cuboctahedron.cpp b/GUI/ba3d/mesh/cuboctahedron.cpp
index 203031b5353234021c7156d0a02575d75fdc03f5..65506f8fe6b767e0da936634b1f573bfe662ef57 100644
--- a/GUI/ba3d/mesh/cuboctahedron.cpp
+++ b/GUI/ba3d/mesh/cuboctahedron.cpp
@@ -18,7 +18,7 @@
 
 namespace GUI::RealSpace {
 
-Geometry::Mesh Geometry::meshCuboctahedron(float rH, float alpha, float H)
+Geometry::Mesh Geometry::meshBipyramid4(float rH, float alpha, float H)
 { // t/D
 
     // alpha is the angle between the common square interface and one of the side faces (alpha for
diff --git a/GUI/ba3d/model/geometry.cpp b/GUI/ba3d/model/geometry.cpp
index 2b62411889d56d23034d5b2eb82832b8fa4398ec..9d0fc1006ac02dace02bdfe7aeaf9cb241150fb0 100644
--- a/GUI/ba3d/model/geometry.cpp
+++ b/GUI/ba3d/model/geometry.cpp
@@ -94,8 +94,8 @@ Geometry::Geometry(GeometricID::Key key_) : m_key(key_)
     case BaseShape::TruncatedBox:
         m_mesh = meshTruncBox(m_key.p1);
         break;
-    case BaseShape::Cuboctahedron:
-        m_mesh = meshCuboctahedron(m_key.p1, m_key.p2, m_key.p3);
+    case BaseShape::Bipyramid4:
+        m_mesh = meshBipyramid4(m_key.p1, m_key.p2, m_key.p3);
         break;
     case BaseShape::Ripple:
         m_mesh = meshRipple(m_key.p1, m_key.p2);
diff --git a/GUI/ba3d/model/geometry.h b/GUI/ba3d/model/geometry.h
index a9fb87a3c3d47ccf798c3903e73d875b90b2146d..0be4da1c6b65c0d403127b2e10cd0deaf591c79f 100644
--- a/GUI/ba3d/model/geometry.h
+++ b/GUI/ba3d/model/geometry.h
@@ -83,7 +83,7 @@ private:
     static Mesh meshIcosahedron();
     static Mesh meshDodecahedron();
     static Mesh meshTruncBox(float tD);
-    static Mesh meshCuboctahedron(float rH, float alpha, float H);
+    static Mesh meshBipyramid4(float rH, float alpha, float H);
     static Mesh meshRipple(float numSides, float ratio_asymmetry_W);
 
     // mesh params for round shapes
diff --git a/GUI/ba3d/model/geometry_inc.h b/GUI/ba3d/model/geometry_inc.h
index 33d639e84974b889ddb4fced0ca4002730cfb98f..a319f96ea71f0dcfe8e5714609442d52210234e5 100644
--- a/GUI/ba3d/model/geometry_inc.h
+++ b/GUI/ba3d/model/geometry_inc.h
@@ -43,7 +43,7 @@ enum class BaseShape {
     Icosahedron,
     Dodecahedron,
     TruncatedBox,
-    Cuboctahedron,
+    Bipyramid4,
     Ripple
 };
 
diff --git a/GUI/ba3d/model/model.cpp b/GUI/ba3d/model/model.cpp
index 8ecd9423c2257e7413299030fb3d46f029639268..0a0808de5dcde5a8a16c95fc4d157c5fa3e1515e 100644
--- a/GUI/ba3d/model/model.cpp
+++ b/GUI/ba3d/model/model.cpp
@@ -86,8 +86,8 @@ Particles::Particle* Model::newParticle(Particles::EShape k, float R)
         return new Cone6(R, D, 1.3f);
     case EShape::Pyramid4:
         return new Pyramid4(D, D, 1.3f);
-    case EShape::Cuboctahedron:
-        return new Cuboctahedron(D, R * 3 / 2, 2.f / 3, 2);
+    case EShape::Bipyramid4:
+        return new Bipyramid4(D, R * 3 / 2, 2.f / 3, 2);
     case EShape::Prism3:
         return new Prism3(R, D);
     case EShape::Pyramid3:
diff --git a/GUI/ba3d/model/particles.cpp b/GUI/ba3d/model/particles.cpp
index 1554a34a136c5bbff718ec03ecde416476680bb7..5c845db0c04065d5991c8fde9cc445057aabc78c 100644
--- a/GUI/ba3d/model/particles.cpp
+++ b/GUI/ba3d/model/particles.cpp
@@ -33,7 +33,7 @@ QString const& name(EShape k)
         "Prism6",
         "Cone6",
         "Pyramid4",
-        "Cuboctahedron",
+        "Bipyramid4",
         "Prism3",
         "Pyramid3",
         "EllipsoidalCylinder",
@@ -155,8 +155,8 @@ Cone6::Cone6(float R, float H, float alpha)
     set();
 }
 
-Cuboctahedron::Cuboctahedron(float L, float H, float rH, float alpha)
-    : Particle(Key(BaseShape::Cuboctahedron, rH, alpha, H / L))
+Bipyramid4::Bipyramid4(float L, float H, float rH, float alpha)
+    : Particle(Key(BaseShape::Bipyramid4, rH, alpha, H / L))
 {
     isNull = (L <= 0 || H <= 0 || rH <= 0 || alpha >= pi2f);
     scale = Vector3D(L, L, L);
diff --git a/GUI/ba3d/model/particles.h b/GUI/ba3d/model/particles.h
index 6f394953b46726cf936e27113aeafcfc02e91651..3d4f1b1c8128fa22c826c7eea4833876da09f82a 100644
--- a/GUI/ba3d/model/particles.h
+++ b/GUI/ba3d/model/particles.h
@@ -33,7 +33,7 @@ enum class EShape {
     Prism6,
     Cone6,
     Pyramid4,
-    Cuboctahedron,
+    Bipyramid4,
     Prism3,
     Pyramid3,
     EllipsoidalCylinder,
@@ -138,9 +138,9 @@ public:
     Pyramid4(float L, float H, float alpha);
 };
 
-class Cuboctahedron : public Particle {
+class Bipyramid4 : public Particle {
 public:
-    Cuboctahedron(float L, float H, float rH, float alpha);
+    Bipyramid4(float L, float H, float rH, float alpha);
 };
 
 class Prism3 : public Particle {
diff --git a/Resample/Processed/Slicer.cpp b/Resample/Processed/Slicer.cpp
index 7942601603201c4cfca634cb36d102f1cbced277..ed391f8d69bc62f1ac2d1fdd924910ff458c4413 100644
--- a/Resample/Processed/Slicer.cpp
+++ b/Resample/Processed/Slicer.cpp
@@ -118,7 +118,7 @@ ReParticle* createParticleSlice(const IBornFF* ff, ZLimits limits, const IRotati
                                  f->height() - effects.dz_bottom - effects.dz_top, f->alpha());
         return ReParticle::createTransformedFormFactor(slicedff, rot, effects.position);
 
-    } else if (const auto* f = dynamic_cast<const FormFactorCuboctahedron*>(ff)) {
+    } else if (const auto* f = dynamic_cast<const FormFactorBipyramid4*>(ff)) {
         const SlicingEffects effects =
             computeSlicingEffects(limits, translation, f->height() * (1 + f->heightRatio()));
         if (effects.dz_bottom > f->height()) {
@@ -137,7 +137,7 @@ ReParticle* createParticleSlice(const IBornFF* ff, ZLimits limits, const IRotati
                                         M_PI - f->alpha());
             return ReParticle::createTransformedFormFactor(slicedff, rot, effects.position);
         }
-        FormFactorCuboctahedron slicedff(f->length(), f->height() - effects.dz_bottom,
+        FormFactorBipyramid4 slicedff(f->length(), f->height() - effects.dz_bottom,
                                          f->heightRatio() * f->height() - effects.dz_top,
                                          f->alpha());
         return ReParticle::createTransformedFormFactor(slicedff, rot, effects.position);
diff --git a/Sample/ComponentBuilder/FormFactorComponents.cpp b/Sample/ComponentBuilder/FormFactorComponents.cpp
index a04a9d6345e24648e761f263cbd836b5bb5a8a5f..06871c8b6287afd99f4ce9063c6d9feb3b501ee8 100644
--- a/Sample/ComponentBuilder/FormFactorComponents.cpp
+++ b/Sample/ComponentBuilder/FormFactorComponents.cpp
@@ -30,7 +30,7 @@ FormFactorComponents::FormFactorComponents()
 
     add("Cone6", new FormFactorCone6(2. / sqrt(3.) * 5.0, 5.0, Units::deg2rad(54.73)));
 
-    add("Cuboctahedron", new FormFactorCuboctahedron(10.0, 5.0, 1.0, Units::deg2rad(54.73)));
+    add("Bipyramid4", new FormFactorBipyramid4(10.0, 5.0, 1.0, Units::deg2rad(54.73)));
 
     add("Cylinder", new FormFactorCylinder(5.0, 10.0));
 
diff --git a/Sample/HardParticle/FormFactorCuboctahedron.cpp b/Sample/HardParticle/FormFactorBipyramid4.cpp
similarity index 84%
rename from Sample/HardParticle/FormFactorCuboctahedron.cpp
rename to Sample/HardParticle/FormFactorBipyramid4.cpp
index ceaf6e88012551a2f55d7a07a925e508241dd035..202ae28e827c1afff0adddc589946838f456f26a 100644
--- a/Sample/HardParticle/FormFactorCuboctahedron.cpp
+++ b/Sample/HardParticle/FormFactorBipyramid4.cpp
@@ -2,8 +2,8 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      Sample/HardParticle/FormFactorCuboctahedron.cpp
-//! @brief     Implements class FormFactorCuboctahedron.
+//! @file      Sample/HardParticle/FormFactorBipyramid4.cpp
+//! @brief     Implements class FormFactorBipyramid4.
 //!
 //! @homepage  http://www.bornagainproject.org
 //! @license   GNU General Public License v3 or higher (see COPYING)
@@ -12,12 +12,12 @@
 //
 //  ************************************************************************************************
 
-#include "Sample/HardParticle/FormFactorCuboctahedron.h"
+#include "Sample/HardParticle/FormFactorBipyramid4.h"
 #include "Base/Math/Constants.h"
 #include "Base/Math/Functions.h"
 #include "Sample/HardParticle/FormFactorPyramid4.h"
 
-const ff::PolyhedralTopology FormFactorCuboctahedron::topology = {{{{3, 2, 1, 0}, true},
+const ff::PolyhedralTopology FormFactorBipyramid4::topology = {{{{3, 2, 1, 0}, true},
                                                                    {{0, 1, 5, 4}, false},
                                                                    {{1, 2, 6, 5}, false},
                                                                    {{2, 3, 7, 6}, false},
@@ -29,7 +29,7 @@ const ff::PolyhedralTopology FormFactorCuboctahedron::topology = {{{{3, 2, 1, 0}
                                                                    {{8, 9, 10, 11}, true}},
                                                                   false};
 
-FormFactorCuboctahedron::FormFactorCuboctahedron(const std::vector<double> P)
+FormFactorBipyramid4::FormFactorBipyramid4(const std::vector<double> P)
     : IFormFactorPolyhedron(P)
     , m_length(m_P[0])
     , m_height(m_P[1])
@@ -44,7 +44,7 @@ FormFactorCuboctahedron::FormFactorCuboctahedron(const std::vector<double> P)
     double r = cot_alpha * 2 * m_height / m_length;
     if (std::max(1., x) * r > 1) {
         std::ostringstream ostr;
-        ostr << "FormFactorCuboctahedron() -> Error in class initialization with parameters";
+        ostr << "FormFactorBipyramid4() -> Error in class initialization with parameters";
         ostr << " height:" << m_height;
         ostr << " length:" << m_length;
         ostr << " height_ratio:" << m_height_ratio;
@@ -82,8 +82,8 @@ FormFactorCuboctahedron::FormFactorCuboctahedron(const std::vector<double> P)
                    {-c, c, zc}});
 }
 
-FormFactorCuboctahedron::FormFactorCuboctahedron(double length, double height, double height_ratio,
+FormFactorBipyramid4::FormFactorBipyramid4(double length, double height, double height_ratio,
                                                  double alpha)
-    : FormFactorCuboctahedron(std::vector<double>{length, height, height_ratio, alpha})
+    : FormFactorBipyramid4(std::vector<double>{length, height, height_ratio, alpha})
 {
 }
diff --git a/Sample/HardParticle/FormFactorCuboctahedron.h b/Sample/HardParticle/FormFactorBipyramid4.h
similarity index 67%
rename from Sample/HardParticle/FormFactorCuboctahedron.h
rename to Sample/HardParticle/FormFactorBipyramid4.h
index 76a879dd94575142e5be413d7e818e4f9dee7194..824dc188f56b977153f80b35203c6a3b717926ab 100644
--- a/Sample/HardParticle/FormFactorCuboctahedron.h
+++ b/Sample/HardParticle/FormFactorBipyramid4.h
@@ -2,8 +2,8 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      Sample/HardParticle/FormFactorCuboctahedron.h
-//! @brief     Defines class FormFactorCuboctahedron
+//! @file      Sample/HardParticle/FormFactorBipyramid4.h
+//! @brief     Defines class FormFactorBipyramid4
 //!
 //! @homepage  http://www.bornagainproject.org
 //! @license   GNU General Public License v3 or higher (see COPYING)
@@ -12,24 +12,24 @@
 //
 //  ************************************************************************************************
 
-#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORCUBOCTAHEDRON_H
-#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORCUBOCTAHEDRON_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORBIPYRAMID4_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORBIPYRAMID4_H
 
 #include "Sample/HardParticle/IFormFactorPolyhedron.h"
 
 //! A truncated bifrustum with quadratic base.
 //! @ingroup hardParticle
 
-class FormFactorCuboctahedron : public IFormFactorPolyhedron {
+class FormFactorBipyramid4 : public IFormFactorPolyhedron {
 public:
-    FormFactorCuboctahedron(std::vector<double> P);
-    FormFactorCuboctahedron(double length, double height, double height_ratio, double alpha);
+    FormFactorBipyramid4(std::vector<double> P);
+    FormFactorBipyramid4(double length, double height, double height_ratio, double alpha);
 
-    FormFactorCuboctahedron* clone() const override
+    FormFactorBipyramid4* clone() const override
     {
-        return new FormFactorCuboctahedron(m_length, m_height, m_height_ratio, m_alpha);
+        return new FormFactorBipyramid4(m_length, m_height, m_height_ratio, m_alpha);
     }
-    std::string className() const final { return "FormFactorCuboctahedron"; }
+    std::string className() const final { return "FormFactorBipyramid4"; }
     // const auto tooltip = "truncated quadratic bipyramid";
     std::vector<ParaMeta> parDefs() const final
     {
@@ -54,4 +54,4 @@ private:
     const double& m_alpha;
 };
 
-#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORCUBOCTAHEDRON_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORBIPYRAMID4_H
diff --git a/Sample/HardParticle/HardParticles.h b/Sample/HardParticle/HardParticles.h
index bd513e0b6de6f05776e10aa40e8404cfe3140bf6..3640473dc52d8f05cd189f89d7206665815d9fd4 100644
--- a/Sample/HardParticle/HardParticles.h
+++ b/Sample/HardParticle/HardParticles.h
@@ -26,7 +26,7 @@
 #include "Sample/HardParticle/FormFactorCone.h"
 #include "Sample/HardParticle/FormFactorCone6.h"
 #include "Sample/HardParticle/FormFactorCosineRipple.h"
-#include "Sample/HardParticle/FormFactorCuboctahedron.h"
+#include "Sample/HardParticle/FormFactorBipyramid4.h"
 #include "Sample/HardParticle/FormFactorCylinder.h"
 #include "Sample/HardParticle/FormFactorDodecahedron.h"
 #include "Sample/HardParticle/FormFactorEllipsoidalCylinder.h"
diff --git a/Tests/ReferenceData/Std/FormFactorsWithAbsorption_Cuboctahedron.int.gz b/Tests/ReferenceData/Std/FormFactorsWithAbsorption_Bipyramid4.int.gz
similarity index 100%
rename from Tests/ReferenceData/Std/FormFactorsWithAbsorption_Cuboctahedron.int.gz
rename to Tests/ReferenceData/Std/FormFactorsWithAbsorption_Bipyramid4.int.gz
diff --git a/Tests/ReferenceData/Std/FormFactors_Cuboctahedron.int.gz b/Tests/ReferenceData/Std/FormFactors_Bipyramid4.int.gz
similarity index 100%
rename from Tests/ReferenceData/Std/FormFactors_Cuboctahedron.int.gz
rename to Tests/ReferenceData/Std/FormFactors_Bipyramid4.int.gz
diff --git a/Tests/Unit/Core/PythonFormattingTest.cpp b/Tests/Unit/Core/PythonFormattingTest.cpp
index d2634a142954b6159d9f76076d6204d1bf0343b7..81542d2cf7153d53694ae3e914ac41c20ee73b04 100644
--- a/Tests/Unit/Core/PythonFormattingTest.cpp
+++ b/Tests/Unit/Core/PythonFormattingTest.cpp
@@ -14,7 +14,7 @@
 #include "Sample/HardParticle/FormFactorCone.h"
 #include "Sample/HardParticle/FormFactorCone6.h"
 #include "Sample/HardParticle/FormFactorCosineRipple.h"
-#include "Sample/HardParticle/FormFactorCuboctahedron.h"
+#include "Sample/HardParticle/FormFactorBipyramid4.h"
 #include "Sample/HardParticle/FormFactorCylinder.h"
 #include "Sample/HardParticle/FormFactorDodecahedron.h"
 #include "Sample/HardParticle/FormFactorEllipsoidalCylinder.h"
@@ -212,8 +212,8 @@ TEST_F(PythonFormattingTest, printFormFactors)
     EXPECT_EQ(FormFactorCone6(6, 5, 55 * Units::deg).pythonConstructor(),
               "FormFactorCone6(6*nm, 5*nm, 55*deg)");
 
-    EXPECT_EQ(FormFactorCuboctahedron(10, 4, 0.7, 55 * Units::deg).pythonConstructor(),
-              "FormFactorCuboctahedron(10*nm, 4*nm, 0.7, 55*deg)");
+    EXPECT_EQ(FormFactorBipyramid4(10, 4, 0.7, 55 * Units::deg).pythonConstructor(),
+              "FormFactorBipyramid4(10*nm, 4*nm, 0.7, 55*deg)");
 
     EXPECT_EQ(FormFactorCylinder(3, 5).pythonConstructor(), "FormFactorCylinder(3*nm, 5*nm)");
 
diff --git a/Tests/Unit/Numeric/FormFactorSpecializationTest.cpp b/Tests/Unit/Numeric/FormFactorSpecializationTest.cpp
index a2dd3776c377d7137200d599e48c24e82f87906b..6eed7951c4193c57ae461a6804a79cd579a5ddb3 100644
--- a/Tests/Unit/Numeric/FormFactorSpecializationTest.cpp
+++ b/Tests/Unit/Numeric/FormFactorSpecializationTest.cpp
@@ -65,7 +65,7 @@ TEST_F(FFSpecializationTest, OctahedronAsTruncated)
 {
     const double L = 1.8;
     FormFactorPlatonicOctahedron p0(L);
-    FormFactorCuboctahedron p1(L, L/sqrt(2), 1., atan(sqrt(2)));
+    FormFactorBipyramid4 p1(L, L/sqrt(2), 1., atan(sqrt(2)));
     run_test(&p0, &p1, eps_polyh, 1e-99, 50);
 }
 
diff --git a/Tests/Unit/Sample/FormFactorBasicTest.cpp b/Tests/Unit/Sample/FormFactorBasicTest.cpp
index 8626d12788b97da171039df34ad465d137122db6..3065db28ea041d2af36b6a49065838d6b65561ba 100644
--- a/Tests/Unit/Sample/FormFactorBasicTest.cpp
+++ b/Tests/Unit/Sample/FormFactorBasicTest.cpp
@@ -213,7 +213,7 @@ TEST_F(FormFactorBasicTest, CosineRippleBox)
     test_ff(&particle);
 }
 
-TEST_F(FormFactorBasicTest, Cuboctahedron)
+TEST_F(FormFactorBasicTest, Bipyramid4)
 {
     double length = 10.;
     double height = 4;
@@ -227,7 +227,7 @@ TEST_F(FormFactorBasicTest, Cuboctahedron)
                     * (2. - (1. - H2divLtga) * (1. - H2divLtga) * (1. - H2divLtga)
                        - (1. - ratioH2divLtga) * (1. - ratioH2divLtga) * (1. - ratioH2divLtga));
 
-    FormFactorCuboctahedron particle(length, height, height_ratio, alpha);
+    FormFactorBipyramid4 particle(length, height, height_ratio, alpha);
     EXPECT_DOUBLE_EQ(volume, particle.volume());
     RotationZ rot(.42);
     EXPECT_EQ(0., particle.bottomZ(&rot));
diff --git a/Wrap/Swig/libBornAgainSample.i b/Wrap/Swig/libBornAgainSample.i
index feb3bb59c285dd1dc96336ef4fd3cb5cbc6f10a7..2c01f959091d70451d11ddfe2ef9786f2261eff1 100644
--- a/Wrap/Swig/libBornAgainSample.i
+++ b/Wrap/Swig/libBornAgainSample.i
@@ -142,7 +142,7 @@
 %include "Sample/HardParticle/FormFactorCone.h"
 %include "Sample/HardParticle/FormFactorCone6.h"
 %include "Sample/HardParticle/FormFactorCosineRipple.h"
-%include "Sample/HardParticle/FormFactorCuboctahedron.h"
+%include "Sample/HardParticle/FormFactorBipyramid4.h"
 %include "Sample/HardParticle/FormFactorCylinder.h"
 %include "Sample/HardParticle/FormFactorDodecahedron.h"
 %include "Sample/HardParticle/FormFactorEllipsoidalCylinder.h"
diff --git a/auto/Wrap/doxygenSample.i b/auto/Wrap/doxygenSample.i
index 3373d1f6a2ecf66fc2de74bbbbcc52eb6f3ec483..c2aad3abbe076870235c0c327d2b747d88d2aedf 100644
--- a/auto/Wrap/doxygenSample.i
+++ b/auto/Wrap/doxygenSample.i
@@ -341,6 +341,44 @@ Returns a clone of this  ISampleNode object.
 ";
 
 
+// File: classFormFactorBipyramid4.xml
+%feature("docstring") FormFactorBipyramid4 "
+
+A truncated bifrustum with quadratic base.
+
+C++ includes: FormFactorBipyramid4.h
+";
+
+%feature("docstring")  FormFactorBipyramid4::FormFactorBipyramid4 "FormFactorBipyramid4::FormFactorBipyramid4(std::vector< double > P)
+";
+
+%feature("docstring")  FormFactorBipyramid4::FormFactorBipyramid4 "FormFactorBipyramid4::FormFactorBipyramid4(double length, double height, double height_ratio, double alpha)
+";
+
+%feature("docstring")  FormFactorBipyramid4::clone "FormFactorBipyramid4* FormFactorBipyramid4::clone() const override
+
+Returns a clone of this  ISampleNode object. 
+";
+
+%feature("docstring")  FormFactorBipyramid4::className "std::string FormFactorBipyramid4::className() const final
+";
+
+%feature("docstring")  FormFactorBipyramid4::parDefs "std::vector<ParaMeta> FormFactorBipyramid4::parDefs() const final
+";
+
+%feature("docstring")  FormFactorBipyramid4::length "double FormFactorBipyramid4::length() const
+";
+
+%feature("docstring")  FormFactorBipyramid4::height "double FormFactorBipyramid4::height() const
+";
+
+%feature("docstring")  FormFactorBipyramid4::heightRatio "double FormFactorBipyramid4::heightRatio() const
+";
+
+%feature("docstring")  FormFactorBipyramid4::alpha "double FormFactorBipyramid4::alpha() const
+";
+
+
 // File: classFormFactorBox.xml
 %feature("docstring") FormFactorBox "
 
@@ -587,44 +625,6 @@ Returns a clone of this  ISampleNode object.
 ";
 
 
-// File: classFormFactorCuboctahedron.xml
-%feature("docstring") FormFactorCuboctahedron "
-
-A truncated bifrustum with quadratic base.
-
-C++ includes: FormFactorCuboctahedron.h
-";
-
-%feature("docstring")  FormFactorCuboctahedron::FormFactorCuboctahedron "FormFactorCuboctahedron::FormFactorCuboctahedron(std::vector< double > P)
-";
-
-%feature("docstring")  FormFactorCuboctahedron::FormFactorCuboctahedron "FormFactorCuboctahedron::FormFactorCuboctahedron(double length, double height, double height_ratio, double alpha)
-";
-
-%feature("docstring")  FormFactorCuboctahedron::clone "FormFactorCuboctahedron* FormFactorCuboctahedron::clone() const override
-
-Returns a clone of this  ISampleNode object. 
-";
-
-%feature("docstring")  FormFactorCuboctahedron::className "std::string FormFactorCuboctahedron::className() const final
-";
-
-%feature("docstring")  FormFactorCuboctahedron::parDefs "std::vector<ParaMeta> FormFactorCuboctahedron::parDefs() const final
-";
-
-%feature("docstring")  FormFactorCuboctahedron::length "double FormFactorCuboctahedron::length() const
-";
-
-%feature("docstring")  FormFactorCuboctahedron::height "double FormFactorCuboctahedron::height() const
-";
-
-%feature("docstring")  FormFactorCuboctahedron::heightRatio "double FormFactorCuboctahedron::heightRatio() const
-";
-
-%feature("docstring")  FormFactorCuboctahedron::alpha "double FormFactorCuboctahedron::alpha() const
-";
-
-
 // File: classFormFactorCylinder.xml
 %feature("docstring") FormFactorCylinder "
 
@@ -5391,6 +5391,12 @@ Used by the hard sphere and by several soft sphere classes.
 // File: FormFactorBar_8h.xml
 
 
+// File: FormFactorBipyramid4_8cpp.xml
+
+
+// File: FormFactorBipyramid4_8h.xml
+
+
 // File: FormFactorBox_8cpp.xml
 
 
@@ -5421,12 +5427,6 @@ Used by the hard sphere and by several soft sphere classes.
 // File: FormFactorCosineRipple_8h.xml
 
 
-// File: FormFactorCuboctahedron_8cpp.xml
-
-
-// File: FormFactorCuboctahedron_8h.xml
-
-
 // File: FormFactorCylinder_8cpp.xml
 
 
diff --git a/auto/Wrap/libBornAgainSample.py b/auto/Wrap/libBornAgainSample.py
index 3dffe09ad6f398ae02497aea443c1b655e26bb53..6ade90c3b4d384c27a2384f8b3847c258a0515f2 100644
--- a/auto/Wrap/libBornAgainSample.py
+++ b/auto/Wrap/libBornAgainSample.py
@@ -8685,13 +8685,13 @@ class FormFactorCosineRippleLorentz(ICosineRipple):
 # Register FormFactorCosineRippleLorentz in _libBornAgainSample:
 _libBornAgainSample.FormFactorCosineRippleLorentz_swigregister(FormFactorCosineRippleLorentz)
 
-class FormFactorCuboctahedron(IFormFactorPolyhedron):
+class FormFactorBipyramid4(IFormFactorPolyhedron):
     r"""
 
 
     A truncated bifrustum with quadratic base.
 
-    C++ includes: FormFactorCuboctahedron.h
+    C++ includes: FormFactorBipyramid4.h
 
     """
 
@@ -8700,74 +8700,74 @@ class FormFactorCuboctahedron(IFormFactorPolyhedron):
 
     def __init__(self, *args):
         r"""
-        __init__(FormFactorCuboctahedron self, vdouble1d_t P) -> FormFactorCuboctahedron
-        __init__(FormFactorCuboctahedron self, double length, double height, double height_ratio, double alpha) -> FormFactorCuboctahedron
-        FormFactorCuboctahedron::FormFactorCuboctahedron(double length, double height, double height_ratio, double alpha)
+        __init__(FormFactorBipyramid4 self, vdouble1d_t P) -> FormFactorBipyramid4
+        __init__(FormFactorBipyramid4 self, double length, double height, double height_ratio, double alpha) -> FormFactorBipyramid4
+        FormFactorBipyramid4::FormFactorBipyramid4(double length, double height, double height_ratio, double alpha)
 
         """
-        _libBornAgainSample.FormFactorCuboctahedron_swiginit(self, _libBornAgainSample.new_FormFactorCuboctahedron(*args))
+        _libBornAgainSample.FormFactorBipyramid4_swiginit(self, _libBornAgainSample.new_FormFactorBipyramid4(*args))
 
     def clone(self):
         r"""
-        clone(FormFactorCuboctahedron self) -> FormFactorCuboctahedron
-        FormFactorCuboctahedron* FormFactorCuboctahedron::clone() const override
+        clone(FormFactorBipyramid4 self) -> FormFactorBipyramid4
+        FormFactorBipyramid4* FormFactorBipyramid4::clone() const override
 
         Returns a clone of this  ISampleNode object. 
 
         """
-        return _libBornAgainSample.FormFactorCuboctahedron_clone(self)
+        return _libBornAgainSample.FormFactorBipyramid4_clone(self)
 
     def className(self):
         r"""
-        className(FormFactorCuboctahedron self) -> std::string
-        std::string FormFactorCuboctahedron::className() const final
+        className(FormFactorBipyramid4 self) -> std::string
+        std::string FormFactorBipyramid4::className() const final
 
         """
-        return _libBornAgainSample.FormFactorCuboctahedron_className(self)
+        return _libBornAgainSample.FormFactorBipyramid4_className(self)
 
     def parDefs(self):
         r"""
-        parDefs(FormFactorCuboctahedron self) -> std::vector< ParaMeta,std::allocator< ParaMeta > >
-        std::vector<ParaMeta> FormFactorCuboctahedron::parDefs() const final
+        parDefs(FormFactorBipyramid4 self) -> std::vector< ParaMeta,std::allocator< ParaMeta > >
+        std::vector<ParaMeta> FormFactorBipyramid4::parDefs() const final
 
         """
-        return _libBornAgainSample.FormFactorCuboctahedron_parDefs(self)
+        return _libBornAgainSample.FormFactorBipyramid4_parDefs(self)
 
     def length(self):
         r"""
-        length(FormFactorCuboctahedron self) -> double
-        double FormFactorCuboctahedron::length() const
+        length(FormFactorBipyramid4 self) -> double
+        double FormFactorBipyramid4::length() const
 
         """
-        return _libBornAgainSample.FormFactorCuboctahedron_length(self)
+        return _libBornAgainSample.FormFactorBipyramid4_length(self)
 
     def height(self):
         r"""
-        height(FormFactorCuboctahedron self) -> double
-        double FormFactorCuboctahedron::height() const
+        height(FormFactorBipyramid4 self) -> double
+        double FormFactorBipyramid4::height() const
 
         """
-        return _libBornAgainSample.FormFactorCuboctahedron_height(self)
+        return _libBornAgainSample.FormFactorBipyramid4_height(self)
 
     def heightRatio(self):
         r"""
-        heightRatio(FormFactorCuboctahedron self) -> double
-        double FormFactorCuboctahedron::heightRatio() const
+        heightRatio(FormFactorBipyramid4 self) -> double
+        double FormFactorBipyramid4::heightRatio() const
 
         """
-        return _libBornAgainSample.FormFactorCuboctahedron_heightRatio(self)
+        return _libBornAgainSample.FormFactorBipyramid4_heightRatio(self)
 
     def alpha(self):
         r"""
-        alpha(FormFactorCuboctahedron self) -> double
-        double FormFactorCuboctahedron::alpha() const
+        alpha(FormFactorBipyramid4 self) -> double
+        double FormFactorBipyramid4::alpha() const
 
         """
-        return _libBornAgainSample.FormFactorCuboctahedron_alpha(self)
-    __swig_destroy__ = _libBornAgainSample.delete_FormFactorCuboctahedron
+        return _libBornAgainSample.FormFactorBipyramid4_alpha(self)
+    __swig_destroy__ = _libBornAgainSample.delete_FormFactorBipyramid4
 
-# Register FormFactorCuboctahedron in _libBornAgainSample:
-_libBornAgainSample.FormFactorCuboctahedron_swigregister(FormFactorCuboctahedron)
+# Register FormFactorBipyramid4 in _libBornAgainSample:
+_libBornAgainSample.FormFactorBipyramid4_swigregister(FormFactorBipyramid4)
 
 class FormFactorCylinder(IBornFF):
     r"""
diff --git a/auto/Wrap/libBornAgainSample_wrap.cpp b/auto/Wrap/libBornAgainSample_wrap.cpp
index 77d08945224c7352620661936e96219be54c3f93..a807f93d0e41d87a029d027d52a63cd36f6049d9 100644
--- a/auto/Wrap/libBornAgainSample_wrap.cpp
+++ b/auto/Wrap/libBornAgainSample_wrap.cpp
@@ -3117,14 +3117,14 @@ namespace Swig {
 #define SWIGTYPE_p_FTDistribution2DGate swig_types[17]
 #define SWIGTYPE_p_FTDistribution2DGauss swig_types[18]
 #define SWIGTYPE_p_FTDistribution2DVoigt swig_types[19]
-#define SWIGTYPE_p_FormFactorBox swig_types[20]
-#define SWIGTYPE_p_FormFactorCantellatedCube swig_types[21]
-#define SWIGTYPE_p_FormFactorCone swig_types[22]
-#define SWIGTYPE_p_FormFactorCone6 swig_types[23]
-#define SWIGTYPE_p_FormFactorCosineRippleBox swig_types[24]
-#define SWIGTYPE_p_FormFactorCosineRippleGauss swig_types[25]
-#define SWIGTYPE_p_FormFactorCosineRippleLorentz swig_types[26]
-#define SWIGTYPE_p_FormFactorCuboctahedron swig_types[27]
+#define SWIGTYPE_p_FormFactorBipyramid4 swig_types[20]
+#define SWIGTYPE_p_FormFactorBox swig_types[21]
+#define SWIGTYPE_p_FormFactorCantellatedCube swig_types[22]
+#define SWIGTYPE_p_FormFactorCone swig_types[23]
+#define SWIGTYPE_p_FormFactorCone6 swig_types[24]
+#define SWIGTYPE_p_FormFactorCosineRippleBox swig_types[25]
+#define SWIGTYPE_p_FormFactorCosineRippleGauss swig_types[26]
+#define SWIGTYPE_p_FormFactorCosineRippleLorentz swig_types[27]
 #define SWIGTYPE_p_FormFactorCylinder swig_types[28]
 #define SWIGTYPE_p_FormFactorDodecahedron swig_types[29]
 #define SWIGTYPE_p_FormFactorEllipsoidalCylinder swig_types[30]
@@ -56045,30 +56045,30 @@ SWIGINTERN PyObject *FormFactorCosineRippleLorentz_swiginit(PyObject *SWIGUNUSED
   return SWIG_Python_InitShadowInstance(args);
 }
 
-SWIGINTERN PyObject *_wrap_new_FormFactorCuboctahedron__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_new_FormFactorBipyramid4__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   std::vector< double,std::allocator< double > > arg1 ;
-  FormFactorCuboctahedron *result = 0 ;
+  FormFactorBipyramid4 *result = 0 ;
   
   if ((nobjs < 1) || (nobjs > 1)) SWIG_fail;
   {
     std::vector< double,std::allocator< double > > *ptr = (std::vector< double,std::allocator< double > > *)0;
     int res = swig::asptr(swig_obj[0], &ptr);
     if (!SWIG_IsOK(res) || !ptr) {
-      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_FormFactorCuboctahedron" "', argument " "1"" of type '" "std::vector< double,std::allocator< double > >""'"); 
+      SWIG_exception_fail(SWIG_ArgError((ptr ? res : SWIG_TypeError)), "in method '" "new_FormFactorBipyramid4" "', argument " "1"" of type '" "std::vector< double,std::allocator< double > >""'"); 
     }
     arg1 = *ptr;
     if (SWIG_IsNewObj(res)) delete ptr;
   }
-  result = (FormFactorCuboctahedron *)new FormFactorCuboctahedron(arg1);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorCuboctahedron, SWIG_POINTER_NEW |  0 );
+  result = (FormFactorBipyramid4 *)new FormFactorBipyramid4(arg1);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorBipyramid4, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_new_FormFactorCuboctahedron__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_new_FormFactorBipyramid4__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
   PyObject *resultobj = 0;
   double arg1 ;
   double arg2 ;
@@ -56082,51 +56082,51 @@ SWIGINTERN PyObject *_wrap_new_FormFactorCuboctahedron__SWIG_1(PyObject *SWIGUNU
   int ecode3 = 0 ;
   double val4 ;
   int ecode4 = 0 ;
-  FormFactorCuboctahedron *result = 0 ;
+  FormFactorBipyramid4 *result = 0 ;
   
   if ((nobjs < 4) || (nobjs > 4)) SWIG_fail;
   ecode1 = SWIG_AsVal_double(swig_obj[0], &val1);
   if (!SWIG_IsOK(ecode1)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_FormFactorCuboctahedron" "', argument " "1"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_FormFactorBipyramid4" "', argument " "1"" of type '" "double""'");
   } 
   arg1 = static_cast< double >(val1);
   ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
   if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_FormFactorCuboctahedron" "', argument " "2"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "new_FormFactorBipyramid4" "', argument " "2"" of type '" "double""'");
   } 
   arg2 = static_cast< double >(val2);
   ecode3 = SWIG_AsVal_double(swig_obj[2], &val3);
   if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_FormFactorCuboctahedron" "', argument " "3"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "new_FormFactorBipyramid4" "', argument " "3"" of type '" "double""'");
   } 
   arg3 = static_cast< double >(val3);
   ecode4 = SWIG_AsVal_double(swig_obj[3], &val4);
   if (!SWIG_IsOK(ecode4)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_FormFactorCuboctahedron" "', argument " "4"" of type '" "double""'");
+    SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "new_FormFactorBipyramid4" "', argument " "4"" of type '" "double""'");
   } 
   arg4 = static_cast< double >(val4);
-  result = (FormFactorCuboctahedron *)new FormFactorCuboctahedron(arg1,arg2,arg3,arg4);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorCuboctahedron, SWIG_POINTER_NEW |  0 );
+  result = (FormFactorBipyramid4 *)new FormFactorBipyramid4(arg1,arg2,arg3,arg4);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorBipyramid4, SWIG_POINTER_NEW |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_new_FormFactorCuboctahedron(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_new_FormFactorBipyramid4(PyObject *self, PyObject *args) {
   Py_ssize_t argc;
   PyObject *argv[5] = {
     0
   };
   
-  if (!(argc = SWIG_Python_UnpackTuple(args, "new_FormFactorCuboctahedron", 0, 4, argv))) SWIG_fail;
+  if (!(argc = SWIG_Python_UnpackTuple(args, "new_FormFactorBipyramid4", 0, 4, argv))) SWIG_fail;
   --argc;
   if (argc == 1) {
     int _v;
     int res = swig::asptr(argv[0], (std::vector< double,std::allocator< double > >**)(0));
     _v = SWIG_CheckState(res);
     if (_v) {
-      return _wrap_new_FormFactorCuboctahedron__SWIG_0(self, argc, argv);
+      return _wrap_new_FormFactorBipyramid4__SWIG_0(self, argc, argv);
     }
   }
   if (argc == 4) {
@@ -56151,7 +56151,7 @@ SWIGINTERN PyObject *_wrap_new_FormFactorCuboctahedron(PyObject *self, PyObject
             _v = SWIG_CheckState(res);
           }
           if (_v) {
-            return _wrap_new_FormFactorCuboctahedron__SWIG_1(self, argc, argv);
+            return _wrap_new_FormFactorBipyramid4__SWIG_1(self, argc, argv);
           }
         }
       }
@@ -56159,40 +56159,40 @@ SWIGINTERN PyObject *_wrap_new_FormFactorCuboctahedron(PyObject *self, PyObject
   }
   
 fail:
-  SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_FormFactorCuboctahedron'.\n"
+  SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'new_FormFactorBipyramid4'.\n"
     "  Possible C/C++ prototypes are:\n"
-    "    FormFactorCuboctahedron::FormFactorCuboctahedron(std::vector< double,std::allocator< double > >)\n"
-    "    FormFactorCuboctahedron::FormFactorCuboctahedron(double,double,double,double)\n");
+    "    FormFactorBipyramid4::FormFactorBipyramid4(std::vector< double,std::allocator< double > >)\n"
+    "    FormFactorBipyramid4::FormFactorBipyramid4(double,double,double,double)\n");
   return 0;
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorCuboctahedron_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorBipyramid4_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorCuboctahedron *arg1 = (FormFactorCuboctahedron *) 0 ;
+  FormFactorBipyramid4 *arg1 = (FormFactorBipyramid4 *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
-  FormFactorCuboctahedron *result = 0 ;
+  FormFactorBipyramid4 *result = 0 ;
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorCuboctahedron, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorBipyramid4, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorCuboctahedron_clone" "', argument " "1"" of type '" "FormFactorCuboctahedron const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorBipyramid4_clone" "', argument " "1"" of type '" "FormFactorBipyramid4 const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorCuboctahedron * >(argp1);
-  result = (FormFactorCuboctahedron *)((FormFactorCuboctahedron const *)arg1)->clone();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorCuboctahedron, 0 |  0 );
+  arg1 = reinterpret_cast< FormFactorBipyramid4 * >(argp1);
+  result = (FormFactorBipyramid4 *)((FormFactorBipyramid4 const *)arg1)->clone();
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FormFactorBipyramid4, 0 |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorCuboctahedron_className(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorBipyramid4_className(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorCuboctahedron *arg1 = (FormFactorCuboctahedron *) 0 ;
+  FormFactorBipyramid4 *arg1 = (FormFactorBipyramid4 *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
@@ -56200,12 +56200,12 @@ SWIGINTERN PyObject *_wrap_FormFactorCuboctahedron_className(PyObject *SWIGUNUSE
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorCuboctahedron, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorBipyramid4, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorCuboctahedron_className" "', argument " "1"" of type '" "FormFactorCuboctahedron const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorBipyramid4_className" "', argument " "1"" of type '" "FormFactorBipyramid4 const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorCuboctahedron * >(argp1);
-  result = ((FormFactorCuboctahedron const *)arg1)->className();
+  arg1 = reinterpret_cast< FormFactorBipyramid4 * >(argp1);
+  result = ((FormFactorBipyramid4 const *)arg1)->className();
   resultobj = SWIG_From_std_string(static_cast< std::string >(result));
   return resultobj;
 fail:
@@ -56213,9 +56213,9 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorCuboctahedron_parDefs(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorBipyramid4_parDefs(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorCuboctahedron *arg1 = (FormFactorCuboctahedron *) 0 ;
+  FormFactorBipyramid4 *arg1 = (FormFactorBipyramid4 *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
@@ -56223,12 +56223,12 @@ SWIGINTERN PyObject *_wrap_FormFactorCuboctahedron_parDefs(PyObject *SWIGUNUSEDP
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorCuboctahedron, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorBipyramid4, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorCuboctahedron_parDefs" "', argument " "1"" of type '" "FormFactorCuboctahedron const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorBipyramid4_parDefs" "', argument " "1"" of type '" "FormFactorBipyramid4 const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorCuboctahedron * >(argp1);
-  result = ((FormFactorCuboctahedron const *)arg1)->parDefs();
+  arg1 = reinterpret_cast< FormFactorBipyramid4 * >(argp1);
+  result = ((FormFactorBipyramid4 const *)arg1)->parDefs();
   resultobj = SWIG_NewPointerObj((new std::vector< ParaMeta,std::allocator< ParaMeta > >(static_cast< const std::vector< ParaMeta,std::allocator< ParaMeta > >& >(result))), SWIGTYPE_p_std__vectorT_ParaMeta_std__allocatorT_ParaMeta_t_t, SWIG_POINTER_OWN |  0 );
   return resultobj;
 fail:
@@ -56236,9 +56236,9 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorCuboctahedron_length(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorBipyramid4_length(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorCuboctahedron *arg1 = (FormFactorCuboctahedron *) 0 ;
+  FormFactorBipyramid4 *arg1 = (FormFactorBipyramid4 *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
@@ -56246,12 +56246,12 @@ SWIGINTERN PyObject *_wrap_FormFactorCuboctahedron_length(PyObject *SWIGUNUSEDPA
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorCuboctahedron, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorBipyramid4, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorCuboctahedron_length" "', argument " "1"" of type '" "FormFactorCuboctahedron const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorBipyramid4_length" "', argument " "1"" of type '" "FormFactorBipyramid4 const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorCuboctahedron * >(argp1);
-  result = (double)((FormFactorCuboctahedron const *)arg1)->length();
+  arg1 = reinterpret_cast< FormFactorBipyramid4 * >(argp1);
+  result = (double)((FormFactorBipyramid4 const *)arg1)->length();
   resultobj = SWIG_From_double(static_cast< double >(result));
   return resultobj;
 fail:
@@ -56259,9 +56259,9 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorCuboctahedron_height(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorBipyramid4_height(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorCuboctahedron *arg1 = (FormFactorCuboctahedron *) 0 ;
+  FormFactorBipyramid4 *arg1 = (FormFactorBipyramid4 *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
@@ -56269,12 +56269,12 @@ SWIGINTERN PyObject *_wrap_FormFactorCuboctahedron_height(PyObject *SWIGUNUSEDPA
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorCuboctahedron, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorBipyramid4, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorCuboctahedron_height" "', argument " "1"" of type '" "FormFactorCuboctahedron const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorBipyramid4_height" "', argument " "1"" of type '" "FormFactorBipyramid4 const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorCuboctahedron * >(argp1);
-  result = (double)((FormFactorCuboctahedron const *)arg1)->height();
+  arg1 = reinterpret_cast< FormFactorBipyramid4 * >(argp1);
+  result = (double)((FormFactorBipyramid4 const *)arg1)->height();
   resultobj = SWIG_From_double(static_cast< double >(result));
   return resultobj;
 fail:
@@ -56282,9 +56282,9 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorCuboctahedron_heightRatio(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorBipyramid4_heightRatio(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorCuboctahedron *arg1 = (FormFactorCuboctahedron *) 0 ;
+  FormFactorBipyramid4 *arg1 = (FormFactorBipyramid4 *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
@@ -56292,12 +56292,12 @@ SWIGINTERN PyObject *_wrap_FormFactorCuboctahedron_heightRatio(PyObject *SWIGUNU
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorCuboctahedron, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorBipyramid4, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorCuboctahedron_heightRatio" "', argument " "1"" of type '" "FormFactorCuboctahedron const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorBipyramid4_heightRatio" "', argument " "1"" of type '" "FormFactorBipyramid4 const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorCuboctahedron * >(argp1);
-  result = (double)((FormFactorCuboctahedron const *)arg1)->heightRatio();
+  arg1 = reinterpret_cast< FormFactorBipyramid4 * >(argp1);
+  result = (double)((FormFactorBipyramid4 const *)arg1)->heightRatio();
   resultobj = SWIG_From_double(static_cast< double >(result));
   return resultobj;
 fail:
@@ -56305,9 +56305,9 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_FormFactorCuboctahedron_alpha(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_FormFactorBipyramid4_alpha(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorCuboctahedron *arg1 = (FormFactorCuboctahedron *) 0 ;
+  FormFactorBipyramid4 *arg1 = (FormFactorBipyramid4 *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
@@ -56315,12 +56315,12 @@ SWIGINTERN PyObject *_wrap_FormFactorCuboctahedron_alpha(PyObject *SWIGUNUSEDPAR
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorCuboctahedron, 0 |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorBipyramid4, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorCuboctahedron_alpha" "', argument " "1"" of type '" "FormFactorCuboctahedron const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorBipyramid4_alpha" "', argument " "1"" of type '" "FormFactorBipyramid4 const *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorCuboctahedron * >(argp1);
-  result = (double)((FormFactorCuboctahedron const *)arg1)->alpha();
+  arg1 = reinterpret_cast< FormFactorBipyramid4 * >(argp1);
+  result = (double)((FormFactorBipyramid4 const *)arg1)->alpha();
   resultobj = SWIG_From_double(static_cast< double >(result));
   return resultobj;
 fail:
@@ -56328,20 +56328,20 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_delete_FormFactorCuboctahedron(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_delete_FormFactorBipyramid4(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
-  FormFactorCuboctahedron *arg1 = (FormFactorCuboctahedron *) 0 ;
+  FormFactorBipyramid4 *arg1 = (FormFactorBipyramid4 *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
   PyObject *swig_obj[1] ;
   
   if (!args) SWIG_fail;
   swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorCuboctahedron, SWIG_POINTER_DISOWN |  0 );
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FormFactorBipyramid4, SWIG_POINTER_DISOWN |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_FormFactorCuboctahedron" "', argument " "1"" of type '" "FormFactorCuboctahedron *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_FormFactorBipyramid4" "', argument " "1"" of type '" "FormFactorBipyramid4 *""'"); 
   }
-  arg1 = reinterpret_cast< FormFactorCuboctahedron * >(argp1);
+  arg1 = reinterpret_cast< FormFactorBipyramid4 * >(argp1);
   delete arg1;
   resultobj = SWIG_Py_Void();
   return resultobj;
@@ -56350,14 +56350,14 @@ fail:
 }
 
 
-SWIGINTERN PyObject *FormFactorCuboctahedron_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *FormFactorBipyramid4_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
   if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorCuboctahedron, SWIG_NewClientData(obj));
+  SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorBipyramid4, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
 
-SWIGINTERN PyObject *FormFactorCuboctahedron_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *FormFactorBipyramid4_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   return SWIG_Python_InitShadowInstance(args);
 }
 
@@ -69906,52 +69906,52 @@ static PyMethodDef SwigMethods[] = {
 	 { "delete_FormFactorCosineRippleLorentz", _wrap_delete_FormFactorCosineRippleLorentz, METH_O, "delete_FormFactorCosineRippleLorentz(FormFactorCosineRippleLorentz self)"},
 	 { "FormFactorCosineRippleLorentz_swigregister", FormFactorCosineRippleLorentz_swigregister, METH_O, NULL},
 	 { "FormFactorCosineRippleLorentz_swiginit", FormFactorCosineRippleLorentz_swiginit, METH_VARARGS, NULL},
-	 { "new_FormFactorCuboctahedron", _wrap_new_FormFactorCuboctahedron, METH_VARARGS, "\n"
-		"FormFactorCuboctahedron(vdouble1d_t P)\n"
-		"new_FormFactorCuboctahedron(double length, double height, double height_ratio, double alpha) -> FormFactorCuboctahedron\n"
-		"FormFactorCuboctahedron::FormFactorCuboctahedron(double length, double height, double height_ratio, double alpha)\n"
+	 { "new_FormFactorBipyramid4", _wrap_new_FormFactorBipyramid4, METH_VARARGS, "\n"
+		"FormFactorBipyramid4(vdouble1d_t P)\n"
+		"new_FormFactorBipyramid4(double length, double height, double height_ratio, double alpha) -> FormFactorBipyramid4\n"
+		"FormFactorBipyramid4::FormFactorBipyramid4(double length, double height, double height_ratio, double alpha)\n"
 		"\n"
 		""},
-	 { "FormFactorCuboctahedron_clone", _wrap_FormFactorCuboctahedron_clone, METH_O, "\n"
-		"FormFactorCuboctahedron_clone(FormFactorCuboctahedron self) -> FormFactorCuboctahedron\n"
-		"FormFactorCuboctahedron* FormFactorCuboctahedron::clone() const override\n"
+	 { "FormFactorBipyramid4_clone", _wrap_FormFactorBipyramid4_clone, METH_O, "\n"
+		"FormFactorBipyramid4_clone(FormFactorBipyramid4 self) -> FormFactorBipyramid4\n"
+		"FormFactorBipyramid4* FormFactorBipyramid4::clone() const override\n"
 		"\n"
 		"Returns a clone of this  ISampleNode object. \n"
 		"\n"
 		""},
-	 { "FormFactorCuboctahedron_className", _wrap_FormFactorCuboctahedron_className, METH_O, "\n"
-		"FormFactorCuboctahedron_className(FormFactorCuboctahedron self) -> std::string\n"
-		"std::string FormFactorCuboctahedron::className() const final\n"
+	 { "FormFactorBipyramid4_className", _wrap_FormFactorBipyramid4_className, METH_O, "\n"
+		"FormFactorBipyramid4_className(FormFactorBipyramid4 self) -> std::string\n"
+		"std::string FormFactorBipyramid4::className() const final\n"
 		"\n"
 		""},
-	 { "FormFactorCuboctahedron_parDefs", _wrap_FormFactorCuboctahedron_parDefs, METH_O, "\n"
-		"FormFactorCuboctahedron_parDefs(FormFactorCuboctahedron self) -> std::vector< ParaMeta,std::allocator< ParaMeta > >\n"
-		"std::vector<ParaMeta> FormFactorCuboctahedron::parDefs() const final\n"
+	 { "FormFactorBipyramid4_parDefs", _wrap_FormFactorBipyramid4_parDefs, METH_O, "\n"
+		"FormFactorBipyramid4_parDefs(FormFactorBipyramid4 self) -> std::vector< ParaMeta,std::allocator< ParaMeta > >\n"
+		"std::vector<ParaMeta> FormFactorBipyramid4::parDefs() const final\n"
 		"\n"
 		""},
-	 { "FormFactorCuboctahedron_length", _wrap_FormFactorCuboctahedron_length, METH_O, "\n"
-		"FormFactorCuboctahedron_length(FormFactorCuboctahedron self) -> double\n"
-		"double FormFactorCuboctahedron::length() const\n"
+	 { "FormFactorBipyramid4_length", _wrap_FormFactorBipyramid4_length, METH_O, "\n"
+		"FormFactorBipyramid4_length(FormFactorBipyramid4 self) -> double\n"
+		"double FormFactorBipyramid4::length() const\n"
 		"\n"
 		""},
-	 { "FormFactorCuboctahedron_height", _wrap_FormFactorCuboctahedron_height, METH_O, "\n"
-		"FormFactorCuboctahedron_height(FormFactorCuboctahedron self) -> double\n"
-		"double FormFactorCuboctahedron::height() const\n"
+	 { "FormFactorBipyramid4_height", _wrap_FormFactorBipyramid4_height, METH_O, "\n"
+		"FormFactorBipyramid4_height(FormFactorBipyramid4 self) -> double\n"
+		"double FormFactorBipyramid4::height() const\n"
 		"\n"
 		""},
-	 { "FormFactorCuboctahedron_heightRatio", _wrap_FormFactorCuboctahedron_heightRatio, METH_O, "\n"
-		"FormFactorCuboctahedron_heightRatio(FormFactorCuboctahedron self) -> double\n"
-		"double FormFactorCuboctahedron::heightRatio() const\n"
+	 { "FormFactorBipyramid4_heightRatio", _wrap_FormFactorBipyramid4_heightRatio, METH_O, "\n"
+		"FormFactorBipyramid4_heightRatio(FormFactorBipyramid4 self) -> double\n"
+		"double FormFactorBipyramid4::heightRatio() const\n"
 		"\n"
 		""},
-	 { "FormFactorCuboctahedron_alpha", _wrap_FormFactorCuboctahedron_alpha, METH_O, "\n"
-		"FormFactorCuboctahedron_alpha(FormFactorCuboctahedron self) -> double\n"
-		"double FormFactorCuboctahedron::alpha() const\n"
+	 { "FormFactorBipyramid4_alpha", _wrap_FormFactorBipyramid4_alpha, METH_O, "\n"
+		"FormFactorBipyramid4_alpha(FormFactorBipyramid4 self) -> double\n"
+		"double FormFactorBipyramid4::alpha() const\n"
 		"\n"
 		""},
-	 { "delete_FormFactorCuboctahedron", _wrap_delete_FormFactorCuboctahedron, METH_O, "delete_FormFactorCuboctahedron(FormFactorCuboctahedron self)"},
-	 { "FormFactorCuboctahedron_swigregister", FormFactorCuboctahedron_swigregister, METH_O, NULL},
-	 { "FormFactorCuboctahedron_swiginit", FormFactorCuboctahedron_swiginit, METH_VARARGS, NULL},
+	 { "delete_FormFactorBipyramid4", _wrap_delete_FormFactorBipyramid4, METH_O, "delete_FormFactorBipyramid4(FormFactorBipyramid4 self)"},
+	 { "FormFactorBipyramid4_swigregister", FormFactorBipyramid4_swigregister, METH_O, NULL},
+	 { "FormFactorBipyramid4_swiginit", FormFactorBipyramid4_swiginit, METH_VARARGS, NULL},
 	 { "new_FormFactorCylinder", _wrap_new_FormFactorCylinder, METH_VARARGS, "\n"
 		"FormFactorCylinder(vdouble1d_t P)\n"
 		"new_FormFactorCylinder(double radius, double height) -> FormFactorCylinder\n"
@@ -71403,9 +71403,6 @@ static void *_p_IdentityRotationTo_p_IRotation(void *x, int *SWIGUNUSEDPARM(newm
 static void *_p_RotationXTo_p_IRotation(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IRotation *)  ((RotationX *) x));
 }
-static void *_p_FormFactorCuboctahedronTo_p_IFormFactorPolyhedron(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IFormFactorPolyhedron *)  ((FormFactorCuboctahedron *) x));
-}
 static void *_p_FormFactorDodecahedronTo_p_IFormFactorPolyhedron(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorPolyhedron *)  ((FormFactorDodecahedron *) x));
 }
@@ -71433,6 +71430,9 @@ static void *_p_FormFactorPyramid2To_p_IFormFactorPolyhedron(void *x, int *SWIGU
 static void *_p_FormFactorPyramid3To_p_IFormFactorPolyhedron(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorPolyhedron *)  ((FormFactorPyramid3 *) x));
 }
+static void *_p_FormFactorBipyramid4To_p_IFormFactorPolyhedron(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IFormFactorPolyhedron *)  ((FormFactorBipyramid4 *) x));
+}
 static void *_p_FormFactorPyramid4To_p_IFormFactorPolyhedron(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IFormFactorPolyhedron *)  ((FormFactorPyramid4 *) x));
 }
@@ -71535,9 +71535,6 @@ static void *_p_FormFactorIcosahedronTo_p_ISampleNode(void *x, int *SWIGUNUSEDPA
 static void *_p_FormFactorDodecahedronTo_p_ISampleNode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISampleNode *) (IBornFF *)(IFormFactorPolyhedron *) ((FormFactorDodecahedron *) x));
 }
-static void *_p_FormFactorCuboctahedronTo_p_ISampleNode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ISampleNode *) (IBornFF *)(IFormFactorPolyhedron *) ((FormFactorCuboctahedron *) x));
-}
 static void *_p_IFormFactorPolyhedronTo_p_ISampleNode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISampleNode *) (IBornFF *) ((IFormFactorPolyhedron *) x));
 }
@@ -71592,6 +71589,9 @@ static void *_p_FormFactorSawtoothRippleLorentzTo_p_ISampleNode(void *x, int *SW
 static void *_p_ParticleLayoutTo_p_ISampleNode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISampleNode *)  ((ParticleLayout *) x));
 }
+static void *_p_FormFactorBipyramid4To_p_ISampleNode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ISampleNode *) (IBornFF *)(IFormFactorPolyhedron *) ((FormFactorBipyramid4 *) x));
+}
 static void *_p_FormFactorPyramid4To_p_ISampleNode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISampleNode *) (IBornFF *)(IFormFactorPolyhedron *) ((FormFactorPyramid4 *) x));
 }
@@ -71730,9 +71730,6 @@ static void *_p_IPeakShapeTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory
 static void *_p_FormFactorPrism3To_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISampleNode *)(IBornFF *)(IFormFactorPrism *) ((FormFactorPrism3 *) x));
 }
-static void *_p_FormFactorCuboctahedronTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ICloneable *) (ISampleNode *)(IBornFF *)(IFormFactorPolyhedron *) ((FormFactorCuboctahedron *) x));
-}
 static void *_p_IFormFactorPolyhedronTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISampleNode *)(IBornFF *) ((IFormFactorPolyhedron *) x));
 }
@@ -71811,6 +71808,9 @@ static void *_p_FormFactorPyramid3To_p_ICloneable(void *x, int *SWIGUNUSEDPARM(n
 static void *_p_FormFactorTruncatedSpheroidTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (ISampleNode *)(IBornFF *) ((FormFactorTruncatedSpheroid *) x));
 }
+static void *_p_FormFactorBipyramid4To_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *) (ISampleNode *)(IBornFF *)(IFormFactorPolyhedron *) ((FormFactorBipyramid4 *) x));
+}
 static void *_p_FTDecayFunction2DGaussTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (IFTDecayFunction2D *) ((FTDecayFunction2DGauss *) x));
 }
@@ -72078,9 +72078,6 @@ static void *_p_IPeakShapeTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
 static void *_p_FormFactorPrism3To_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISampleNode *)(IBornFF *)(IFormFactorPrism *) ((FormFactorPrism3 *) x));
 }
-static void *_p_FormFactorCuboctahedronTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((INode *) (ISampleNode *)(IBornFF *)(IFormFactorPolyhedron *) ((FormFactorCuboctahedron *) x));
-}
 static void *_p_IFormFactorPolyhedronTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISampleNode *)(IBornFF *) ((IFormFactorPolyhedron *) x));
 }
@@ -72159,6 +72156,9 @@ static void *_p_FormFactorPyramid3To_p_INode(void *x, int *SWIGUNUSEDPARM(newmem
 static void *_p_FormFactorTruncatedSpheroidTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (ISampleNode *)(IBornFF *) ((FormFactorTruncatedSpheroid *) x));
 }
+static void *_p_FormFactorBipyramid4To_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((INode *) (ISampleNode *)(IBornFF *)(IFormFactorPolyhedron *) ((FormFactorBipyramid4 *) x));
+}
 static void *_p_FTDecayFunction2DGaussTo_p_INode(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((INode *) (IFTDecayFunction2D *) ((FTDecayFunction2DGauss *) x));
 }
@@ -72405,9 +72405,6 @@ static void *_p_FormFactorDodecahedronTo_p_IBornFF(void *x, int *SWIGUNUSEDPARM(
 static void *_p_IFormFactorPolyhedronTo_p_IBornFF(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IBornFF *)  ((IFormFactorPolyhedron *) x));
 }
-static void *_p_FormFactorCuboctahedronTo_p_IBornFF(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((IBornFF *) (IFormFactorPolyhedron *) ((FormFactorCuboctahedron *) x));
-}
 static void *_p_FormFactorConeTo_p_IBornFF(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IBornFF *)  ((FormFactorCone *) x));
 }
@@ -72450,6 +72447,9 @@ static void *_p_FormFactorPyramid3To_p_IBornFF(void *x, int *SWIGUNUSEDPARM(newm
 static void *_p_FormFactorPyramid4To_p_IBornFF(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IBornFF *) (IFormFactorPolyhedron *) ((FormFactorPyramid4 *) x));
 }
+static void *_p_FormFactorBipyramid4To_p_IBornFF(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((IBornFF *) (IFormFactorPolyhedron *) ((FormFactorBipyramid4 *) x));
+}
 static void *_p_FormFactorSawtoothRippleBoxTo_p_IBornFF(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((IBornFF *) (IProfileRipple *)(ISawtoothRipple *) ((FormFactorSawtoothRippleBox *) x));
 }
@@ -72533,6 +72533,7 @@ static swig_type_info _swigt__p_FTDistribution2DCone = {"_p_FTDistribution2DCone
 static swig_type_info _swigt__p_FTDistribution2DGate = {"_p_FTDistribution2DGate", "FTDistribution2DGate *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FTDistribution2DGauss = {"_p_FTDistribution2DGauss", "FTDistribution2DGauss *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FTDistribution2DVoigt = {"_p_FTDistribution2DVoigt", "FTDistribution2DVoigt *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_FormFactorBipyramid4 = {"_p_FormFactorBipyramid4", "FormFactorBipyramid4 *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorBox = {"_p_FormFactorBox", "FormFactorBox *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorCantellatedCube = {"_p_FormFactorCantellatedCube", "FormFactorCantellatedCube *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorCone = {"_p_FormFactorCone", "FormFactorCone *", 0, 0, (void*)0, 0};
@@ -72540,7 +72541,6 @@ static swig_type_info _swigt__p_FormFactorCone6 = {"_p_FormFactorCone6", "FormFa
 static swig_type_info _swigt__p_FormFactorCosineRippleBox = {"_p_FormFactorCosineRippleBox", "FormFactorCosineRippleBox *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorCosineRippleGauss = {"_p_FormFactorCosineRippleGauss", "FormFactorCosineRippleGauss *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorCosineRippleLorentz = {"_p_FormFactorCosineRippleLorentz", "FormFactorCosineRippleLorentz *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_FormFactorCuboctahedron = {"_p_FormFactorCuboctahedron", "FormFactorCuboctahedron *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorCylinder = {"_p_FormFactorCylinder", "FormFactorCylinder *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorDodecahedron = {"_p_FormFactorDodecahedron", "FormFactorDodecahedron *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_FormFactorEllipsoidalCylinder = {"_p_FormFactorEllipsoidalCylinder", "FormFactorEllipsoidalCylinder *", 0, 0, (void*)0, 0};
@@ -72709,6 +72709,7 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_FTDistribution2DGate,
   &_swigt__p_FTDistribution2DGauss,
   &_swigt__p_FTDistribution2DVoigt,
+  &_swigt__p_FormFactorBipyramid4,
   &_swigt__p_FormFactorBox,
   &_swigt__p_FormFactorCantellatedCube,
   &_swigt__p_FormFactorCone,
@@ -72716,7 +72717,6 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_FormFactorCosineRippleBox,
   &_swigt__p_FormFactorCosineRippleGauss,
   &_swigt__p_FormFactorCosineRippleLorentz,
-  &_swigt__p_FormFactorCuboctahedron,
   &_swigt__p_FormFactorCylinder,
   &_swigt__p_FormFactorDodecahedron,
   &_swigt__p_FormFactorEllipsoidalCylinder,
@@ -72885,6 +72885,7 @@ static swig_cast_info _swigc__p_FTDistribution2DCone[] = {  {&_swigt__p_FTDistri
 static swig_cast_info _swigc__p_FTDistribution2DGate[] = {  {&_swigt__p_FTDistribution2DGate, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FTDistribution2DGauss[] = {  {&_swigt__p_FTDistribution2DGauss, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FTDistribution2DVoigt[] = {  {&_swigt__p_FTDistribution2DVoigt, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_FormFactorBipyramid4[] = {  {&_swigt__p_FormFactorBipyramid4, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorBox[] = {  {&_swigt__p_FormFactorBox, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorCantellatedCube[] = {  {&_swigt__p_FormFactorCantellatedCube, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorCone[] = {  {&_swigt__p_FormFactorCone, 0, 0, 0},{0, 0, 0, 0}};
@@ -72892,7 +72893,6 @@ static swig_cast_info _swigc__p_FormFactorCone6[] = {  {&_swigt__p_FormFactorCon
 static swig_cast_info _swigc__p_FormFactorCosineRippleBox[] = {  {&_swigt__p_FormFactorCosineRippleBox, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorCosineRippleGauss[] = {  {&_swigt__p_FormFactorCosineRippleGauss, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorCosineRippleLorentz[] = {  {&_swigt__p_FormFactorCosineRippleLorentz, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_FormFactorCuboctahedron[] = {  {&_swigt__p_FormFactorCuboctahedron, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorCylinder[] = {  {&_swigt__p_FormFactorCylinder, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorDodecahedron[] = {  {&_swigt__p_FormFactorDodecahedron, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_FormFactorEllipsoidalCylinder[] = {  {&_swigt__p_FormFactorEllipsoidalCylinder, 0, 0, 0},{0, 0, 0, 0}};
@@ -72921,23 +72921,23 @@ static swig_cast_info _swigc__p_FormFactorTruncatedSphere[] = {  {&_swigt__p_For
 static swig_cast_info _swigc__p_FormFactorTruncatedSpheroid[] = {  {&_swigt__p_FormFactorTruncatedSpheroid, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_GaussFisherPeakShape[] = {  {&_swigt__p_GaussFisherPeakShape, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_HexagonalLattice2D[] = {  {&_swigt__p_HexagonalLattice2D, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_IBornFF[] = {  {&_swigt__p_IBornFF, 0, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IBornFF, 0, 0},  {&_swigt__p_IProfileRipple, _p_IProfileRippleTo_p_IBornFF, 0, 0},  {&_swigt__p_ICosineRipple, _p_ICosineRippleTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorCosineRippleGauss, _p_FormFactorCosineRippleGaussTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleGauss, _p_FormFactorSawtoothRippleGaussTo_p_IBornFF, 0, 0},  {&_swigt__p_IFormFactorPrism, _p_IFormFactorPrismTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorCantellatedCube, _p_FormFactorCantellatedCubeTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorPlatonicTetrahedron, _p_FormFactorPlatonicTetrahedronTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorPlatonicOctahedron, _p_FormFactorPlatonicOctahedronTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_IBornFF, 0, 0},  {&_swigt__p_IFormFactorPolyhedron, _p_IFormFactorPolyhedronTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorGaussSphere, _p_FormFactorGaussSphereTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorHollowSphere, _p_FormFactorHollowSphereTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorPyramid2, _p_FormFactorPyramid2To_p_IBornFF, 0, 0},  {&_swigt__p_IProfileRectangularRipple, _p_IProfileRectangularRippleTo_p_IBornFF, 0, 0},  {&_swigt__p_ISawtoothRipple, _p_ISawtoothRippleTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorCosineRippleLorentz, _p_FormFactorCosineRippleLorentzTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleLorentz, _p_FormFactorSawtoothRippleLorentzTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorPyramid3, _p_FormFactorPyramid3To_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorPyramid4, _p_FormFactorPyramid4To_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleBox, _p_FormFactorSawtoothRippleBoxTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorCosineRippleBox, _p_FormFactorCosineRippleBoxTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IBornFF, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_ICloneable[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_ICloneable, 0, 0},  {&_swigt__p_IBornFF, _p_IBornFFTo_p_ICloneable, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_MisesGaussPeakShape, _p_MisesGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_MisesFisherGaussPeakShape, _p_MisesFisherGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPlatonicTetrahedron, _p_FormFactorPlatonicTetrahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPlatonicOctahedron, _p_FormFactorPlatonicOctahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactorPolyhedron, _p_IFormFactorPolyhedronTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactorPrism, _p_IFormFactorPrismTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ICloneable, 0, 0},  {&_swigt__p_IProfileRectangularRipple, _p_IProfileRectangularRippleTo_p_ICloneable, 0, 0},  {&_swigt__p_ISawtoothRipple, _p_ISawtoothRippleTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceHardDisk, _p_InterferenceHardDiskTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_ICloneable, 0, 0},  {&_swigt__p_IInterference, _p_IInterferenceTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPyramid2, _p_FormFactorPyramid2To_p_ICloneable, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_ICloneable, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPyramid3, _p_FormFactorPyramid3To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPyramid4, _p_FormFactorPyramid4To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCantellatedCube, _p_FormFactorCantellatedCubeTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceTwin, _p_InterferenceTwinTo_p_ICloneable, 0, 0},  {&_swigt__p_HexagonalLattice2D, _p_HexagonalLattice2DTo_p_ICloneable, 0, 0},  {&_swigt__p_SquareLattice2D, _p_SquareLattice2DTo_p_ICloneable, 0, 0},  {&_swigt__p_BasicLattice2D, _p_BasicLattice2DTo_p_ICloneable, 0, 0},  {&_swigt__p_Lattice2D, _p_Lattice2DTo_p_ICloneable, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_ICloneable, 0, 0},  {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleBox, _p_FormFactorSawtoothRippleBoxTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCosineRippleBox, _p_FormFactorCosineRippleBoxTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_ICloneable, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleGauss, _p_FormFactorSawtoothRippleGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCosineRippleGauss, _p_FormFactorCosineRippleGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_ISampleNode, _p_ISampleNodeTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_ICloneable, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceRadialParaCrystal, _p_InterferenceRadialParaCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_Interference2DParaCrystal, _p_Interference2DParaCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_IProfileRipple, _p_IProfileRippleTo_p_ICloneable, 0, 0},  {&_swigt__p_ICosineRipple, _p_ICosineRippleTo_p_ICloneable, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorHollowSphere, _p_FormFactorHollowSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorGaussSphere, _p_FormFactorGaussSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_ICloneable, 0, 0},  {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceNone, _p_InterferenceNoneTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCosineRippleLorentz, _p_FormFactorCosineRippleLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleLorentz, _p_FormFactorSawtoothRippleLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFinite3DLattice, _p_InterferenceFinite3DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFinite2DLattice, _p_InterferenceFinite2DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_Interference3DLattice, _p_Interference3DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_Interference2DSuperLattice, _p_Interference2DSuperLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_Interference2DLattice, _p_Interference2DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_Interference1DLattice, _p_Interference1DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_ICloneable, 0, 0},  {&_swigt__p_ICloneable, 0, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_ICloneable, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_IBornFF[] = {  {&_swigt__p_IBornFF, 0, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IBornFF, 0, 0},  {&_swigt__p_IProfileRipple, _p_IProfileRippleTo_p_IBornFF, 0, 0},  {&_swigt__p_ICosineRipple, _p_ICosineRippleTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorCosineRippleGauss, _p_FormFactorCosineRippleGaussTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleGauss, _p_FormFactorSawtoothRippleGaussTo_p_IBornFF, 0, 0},  {&_swigt__p_IFormFactorPrism, _p_IFormFactorPrismTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorCantellatedCube, _p_FormFactorCantellatedCubeTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorPlatonicTetrahedron, _p_FormFactorPlatonicTetrahedronTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorPlatonicOctahedron, _p_FormFactorPlatonicOctahedronTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_IBornFF, 0, 0},  {&_swigt__p_IFormFactorPolyhedron, _p_IFormFactorPolyhedronTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorGaussSphere, _p_FormFactorGaussSphereTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorHollowSphere, _p_FormFactorHollowSphereTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorPyramid2, _p_FormFactorPyramid2To_p_IBornFF, 0, 0},  {&_swigt__p_IProfileRectangularRipple, _p_IProfileRectangularRippleTo_p_IBornFF, 0, 0},  {&_swigt__p_ISawtoothRipple, _p_ISawtoothRippleTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorCosineRippleLorentz, _p_FormFactorCosineRippleLorentzTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleLorentz, _p_FormFactorSawtoothRippleLorentzTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorPyramid3, _p_FormFactorPyramid3To_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorBipyramid4, _p_FormFactorBipyramid4To_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorPyramid4, _p_FormFactorPyramid4To_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleBox, _p_FormFactorSawtoothRippleBoxTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorCosineRippleBox, _p_FormFactorCosineRippleBoxTo_p_IBornFF, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IBornFF, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_ICloneable[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_ICloneable, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_ICloneable, 0, 0},  {&_swigt__p_IBornFF, _p_IBornFFTo_p_ICloneable, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_MisesGaussPeakShape, _p_MisesGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_MisesFisherGaussPeakShape, _p_MisesFisherGaussPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPlatonicTetrahedron, _p_FormFactorPlatonicTetrahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPlatonicOctahedron, _p_FormFactorPlatonicOctahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactorPolyhedron, _p_IFormFactorPolyhedronTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactorPrism, _p_IFormFactorPrismTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ICloneable, 0, 0},  {&_swigt__p_IProfileRectangularRipple, _p_IProfileRectangularRippleTo_p_ICloneable, 0, 0},  {&_swigt__p_ISawtoothRipple, _p_ISawtoothRippleTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceHardDisk, _p_InterferenceHardDiskTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_ICloneable, 0, 0},  {&_swigt__p_IInterference, _p_IInterferenceTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPyramid2, _p_FormFactorPyramid2To_p_ICloneable, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_ICloneable, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPyramid3, _p_FormFactorPyramid3To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorPyramid4, _p_FormFactorPyramid4To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorBipyramid4, _p_FormFactorBipyramid4To_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCantellatedCube, _p_FormFactorCantellatedCubeTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceTwin, _p_InterferenceTwinTo_p_ICloneable, 0, 0},  {&_swigt__p_HexagonalLattice2D, _p_HexagonalLattice2DTo_p_ICloneable, 0, 0},  {&_swigt__p_SquareLattice2D, _p_SquareLattice2DTo_p_ICloneable, 0, 0},  {&_swigt__p_BasicLattice2D, _p_BasicLattice2DTo_p_ICloneable, 0, 0},  {&_swigt__p_Lattice2D, _p_Lattice2DTo_p_ICloneable, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_ICloneable, 0, 0},  {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_ICloneable, 0, 0},  {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleBox, _p_FormFactorSawtoothRippleBoxTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCosineRippleBox, _p_FormFactorCosineRippleBoxTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_ICloneable, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_ICloneable, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleGauss, _p_FormFactorSawtoothRippleGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCosineRippleGauss, _p_FormFactorCosineRippleGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_ISampleNode, _p_ISampleNodeTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_ICloneable, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceRadialParaCrystal, _p_InterferenceRadialParaCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_Interference2DParaCrystal, _p_Interference2DParaCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_IProfileRipple, _p_IProfileRippleTo_p_ICloneable, 0, 0},  {&_swigt__p_ICosineRipple, _p_ICosineRippleTo_p_ICloneable, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorHollowSphere, _p_FormFactorHollowSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorGaussSphere, _p_FormFactorGaussSphereTo_p_ICloneable, 0, 0},  {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_ICloneable, 0, 0},  {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceNone, _p_InterferenceNoneTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorCosineRippleLorentz, _p_FormFactorCosineRippleLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleLorentz, _p_FormFactorSawtoothRippleLorentzTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFinite3DLattice, _p_InterferenceFinite3DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_InterferenceFinite2DLattice, _p_InterferenceFinite2DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_Interference3DLattice, _p_Interference3DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_Interference2DSuperLattice, _p_Interference2DSuperLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_Interference2DLattice, _p_Interference2DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_Interference1DLattice, _p_Interference1DLatticeTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_ICloneable, 0, 0},  {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_ICloneable, 0, 0},  {&_swigt__p_ICloneable, 0, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_ICloneable, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ICosineRipple[] = {  {&_swigt__p_FormFactorCosineRippleLorentz, _p_FormFactorCosineRippleLorentzTo_p_ICosineRipple, 0, 0},  {&_swigt__p_FormFactorCosineRippleBox, _p_FormFactorCosineRippleBoxTo_p_ICosineRipple, 0, 0},  {&_swigt__p_ICosineRipple, 0, 0, 0},  {&_swigt__p_FormFactorCosineRippleGauss, _p_FormFactorCosineRippleGaussTo_p_ICosineRipple, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IFTDecayFunction1D[] = {  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_IFTDecayFunction1D, 0, 0},  {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_p_IFTDecayFunction1D, 0, 0},  {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_IFTDecayFunction1D, 0, 0},  {&_swigt__p_IFTDecayFunction1D, 0, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_IFTDecayFunction1D, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IFTDecayFunction2D[] = {  {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_IFTDecayFunction2D, 0, 0},  {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_IFTDecayFunction2D, 0, 0},  {&_swigt__p_IFTDecayFunction2D, 0, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_IFTDecayFunction2D, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IFTDistribution1D[] = {  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_IFTDistribution1D, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_IFTDistribution1D, 0, 0},  {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_IFTDistribution1D, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_IFTDistribution1D, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_IFTDistribution1D, 0, 0},  {&_swigt__p_IFTDistribution1D, 0, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_IFTDistribution1D, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IFTDistribution2D[] = {  {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_IFTDistribution2D, 0, 0},  {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_IFTDistribution2D, 0, 0},  {&_swigt__p_IFTDistribution2D, 0, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_IFTDistribution2D, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_IFTDistribution2D, 0, 0},  {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_IFTDistribution2D, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_IFormFactorPolyhedron[] = {  {&_swigt__p_IFormFactorPolyhedron, 0, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IFormFactorPolyhedron, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_IFormFactorPolyhedron, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_IFormFactorPolyhedron, 0, 0},  {&_swigt__p_FormFactorPlatonicOctahedron, _p_FormFactorPlatonicOctahedronTo_p_IFormFactorPolyhedron, 0, 0},  {&_swigt__p_FormFactorPlatonicTetrahedron, _p_FormFactorPlatonicTetrahedronTo_p_IFormFactorPolyhedron, 0, 0},  {&_swigt__p_FormFactorCantellatedCube, _p_FormFactorCantellatedCubeTo_p_IFormFactorPolyhedron, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IFormFactorPolyhedron, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IFormFactorPolyhedron, 0, 0},  {&_swigt__p_FormFactorPyramid2, _p_FormFactorPyramid2To_p_IFormFactorPolyhedron, 0, 0},  {&_swigt__p_FormFactorPyramid3, _p_FormFactorPyramid3To_p_IFormFactorPolyhedron, 0, 0},  {&_swigt__p_FormFactorPyramid4, _p_FormFactorPyramid4To_p_IFormFactorPolyhedron, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_IFormFactorPolyhedron[] = {  {&_swigt__p_IFormFactorPolyhedron, 0, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_IFormFactorPolyhedron, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_IFormFactorPolyhedron, 0, 0},  {&_swigt__p_FormFactorPlatonicOctahedron, _p_FormFactorPlatonicOctahedronTo_p_IFormFactorPolyhedron, 0, 0},  {&_swigt__p_FormFactorPlatonicTetrahedron, _p_FormFactorPlatonicTetrahedronTo_p_IFormFactorPolyhedron, 0, 0},  {&_swigt__p_FormFactorCantellatedCube, _p_FormFactorCantellatedCubeTo_p_IFormFactorPolyhedron, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IFormFactorPolyhedron, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IFormFactorPolyhedron, 0, 0},  {&_swigt__p_FormFactorPyramid2, _p_FormFactorPyramid2To_p_IFormFactorPolyhedron, 0, 0},  {&_swigt__p_FormFactorPyramid3, _p_FormFactorPyramid3To_p_IFormFactorPolyhedron, 0, 0},  {&_swigt__p_FormFactorBipyramid4, _p_FormFactorBipyramid4To_p_IFormFactorPolyhedron, 0, 0},  {&_swigt__p_FormFactorPyramid4, _p_FormFactorPyramid4To_p_IFormFactorPolyhedron, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IFormFactorPrism[] = {  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IFormFactorPrism, 0, 0},  {&_swigt__p_IFormFactorPrism, 0, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IFormFactorPrism, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_IFormFactorPrism, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IInterference[] = {  {&_swigt__p_InterferenceHardDisk, _p_InterferenceHardDiskTo_p_IInterference, 0, 0},  {&_swigt__p_Interference1DLattice, _p_Interference1DLatticeTo_p_IInterference, 0, 0},  {&_swigt__p_Interference2DLattice, _p_Interference2DLatticeTo_p_IInterference, 0, 0},  {&_swigt__p_Interference2DSuperLattice, _p_Interference2DSuperLatticeTo_p_IInterference, 0, 0},  {&_swigt__p_Interference3DLattice, _p_Interference3DLatticeTo_p_IInterference, 0, 0},  {&_swigt__p_InterferenceFinite2DLattice, _p_InterferenceFinite2DLatticeTo_p_IInterference, 0, 0},  {&_swigt__p_InterferenceFinite3DLattice, _p_InterferenceFinite3DLatticeTo_p_IInterference, 0, 0},  {&_swigt__p_InterferenceTwin, _p_InterferenceTwinTo_p_IInterference, 0, 0},  {&_swigt__p_IInterference, 0, 0, 0},  {&_swigt__p_Interference2DParaCrystal, _p_Interference2DParaCrystalTo_p_IInterference, 0, 0},  {&_swigt__p_InterferenceRadialParaCrystal, _p_InterferenceRadialParaCrystalTo_p_IInterference, 0, 0},  {&_swigt__p_InterferenceNone, _p_InterferenceNoneTo_p_IInterference, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_INode[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_INode, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_INode, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_INode, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_INode, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_INode, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_INode, 0, 0},  {&_swigt__p_INode, 0, 0, 0},  {&_swigt__p_IBornFF, _p_IBornFFTo_p_INode, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_MisesGaussPeakShape, _p_MisesGaussPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_MisesFisherGaussPeakShape, _p_MisesFisherGaussPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_INode, 0, 0},  {&_swigt__p_FormFactorPlatonicTetrahedron, _p_FormFactorPlatonicTetrahedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPlatonicOctahedron, _p_FormFactorPlatonicOctahedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_INode, 0, 0},  {&_swigt__p_IFormFactorPolyhedron, _p_IFormFactorPolyhedronTo_p_INode, 0, 0},  {&_swigt__p_IFormFactorPrism, _p_IFormFactorPrismTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_INode, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_INode, 0, 0},  {&_swigt__p_IProfileRectangularRipple, _p_IProfileRectangularRippleTo_p_INode, 0, 0},  {&_swigt__p_ISawtoothRipple, _p_ISawtoothRippleTo_p_INode, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_INode, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_INode, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_INode, 0, 0},  {&_swigt__p_InterferenceHardDisk, _p_InterferenceHardDiskTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_INode, 0, 0},  {&_swigt__p_IInterference, _p_IInterferenceTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPyramid2, _p_FormFactorPyramid2To_p_INode, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_INode, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPyramid3, _p_FormFactorPyramid3To_p_INode, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_INode, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_INode, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPyramid4, _p_FormFactorPyramid4To_p_INode, 0, 0},  {&_swigt__p_FormFactorCantellatedCube, _p_FormFactorCantellatedCubeTo_p_INode, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_INode, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_INode, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_INode, 0, 0},  {&_swigt__p_InterferenceTwin, _p_InterferenceTwinTo_p_INode, 0, 0},  {&_swigt__p_HexagonalLattice2D, _p_HexagonalLattice2DTo_p_INode, 0, 0},  {&_swigt__p_SquareLattice2D, _p_SquareLattice2DTo_p_INode, 0, 0},  {&_swigt__p_BasicLattice2D, _p_BasicLattice2DTo_p_INode, 0, 0},  {&_swigt__p_Lattice2D, _p_Lattice2DTo_p_INode, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_INode, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_INode, 0, 0},  {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_INode, 0, 0},  {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_INode, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleBox, _p_FormFactorSawtoothRippleBoxTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCosineRippleBox, _p_FormFactorCosineRippleBoxTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_INode, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_INode, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_INode, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_INode, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleGauss, _p_FormFactorSawtoothRippleGaussTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCosineRippleGauss, _p_FormFactorCosineRippleGaussTo_p_INode, 0, 0},  {&_swigt__p_ISampleNode, _p_ISampleNodeTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_INode, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_INode, 0, 0},  {&_swigt__p_InterferenceRadialParaCrystal, _p_InterferenceRadialParaCrystalTo_p_INode, 0, 0},  {&_swigt__p_Interference2DParaCrystal, _p_Interference2DParaCrystalTo_p_INode, 0, 0},  {&_swigt__p_IProfileRipple, _p_IProfileRippleTo_p_INode, 0, 0},  {&_swigt__p_ICosineRipple, _p_ICosineRippleTo_p_INode, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_INode, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_INode, 0, 0},  {&_swigt__p_Lattice3D, _p_Lattice3DTo_p_INode, 0, 0},  {&_swigt__p_FormFactorHollowSphere, _p_FormFactorHollowSphereTo_p_INode, 0, 0},  {&_swigt__p_FormFactorGaussSphere, _p_FormFactorGaussSphereTo_p_INode, 0, 0},  {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_INode, 0, 0},  {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_INode, 0, 0},  {&_swigt__p_InterferenceNone, _p_InterferenceNoneTo_p_INode, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCosineRippleLorentz, _p_FormFactorCosineRippleLorentzTo_p_INode, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleLorentz, _p_FormFactorSawtoothRippleLorentzTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFinite3DLattice, _p_InterferenceFinite3DLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFinite2DLattice, _p_InterferenceFinite2DLatticeTo_p_INode, 0, 0},  {&_swigt__p_Interference3DLattice, _p_Interference3DLatticeTo_p_INode, 0, 0},  {&_swigt__p_Interference2DSuperLattice, _p_Interference2DSuperLatticeTo_p_INode, 0, 0},  {&_swigt__p_Interference2DLattice, _p_Interference2DLatticeTo_p_INode, 0, 0},  {&_swigt__p_Interference1DLattice, _p_Interference1DLatticeTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_INode, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_INode, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_INode[] = {  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_INode, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_INode, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_INode, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_INode, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_INode, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_INode, 0, 0},  {&_swigt__p_INode, 0, 0, 0},  {&_swigt__p_IBornFF, _p_IBornFFTo_p_INode, 0, 0},  {&_swigt__p_IPeakShape, _p_IPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_MisesGaussPeakShape, _p_MisesGaussPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_MisesFisherGaussPeakShape, _p_MisesFisherGaussPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_INode, 0, 0},  {&_swigt__p_FormFactorPlatonicTetrahedron, _p_FormFactorPlatonicTetrahedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPlatonicOctahedron, _p_FormFactorPlatonicOctahedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_INode, 0, 0},  {&_swigt__p_IFormFactorPolyhedron, _p_IFormFactorPolyhedronTo_p_INode, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_INode, 0, 0},  {&_swigt__p_IFormFactorPrism, _p_IFormFactorPrismTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_INode, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_INode, 0, 0},  {&_swigt__p_IProfileRectangularRipple, _p_IProfileRectangularRippleTo_p_INode, 0, 0},  {&_swigt__p_ISawtoothRipple, _p_ISawtoothRippleTo_p_INode, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_INode, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_INode, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_INode, 0, 0},  {&_swigt__p_InterferenceHardDisk, _p_InterferenceHardDiskTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_INode, 0, 0},  {&_swigt__p_IInterference, _p_IInterferenceTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPyramid2, _p_FormFactorPyramid2To_p_INode, 0, 0},  {&_swigt__p_IRotation, _p_IRotationTo_p_INode, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPyramid3, _p_FormFactorPyramid3To_p_INode, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_INode, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_INode, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_INode, 0, 0},  {&_swigt__p_FormFactorPyramid4, _p_FormFactorPyramid4To_p_INode, 0, 0},  {&_swigt__p_FormFactorBipyramid4, _p_FormFactorBipyramid4To_p_INode, 0, 0},  {&_swigt__p_FormFactorCantellatedCube, _p_FormFactorCantellatedCubeTo_p_INode, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_INode, 0, 0},  {&_swigt__p_RotationY, _p_RotationYTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_INode, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_INode, 0, 0},  {&_swigt__p_InterferenceTwin, _p_InterferenceTwinTo_p_INode, 0, 0},  {&_swigt__p_HexagonalLattice2D, _p_HexagonalLattice2DTo_p_INode, 0, 0},  {&_swigt__p_SquareLattice2D, _p_SquareLattice2DTo_p_INode, 0, 0},  {&_swigt__p_BasicLattice2D, _p_BasicLattice2DTo_p_INode, 0, 0},  {&_swigt__p_Lattice2D, _p_Lattice2DTo_p_INode, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_INode, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_INode, 0, 0},  {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_INode, 0, 0},  {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_INode, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleBox, _p_FormFactorSawtoothRippleBoxTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCosineRippleBox, _p_FormFactorCosineRippleBoxTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_INode, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_INode, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_INode, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_INode, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleGauss, _p_FormFactorSawtoothRippleGaussTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCosineRippleGauss, _p_FormFactorCosineRippleGaussTo_p_INode, 0, 0},  {&_swigt__p_ISampleNode, _p_ISampleNodeTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_INode, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_INode, 0, 0},  {&_swigt__p_InterferenceRadialParaCrystal, _p_InterferenceRadialParaCrystalTo_p_INode, 0, 0},  {&_swigt__p_Interference2DParaCrystal, _p_Interference2DParaCrystalTo_p_INode, 0, 0},  {&_swigt__p_IProfileRipple, _p_IProfileRippleTo_p_INode, 0, 0},  {&_swigt__p_ICosineRipple, _p_ICosineRippleTo_p_INode, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_INode, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_INode, 0, 0},  {&_swigt__p_Lattice3D, _p_Lattice3DTo_p_INode, 0, 0},  {&_swigt__p_FormFactorHollowSphere, _p_FormFactorHollowSphereTo_p_INode, 0, 0},  {&_swigt__p_FormFactorGaussSphere, _p_FormFactorGaussSphereTo_p_INode, 0, 0},  {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_INode, 0, 0},  {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_INode, 0, 0},  {&_swigt__p_InterferenceNone, _p_InterferenceNoneTo_p_INode, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_INode, 0, 0},  {&_swigt__p_FormFactorCosineRippleLorentz, _p_FormFactorCosineRippleLorentzTo_p_INode, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleLorentz, _p_FormFactorSawtoothRippleLorentzTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFinite3DLattice, _p_InterferenceFinite3DLatticeTo_p_INode, 0, 0},  {&_swigt__p_InterferenceFinite2DLattice, _p_InterferenceFinite2DLatticeTo_p_INode, 0, 0},  {&_swigt__p_Interference3DLattice, _p_Interference3DLatticeTo_p_INode, 0, 0},  {&_swigt__p_Interference2DSuperLattice, _p_Interference2DSuperLatticeTo_p_INode, 0, 0},  {&_swigt__p_Interference2DLattice, _p_Interference2DLatticeTo_p_INode, 0, 0},  {&_swigt__p_Interference1DLattice, _p_Interference1DLatticeTo_p_INode, 0, 0},  {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_INode, 0, 0},  {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_INode, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_INode, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IParticle[] = {  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_IParticle, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_IParticle, 0, 0},  {&_swigt__p_IParticle, 0, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_IParticle, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_IParticle, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IPeakShape[] = {  {&_swigt__p_IPeakShape, 0, 0, 0},  {&_swigt__p_IsotropicGaussPeakShape, _p_IsotropicGaussPeakShapeTo_p_IPeakShape, 0, 0},  {&_swigt__p_IsotropicLorentzPeakShape, _p_IsotropicLorentzPeakShapeTo_p_IPeakShape, 0, 0},  {&_swigt__p_GaussFisherPeakShape, _p_GaussFisherPeakShapeTo_p_IPeakShape, 0, 0},  {&_swigt__p_LorentzFisherPeakShape, _p_LorentzFisherPeakShapeTo_p_IPeakShape, 0, 0},  {&_swigt__p_MisesFisherGaussPeakShape, _p_MisesFisherGaussPeakShapeTo_p_IPeakShape, 0, 0},  {&_swigt__p_MisesGaussPeakShape, _p_MisesGaussPeakShapeTo_p_IPeakShape, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IProfileRectangularRipple[] = {  {&_swigt__p_IProfileRectangularRipple, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IProfileRipple[] = {  {&_swigt__p_FormFactorCosineRippleLorentz, _p_FormFactorCosineRippleLorentzTo_p_IProfileRipple, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleLorentz, _p_FormFactorSawtoothRippleLorentzTo_p_IProfileRipple, 0, 0},  {&_swigt__p_IProfileRectangularRipple, _p_IProfileRectangularRippleTo_p_IProfileRipple, 0, 0},  {&_swigt__p_ISawtoothRipple, _p_ISawtoothRippleTo_p_IProfileRipple, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleBox, _p_FormFactorSawtoothRippleBoxTo_p_IProfileRipple, 0, 0},  {&_swigt__p_FormFactorCosineRippleBox, _p_FormFactorCosineRippleBoxTo_p_IProfileRipple, 0, 0},  {&_swigt__p_IProfileRipple, 0, 0, 0},  {&_swigt__p_ICosineRipple, _p_ICosineRippleTo_p_IProfileRipple, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleGauss, _p_FormFactorSawtoothRippleGaussTo_p_IProfileRipple, 0, 0},  {&_swigt__p_FormFactorCosineRippleGauss, _p_FormFactorCosineRippleGaussTo_p_IProfileRipple, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IRotation[] = {  {&_swigt__p_RotationY, _p_RotationYTo_p_IRotation, 0, 0},  {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_IRotation, 0, 0},  {&_swigt__p_RotationZ, _p_RotationZTo_p_IRotation, 0, 0},  {&_swigt__p_IRotation, 0, 0, 0},  {&_swigt__p_IdentityRotation, _p_IdentityRotationTo_p_IRotation, 0, 0},  {&_swigt__p_RotationX, _p_RotationXTo_p_IRotation, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_ISampleNode[] = {  {&_swigt__p_IBornFF, _p_IBornFFTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_ISampleNode, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_ISampleNode, 0, 0},  {&_swigt__p_ICosineRipple, _p_ICosineRippleTo_p_ISampleNode, 0, 0},  {&_swigt__p_IProfileRipple, _p_IProfileRippleTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorCosineRippleGauss, _p_FormFactorCosineRippleGaussTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleGauss, _p_FormFactorSawtoothRippleGaussTo_p_ISampleNode, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ISampleNode, 0, 0},  {&_swigt__p_IFormFactorPrism, _p_IFormFactorPrismTo_p_ISampleNode, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ISampleNode, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorCantellatedCube, _p_FormFactorCantellatedCubeTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_ISampleNode, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ISampleNode, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_ISampleNode, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_ISampleNode, 0, 0},  {&_swigt__p_ISampleNode, 0, 0, 0},  {&_swigt__p_FormFactorPlatonicTetrahedron, _p_FormFactorPlatonicTetrahedronTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorPlatonicOctahedron, _p_FormFactorPlatonicOctahedronTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_ISampleNode, 0, 0},  {&_swigt__p_IFormFactorPolyhedron, _p_IFormFactorPolyhedronTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorGaussSphere, _p_FormFactorGaussSphereTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorHollowSphere, _p_FormFactorHollowSphereTo_p_ISampleNode, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorPyramid2, _p_FormFactorPyramid2To_p_ISampleNode, 0, 0},  {&_swigt__p_IProfileRectangularRipple, _p_IProfileRectangularRippleTo_p_ISampleNode, 0, 0},  {&_swigt__p_ISawtoothRipple, _p_ISawtoothRippleTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorCosineRippleLorentz, _p_FormFactorCosineRippleLorentzTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleLorentz, _p_FormFactorSawtoothRippleLorentzTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorPyramid3, _p_FormFactorPyramid3To_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorPyramid4, _p_FormFactorPyramid4To_p_ISampleNode, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleBox, _p_FormFactorSawtoothRippleBoxTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorCosineRippleBox, _p_FormFactorCosineRippleBoxTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_ISampleNode, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ISampleNode, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_ISampleNode[] = {  {&_swigt__p_IBornFF, _p_IBornFFTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_ISampleNode, 0, 0},  {&_swigt__p_Layer, _p_LayerTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_ISampleNode, 0, 0},  {&_swigt__p_ICosineRipple, _p_ICosineRippleTo_p_ISampleNode, 0, 0},  {&_swigt__p_IProfileRipple, _p_IProfileRippleTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorCosineRippleGauss, _p_FormFactorCosineRippleGaussTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleGauss, _p_FormFactorSawtoothRippleGaussTo_p_ISampleNode, 0, 0},  {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ISampleNode, 0, 0},  {&_swigt__p_IFormFactorPrism, _p_IFormFactorPrismTo_p_ISampleNode, 0, 0},  {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ISampleNode, 0, 0},  {&_swigt__p_Crystal, _p_CrystalTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorCantellatedCube, _p_FormFactorCantellatedCubeTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_ISampleNode, 0, 0},  {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ISampleNode, 0, 0},  {&_swigt__p_Particle, _p_ParticleTo_p_ISampleNode, 0, 0},  {&_swigt__p_IParticle, _p_IParticleTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_ISampleNode, 0, 0},  {&_swigt__p_ISampleNode, 0, 0, 0},  {&_swigt__p_FormFactorPlatonicTetrahedron, _p_FormFactorPlatonicTetrahedronTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorPlatonicOctahedron, _p_FormFactorPlatonicOctahedronTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_ISampleNode, 0, 0},  {&_swigt__p_IFormFactorPolyhedron, _p_IFormFactorPolyhedronTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorGaussSphere, _p_FormFactorGaussSphereTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorHollowSphere, _p_FormFactorHollowSphereTo_p_ISampleNode, 0, 0},  {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorPyramid2, _p_FormFactorPyramid2To_p_ISampleNode, 0, 0},  {&_swigt__p_IProfileRectangularRipple, _p_IProfileRectangularRippleTo_p_ISampleNode, 0, 0},  {&_swigt__p_ISawtoothRipple, _p_ISawtoothRippleTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorCosineRippleLorentz, _p_FormFactorCosineRippleLorentzTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleLorentz, _p_FormFactorSawtoothRippleLorentzTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorPyramid3, _p_FormFactorPyramid3To_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorBipyramid4, _p_FormFactorBipyramid4To_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorPyramid4, _p_FormFactorPyramid4To_p_ISampleNode, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleBox, _p_FormFactorSawtoothRippleBoxTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorCosineRippleBox, _p_FormFactorCosineRippleBoxTo_p_ISampleNode, 0, 0},  {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_ISampleNode, 0, 0},  {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ISampleNode, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ISawtoothRipple[] = {  {&_swigt__p_FormFactorSawtoothRippleLorentz, _p_FormFactorSawtoothRippleLorentzTo_p_ISawtoothRipple, 0, 0},  {&_swigt__p_ISawtoothRipple, 0, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleBox, _p_FormFactorSawtoothRippleBoxTo_p_ISawtoothRipple, 0, 0},  {&_swigt__p_FormFactorSawtoothRippleGauss, _p_FormFactorSawtoothRippleGaussTo_p_ISawtoothRipple, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ISelectionRule[] = {  {&_swigt__p_ISelectionRule, 0, 0, 0},  {&_swigt__p_SimpleSelectionRule, _p_SimpleSelectionRuleTo_p_ISelectionRule, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IdentityRotation[] = {  {&_swigt__p_IdentityRotation, 0, 0, 0},{0, 0, 0, 0}};
@@ -73061,6 +73061,7 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_FTDistribution2DGate,
   _swigc__p_FTDistribution2DGauss,
   _swigc__p_FTDistribution2DVoigt,
+  _swigc__p_FormFactorBipyramid4,
   _swigc__p_FormFactorBox,
   _swigc__p_FormFactorCantellatedCube,
   _swigc__p_FormFactorCone,
@@ -73068,7 +73069,6 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_FormFactorCosineRippleBox,
   _swigc__p_FormFactorCosineRippleGauss,
   _swigc__p_FormFactorCosineRippleLorentz,
-  _swigc__p_FormFactorCuboctahedron,
   _swigc__p_FormFactorCylinder,
   _swigc__p_FormFactorDodecahedron,
   _swigc__p_FormFactorEllipsoidalCylinder,