public void TileColorCommand() { var doc = Application.DocumentManager.MdiActiveDocument; var db = doc.Database; var ed = doc.Editor; ed.WriteMessage("\nПробная версия покраски панели. Панель это блок с именем НС4_72-75, и с атрибутами зон с тегом начинающимся с 'з'. В блоке панели разложены блоки плитки с именем 'плитка' и с атрибутом зоны."); using (var t = db.TransactionManager.StartTransaction()) { //get blockTable var bt = t.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable; //get ModelSpace BlockTableRecord var ms = t.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForRead) as BlockTableRecord; if (ms == null) { return; } //var blockRefereneceList = (from ObjectId objectEntry in ms // where objectEntry.ObjectClass.Name.Equals("AcDbBlockReference") // let blockReference = t.GetObject(objectEntry, OpenMode.ForWrite) as BlockReference // select blockReference).ToList(); //foreach (var blockRefereneceEntry in blockRefereneceList) //{ // var entry = blockRefereneceEntry.DynamicBlockTableRecord.GetObject(OpenMode.ForRead, false); //} // Выбор блоков панелей в чертеже. List <ObjectId> idBlRefsPanel = Select.GetBlockRefPanels(doc); if (idBlRefsPanel.Count == 0) { ed.WriteMessage("\nНе найдены блоки панелей. Блок панели с именем НС4_72-75"); return; } // Обработка блоков. Получение колекции блоков, имен зон и типов цветов. List <Panel> panels = Panel.GetPanels(idBlRefsPanel); if (panels.Count == 0) { ed.WriteMessage("\nНе определены панели для раскраски."); return; } // Задание цветов для типов цветов FormColor formColor = new FormColor(TileColor.TileColors); var resDlg = formColor.ShowDialog(); if (resDlg == System.Windows.Forms.DialogResult.OK) { // Покраска блоков foreach (var panel in panels) { panel.Paint(); } } t.Commit(); } }
public void TileColorCommand() { var doc = Application.DocumentManager.MdiActiveDocument; var db = doc.Database; var ed = doc.Editor; ed.WriteMessage("\nПробная версия покраски панели. Панель это блок с именем НС4_72-75, и с атрибутами зон с тегом начинающимся с 'з'. В блоке панели разложены блоки плитки с именем 'плитка' и с атрибутом зоны."); using (var t = db.TransactionManager.StartTransaction()) { //get blockTable var bt = t.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable; //get ModelSpace BlockTableRecord var ms = t.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForRead) as BlockTableRecord; if (ms == null) return; //var blockRefereneceList = (from ObjectId objectEntry in ms // where objectEntry.ObjectClass.Name.Equals("AcDbBlockReference") // let blockReference = t.GetObject(objectEntry, OpenMode.ForWrite) as BlockReference // select blockReference).ToList(); //foreach (var blockRefereneceEntry in blockRefereneceList) //{ // var entry = blockRefereneceEntry.DynamicBlockTableRecord.GetObject(OpenMode.ForRead, false); //} // Выбор блоков панелей в чертеже. List<ObjectId> idBlRefsPanel = Select.GetBlockRefPanels(doc); if (idBlRefsPanel.Count == 0) { ed.WriteMessage("\nНе найдены блоки панелей. Блок панели с именем НС4_72-75"); return; } // Обработка блоков. Получение колекции блоков, имен зон и типов цветов. List<Panel> panels = Panel.GetPanels(idBlRefsPanel); if (panels.Count == 0) { ed.WriteMessage("\nНе определены панели для раскраски."); return; } // Задание цветов для типов цветов FormColor formColor = new FormColor(TileColor.TileColors); var resDlg = formColor.ShowDialog(); if (resDlg == System.Windows.Forms.DialogResult.OK) { // Покраска блоков foreach (var panel in panels) { panel.Paint(); } } t.Commit(); } }