public void PythonTraverseFeatures_for_markers(Feature swFeat, long nLevel, ref string asciitext, int nbody, MathTransform swCompTotalTrasf)
{
CultureInfo bz = new CultureInfo("en-BZ");
int nmarker = 0;
String bodyname = "body_" + nbody;
while ((swFeat != null))
{
// asciitext += "# feature: " + swFeat.Name + " [" + swFeat.GetTypeName2() + "]" + "\n";
// Export markers, if any (as coordinate systems)
if (swFeat.GetTypeName2() == "CoordSys")
{
nmarker++;
CoordinateSystemFeatureData swCoordSys = (CoordinateSystemFeatureData)swFeat.GetDefinition();
MathTransform tr = swCoordSys.Transform;
MathTransform tr_part = swCompTotalTrasf;
MathTransform tr_abs = tr.IMultiply(tr_part); // row-ordered transf. -> reverse mult.order!
double[] quat = GetQuaternionFromMatrix(ref tr_abs);
double[] amatr = (double[])tr_abs.ArrayData;
String markername = "marker_" + nbody + "_" + nmarker;
asciitext += "\n# Auxiliary marker (coordinate system feature)\n";
asciitext += String.Format(bz, "{0} =chrono.ChMarker()\n", markername);
asciitext += String.Format(bz, "{0}.SetName('{1}')" + "\n", markername, swFeat.Name);
asciitext += String.Format(bz, "{0}.AddMarker({1})\n", bodyname, markername);
asciitext += String.Format(bz, "{0}.Impose_Abs_Coord(chrono.ChCoordsysD(chrono.ChVectorD({1},{2},{3}),chrono.ChQuaternionD({4},{5},{6},{7})))\n",
markername,
amatr[9]*ChScale.L,
amatr[10]*ChScale.L,
amatr[11]*ChScale.L,
quat[0], quat[1], quat[2], quat[3]);
}
swFeat = (Feature)swFeat.GetNextFeature();
}
}