Аналог быстрого выбора

Автор Тема: Аналог быстрого выбора  (Прочитано 16128 раз)

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

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Аналог быстрого выбора
« Ответ #15 : 07-02-2017, 01:41:52 »
Думаю что нет. Это если пользователь предварительно выбрал "зелёные рамки". В противном случае ты должен выбрать их сам программно, т.е. через метод Select, с правильным фильтром.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение serzh82saratov 08-02-2017, 14:08:21

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Аналог быстрого выбора
« Ответ #16 : 07-02-2017, 01:48:50 »
Код - Visual Basic [Выбрать]
  1. gpCode(0) = 62
  2. dataValue(0) = 3 ' со смартфона не могу посмотреть номер зелёного цвета
  3.    
   
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 21
  • Карма: 1
Re: Аналог быстрого выбора
« Ответ #17 : 07-02-2017, 01:50:57 »
С фильтром то и проблема, примеры не понятны. Сейчас выполняю _qselect, после в окошке выбираются нужные строки в контролах, жмётся Ок. Короче пока костыль.


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

  • ADN OPEN
  • Сообщений: 21
  • Карма: 1
Re: Аналог быстрого выбора
« Ответ #18 : 07-02-2017, 01:53:36 »
gpCode(0) = 62
62, это где посмотреть?
dataValue(0) = 4 ' со смартфона не могу посмотреть номер зелёного цвета
И это тоже?
[, Point1] [, Point2] - И не ясно что за точки мне нужны.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Аналог быстрого выбора
« Ответ #19 : 07-02-2017, 01:53:58 »
serzh82saratov
Используй в примере кода, который я давал раньше тот фильтр, который я дал сейчас.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Аналог быстрого выбора
« Ответ #20 : 07-02-2017, 01:56:23 »
[, Point1] [, Point2] - И не ясно что за точки мне нужны.
Точки передавать не нужно. Вместо них в VBA просто запятые. 62 - это DXF-код цвета, 3 - это зелёный цвет.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Аналог быстрого выбора
« Ответ #21 : 07-02-2017, 01:58:28 »
Коды DXF-групп можешь посмотреть здесь: http://www.autodesk.com/techpubs/autocad/acad2000/dxf/group_codes_in_numerical_order_dxf_01.htm
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 21
  • Карма: 1
Re: Аналог быстрого выбора
« Ответ #22 : 07-02-2017, 02:14:19 »
Спасибо.
Set ssetObj = ThisDrawing.SelectionSets.Add("SSET")А тут мне нужно что то другое, если надо применить ко всему чертежу?

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Аналог быстрого выбора
« Ответ #23 : 07-02-2017, 02:17:20 »
А тут мне нужно что то другое, если надо применить ко всему чертежу?
Не это определяет ко всему чертежу или нет. Это определяется mode (5 - выбор со всего чертежа)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 21
  • Карма: 1
Re: Аналог быстрого выбора
« Ответ #24 : 07-02-2017, 02:28:24 »
Чем ближе к решению, тем непонятнее ошибки. Ругается на FilterType.
Цитировать
Error:  0x80070057 - Параметр задан неверно.
Source:      AutoCAD
Description:   Недопустимый аргумент FilterType в Select
ACAD.ActiveDocument.ActiveSelectionSet.Select(5, , , 62, 3)

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Аналог быстрого выбора
« Ответ #25 : 07-02-2017, 02:32:02 »
В таком виде 62 и 3 задавать нельзя. Это же массивы "завернутые" в Variant, а не просто целые числа.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 21
  • Карма: 1
Re: Аналог быстрого выбора
« Ответ #26 : 07-02-2017, 02:46:15 »
Это же массивы "завернутые" в Variant
Блин, не сталкивался с таким. В виде массива пробовал. А не просвятите что значит - "завернутые" в Variant.

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

  • ADN OPEN
  • Сообщений: 21
  • Карма: 1
Re: Аналог быстрого выбора
« Ответ #27 : 07-02-2017, 02:50:34 »
Если есть что к этому добавить - https://msdn.microsoft.com/ru-ru/library/office/gg251448.aspx.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Аналог быстрого выбора
« Ответ #28 : 07-02-2017, 10:08:09 »
На VBA этот код выглядит так:
Код - Visual Basic [Выбрать]
  1. Sub Select_Green()
  2.     On Error Resume Next
  3.     Set ss = ThisDrawing.ActiveSelectionSet
  4.     Dim gpCode(0) As Integer
  5.     Dim dataValue(0) As Variant
  6.     gpCode(0) = 62
  7.     dataValue(0) = 3
  8.     Dim groupCode As Variant, dataCode As Variant
  9.     groupCode = gpCode
  10.     dataCode = dataValue
  11.     ss.Select acSelectionSetAll, , , groupCode, dataCode
  12.     MsgBox "Выбрано зелёных объектов: " & CStr(ss.Count)
  13. End Sub
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Пашин Евгений

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Re: Аналог быстрого выбора
« Ответ #29 : 07-02-2017, 10:39:55 »
На VBA этот код выглядит так:

Увы, Александр Наумович, не совсем так. Можно чуток вмешаюсь? Почему-то Ваш код не срабатывал как надо. Но сейчас всё сработало!!! Приношу извинения.

Код - Visual Basic [Выбрать]
  1. Public Sub Select_Green()
  2.     Dim ss As AcadSelectionSet
  3.     ss.Clear ' Почистим выборку
  4.    On Error Resume Next
  5.     Set ss = ThisDrawing.ActiveSelectionSet
  6.     Dim gpCode(0) As Integer
  7.     Dim dataValue(0) As Variant
  8.     gpCode(0) = 62 ' Фильтр по цвету
  9.    dataValue(0) = 3 ' Зелёный цвет
  10.    ss.Select acSelectionSetAll, , , gpCode, dataValue
  11.     MsgBox "Выбрано зелёных объектов: " & CStr(ss.Count)
  12. End Sub

Так точно сработает как надо. Так тоже работает, просто меньше дополнительных параметров.

Код - Visual Basic [Выбрать]
  1. ss.Delete ' Можно поставить в конце, чтобы не висело выполнение процедуры