Тема: Запустить команду DIMLINEAR и т.д.
Задача такая: чтобы размеры всегда были в своем слое независимо от того какой активен.
1. Запомнить текущий слой
2. Если слой с размерами существует то сделать активным его, если нет - то создать.
3. Запустить команду _DIMLINEAR чтобы она была в слое с размерами (тут вопрос как лучше сделать)
4. Сделать активным слой из шага 1.
По поводу шага 2. Пытался сделать с помощью класса RotatedDimension(), получается коряво.
Т.е. размер проставляется по 3 точкам, но это не информативно, не так как прямое выполнение команды DIMLINEAR. Может там есть какие-то свойства для визульного... я не знаю...
Что в итоге: создание слоя работает, проставка размера в слое с размерами не работает. Размер все равно остается в текущем слое.
Делается на C#
Что сделано:
namespace LayerCreation { public class Commands { static string layDimName = "DIMENSIONS"; [CommandMethod("11")] public void CreateLayer() { Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; Editor ed = doc.Editor; Transaction tr = db.TransactionManager.StartTransaction(); ObjectId currLay = db.Clayer; using (tr) { LayerTable lt = (LayerTable)tr.GetObject(db.LayerTableId,OpenMode.ForRead); LayerTableRecord ltr = new LayerTableRecord(); ltr.Name = layDimName; ltr.Color = Color.FromColorIndex(ColorMethod.ByAci, 140); ltr.LineWeight = LineWeight.LineWeight020; if (lt.Has(layDimName) != true) { lt.UpgradeOpen(); ObjectId ltId = lt.Add(ltr); tr.AddNewlyCreatedDBObject(ltr, true); db.Clayer = lt[layDimName]; } else { db.Clayer = lt[layDimName]; } tr.Commit(); doc.SendStringToExecute("_DIMLINEAR\n", true, false, true); db.Clayer = currLay; } } } }