using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
namespace testspds
{
public class MyClass
{
[CommandMethod("mylinegrip")]
public void mylinegrip()
{
ObjectOverrule.AddOverrule(RXClass.GetClass(typeof(Line)), MyLineGripOverruleClass.Instance, true);
Document doc = Application.DocumentManager.MdiActiveDocument;
doc.Editor.Regen();
}
}
public class MyLineGripOverruleClass : GripOverrule
{
public static MyLineGripOverruleClass Instance = new MyLineGripOverruleClass();
public override void GetGripPoints(Entity entity, GripDataCollection grips, double curViewUnitSize, int gripSize, Vector3d curViewDir, GetGripPointsFlags bitFlags)
{
Line line = (Line)entity;
MyLineGripClass gd = new MyLineGripClass();
gd.GripPoint = new Point3d(line.EndPoint.X + line.Length / 10, line.EndPoint.Y, 0);
grips.Add(gd);
base.GetGripPoints(entity, grips, curViewUnitSize, gripSize, curViewDir, bitFlags);
}
}
public class MyLineGripClass : GripData
{
public override ReturnValue OnHotGrip(ObjectId entityId, Context contextFlags)
{
Line line;
Database db = Application.DocumentManager.MdiActiveDocument.Database;
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
using (Transaction trans = db.TransactionManager.StartTransaction())
{
line = (Line)entityId.GetObject(OpenMode.ForRead);
ed.WriteMessage("\n" + line.Length.ToString("0.000"));
trans.Abort();
}
return base.OnHotGrip(entityId, contextFlags);
}
}
}