LISP. Аналог SSSETFIRST для IAcadSelectionSet.
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Аналог SSSETFIRST для IAcadSelectionSet.

LISP. Аналог SSSETFIRST для IAcadSelectionSet.

Ответ
Поиск в этой теме
Непрочитано 28.01.2014, 08:52 #1
LISP. Аналог SSSETFIRST для IAcadSelectionSet.
ProPeller
 
Пастух
 
Питер
Регистрация: 16.07.2012
Сообщений: 318

Собственно по теме, подскажите пожалуйста метод аналогичный функции выбора ручек у набора, а то я что-то совсем никак не могу найти
__________________
Автоматизация должна быть автоматической.
Просмотров: 1797
 
Непрочитано 28.01.2014, 08:55
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Ничего не понял. Чем штатная sssetfirst не устраивает? Посмотри в справке - у нее 2 параметра. В зависимости от передаваемых параметров и вид будет разным.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 28.01.2014, 09:05
#3
ProPeller

Пастух
 
Регистрация: 16.07.2012
Питер
Сообщений: 318


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Ничего не понял. Чем штатная sssetfirst не устраивает? Посмотри в справке - у нее 2 параметра. В зависимости от передаваемых параметров и вид будет разным.
Наверное я не очень доступно вопрос изложил. SSSETFIRST работает с наборами созданными при помощи SSGET, а в моем случае выбор представляет из себя результат метода VLA-SELECT (VLA-SELECTONSCREEN и т.д.) и на выходе получается, например #<VLA-OBJECT IAcadSelectionSet 000000003282a718> . Вот я и пытаюсь узнать метод или какой другой способ выделения объектов именно из такого вида набора.
Надеюсь так понятно.
__________________
Автоматизация должна быть автоматической.
ProPeller вне форума  
 
Непрочитано 28.01.2014, 09:12
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Стоп. Работа вообще из-под AutoCAD или из-под стороннего приложения?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 28.01.2014, 09:24
#5
ProPeller

Пастух
 
Регистрация: 16.07.2012
Питер
Сообщений: 318


Из под AutoCAD
__________________
Автоматизация должна быть автоматической.
ProPeller вне форума  
 
Непрочитано 28.01.2014, 09:27
#6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Поскольку прозвучало "lisp", преобразовывай vla-набор в обычный pickset и подсвечивай его.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 28.01.2014, 09:38
#7
ProPeller

Пастух
 
Регистрация: 16.07.2012
Питер
Сообщений: 318


В общем я так и предполагал, что придется преобразовывать. Хотел отделаться "малой кровью" так сказать. Тогда вопрос следующий: как правильно выполнить преобразование? vlax-vla-object->ename в данном случае не помогает.
__________________
Автоматизация должна быть автоматической.
ProPeller вне форума  
 
Непрочитано 28.01.2014, 10:26
#8
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Код не проверял.
Код:
[Выделить все]
 (defun ssetfirst-vla (vla-selection / ss)

  (defun fun_conv-vla-to-list (value / res)
    (cond
      ((listp value)
       (mapcar (function fun_conv-vla-to-list) value)
       )
      ((= (type value) 'variant)
       (fun_conv-vla-to-list (vlax-variant-value value))
       )
      ((= (type value) 'safearray)
       (if (>= (vlax-safearray-get-u-bound value 1) 0)
         (fun_conv-vla-to-list (vlax-safearray->list value))
         ) ;_ end of if
       )
      ((and (member (type value) (list 'ename 'str 'vla-object))
            (= (type value) 'vla-object)
            (vlax-property-available-p (fun_conv-ent-to-vla value) 'count)
            ) ;_ end of and
       (vlax-for sub value
         (setq res (cons sub res))
         ) ;_ end of vlax-for
       )
      (t value)
      ) ;_ end of cond
    ) ;_ end of defun

  (setq ss (ssadd))
  (foreach ent (mapcar (function vlax-vla-object->ename)
                       (fun_conv-ent-to-vla vla-selection)
                       ) ;_ end of mapcar
    (ssadd ent ss)
    ) ;_ end of setq
  (sssetfirst ss ss)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Аналог SSSETFIRST для IAcadSelectionSet.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Обнуление координаты Z (аналог FLATTEN ) VVA Готовые программы 103 20.09.2024 10:46
LISP / AutoCAD2008 / Как программно снять выделение у примитивов, не используя sssetfirst TararykovDG LISP 7 14.01.2011 10:48
Почему в lisp отсутствует аналог функции (arxload ...) для .NET сборок. Pastor LISP 16 17.11.2010 13:15
Аналог функции EVAL (LISP) в Exele kp+ LISP 11 01.04.2010 16:52
Как можно из LISP запросить у юзера выделить произвольные элементы и затем вызвать аналог WMFOUT для сохранения их в изображении? lexluther LISP 4 12.08.2009 11:44