Конфликт между AcDbTable и AcDbBlockReference при создании контекстного меню
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Конфликт между AcDbTable и AcDbBlockReference при создании контекстного меню

Конфликт между AcDbTable и AcDbBlockReference при создании контекстного меню

Ответ
Поиск в этой теме
Непрочитано 19.03.2013, 22:00 #1
Конфликт между AcDbTable и AcDbBlockReference при создании контекстного меню
Pavlukas
 
Регистрация: 18.01.2010
Сообщений: 16

Создал контекстное меню для блоков и для таблиц. Для блоков работает, а для таблицы выдает фатальную ошибку.
Отключаю контекстное меню для блоков и тогда меню для таблиц работает.
Кто с такой проблемой знаком?
Код:
[Выделить все]
Application.AddObjectContextMenuExtension(Autodesk.AutoCAD.DatabaseServices.Table.GetClass(
                typeof(Autodesk.AutoCAD.DatabaseServices.Table)), m_appMenu);

Application.AddObjectContextMenuExtension(Autodesk.AutoCAD.DatabaseServices.Table.GetClass(
                typeof(Autodesk.AutoCAD.DatabaseServices.BlockReference)), m_appMenu1);
Просмотров: 3566
 
Непрочитано 19.03.2013, 22:30
#2
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


@Pavlukas
Это смотрел?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 19.03.2013, 23:44
#3
Pavlukas


 
Регистрация: 18.01.2010
Сообщений: 16


Посмотрел. Но мой вопрос остается открытым.
Вот смотри, я код Кена немножко переделал
Код:
[Выделить все]
private static ContextMenuExtension cme;
        private static ContextMenuExtension cme1;

        public static void Attach()
        {
            cme = new ContextMenuExtension();
            MenuItem mi = new MenuItem("Count");
            mi.Click += new EventHandler(OnCount);
            cme.MenuItems.Add(mi);

            cme1 = new ContextMenuExtension();
            MenuItem mi1 = new MenuItem("Count1");
            mi1.Click += new EventHandler(OnCount);
            cme1.MenuItems.Add(mi1);


            RXClass rxc = Entity.GetClass(typeof(BlockReference));
            Application.AddObjectContextMenuExtension(rxc, cme);
            RXClass rxc1 = Entity.GetClass(typeof(Table));
            Application.AddObjectContextMenuExtension(rxc1, cme1);
        }
        public static void Detach()
        {
            RXClass rxc = Entity.GetClass(typeof(BlockReference));
            Application.RemoveObjectContextMenuExtension(rxc, cme);
            RXClass rxc1 = Entity.GetClass(typeof(Table));
            Application.RemoveObjectContextMenuExtension(rxc1, cme1);
        }
и получил следующее: Для BlockReference в меню появляется Count, а для Table Count1 и Count (сразу два меню)
Видимо дело в том, что AcDbTable наследует AcDbBlockReference
Pavlukas вне форума  
 
Непрочитано 20.03.2013, 11:28
#4
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Pavlukas Посмотреть сообщение
Посмотрел. Но мой вопрос остается открытым.
Неправильно. У тебя не вопрос остался открытым, а возник другой. Предыдущий вопрос, насколько я понимаю, разрешился (Fatal Error более не возникает).

Цитата:
Сообщение от Pavlukas Посмотреть сообщение
Видимо дело в том, что AcDbTable наследует AcDbBlockReference
Совершенно верно.
На самом деле всё решается достаточно просто (хотя и не совсем удобно). Ниже даю ссылку на код, в котором два варианта поведения (ненужный следует закомментировать, по умолчанию закомментирован первый вариант):
1. Блокировать доступность элементов меню.
2. Динамически добавлять\удалять элементы меню.

Код разместил здесь, чтобы был под рукой.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 20.03.2013 в 12:07.
hwd вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Конфликт между AcDbTable и AcDbBlockReference при создании контекстного меню



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19
Настройка контекстного меню Valery AutoCAD 9 31.07.2013 12:36
Косяк контекстного меню eilukha Разное 7 09.04.2008 13:58
Попасть в слой. Vova AutoCAD 106 10.03.2006 04:36