30/08/2020
Как изменить цвет ПСЕВДОРАЗРЕЗА (LIVESECTION)?
Вопрос: Как изменить цвет ПСЕВДОРАЗРЕЗа (LIVESECTION)? Можно ли это сделать при помощи API?
Ответ: Средствами AutoCAD .NET API это возможно. Для этой цели необходимо задать цвет при помощи SectionSettings:
Код - C#: [Выделить]
- [CommandMethod("SetLiveSectionColor")]
- public void SetLiveSectionColor()
- {
- Document doc = Application.DocumentManager.MdiActiveDocument;
- if (doc == null) return;
- Editor ed = doc.Editor;
- ObjectId idLiveSect = ObjectId.Null;
- ObjectId idSecSets = ObjectId.Null; // Находим LIVESECTION - он может быть только один
- using (Transaction tr = doc.TransactionManager.StartOpenCloseTransaction())
- {
- SectionManager sm = tr.GetObject(doc.Database.SectionManagerId, OpenMode.ForRead) as SectionManager;
- if (sm != null) {
- idLiveSect = sm.LiveSection;
- Section sec = tr.GetObject(sm.LiveSection, OpenMode.ForRead) as Section;
- idSecSets = sec.Settings;
- }
- tr.Commit();
- }
- if (idSecSets != ObjectId.Null)
- {
- using (Transaction tr = doc.TransactionManager.StartOpenCloseTransaction())
- {
- SectionSettings secset = tr.GetObject(idSecSets, OpenMode.ForWrite) as SectionSettings;
- Color clr = secset.Color(SectionType.LiveSection, SectionGeometry.IntersectionFill);
- ColorDialog cd = new ColorDialog();
- cd.Color = clr;
- System.Windows.Forms.DialogResult dr = cd.ShowDialog();
- if (dr != System.Windows.Forms.DialogResult.OK) return;
- ed.WriteMessage("\nВыбран цвет: " + cd.Color.ToString());
- clr = cd.Color;
- // Определяет цвет чего мы меняем
- secset.SetColor(SectionType.LiveSection, SectionGeometry.IntersectionFill, clr);
- tr.Commit();
- }
- short _cmdecho = (short)Application.GetSystemVariable("CMDECHO");
- Application.SetSystemVariable("CMDECHO", 0);
- ed.Command("_LIVESECTION", idLiveSect); // Отключаем LIVESECTION
- ed.Command("_LIVESECTION", idLiveSect); // Включаем LIVESECTION
- Application.SetSystemVariable("CMDECHO", _cmdecho);
- }
- }
Автор: Александр Ривилис
Опубликовано 30.08.2020
Опубликовано 30.08.2020