Заметка содержит пример программного создания и детальной настройки стиля мультилиний в 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();
        }
      }
    }
  }
}