08/09/2015
Устанавливаем переопределение цвета слоя для ВЭкрана используя AccoreConsole
Этот пример кода устанавливает переопределение для цвета слоя для всех ВЭкранов во всех листах чертежа. Можно использовать AccoreConsole для автоматизации этого переопределения в случае если эту операцию нужно повторить для множества чертежей в каталоге. Вот скрипт AutoCAD и пользовательская команда для переопределения слоя "Слой1" :
Код: [Выделить]
- ;--- Начало скрипта
- (command "_.Netload" "D:\\Temp\\CustomPlugin.dll")
- SetLayerColorOverride
- _SAVEAS
- 2013
- D:\Temp\Test_1.dwg
- ;--- Конец скрипта
Код - C#: [Выделить]
- using Autodesk.AutoCAD.Runtime;
- using Autodesk.AutoCAD.EditorInput;
- using Autodesk.AutoCAD.DatabaseServices;
- using Autodesk.AutoCAD.ApplicationServices;
- using Autodesk.AutoCAD.Colors;
- [CommandMethod("SetLayerColorOverride" )]
- public void SetLayerColorOverride()
- {
- DocumentCollection docs
- = Autodesk.AutoCAD.ApplicationServices
- .Core.Application.DocumentManager;
- Document doc = docs.MdiActiveDocument;
- Editor ed = doc.Editor;
- Database db = doc.Database;
- db.TileMode = false ;
- LayoutManager lm = LayoutManager.Current;
- using (Transaction tr
- = db.TransactionManager.StartTransaction())
- {
- LayerTable lt = tr.GetObject(
- db.LayerTableId,
- OpenMode.ForWrite, false ) as LayerTable;
- String layerName = "Слой1" ;
- if (!lt.Has(layerName))
- return ;
- LayerTableRecord ltr = tr.GetObject(
- lt[layerName],
- OpenMode.ForWrite) as LayerTableRecord;
- using (DBDictionary layoutDict = tr.GetObject(
- db.LayoutDictionaryId,
- OpenMode.ForRead) as DBDictionary)
- {
- foreach (DBDictionaryEntry entry in layoutDict)
- {
- ObjectId layoutId = entry.Value;
- Layout layout = tr.GetObject(
- layoutId,
- OpenMode.ForRead) as Layout;
- lm.CurrentLayout = layout.LayoutName;
- BlockTableRecord btr = tr.GetObject(
- layout.BlockTableRecordId,
- OpenMode.ForRead) as BlockTableRecord;
- foreach (ObjectId id in btr)
- {
- if (id.ObjectClass
- == RXClass.GetClass(typeof (Viewport)))
- {
- Viewport vp = tr.GetObject(
- id, OpenMode.ForRead) as Viewport;
- if (vp != null && vp.Number > 1)
- {
- LayerViewportProperties lvp
- = ltr.GetViewportOverrides(id);
- lvp.Color
- = Color.FromColorIndex(
- ColorMethod.ByAci, (short )vp.Number);
- vp.UpdateDisplay();
- }
- }
- }
- }
- }
- tr.Commit();
- }
- }
Автор перевода: Александр Ривилис
Отредактировано 08.09.2015 в 07:59:12
Обсуждение: http://adn-cis.org/forum/index.php?topic=2993
Опубликовано 08.09.2015Отредактировано 08.09.2015 в 07:59:12