Тема: Как изменить выносную линию у размера?
public static void Main() { Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; Editor ed = doc.Editor; try { Transaction tr = db.TransactionManager.StartTransaction(); using (tr) { BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead); BlockTableRecord btr = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite, false); PromptSelectionOptions pso = new PromptSelectionOptions(); pso.MessageForAdding = "\nВыберите размеры: "; SelectionFilter sf = new SelectionFilter( new TypedValue[] { new TypedValue((int)DxfCode.Start, "Dimension") }); PromptSelectionResult psr = ed.GetSelection(pso, sf); if (psr.Status != PromptStatus.OK) { return; } foreach (ObjectId objId in psr.Value.GetObjectIds()) { Dimension dim = (Dimension)objId.GetObject(OpenMode.ForWrite, false); if (dim.GetType().Name.Equals("RotatedDimension")) { Point3dCollection strp = new Point3dCollection(); dim.GetStretchPoints(strp); }// if }// foreach tr.Commit(); }// tr }// try catch (System.Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } }// main
dim.GetStretchPoints(strp); дает мне пять основных точек размера. Других способов получить эти точки я не увидел. А как теперь поменять первые две из них (начальные координаты выносных линий)?
Полгаю, что за это должно отвечать dim.MoveStretchPointsAt(... , но так и не понял как оно работает :(
Может есть другой вариант?
P.S. И еще вопрос - есть ли на .NET аналоги лисповских функций работы с кривыми, а точнее аналог vlax-curve-getClosestPOintTo?