ChronoEngine_SwAddin.SWTaskpaneHost.PythonTraverseFeatures_for_markers C# (CSharp) Method

PythonTraverseFeatures_for_markers() public method

public PythonTraverseFeatures_for_markers ( Feature swFeat, long nLevel, string &asciitext, int nbody, MathTransform swCompTotalTrasf ) : void
swFeat Feature
nLevel long
asciitext string
nbody int
swCompTotalTrasf MathTransform
return void
        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();
            }
        }