hello everyone
i have a problem about OsnapOverrule. when i register a derived class of OsnapOverrule doing nothing but only calling the base classes GetObjectSnapPoints function , Autocad crashes after object snap tracking from the end point along the direction of polyline occurs. if i unchecked "extension" from object snap it just works fine. it only crashes while object snap tracking. Code is so plain as i said but i am posting it just in case
public class OsnapOverruleDemo : OsnapOverrule
{
private static OsnapOverruleDemo _singleton;
public static OsnapOverruleDemo Instance
{
get
{
if (_singleton == null)
{
_singleton = new OsnapOverruleDemo();
}
return _singleton;
}
}
protected OsnapOverruleDemo()
: base()
{
}
public void Register()
{
if (!Overrule.HasOverrule(Instance,RXClass.GetClass(typeof(Autodesk.AutoCAD.DatabaseServices.Polyline))))
{
Overrule.AddOverrule(RXClass.GetClass(typeof(Autodesk.AutoCAD.DatabaseServices.Polyline)), Instance, true);
}
}
public void UnRegister()
{
if (Overrule.HasOverrule(Instance, RXClass.GetClass(typeof(Autodesk.AutoCAD.DatabaseServices.Polyline))))
{
Overrule.RemoveOverrule(RXClass.GetClass(typeof(Autodesk.AutoCAD.DatabaseServices.Polyline)), Instance);
}
}
public override void GetObjectSnapPoints(Entity entity, ObjectSnapModes snapMode, IntPtr gsSelectionMark, Point3d pickPoint, Point3d lastPoint, Matrix3d viewTransform, Point3dCollection snapPoints, IntegerCollection geometryIds, Matrix3d insertionMat)
{
base.GetObjectSnapPoints(entity, snapMode, gsSelectionMark, pickPoint, lastPoint, viewTransform, snapPoints, geometryIds, insertionMat);
}
}
public class Demo
{
[CommandMethod("OverruleOn")]
public static void OverruleOn()
{
OsnapOverruleDemo.Instance.Register();
}
}
should i also implement other overrule functions like GeometryOverrules IntersectWith function or something like this?
thanks.
Hello,
I could reproduce the crash in AutoCAD 2011 / 2012 and 2013.
The issue seems to be specific to polyline and the extension osnap.
I have logged this behavior in our internal database for our engineering team to analyze.
Sorry, there is no workaround that I could find.
Can't find what you're looking for? Ask the community or share your knowledge.