public static class AxisFunction
{
/// <summary>Имя примитива, помещаемое в XData</summary>
public const string MPCOEntName = "mpAxis";
/// <summary>Отображаемое имя примитива</summary>
public const string MPCOEntDisplayName = "Прямая ось";
public static void Initialize()
{
// Ненужное убрал
// Подписываюсь на события
AcApp.BeginDoubleClick += AcApp_BeginDoubleClick;
AcApp.DocumentManager.DocumentLockModeChanged += DocumentManager_DocumentLockModeChanged;
}
private static bool UseBedit = true;
private static void DocumentManager_DocumentLockModeChanged(object sender, Autodesk.AutoCAD.ApplicationServices.DocumentLockModeChangedEventArgs e)
{
if(!UseBedit)
if (e.GlobalCommandName == "BEDIT")
{
e.Veto();
}
}
private static void AcApp_BeginDoubleClick(object sender, Autodesk.AutoCAD.ApplicationServices.BeginDoubleClickEventArgs e)
{
PromptSelectionResult psr = AcadHelpers.Editor.SelectAtPickBox(e.Location);
if (psr.Status != PromptStatus.OK) return;
ObjectId[] ids = psr.Value.GetObjectIds();
if (ids.Length == 1)
{
var location = e.Location;
using (AcadHelpers.Document.LockDocument())
{
using (Transaction tr = AcadHelpers.Database.TransactionManager.StartTransaction())
{
var obj = tr.GetObject(ids[0], OpenMode.ForWrite);
if (obj is BlockReference blockReference &&
ExtendedDataHelpers.IsMPCOentity(blockReference, AxisFunction.MPCOEntName))
{
UseBedit = false; // Запрет работы редактора блоков
var axis = AxisXDataHelper.GetAxisFromEntity(blockReference);
axis.UpdateEntities();
if (MainStaticSettings.Settings.AxisUsePluginTextEditor)
{
AxisValueEditor axisValueEditor = new AxisValueEditor {Axis = axis};
axisValueEditor.ShowDialog();
}
else
{
// тут будет обычный редактор текста
}
}
else UseBedit = true; // Пусть работает редактор блоков
tr.Commit();
}
}
}
}
public static void Terminate()
{
// .....
}
}