public virtual void MakeAlgorithm(ref Cl3DModel p_Model)
        {
            if (p_Model == null)
                throw new Exception("NULL model");

            ClInformationSender.SendInformation("-> In progress: " + m_sAlgorithmName +" for: " +p_Model.ModelFileName, ClInformationSender.eInformationType.eTextInternal);
            p_Model.ResetVisitedPoints();
            DateTime start = DateTime.Now;
            m_AlgorithmTime = TimeSpan.Zero;

                Algorithm(ref p_Model);

            DateTime stop = DateTime.Now;
            m_AlgorithmTime = (stop - start);
            p_Model.IsModelChanged = true;
            ClInformationSender.SendInformation("-] Finished: " + m_sAlgorithmName + " for: " + p_Model.ModelFileName+" [time: " + m_AlgorithmTime.TotalSeconds + " sec.]", ClInformationSender.eInformationType.eTextInternal);

            string fullAlgorithmAdditionalData = GetAlgorithmFullPath() + "\n";
            foreach (KeyValuePair<string, string> prop in GetProperitis())
                fullAlgorithmAdditionalData += "\t" + prop.Key + " -> " + prop.Value + "\n";
            p_Model.AddDoneProcessingAlgorithm(fullAlgorithmAdditionalData);
        }