using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.GraphicsInterface;
using Autodesk.AutoCAD.Runtime;
using Autodesk.Civil.DatabaseServices;
using AcDb = Autodesk.AutoCAD.DatabaseServices;
namespace CivilTest
{
class PViewStructLabelDrawOverrule : DrawableOverrule
{
public override void ViewportDraw(Drawable drawable, ViewportDraw vd)
{
StructureProfileLabel label = drawable as StructureProfileLabel;
if (!ReferenceEquals(label, null))
{
// Получаем COM объект метки колодца на виде профиля
dynamic labelCOM = label.AcadObject;
// Из свойства COM объекта метки получаем COM объект колодца на виде
// профиля, к которому относится эта метка (через .NET не получить)
dynamic pViewPartCOM = labelCOM.ProfileNetworkPart;
// Получаем Id колодца на виде профиля
ObjectId pViewPartId = AcDb.DBObject.FromAcadObject(pViewPartCOM);
}
base.ViewportDraw(drawable, vd);
}
}
public class PViewStructLabelDrawOverruleCmd
{
static PViewStructLabelDrawOverrule m_overrule = null;
[CommandMethod("PViewStructLabelDrawOverruleOnOff")]
public static void CmdRun()
{
if (ReferenceEquals(m_overrule, null))
{
m_overrule = new PViewStructLabelDrawOverrule();
Overrule.AddOverrule
(RXClass.GetClass(typeof(StructureProfileLabel)),
m_overrule, false);
Overrule.Overruling = true;
}
else
{
Overrule.RemoveOverrule
(RXClass.GetClass(typeof(StructureProfileLabel)),
m_overrule);
m_overrule = null;
}
Application.DocumentManager.
MdiActiveDocument.Editor.Regen();
}
}
}