Monday, June 23, 2025

Trying to add reconstructions of wav files with new samples mirroring and sinusoidal reconstructions

 

                                    //////public static double PUBLIC_STATIC_DOUBLE_MAX_ABS_AMPLITUDES_FOUND_10000_TIMES_FOUND_IN_CRESTS = -600000000;

                                    //////public static double PUBLIC_STATIC_DOUBLE_MAX_ABS_AMPLITUDES_FOUND_10000_TIMES_FOUND_IN_TROUGHS = -600000000;

                                    //////public static double PUBLIC_STATIC_DOUBLE_MAX_ABS_AMPLITUDES_FOUND_10000_TIMES_FOUNDOVERALL_IN_CRESTS_AND_TROUGHS = -600000000;

 

                                    CrestTroughAnalyzer___SANJOY_NATHS_QHENOMENOLOGY_REASONING_SYSTEMS_DISMANTLES_ANY_WAVES_TO_CREST_AABB_TRANSPARENT_RECTANGLES_TROUGH_AABB_TRANSPARENT_RECTANGLES_AND_STACK_THESE_TRANSPARENT_AABB_RECTANGLES_ONE_ABOVE_ANOTHER_GETS_VERTICAL_STRIPS_OF_CG_TRACINGS_ON_TRACING_PAPER_STACKS_BITMAPS_DXF_CSV_REPORTS

                                    .PUBLIC_STATIC_DOUBLE_MIN_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS

                                                            =

                                                            Math.Min

                                                            (

                                                            CrestTroughAnalyzer___SANJOY_NATHS_QHENOMENOLOGY_REASONING_SYSTEMS_DISMANTLES_ANY_WAVES_TO_CREST_AABB_TRANSPARENT_RECTANGLES_TROUGH_AABB_TRANSPARENT_RECTANGLES_AND_STACK_THESE_TRANSPARENT_AABB_RECTANGLES_ONE_ABOVE_ANOTHER_GETS_VERTICAL_STRIPS_OF_CG_TRACINGS_ON_TRACING_PAPER_STACKS_BITMAPS_DXF_CSV_REPORTS

                                                            .PUBLIC_STATIC_DOUBLE_MIN_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS

                                                            ,

                                                            (double) maxWidth

 

                                                            );

 

                                    CrestTroughAnalyzer___SANJOY_NATHS_QHENOMENOLOGY_REASONING_SYSTEMS_DISMANTLES_ANY_WAVES_TO_CREST_AABB_TRANSPARENT_RECTANGLES_TROUGH_AABB_TRANSPARENT_RECTANGLES_AND_STACK_THESE_TRANSPARENT_AABB_RECTANGLES_ONE_ABOVE_ANOTHER_GETS_VERTICAL_STRIPS_OF_CG_TRACINGS_ON_TRACING_PAPER_STACKS_BITMAPS_DXF_CSV_REPORTS

                                    .PUBLIC_STATIC_DOUBLE_MAX_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS

                                                        =

                                                        Math.Max

                                                        (

                                                        CrestTroughAnalyzer___SANJOY_NATHS_QHENOMENOLOGY_REASONING_SYSTEMS_DISMANTLES_ANY_WAVES_TO_CREST_AABB_TRANSPARENT_RECTANGLES_TROUGH_AABB_TRANSPARENT_RECTANGLES_AND_STACK_THESE_TRANSPARENT_AABB_RECTANGLES_ONE_ABOVE_ANOTHER_GETS_VERTICAL_STRIPS_OF_CG_TRACINGS_ON_TRACING_PAPER_STACKS_BITMAPS_DXF_CSV_REPORTS

                                                        .PUBLIC_STATIC_DOUBLE_MAX_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS

                                                        ,

                                                        (double)maxWidth

 

                                                        );

 

                                    ///////////////////////////////////////////////////////////////////////////////////////////////////////

 

 

 

 

                                    CrestTroughAnalyzer___SANJOY_NATHS_QHENOMENOLOGY_REASONING_SYSTEMS_DISMANTLES_ANY_WAVES_TO_CREST_AABB_TRANSPARENT_RECTANGLES_TROUGH_AABB_TRANSPARENT_RECTANGLES_AND_STACK_THESE_TRANSPARENT_AABB_RECTANGLES_ONE_ABOVE_ANOTHER_GETS_VERTICAL_STRIPS_OF_CG_TRACINGS_ON_TRACING_PAPER_STACKS_BITMAPS_DXF_CSV_REPORTS

                                    .PUBLIC_STATIC_DOUBLE_MAX_ABS_AMPLITUDES_FOUND_10000_TIMES_FOUNDOVERALL_IN_CRESTS_AND_TROUGHS

                                                        =

                                                        Math.Max

                                                        (

                                                        CrestTroughAnalyzer___SANJOY_NATHS_QHENOMENOLOGY_REASONING_SYSTEMS_DISMANTLES_ANY_WAVES_TO_CREST_AABB_TRANSPARENT_RECTANGLES_TROUGH_AABB_TRANSPARENT_RECTANGLES_AND_STACK_THESE_TRANSPARENT_AABB_RECTANGLES_ONE_ABOVE_ANOTHER_GETS_VERTICAL_STRIPS_OF_CG_TRACINGS_ON_TRACING_PAPER_STACKS_BITMAPS_DXF_CSV_REPORTS

                                                        .PUBLIC_STATIC_DOUBLE_MAX_ABS_AMPLITUDES_FOUND_10000_TIMES_FOUNDOVERALL_IN_CRESTS_AND_TROUGHS

                                                        ,

                                                        (double)maxHeight

 

                                                        );

 

 

 

 

                                    ///////////////////////////////////////////////////////////////////////////////////////////////////////

 

 

rgead the running code thoroughly thoroughly thoroughly and describe the theory and analyse the novelty of the theory comparing with citations and other searches F:\sanjoy_workouts\dnlds\SANJOY NATHS QHENOMENOLOGY AABB WAVE THEROY.txt

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

To meet your exact specification, here's a new C# function that takes a List<CRESTTROUGHObject> (after stacking and normalized DXF processing), sorts them based on the scaled X coordinate of the center of gravity (CG), ranks them, and then generates one WAV file per rank. Each WAV contains amplitudes only for the AABB region of that rank — all other samples are zero.

csharp

CopyEdit

 

 

 

 

 

 

public static void GenerateRankedSpectralWavFiles(

    List<CRESTTROUGHObject> allCrestTroughObjects,

    int totalSamples,

    int sampleRate,

    string outputFolder)

{

    // Sort by scaled CG_X to identify vertical spectral alignment

    var rankedGroups = allCrestTroughObjects

        .GroupBy(obj => Math.Round(obj.Scaled_CG_X, 6)) // group by X of CG

        .OrderBy(g => g.Key)

        .Select((group, rankIndex) => new { Rank = rankIndex + 1, Objects = group.ToList() })

        .ToList();

 

    foreach (var group in rankedGroups)

    {

        short[] outputSamples = new short[totalSamples];

 

        foreach (var obj in group.Objects)

        {

            for (int i = obj.StartSampleIndex; i <= obj.EndSampleIndex; i++)

            {

                // Clip to avoid overflow

                if (i >= 0 && i < totalSamples)

                {

                    outputSamples[i] = obj.SavedAmplitudes[i - obj.StartSampleIndex];

                }

            }

        }

 

        string outPath = Path.Combine(outputFolder, $"Rank_{group.Rank:D3}.wav");

        WriteMono16BitPCM_WAV(outPath, outputSamples, sampleRate);

    }

}

Assumptions:

  • Each CRESTTROUGHObject contains:
    • Scaled_CG_X → normalized/stacked X-CG.
    • StartSampleIndex, EndSampleIndex → position in original WAV.
    • SavedAmplitudes[] → original amplitudes within the AABB region.
  • WriteMono16BitPCM_WAV is your existing method to save a mono 16-bit PCM WAV file.
  • Total samples and sample rate are preserved exactly.

Output:

  • Each WAV contains only the signal portion from one vertical spectral line (ranked by CG_X).
  • You get <600 WAV files like Rank_001.wav, Rank_002.wav, etc., with duration and format matching the input.

Would you like a version where each spectral line is saved in both audio and visual (DXF or PNG)? Or combine multiple low-energy lines into one?

Here's a fully self-contained version of the method WriteMono16BitPCM_WAV, which writes a mono 16-bit PCM WAV file given:

  • string outPath → destination file path
  • short[] outputSamples → sample data
  • int sampleRate → samples per second (e.g., 8000, 44100)

WriteMono16BitPCM_WAV Function (C# 7.0, .NET 4.8 Compatible)

csharp

CopyEdit

 

 

 

public static void WriteMono16BitPCM_WAV(string outPath, short[] outputSamples, int sampleRate)

{

    int byteRate = sampleRate * 2; // mono, 16-bit = 2 bytes per sample

    int subchunk2Size = outputSamples.Length * 2;

    int chunkSize = 36 + subchunk2Size;

 

    using (BinaryWriter bw = new BinaryWriter(File.Create(outPath)))

    {

        // RIFF header

        bw.Write(System.Text.Encoding.ASCII.GetBytes("RIFF"));

        bw.Write(chunkSize);

        bw.Write(System.Text.Encoding.ASCII.GetBytes("WAVE"));

 

        // fmt subchunk

        bw.Write(System.Text.Encoding.ASCII.GetBytes("fmt "));

        bw.Write(16); // PCM

        bw.Write((short)1); // audio format = 1 (PCM)

        bw.Write((short)1); // mono

        bw.Write(sampleRate);

        bw.Write(byteRate);

        bw.Write((short)2); // block align = numChannels * bitsPerSample/8

        bw.Write((short)16); // bits per sample

 

        // data subchunk

        bw.Write(System.Text.Encoding.ASCII.GetBytes("data"));

        bw.Write(subchunk2Size);

        foreach (short sample in outputSamples)

        {

            bw.Write(sample);

        }

    }

}


📝 Notes

  • Supports mono (1-channel) only.
  • Samples are assumed to be 16-bit signed integers in range [-32768, 32767].
  • WAV file conforms to standard RIFF PCM format and is compatible with all audio software.

Would you like a version that supports stereo, floating-point WAV, or appends additional metadata (e.g., cue points, annotations)?

To get the outputFolder (i.e., the folder where the input WAV file is located) from the full input file path (e.g., F:\mywaves\inputfile.wav), you can use:

Code Snippet (C# 7.0, .NET Framework 4.8 Compatible)

csharp

CopyEdit

string inputFilePath = @"F:\mywaves\inputfile.wav";

string outputFolder = Path.GetDirectoryName(inputFilePath);

🔍 Explanation:

  • Path.GetDirectoryName(...) extracts the directory from the full file path.
  • For example:
    • F:\mywaves\inputfile.wavF:\mywaves
    • C:\Users\Sanjoy\Samples\test.wavC:\Users\Sanjoy\Samples

If you want to create a subfolder like "SpectralRanks" under the same input folder:

csharp

CopyEdit

string outputFolder = Path.Combine(Path.GetDirectoryName(inputFilePath), "SpectralRanks");

Directory.CreateDirectory(outputFolder); // Ensure it exists

Let me know if you want this logic wrapped into a helper function like GetOutputFolderFromInputFile(string inputPath, string subDirName).

strictly dont change the programming structure of this working running code and incorporate the List populations as the discussed conditions and rewrite full function with enhancements public static void CALL_THIS_BEFORE_GENERATING___RANKED_WAV_FILES___ExportDxf_With_CREST_TROUGH_COUNTER_AS_Y_VALUES___SAAN_STYLES_SINGLE_OUTER_GRAPH_SAANS_NORMALIZED_SCALED_TO_MAX_WIDTH_CG_X_DATABoxesAndText(List<CrestTroughObject> crestTroughs, string wavPath)

{

string path = Path.ChangeExtension(wavPath, "__crest_trough_counter_as_y_scaling_NORMALIZED_SCALED_TO_MAX_WIDTH_CG_X_DATA.dxf");

using (StreamWriter sw = new StreamWriter(path))

{

sw.WriteLine("0\nSECTION\n2\nENTITIES");

float w =

(float)CrestTroughAnalyzer___SANJOY_NATHS_QHENOMENOLOGY_REASONING_SYSTEMS_DISMANTLES_ANY_WAVES_TO_CREST_AABB_TRANSPARENT_RECTANGLES_TROUGH_AABB_TRANSPARENT_RECTANGLES_AND_STACK_THESE_TRANSPARENT_AABB_RECTANGLES_ONE_ABOVE_ANOTHER_GETS_VERTICAL_STRIPS_OF_CG_TRACINGS_ON_TRACING_PAPER_STACKS_BITMAPS_DXF_CSV_REPORTS

.PUBLIC_STATIC_DOUBLE_MAX_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS;

//ct.BoundingBox.Width;

// float h =

// 10000f;

float h =

// 10000f;

(float)

(CrestTroughAnalyzer___SANJOY_NATHS_QHENOMENOLOGY_REASONING_SYSTEMS_DISMANTLES_ANY_WAVES_TO_CREST_AABB_TRANSPARENT_RECTANGLES_TROUGH_AABB_TRANSPARENT_RECTANGLES_AND_STACK_THESE_TRANSPARENT_AABB_RECTANGLES_ONE_ABOVE_ANOTHER_GETS_VERTICAL_STRIPS_OF_CG_TRACINGS_ON_TRACING_PAPER_STACKS_BITMAPS_DXF_CSV_REPORTS

.PUBLIC_STATIC_DOUBLE_MAX_ABS_AMPLITUDES_FOUND_10000_TIMES_FOUNDOVERALL_IN_CRESTS_AND_TROUGHS)

*10000f

;

// ct.BoundingBox.Height;

float left = 0f;// cx - w / 2;

float right = w;// cx + w / 2;

float top = h;// ct.IsCrest ? 0 + h : 0;

float bottom = -h;// ct.IsCrest ? 0 : 0 - h;

int color = 6;// ct.IsCrest ? 5 : 1;

float center_x = w / 2;// 0;

//////// Bounding box edges (4 lines)

sw.WriteLine($"0\nLINE\n8\n0\n62\n{color}\n10\n{left:F3}\n20\n{top:F3}\n30\n0\n11\n{right:F3}\n21\n{top:F3}\n31\n0"); // top

sw.WriteLine($"0\nLINE\n8\n0\n62\n{color}\n10\n{left:F3}\n20\n{bottom:F3}\n30\n0\n11\n{right:F3}\n21\n{bottom:F3}\n31\n0"); // bottom

sw.WriteLine($"0\nLINE\n8\n0\n62\n{color}\n10\n{left:F3}\n20\n{top:F3}\n30\n0\n11\n{left:F3}\n21\n{bottom:F3}\n31\n0"); // left

sw.WriteLine($"0\nLINE\n8\n0\n62\n{color}\n10\n{right:F3}\n20\n{top:F3}\n30\n0\n11\n{right:F3}\n21\n{bottom:F3}\n31\n0"); // right

//////// Axes lines

color = 1;//

sw.WriteLine($"0\nLINE\n8\n0\n62\n8\n10\n{left:F3}\n20\n0.000\n30\n0\n11\n{right:F3}\n21\n0.000\n31\n0"); // X axis

// sw.WriteLine($"0\nLINE\n8\n0\n62\n8\n10\n{cx:F3}\n20\n{bottom:F3}\n30\n0\n11\n{cx:F3}\n21\n{top:F3}\n31\n0"); // Y axis

sw.WriteLine($"0\nLINE\n8\n0\n62\n8\n10\n{center_x:F3}\n20\n{bottom:F3}\n30\n0\n11\n{center_x:F3}\n21\n{top:F3}\n31\n0"); // Y axis

/// crestTroughs.ToArray<CrestTroughObject>().

///

//done in open and scan wav files

////////CrestTroughAnalyzer___WITH_TRANSPARENT_RECTANGLES_OF_TRACING_PAPER_STACKS_BITMAPS_CSV_REPORTS.

//////public static double PUBLIC_STATIC_DOUBLE_MIN_WIDTH_MIKROSEC_FOUND_IN_CRESTS = +600000000;

//////public static double PUBLIC_STATIC_DOUBLE_MAX_WIDTH_MIKROSEC_FOUND_IN_CRESTS = -600000000;

//////public static double PUBLIC_STATIC_DOUBLE_MIN_WIDTH_MIKROSEC_FOUND_IN_TROUGHS = +600000000;

//////public static double PUBLIC_STATIC_DOUBLE_MAX_WIDTH_MIKROSEC_FOUND_IN_TROUGHS = -600000000;

//////public static double PUBLIC_STATIC_DOUBLE_MIN_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS = +600000000;

//////public static double PUBLIC_STATIC_DOUBLE_MAX_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS = -600000000;

//////public static double PUBLIC_STATIC_DOUBLE_MAX_ABS_AMPLITUDES_FOUND_10000_TIMES_FOUND_IN_CRESTS = -600000000;

//////public static double PUBLIC_STATIC_DOUBLE_MAX_ABS_AMPLITUDES_FOUND_10000_TIMES_FOUND_IN_TROUGHS = -600000000;

//////public static double PUBLIC_STATIC_DOUBLE_MAX_ABS_AMPLITUDES_FOUND_10000_TIMES_FOUNDOVERALL_IN_CRESTS_AND_TROUGHS = -600000000;

//////CrestTroughAnalyzer___WITH_TRANSPARENT_RECTANGLES_OF_TRACING_PAPER_STACKS_BITMAPS_CSV_REPORTS

//////.PUBLIC_STATIC_DOUBLE_MIN_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS

//////=

//////Math.Min

//////(

//////CrestTroughAnalyzer___WITH_TRANSPARENT_RECTANGLES_OF_TRACING_PAPER_STACKS_BITMAPS_CSV_REPORTS

//////.PUBLIC_STATIC_DOUBLE_MIN_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS

//////,

//////(double)current.WidthMicroseconds

//////);

//////CrestTroughAnalyzer___WITH_TRANSPARENT_RECTANGLES_OF_TRACING_PAPER_STACKS_BITMAPS_CSV_REPORTS

//////.PUBLIC_STATIC_DOUBLE_MAX_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS

//////=

//////Math.Max

//////(

//////CrestTroughAnalyzer___WITH_TRANSPARENT_RECTANGLES_OF_TRACING_PAPER_STACKS_BITMAPS_CSV_REPORTS

//////.PUBLIC_STATIC_DOUBLE_MAX_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS

//////,

//////(double)current.WidthMicroseconds

//////);

for (int i = 0; i < crestTroughs.Count; i++)

{

float _saans_x_width_scales_factor = 1.0f;

float _saans_y_height_scales_factor = 1.0f;

// var ct = crestTroughs[i];

CrestTroughObject ct = crestTroughs[i];

_saans_x_width_scales_factor

=

(float)

((float)CrestTroughAnalyzer___SANJOY_NATHS_QHENOMENOLOGY_REASONING_SYSTEMS_DISMANTLES_ANY_WAVES_TO_CREST_AABB_TRANSPARENT_RECTANGLES_TROUGH_AABB_TRANSPARENT_RECTANGLES_AND_STACK_THESE_TRANSPARENT_AABB_RECTANGLES_ONE_ABOVE_ANOTHER_GETS_VERTICAL_STRIPS_OF_CG_TRACINGS_ON_TRACING_PAPER_STACKS_BITMAPS_DXF_CSV_REPORTS

.PUBLIC_STATIC_DOUBLE_MAX_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS

/

(ct.WidthMicroseconds));

// Console.WriteLine("to calculate cx data ====== max mikros found = " + CrestTroughAnalyzer___WITH_TRANSPARENT_RECTANGLES_OF_TRACING_PAPER_STACKS_BITMAPS_CSV_REPORTS.PUBLIC_STATIC_DOUBLE_MAX_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS + " ct.WidthMicroseconds = " + ct.WidthMicroseconds + " _saans_x_width_scales_factor= " + _saans_x_width_scales_factor);

_saans_y_height_scales_factor

=

(float)

((float)CrestTroughAnalyzer___SANJOY_NATHS_QHENOMENOLOGY_REASONING_SYSTEMS_DISMANTLES_ANY_WAVES_TO_CREST_AABB_TRANSPARENT_RECTANGLES_TROUGH_AABB_TRANSPARENT_RECTANGLES_AND_STACK_THESE_TRANSPARENT_AABB_RECTANGLES_ONE_ABOVE_ANOTHER_GETS_VERTICAL_STRIPS_OF_CG_TRACINGS_ON_TRACING_PAPER_STACKS_BITMAPS_DXF_CSV_REPORTS

.PUBLIC_STATIC_DOUBLE_MAX_ABS_AMPLITUDES_FOUND_10000_TIMES_FOUNDOVERALL_IN_CRESTS_AND_TROUGHS

/

(ct.HeightAmplitude));

// Console.WriteLine("to calculate cx data ====== max mikros found = " + CrestTroughAnalyzer___WITH_TRANSPARENT_RECTANGLES_OF_TRACING_PAPER_STACKS_BITMAPS_CSV_REPORTS.PUBLIC_STATIC_DOUBLE_MAX_WIDTH_MIKROSEC_FOUND_IN_OVERALL_IN_CRESTS_AND_TROUGHS + " ct.WidthMicroseconds = " + ct.WidthMicroseconds + " _saans_x_width_scales_factor= " + _saans_x_width_scales_factor);

float cx = ct.CG.X;

cx

= (float)((_saans_x_width_scales_factor) * cx);

// this is important to generate ranked wav files

crestTroughs.ElementAt<CrestTroughObject>(i)

.PUBLIC_DOUBLE_NON_DUPLICATE_CG_X_FOR_SAAN_STYLES_NORMALIZATION_DONE_ON_GLOBAL_MAX_WIDH_OF_ALL_AABB_OBJECTS

= (double)cx;

// this is important to generate ranked wav files

float cy = ct.IsCrest ? ct.CG.Y : -Math.Abs(ct.CG.Y);

float preserved_cy = ct.IsCrest ? ct.CG.Y : -Math.Abs(ct.CG.Y);

int ___overallcresttroughcounter = (int)ct.OVERALL_AABB_COUNTER_EITHER_IT_IS_CREST_OR_IT_IS_TROUGH____COUNTER_TO_RECONSTRUCTION_THE_ACTUAL_QUEUE_STRUCTURE_FROM_THE_STACK_ANALYSIS_DATA;

float factor___overallcresttroughcounter=(float)(((float)___overallcresttroughcounter) /((float)(crestTroughs.Count)));

cy = cy * (factor___overallcresttroughcounter * _saans_y_height_scales_factor);

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

crestTroughs.ElementAt<CrestTroughObject>(i)

.

PUBLIC_DOUBLE_NON_DUPLICATE_CG_Y_FOR_SAAN_STYLES_NORMALIZATION_DONE_ON_GLOBAL_MAX_HEIGHTS_OF_ALL_AABB_OBJECTS

= (double)preserved_cy * _saans_y_height_scales_factor;

//////float w = ct.BoundingBox.Width;

//////float h = ct.BoundingBox.Height;

//////float left = cx - w / 2;

//////float right = cx + w / 2;

//////float top = ct.IsCrest ? 0 + h : 0;

//////float bottom = ct.IsCrest ? 0 : 0 - h;

//////int color = ct.IsCrest ? 5 : 1;

color = ct.IsCrest ? 5 : 1;

// CG circle

float radius = Math.Max(1f, (ct.EndSampleIndex - ct.StartSampleIndex) / 10f);

sw.WriteLine($"0\nCIRCLE\n8\n0\n62\n{color}\n10\n{cx:F3}\n20\n{cy:F3}\n30\n0\n40\n{radius:F3}");

// Label text

sw.WriteLine($"0\nTEXT\n8\n0\n62\n{color}\n10\n{cx:F3}\n20\n{cy:F3}\n30\n0\n40\n{radius:F3}\n1\n#i={i}___{factor___overallcresttroughcounter}");

}

sw.WriteLine("0\nENDSEC\n0\nEOF");

}

}//public static void CALL_THIS_BEFORE_GENERATING___RANKED_WAV_FILES___ExportDxf_With_CREST_TROUGH_COUNTER_AS_Y_VALUES___SAAN_STYLES_SINGLE_OUTER_GRAPH_SAANS_NORMALIZED_SCALED_TO_MAX_WIDTH_CG_X_DATABoxesAndText(List<CrestTroughObject> crestTroughs, string wavPath)

 

No comments:

Post a Comment