Заметка содержит пример программного создания и детальной настройки стиля мультилиний в AutoCAD.
В результате работы кода (команда CreateMultilineStyle) будет создан новый стиль мультилиний:
В коде каждая изменяемая нами опция настроек помечена комментарием, содержащим наименование этой опции в англоязычной версии AutoCAD.
В результате работы кода (команда CreateMultilineStyle) будет создан новый стиль мультилиний:
В коде каждая изменяемая нами опция настроек помечена комментарием, содержащим наименование этой опции в англоязычной версии AutoCAD.
/* MultilineStyleSample.cs
* © Андрей Бушман, 2014
* Пример создания стиля мультилиний.
*/
using System;
using cad = Autodesk.AutoCAD.ApplicationServices
.Application;
using Ap = Autodesk.AutoCAD.ApplicationServices;
using Db = Autodesk.AutoCAD.DatabaseServices;
using Ed = Autodesk.AutoCAD.EditorInput;
using Rt = Autodesk.AutoCAD.Runtime;
using Clr = Autodesk.AutoCAD.Colors;
[assembly: Rt.CommandClass(typeof(Bushman.CAD
.Samples.Styles.MultilineStyleSample))]
namespace Bushman.CAD.Samples.Styles {
public class MultilineStyleSample {
[Rt.CommandMethod("CreateMultilineStyle",
Rt.CommandFlags.Modal)]
public void createmlinestyle() {
Ap.Document doc = cad.DocumentManager
.MdiActiveDocument;
if(doc == null)
return;
Ed.Editor ed = doc.Editor;
Db.Database db = doc.Database;
using(doc.LockDocument()) {
using(Db.Transaction tr =
db.TransactionManager.StartTransaction())
{
Db.DBDictionary mlDict =
(Db.DBDictionary)tr.GetObject(
db.MLStyleDictionaryId,
Db.OpenMode.ForWrite);
String mlineStyleName = "Пример";
if(!mlDict.Contains(mlineStyleName)) {
Db.MlineStyle mlineStyle =
new Db.MlineStyle();
// Multiline Style name
mlineStyle.Name = mlineStyleName;
mlineStyle.Description =
"Некоторое описание";
mlDict.SetAt(mlineStyleName,
mlineStyle);
tr.AddNewlyCreatedDBObject(
mlineStyle, true);
Double angleGrad = 90.0;
Double angleRadian = angleGrad
* Math.PI / 180; // angle
// Start line
mlineStyle.StartSquareCap = true;
// Start Outer arcs
mlineStyle.StartRoundCap = true;
// Start Inner arcs
mlineStyle.StartInnerArcs = true;
// Start angle
mlineStyle.StartAngle = angleRadian;
// End line
mlineStyle.EndSquareCap = true;
// End Outer arcs
mlineStyle.EndRoundCap = true;
// End Inner arcs
mlineStyle.EndInnerArcs = true;
// End angle
mlineStyle.EndAngle = angleRadian;
Clr.Color color = Clr.Color.FromRgb(
255, 0, 0);
// Fill color
mlineStyle.Filled = true;
mlineStyle.FillColor = color;
// Display joints
mlineStyle.ShowMiters = true;
Db.MlineStyleElement element =
new Db.MlineStyleElement(0.15,
color, db.Celtype);
// First element
mlineStyle.Elements.Add(element, true
);
element = new Db.MlineStyleElement(
-0.15, color, db.Celtype);
mlineStyle.Elements.Add(element,
false); // Second element
}
tr.Commit();
}
}
}
}
}