C# Программное выделение и подсветка объектов - Страница 2
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > C# Программное выделение и подсветка объектов

C# Программное выделение и подсветка объектов

Ответ
Поиск в этой теме
Непрочитано 29.12.2009, 15:41
C# Программное выделение и подсветка объектов
hwd
 
C, C++, C#
 
С-Пб.
Регистрация: 07.10.2009
Сообщений: 2,762

Вопросы в комментариях кода:
Код:
[Выделить все]
            using (Transaction trans = db.TransactionManager.StartTransaction())
            {
                BlockTable blockTable = trans.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
                BlockTableRecord modelSpace = trans.GetObject(blockTable[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;

                List<ObjectId> objects = new List<ObjectId>();                
                foreach (ObjectId asObjId in modelSpace)
                {
                    ed.WriteMessage("\nDXF name: " + asObjId.ObjectClass.DxfName);
                    ed.WriteMessage("\nObjectID: " + asObjId.ToString());
                    ed.WriteMessage("\nHandle: " + asObjId.Handle.ToString());                    
                    ed.WriteMessage("\n");
                    objects.Add(asObjId);
                }             
                //Вопросы:
                //1.Как программно подсветить (не путать с выделением ручками) все объекты, входящие в коллекцию objects?
                //2.Как программно выделить ручками все объекты, входящие в коллекцию objects?

                //Пытался так:
                SelectionSet selection = SelectionSet.FromObjectIds(objects.ToArray());//А дальше застопорился...
            }
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось Кулик Алексей aka kpblc, 29.12.2009 в 16:05.
Просмотров: 12232
 
Автор темы   Непрочитано 30.12.2009, 12:06
#21
hwd

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


Цитата:
Сообщение от Олег (jr.) Посмотреть сообщение
У меня такого нет - смотри рисунок

~'J'~
не знаю в чём дело...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 30.12.2009, 12:19
#22
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Теоретически должно разрешить неоднозначность.
Код:
[Выделить все]
ObjectId[] dummy = null; // ссылка на массив, чтобы успокоить компилятор.
ed.SetImpliedSelection(dummy);
__________________
...в шее моей жилы железные, и лоб мой - медный...

Последний раз редактировалось Pastor, 30.12.2009 в 12:25.
Pastor вне форума  
 
Автор темы   Непрочитано 30.12.2009, 12:25
#23
hwd

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


Спасибо А. Ривилису за линк.
Я пробовал
Код:
[Выделить все]
ed.SetImpliedSelection(null);
и
Код:
[Выделить все]
ed.SetImpliedSelection(new ObjectId[1]);
а нужно было
Код:
[Выделить все]
ed.SetImpliedSelection(new ObjectId[0]);
тогда работает

п.с. я подумал, что создать массив из 0 элементов не удастся, потому и не пробовал с 0, а стоило...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 30.12.2009, 12:33
#24
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


A мой вариант пробовал?
__________________
...в шее моей жилы железные, и лоб мой - медный...
Pastor вне форума  
 
Автор темы   Непрочитано 30.12.2009, 12:41
#25
hwd

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


Цитата:
Сообщение от Pastor Посмотреть сообщение
A мой вариант пробовал?
кстати.... тоже работает оказывается... Но почему? Напрямую нулл не хочет есть, а в обход ест...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 30.12.2009, 12:55
#26
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от hwd Посмотреть сообщение
Спасибо А. Ривилису за линк.
Я пробовал
Код:
[Выделить все]
ed.SetImpliedSelection(null);
и
Код:
[Выделить все]
ed.SetImpliedSelection(new ObjectId[1]);
а нужно было
Код:
[Выделить все]
ed.SetImpliedSelection(new ObjectId[0]);
тогда работает

п.с. я подумал, что создать массив из 0 элементов не удастся, потому и не пробовал с 0, а стоило...
У меня тоже эти варианты (твой последний и от Pastor'a)
работают нормально
Не знаю прав ли я но мне кажется более логично

Код:
[Выделить все]
                    ObjectId[] dummy = new ObjectId[0] ;

                    ed.SetImpliedSelection(dummy);
Типа независимо Option Strict On или хум.

~'J'~
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 30.12.2009, 13:02
#27
hwd

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


ещё работает такой вариант:
Код:
[Выделить все]
ed.SetImpliedSelection(null as ObjectId[]);
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 30.12.2009, 13:22
#28
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от hwd Посмотреть сообщение
ещё работает такой вариант:
Код:
[Выделить все]
ed.SetImpliedSelection(null as ObjectId[]);
Тоже работает

~'J'~
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 30.12.2009, 13:25
#29
hwd

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


значит для совместимости с более свежими версиями акада нужно юзать рабочие варианты, дабы потом не было гемора при переходе на новый продукт. )
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 30.12.2009, 13:52
#30
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Судя по всему, метод SetImpliedSelection() в новой версии перегружен в двух вариантах и может принимать как SelectionSet, так и ObjectID[]. В случае, когда в качестве аргумента передается null, необходимо помочь компилятору разрешить неоднозначность. Поэтому достаточно передать ссылку на ObjectID[], чтобы компилятор определился с типом аргумента и соответственно с выбором перегруженного варианта метода.
Кстати (предположение), чтобы погасить ручки, можно передать пустой SelectionSet (второй из перегруженных вариантов).
__________________
...в шее моей жилы железные, и лоб мой - медный...

Последний раз редактировалось Pastor, 30.12.2009 в 14:10.
Pastor вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > C# Программное выделение и подсветка объектов

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выделение объектов с помощью клавиатуры phantom_l AutoCAD 6 24.02.2011 13:56
Обрезка объектов по принципу программы КРЕДО, Выделение объектов находящихся внутри заданного контура (автоматическая обрезка чертежа по кнтуру) МишаИнженер AutoCAD 6 25.08.2009 16:17
Выделение одинаковых объектов. Timofeeve AutoCAD 11 06.03.2009 09:59
Выделение объектов мышью из под макроса на VBA Автон Программирование 2 30.03.2006 06:45