Сообщество программистов Autodesk в СНГ

ADN Club => AutoLisp / VisualLISP и DCL => Тема начата: 1958 от 19-06-2017, 19:12:14

Название: функция vla-get-activeselectionset
Отправлено: 1958 от 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))))

не срабатывает, все равно идет запрос на выбор объектов.
Название: Re: функция vla-get-activeselectionset
Отправлено: Александр Ривилис от 19-06-2017, 20:25:55
Если я правильно понимаю, функция vla-get-activeselectionset позволяет выбрать примитивы
Уже неправильно. Эта функция позволяет вернуть набор уже выбранных примитивов.
Название: Re: функция vla-get-activeselectionset
Отправлено: Александр Ривилис от 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.  
Название: Re: функция vla-get-activeselectionset
Отправлено: 1958 от 19-06-2017, 20:36:16
Всё равно идет запрос на выбор объектов. Как же все таки сделать выбор всего и вся?
Название: Re: функция vla-get-activeselectionset
Отправлено: Александр Ривилис от 19-06-2017, 20:38:29
Всё равно идет запрос на выбор объектов. Как же все таки сделать выбор всего и вся?
Где идёт запрос? В том коде, который я привёл??? Подтверди видео.
Название: Re: функция vla-get-activeselectionset
Отправлено: 1958 от 19-06-2017, 20:56:38
Честно говоря, я уже запутался! А нужно мне всего лишь получить среднюю точку чертежа.
Название: Re: функция vla-get-activeselectionset
Отправлено: Александр Ривилис от 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"))))
Название: Re: функция vla-get-activeselectionset
Отправлено: 1958 от 19-06-2017, 21:42:37
Получаешь значения системных переменных EXTMIN и EXTMAX и находишь среднее арифметическое.

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