функция vla-get-activeselectionset

Автор Тема: функция vla-get-activeselectionset  (Прочитано 9177 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

  • ADN OPEN
  • **
  • Сообщений: 93
  • Карма: 0
функция vla-get-activeselectionset
« : 19-06-2017, 19:12:14 »
Если я правильно понимаю, функция vla-get-activeselectionset позволяет выбрать примитивы и, преобразовав их во vla-object, поместить в набор. Т.е. выполнив (setq ass (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object)))), в ass имеем набор vla-объектов.
А как выбрать сразу все примитивы чертежа?
Конструкция :

(ssget "_X")
(setq ass (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object))))

не срабатывает, все равно идет запрос на выбор объектов.

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: функция vla-get-activeselectionset
« Ответ #1 : 19-06-2017, 20:25:55 »
Если я правильно понимаю, функция vla-get-activeselectionset позволяет выбрать примитивы
Уже неправильно. Эта функция позволяет вернуть набор уже выбранных примитивов.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: функция vla-get-activeselectionset
« Ответ #2 : 19-06-2017, 20:30:49 »
Должно быть как-то так:
Код - Auto/Visual Lisp [Выбрать]
  1. (setq ss (vla-add (vla-get-selectionsets (vla-get-activedocument (vlax-get-acad-object))) "SSET"))
  2. (vla-select ss acselectionsetall)
  3.  
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 93
  • Карма: 0
Re: функция vla-get-activeselectionset
« Ответ #3 : 19-06-2017, 20:36:16 »
Всё равно идет запрос на выбор объектов. Как же все таки сделать выбор всего и вся?

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: функция vla-get-activeselectionset
« Ответ #4 : 19-06-2017, 20:38:29 »
Всё равно идет запрос на выбор объектов. Как же все таки сделать выбор всего и вся?
Где идёт запрос? В том коде, который я привёл??? Подтверди видео.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 93
  • Карма: 0
Re: функция vla-get-activeselectionset
« Ответ #5 : 19-06-2017, 20:56:38 »
Честно говоря, я уже запутался! А нужно мне всего лишь получить среднюю точку чертежа.

Отмечено как Решение 1958 19-06-2017, 21:42:43

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: функция vla-get-activeselectionset
« Ответ #6 : 19-06-2017, 20:58:01 »
А нужно мне всего лишь получить среднюю точку чертежа.
Получаешь значения системных переменных EXTMIN и EXTMAX и находишь среднее арифметическое.
Вот так:
Код - Auto/Visual Lisp [Выбрать]
  1. (setq p (mapcar '* '(0.5 0.5 0.5) (mapcar '+ (getvar "EXTMIN") (getvar "EXTMAX"))))
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 93
  • Карма: 0
Re: функция vla-get-activeselectionset
« Ответ #7 : 19-06-2017, 21:42:37 »
Получаешь значения системных переменных EXTMIN и EXTMAX и находишь среднее арифметическое.

Блин! Так просто!