Инструменты пользователя

Инструменты сайта


developers:tutorial:customentity

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
developers:tutorial:customentity [2022/12/15 12:50]
proxor [Команда вставки примитива на план]
developers:tutorial:customentity [2022/12/15 13:14] (текущий)
proxor [Контроллер пользовательского примитива.]
Строка 7: Строка 7:
 Для создания пользовательского примитива необходимы следующие действия Для создания пользовательского примитива необходимы следующие действия
   - Создание класса примитива,​ наследника от **DwgEntity** и связь его с чертежом и контроллером через атрибуты **DesignAliasAttribute** и **EntityControllerAttribute**.   - Создание класса примитива,​ наследника от **DwgEntity** и связь его с чертежом и контроллером через атрибуты **DesignAliasAttribute** и **EntityControllerAttribute**.
-  - Создание класса контроллера примитива,​ наследника от DwgEntityController. Он служит для графического отображения на плане и 3D-виде+  - Создание класса контроллера примитива,​ наследника от **DwgEntityController**. Он служит для графического отображения на плане и 3D-виде
   - Создание команды добавления примитива на план   - Создание команды добавления примитива на план
  
Строка 17: Строка 17:
   * Topomatic.Cad.View.dll - элемент управления для отображения слоёв моделей   * Topomatic.Cad.View.dll - элемент управления для отображения слоёв моделей
   * Topomatic.ComponentModel.dll – атрибуты свойств класса   * Topomatic.ComponentModel.dll – атрибуты свойств класса
-  * Topomatic.Dwg.dll –классы ​элементов области рисования+  * Topomatic.Dwg.dll – элементы области рисования
   * Topomatic.Dwg.Layer.dll – слои области рисования   * Topomatic.Dwg.Layer.dll – слои области рисования
-  * Topomatic.Visualization.dll - классы ​элементов информационной модели+  * Topomatic.Visualization.dll - элементы информационной модели
  
 ==== Пользовательский примитив ==== ==== Пользовательский примитив ====
Строка 441: Строка 441:
         var e = (CustomDwgEntity)entity;​         var e = (CustomDwgEntity)entity;​
         var has_grips = false;         var has_grips = false;
-        var drawing ​e.Drawing+        var grip new EntityGrip(((CadView)cadview),​ entity)
-        ​var obj = e.TypedObject+        ​grip.Location ​= e.Position
-        var cadView ​(CadView)cadview+        var e.Position.Z
-        ​foreach (var p in obj.GetAllProperties())+        ​grip.Move += delegate ​(Vector3D vertex)
         {         {
-            ​var grips = TypedPropertyManagerCollection.Current.GetGrips(cadView,​ drawing, obj, p, e.Matrix);​ +            e.Position = new Vector3D(vertex.Pos,​ z); 
-            if (grips != null) +        }; 
-            { +        yield return grip;
-                foreach (var tg in grips) +
-                { +
-                    if (tg.Location.EqualsEps(e.Position)) +
-                    { +
-                        has_grips = true; +
-                    } +
-                    yield return tg; +
-                } +
-            } +
-        } +
-        if (!has_grips) +
-        { +
-            var grip = new EntityGrip(((CadView)cadview),​ entity); +
-            grip.Location = e.Position;​ +
-            var z = e.Position.Z;​ +
-            grip.Move += delegate (Vector3D vertex) +
-            { +
-                ​e.Position = new Vector3D(vertex.Pos,​ z); +
-            }; +
-            yield return grip; +
-        }+
     }     }
     ​     ​
     protected override void OnPaintEntity3d(DwgEntity entity, PaintEntityEventArgs args)     protected override void OnPaintEntity3d(DwgEntity entity, PaintEntityEventArgs args)
 +    {
 +        var e = (CustomDwgEntity)entity;​
 +        var dc = args.Pen.DeviceContext;​
 +        if (args.Pen.DeviceContext.gContains(e.Bounds3d))
         {         {
-            var e (CustomDwgEntity)entity; +            var cache = e.GetCache(); 
-            var dc = args.Pen.DeviceContext+            if (cache != null)
-            if (!e.HasCache3D)+
             {             {
-                ​if (dc.Simplify)+                ​var pivot = dc.Pivot; 
 +                dc.Pivot = e.Position;​ 
 +                try
                 {                 {
-                    ​dc.RequestRedraw()+                    ​cache.Paint(dc);
-                    return;+
                 }                 }
-            } +                finally
-            if (args.Pen.DeviceContext.gContains(e.Bounds3d)) +
-            { +
-                var cache = e.Cache; +
-                if (cache != null)+
                 {                 {
-                    ​var pivot = dc.Pivot; +                    dc.Pivot = pivot;
-                    dc.Pivot = e.Position;​ +
-                    try +
-                    { +
-                        cache.Paint(dc);​ +
-                    } +
-                    finally +
-                    { +
-                        ​dc.Pivot = pivot; +
-                    }+
                 }                 }
             }             }
         }         }
 +    }
  
     public override double? Fire(DwgEntity entity, Ray3D ray)     public override double? Fire(DwgEntity entity, Ray3D ray)
-        ​+    ​
-            var e = (CustomDwgEntity)entity;​ +        var e = (CustomDwgEntity)entity;​ 
-            return e.Fire(ray);​ +        return e.Fire(ray);​ 
-        }+    }
 } }
  
developers/tutorial/customentity.1671108638.txt.gz · Последние изменения: 2022/12/15 12:50 — proxor