예제 #1
0
        private void numberOfToothText_TextChanged(object sender, EventArgs e)         //изменение текста окна ввода номера зубов
        {
            if (numberOfToothText.Text.Length > 0)                                     //проверяем не равна ли длина нулю(при стирании первого символа например)
            {
                byte number = Byte.Parse(numberOfToothText.Text);                      //переводим текст в цифру

                if (((int)Math.Log10(number) + 1) == 2)                                //проверяем имеет ли номер зуба две цифры
                {
                    if (number >= 11 && number <= 48)                                  //проверяем входит ли зуб в диапозон взрослых зубов
                    {
                        if (number % 10 < 1 || number % 10 > 8)                        //проверяем не имеет ли зуб вторую цифру меньше 1 или больше 8
                        {
                            numberOfToothText.Text = numberOfToothText.Text.Remove(1); //если имеет тогда удаляем второй символ - Текст - ссылочный тип поэтому не забываем присуждать его основному тексту
                        }
                        else
                        {
                            if (currentClishe.GetTooth(number) != null)
                            {
                                currentFormTooth = currentClishe.GetTooth(number);
                            }
                            else
                            {
                                //currentFormTooth = currentFormTooth.Copy() ;
                                currentFormTooth = currentFormTooth.CopyWithNewNumber(number);
                            }
                            UpdateColor();
                            UpdateTreatment();
                        }
                    }
                    else if (number >= 51 && number <= 85)      //проверяем входит ли зуба в диапозон детских зубов
                    {
                        if (number % 10 < 1 || number % 10 > 5) //проверяем не имеет ли зуб вторую цифру меньше 1 и больше 5 при детском прикусе
                        {
                            numberOfToothText.Text = numberOfToothText.Text.Remove(1);
                        }
                        else
                        {
                            if (currentClishe.GetTooth(number) != null)
                            {
                                currentFormTooth = currentClishe.GetTooth(number);
                            }
                            else
                            {
                                currentFormTooth = currentFormTooth.CopyWithNewNumber(number);
                            }
                            UpdateColor();
                            UpdateTreatment();
                        }
                    }
                    else
                    {
                        numberOfToothText.Text = numberOfToothText.Text.Remove(1);
                    }
                }
                else
                {
                    if (number < 1 || number > 8)                                  //проверяем не имеет ли зуб первую цифру меньше 1 или больше 8
                    {
                        numberOfToothText.Text = numberOfToothText.Text.Remove(0); //удаляем если имеет
                    }
                }
            }
            if (currentFormTooth.isFront)
            {
                okklF.Text = "Режущий край";
            }
            else
            {
                okklF.Text = "Окклюзионная";
            }

            if (currentFormTooth.kvadrantNumb == 1 || currentFormTooth.kvadrantNumb == 2)
            {
                orF.Text = "Небная";
            }
            else
            {
                orF.Text = "Язычная";
            }

            UpdateTooth();
            //UpdateColor();
            //UpdateTreatment();
        }
예제 #2
0
        string GetToothObjective(Tooth tooth)
        {
            string text = KlisheParams.GetBlock("rvg_clean");

            return(text);
        }
예제 #3
0
        string GetFacesObjective(Tooth tooth)
        {
            string            text        = "";
            List <text_block> text_blocks = new List <text_block>();
            bool haveOne = false;



            foreach (Face face in tooth.GetAllFaces())
            {
                foreach (Condition cond in face.GetConditionsOfFace())
                {
                    foreach (text_block tb in  text_blocks)
                    {
                        if (((Condition)tb.comparer).Name == cond.Name)
                        {
                            haveOne = true;
                            bool alreadyConnected = false;
                            foreach (Face fc in tb.analogObjectsList)//проверяем нет ли среди поверхностей с таким же диагнозом, таких с которым эта поверхность уже соединена
                            {
                                if (face.GetConnections().Contains(fc))
                                {
                                    if (((Condition)tb.comparer).Depth < cond.Depth)
                                    {
                                        tb.comparer = cond;
                                    }
                                    alreadyConnected = true;
                                    break;
                                }
                            }
                            if (!alreadyConnected)//если присоединенных поверхностей нет тогда она будет описываться отдельно.
                            {
                                tb.analogObjectsList.Add(face);
                                tb.multi = true;
                            }
                            break;
                        }
                    }

                    if (!haveOne)
                    {
                        text_block tb = new text_block();
                        tb.analogObjectsList.Add(face);
                        tb.layer       = cond.layerForDiscription;
                        tb.comparer    = cond;
                        tb.textOfBlock = cond.rvgDescription;
                        tb.changerText = cond.multiDiscription;
                        text_blocks.Add(tb);
                    }
                    haveOne = false;
                }
            }

            text_blocks = text_blocks.OrderBy(t => t.layer).ToList();//упорядочиваем список блоков текста по слоям (первые слои наиболее важные - кариес и тому подобное, потом уже идет описание остальных слоев)

            foreach (text_block tb in text_blocks)
            {
                bool edge     = false;
                bool onlyEdge = false;

                foreach (Face fc in tb.analogObjectsList)
                {
                    if (fc.faceName != Face.faceSide.edge)                                                        //если это не режущий край тогда
                    {
                        tb.allText += "на " + KlisheParams.GetBlock("face_name_" + fc.faceName.ToString()) + "о"; //записываем в текст имя поверхности


                        if (fc.GetConnections().Length > 0)//если есть присоединенные поверхности тогда добавляем их
                        {
                            foreach (Face connectedFace in fc.GetConnections())
                            {
                                if (connectedFace.faceName != Face.faceSide.edge)
                                {
                                    tb.allText += "-" + KlisheParams.GetBlock("face_name_" + connectedFace.faceName.ToString()) + "о";
                                }
                                else
                                {
                                    edge = true;
                                }
                            }
                        }
                        tb.allText += "й и ";
                    }
                    //
                    //            if (tb.allText == "") tb.allText += "на " + KlisheParams.GetBlock("face_name_" + fc.faceName.ToString()) + "о";
                    //            else tb.allText += "-" + KlisheParams.GetBlock("face_name_" + fc.faceName.ToString()) + "о";
                    //        }
                    else
                    {
                        if (tb.allText == "" && tb.analogObjectsList.Count == 1)
                        {
                            onlyEdge    = true;
                            tb.allText += "по " + KlisheParams.GetBlock("face_name_" + fc.faceName.ToString() + "_onthe") + " ";
                        }
                        else
                        {
                            edge = true;
                        }
                    }
                }
                if (!onlyEdge)
                {
                    tb.allText = tb.allText.Remove(tb.allText.Length - 2) + " поверхности ";
                }
                if (edge)
                {
                    tb.allText += " с выходом на режущий край ";
                }
                if (tb.multi)
                {
                    tb.allText += tb.MultiplyText();
                }
                else
                {
                    tb.allText += tb.textOfBlock;
                }

                tb.ToUpperFirstChar(text);

                text += tb.allText;
            }//end of foreach text_block



            return(text);
        }
예제 #4
0
 public bool RemoveTooth(Tooth toothDoDel)
 {
     return(Tooths.Remove(toothDoDel));
 }