public class ElementLayer
{
private readonly string layerMN;
private readonly string layerScheme;
private readonly string layerSchemetext;
private readonly string TypeMainLayerWeigth;
private readonly string TypeOtherLayerWeigth;
private readonly string TypeLineWeight030;
private readonly byte ColorWhite;
private readonly byte ColorRed;
private readonly byte ColorYellow;
private readonly byte ColorGreen;
private readonly byte ColorWBlue;
private readonly byte ColorBlue;
private readonly byte ColorViolet;
public int lengthArraynamesign;
public ElementLayer()
{
//Имя слоев для блоков
layerMN = "МН_Трасса";
layerScheme = "МН_Трасса_Схема";
layerSchemetext = "МН_Трасса_Схема_Текст";
//Указатели на толщину линий
TypeMainLayerWeigth = "Main";
TypeOtherLayerWeigth = "Other";
TypeLineWeight030 = "0.3";
//Указатели на цвета
ColorWhite = 0;
ColorRed = 1;
ColorYellow = 2;
ColorGreen = 3;
ColorWBlue = 4;
ColorBlue = 5;
ColorViolet = 6;
//прочие значания
lengthArraynamesign = 75;
}
public string LayerScheme
{
get { return layerScheme; }
}
public string LayerSchemeText
{
get { return layerSchemetext; }
}
public string LayerMN
{
get { return layerMN; }
}
//Командный метод для подготовки слоев
public void PreparationLayer()
{
ElementLayer PreDataLayer = new ElementLayer();
if (PreDataLayer.IfExistLayer(PreDataLayer.LayerScheme) == true)
{
CreateLayer(LayerScheme, PreDataLayer.ColorWhite, TypeLineWeight030, true);
}
if (PreDataLayer.IfExistLayer(PreDataLayer.LayerSchemeText) == true)
{
CreateLayer(LayerSchemeText, PreDataLayer.ColorWhite, TypeOtherLayerWeigth, true);
}
if (PreDataLayer.IfExistLayer(PreDataLayer.LayerMN) == true)
{
CreateLayer(LayerMN, PreDataLayer.ColorRed, TypeOtherLayerWeigth, false);
}
}
public void CreateLayer(string _LocalLayerName, short _LocalIndexColor, string _LocalMainLine, bool _plottable)
{
// получаем ссылку на документ
Document AcadDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
if (AcadDoc == null) return;
// получаем ссылку на БД
Database db = AcadDoc.Database;
// НАЧАЛОСЬ
using (Transaction transaction = AcadDoc.TransactionManager.StartTransaction())
{
ObjectId LayerId;
//получаем объект таблицы слоев
LayerTable LocalLayerTable = transaction.GetObject(db.LayerTableId, OpenMode.ForWrite) as LayerTable;
//Проверяем существует ли слой с таким именем
if (LocalLayerTable.Has(_LocalLayerName))
{
MessageBox.Show("Слой с именем (" + _LocalLayerName + ") уже существует", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
// создаем новый слой, задаем ему имя
LayerTableRecord LocalLayerSign = new LayerTableRecord() { Name = _LocalLayerName };
if (_plottable == true)
{
LocalLayerSign.IsPlottable = true;
}
else
{
LocalLayerSign.IsPlottable = false;
}
// задаем ему цвет
Color acLocalColors = new Color();
acLocalColors = Color.FromColorIndex(ColorMethod.ByColor, _LocalIndexColor);
LocalLayerSign.Color = acLocalColors;
if (_LocalMainLine == "Main")
{
LocalLayerSign.LineWeight = LineWeight.LineWeight050;
}
if (_LocalMainLine == "Other")
{
LocalLayerSign.LineWeight = LineWeight.ByLineWeightDefault;
}
LayerId = LocalLayerTable.Add(LocalLayerSign);
transaction.AddNewlyCreatedDBObject(LocalLayerSign, true);
transaction.Commit();
}
}
public void ActiveLayerSetup(string LocalLayerName)
{
// получаем ссылку на документ
Document AcadDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
if (AcadDoc == null) return;
// получаем ссылку на БД
Database db = AcadDoc.Database;
// НАЧАЛОСЬ
using (Transaction transaction = AcadDoc.TransactionManager.StartTransaction())
{
//получаем объект таблицы слоев
LayerTable LocalLayerTable = transaction.GetObject(db.LayerTableId, OpenMode.ForWrite) as LayerTable;
if (LocalLayerTable.Has(LocalLayerName) == true)
{
db.Clayer = LocalLayerTable[LocalLayerName];
}
else
{
return;
}
transaction.Commit();
}
}
public string CurrentLayerData()
{
string LocalNameCurrentLayer;
// получаем ссылку на документ
Document AcadDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
if (AcadDoc == null)
{
MessageBox.Show("Документ не открыт", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return null;
}
else
{
//получаем объект таблицы слоев
LocalNameCurrentLayer = (string)Autodesk.AutoCAD.ApplicationServices.Application.GetSystemVariable("CLAYER");
return LocalNameCurrentLayer;
}
}
public bool IfExistLayer(string LocalLayerName)
{
// получаем ссылку на документ
Document AcadDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
if (AcadDoc == null) return false;
// получаем ссылку на БД
Database db = AcadDoc.Database;
using (Transaction transaction = AcadDoc.TransactionManager.StartTransaction())
{
//получаем объект таблицы слоев
LayerTable LocalLayerTable = transaction.GetObject(db.LayerTableId, OpenMode.ForWrite) as LayerTable;
//Проверяем существует ли слой с таким именем
if (LocalLayerTable.Has(LocalLayerName))
{
// MessageBox.Show("Слой с именем (" + LocalLayerName + ") уже существует", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return false;
}
else
{
return true;
}
}
}
}