OsnapOverrule тормозит на внешних ссылках

Автор Тема: OsnapOverrule тормозит на внешних ссылках  (Прочитано 6784 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: OsnapOverrule тормозит на внешних ссылках
« Ответ #15 : 15-10-2017, 17:51:09 »
А что, если в конструкторе BreakLineOsnapOverrule вызвать SetXDataFilter и убрать переопределение IsApplicable?
Вильдар, красавчик! С меня завтра пирожок!
Переделал так:
Код - C# [Выбрать]
  1. using System;
  2. using Autodesk.AutoCAD.DatabaseServices;
  3. using Autodesk.AutoCAD.Geometry;
  4. using ModPlusAPI.Windows;
  5.  
  6. namespace mpESKD.Functions.mpBreakLine.Overrules
  7. {
  8.     public class BreakLineOsnapOverrule : OsnapOverrule
  9.     {
  10.         protected static BreakLineOsnapOverrule _breakLineOsnapOverrule;
  11.         public static BreakLineOsnapOverrule Instance()
  12.         {
  13.             if (_breakLineOsnapOverrule != null) return _breakLineOsnapOverrule;
  14.             _breakLineOsnapOverrule = new BreakLineOsnapOverrule();
  15.             _breakLineOsnapOverrule.SetXDataFilter(BreakLineFunction.MPCOEntName);
  16.             return _breakLineOsnapOverrule;
  17.         }
  18.  
  19.         public override void GetObjectSnapPoints(Autodesk.AutoCAD.DatabaseServices.Entity entity, ObjectSnapModes snapMode, IntPtr gsSelectionMark, Point3d pickPoint,
  20.             Point3d lastPoint, Matrix3d viewTransform, Point3dCollection snapPoints, IntegerCollection geometryIds)
  21.         {
  22.             try
  23.             {
  24.                 var breakLine = BreakLineXDataHelper.GetBreakLineFromEntity(entity);
  25.                 if (breakLine != null)
  26.                 {
  27.                     snapPoints.Add(breakLine.InsertionPoint);
  28.                     snapPoints.Add(breakLine.EndPoint);
  29.                 }
  30.             }
  31.             catch (Autodesk.AutoCAD.Runtime.Exception exception)
  32.             {
  33.                 ExceptionBox.Show(exception);
  34.             }
  35.         }
  36.     }
  37. }
В описанном случае тормоза исчезли. Правда появились новые и в немного в другом месте, но возможно это не взаимосвязано )) В любом случае - это уже вопрос для новой темы, если сам не решу