private PositionTT CalcPositionTT(Note myNote) { double[] ext = (double[])myNote.GetExtent(); double nheight = Math.Abs(Math.Abs(ext[4]) - Math.Abs(ext[1])); PositionTT result = new PositionTT() { x = sh_width - c_width, y = c_height + nheight + 0.005, z = 0 }; return(result); }
public void PaintNoteOnDraw(ModelDoc2 swDoc) { bool isA4 = (sh_width == 0.210 && sh_height == 0.297); double prevy = 0; for (int i = 0; i < notes.Count; i++) { Note swNote = (Note)swDoc.InsertNote(""); swNote.SetName(ttname + (i + 1).ToString()); swNote.SetTextJustification((int)swTextJustification_e.swTextJustificationLeft); Annotation myAnnot = (Annotation)swNote.GetAnnotation(); TextFormat swTextFormat = myAnnot.GetTextFormat(0) as TextFormat; swTextFormat.LineLength = c_width - 0.005; myAnnot.SetTextFormat(0, false, swTextFormat); String txt = notes[i].NoteText.Remove(notes[i].NoteText.Length - 2); swNote.SetText(txt); // Пересчёт позиции PositionTT posTT = CalcPositionTT(swNote); // Для А4 ТТ прижимаются к основной надписи, для других форматов - к верху чертежа if (isA4 == false) { posTT.y = sh_height - c_topmargin; } // Последующие блоки выравниваем по высоте с первым блоком if (i == 0) { prevy = posTT.y; } else { posTT.y = prevy; } myAnnot.SetPosition(posTT.x - c_width * i, posTT.y, posTT.z); swNote.LockPosition = true; } swDoc.WindowRedraw(); }