Сортировка в Selectionset

Автор Тема: Сортировка в Selectionset  (Прочитано 8151 раз)

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

Оффлайн alihovskyАвтор темы

  • ADN OPEN
  • Сообщений: 27
  • Карма: 2
Сортировка в Selectionset
« : 13-09-2018, 21:02:56 »
Застрял, на сортировке массива  :'(:

есть Selectionset с фильтром 3DSolid, у данных солидов имеется (или не имеется, не суть) xdata с неким значением (в моем случае:номером детали), причем последовательность номеров не обязательно: 1,2,3 и тд, а вариативно(то есть, может быть: 35,3,6 и тд.),
при этом метод  SelectOnScreen, естественно, по своему нумерует объекты в данной выборке ( то есть Item1,Item2,Item3 и тд. и очередность этих Items, наверняка, зависит от времени создания объекта, но не суть)
 Вопрос к seniors developers :):
Допустим: три солида имеют xdata(1)="35","3","6"
как изменить Selectionset, или я не знаю что нужно изменить :'(, что бы в следующем модуле (или в текущем, не суть ) действия совершались сначала с солидом xdata(1) которого "3", затем следующим с xdata(1)="6" и соответственно  "35", то есть по убыванию
Спасибо

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Сортировка в Selectionset
« Ответ #1 : 13-09-2018, 21:21:06 »
Создай из этого SelectionSet SortedDictionary<string, ObjectId> - вот у тебя и будет отсортированный список.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Сортировка в Selectionset
« Ответ #2 : 13-09-2018, 21:23:24 »
действия совершались сначала с солидом xdata(1) которого "3", затем следующим с xdata(1)="6" и соответственно  "35", то есть по убыванию
Вообще-то, это называется по возрастанию. Но: 
но не суть
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Сортировка в Selectionset
« Ответ #3 : 13-09-2018, 22:35:11 »
Только сейчас обратил внимание, что этот вопрос в разделе VBA. Тогда сортировку придётся писать самостоятельно или искать в интернете готовую.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн alihovskyАвтор темы

  • ADN OPEN
  • Сообщений: 27
  • Карма: 2
Re: Сортировка в Selectionset
« Ответ #4 : 14-09-2018, 07:21:47 »
Да, по возрастанию. Я нашел метод который так сортирует ячейки в excel, беда в том что в VBA индекс Item: only for input , т. е. ввести то можно а изменить нельзя. Похоже, что нужно чистить Selectionset и заново собирать в нужной последовательности

Оффлайн alihovskyАвтор темы

  • ADN OPEN
  • Сообщений: 27
  • Карма: 2
Re: Сортировка в Selectionset
« Ответ #5 : 14-09-2018, 07:41:27 »
Создай из этого SelectionSet SortedDictionary<string, ObjectId> - вот у тебя и будет отсортированный список.
А такой метод доступен в VB.Net?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Сортировка в Selectionset
« Ответ #6 : 14-09-2018, 09:36:18 »
А такой метод доступен в VB.Net?
Доступен. Но я рекомендую сразу забыть про VB.NET и учить C#.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн alihovskyАвтор темы

  • ADN OPEN
  • Сообщений: 27
  • Карма: 2
Re: Сортировка в Selectionset
« Ответ #7 : 15-09-2018, 13:54:15 »
Доступен. Но я рекомендую сразу забыть про VB.NET и учить C#.
Ок, забыл.
 Теперь:
у меня есть VS 2015(отказался от официальной VS 2017, поскольку, очень капризная(сам определил) и тормозная(по отзывам seniors)),acad 2017 студенческий, заготовка С# "pick first"(по моему эти заготовки, загружаются как "Wizard",точно не помню), куда идти за справочным материалом, ну хотя бы что бы C#  определил, что выбранные объекты являются selectionset и за тем колдовать с xdata ????

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Сортировка в Selectionset
« Ответ #8 : 15-09-2018, 17:59:37 »
куда идти за справочным материалом, ну хотя бы что бы C#  определил, что выбранные объекты являются selectionset и за тем колдовать с xdata ??? ?
Вопрос очень странный. Наверное в первую очередь идти сюда и задавать конкретные вопросы:
AutoCAD .NET API
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн alihovskyАвтор темы

  • ADN OPEN
  • Сообщений: 27
  • Карма: 2
Re: Сортировка в Selectionset
« Ответ #9 : 26-09-2018, 13:36:22 »
Здравствуйте.
Отсортивал.  Применил метод всплывающего пузырька, затем, как и предпологал,очистил Selectionset  из заново собрал в отсортированном порядке. Показалось странным, что Count Selectionset-а
в VBA задается = 0 Тo Count - 1, приэтом  при сортировке мне пришлось задать = 0 To Count - 2, иначе VBA ругается ::). Код однако, не смотря на мои опасения, получилося коротким.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Сортировка в Selectionset
« Ответ #10 : 26-09-2018, 19:06:20 »
Показалось странным, что Count Selectionset-а
в VBA задается = 0 Тo Count - 1, приэтом  при сортировке мне пришлось задать = 0 To Count - 2, иначе VBA ругается ::)
Всё правильно. Так и должно было быть.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн alihovskyАвтор темы

  • ADN OPEN
  • Сообщений: 27
  • Карма: 2
Re: Сортировка в Selectionset
« Ответ #11 : 02-10-2018, 19:31:05 »
 Здравствуйте.

 Знаю, что   не пишите в VBA, не подскажите тогда к кому обратиться с таким вопросом:
 Есть два цикла(For.. Next)  для  одного и того же набора объектов. Первый находит объекты с одинаковыми значениями в xdata(номер детали)  и удаляет их из набора, оставляя один объект  , для которого, назначается Xdata (количество деталей с одинаковым номером)   . В следующем цикле хочу вытянуть данные, но Xdata в итоге приходит для всех объектов второго цикла только одна, естественно та которая назначена последнему объекту первого цикла.

 В один цикл не могу поместить код, поскольку действия из второго цикла необходимо применять к набору без лишних объектов(удаленных в первом цикле) .

 Чувствую, что не правильный ход, но как догадываюсь, вместо цикл+цикл  нужна одна конструкция Do While...Exit Do (или эта же конструкция +обычный цикл)  и вот  тут  как раз совсем теряю понимание...

 Спасибо.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Сортировка в Selectionset
« Ответ #12 : 02-10-2018, 22:28:54 »
Без понимания того зачем это всё надо подсказать что-то сложно. Ну сделай дубликат набора и первый цикл с оригиналом набора, а второй цикл с копией. Хотя у меня есть устойчивое подозрение, что наборы здесь не нужны.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн alihovskyАвтор темы

  • ADN OPEN
  • Сообщений: 27
  • Карма: 2
Re: Сортировка в Selectionset
« Ответ #13 : 13-10-2018, 08:19:33 »
Здравствуйте

 Оказывается если задекларировано
Dim xdata(0 To 2) As Variant
то VBA не читает эти данные в текущем плагине может назначить,но читает только если запустить новый плагин и соответственно считывать xdata

Как я писал, у меня два цикла в одном плагине, в первом назначаю xdata, в следующем пытаюсь считать.
selectionset.update не обновляет
 
 Не знаю на сколько верное решение или нет, но оно срабатывает, нужно просто задекларировать
Dim xdata As Variant
тогда xdata читается, правда не зная как передекларировать в одном модуле эту переменную воспользовался оператором Call ... и в вызываемом модуле задекларировал
Dim xdata As Variant