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(); }
string GetToothObjective(Tooth tooth) { string text = KlisheParams.GetBlock("rvg_clean"); return(text); }
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); }
public bool RemoveTooth(Tooth toothDoDel) { return(Tooths.Remove(toothDoDel)); }