Непонятное происходит с selection set
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Непонятное происходит с selection set

Непонятное происходит с selection set

Ответ
Поиск в этой теме
Непрочитано 07.12.2004, 17:40 #1
Непонятное происходит с selection set
Torino
 
Штаб
Регистрация: 21.08.2003
Сообщений: 943

Программа:
Код:
[Выделить все]
(defun c:pedit2	(/ ss)
  (setq ss (ssget))
  (if
    (or
      (= (sslength ss) 1)
    )
     (progn (vl-cmdf "_.pedit" "_l")(vl-cmdf "pause"))
     (progn (vl-cmdf "_.pedit" "_m" "_p" "")(vl-cmdf "pause"))
  )
  (setq ss nil)
)
Через некоторое время выдает:

Код:
[Выделить все]
Select objects: Specify opposite corner: 15 found

Select objects:
; error: exceeded maximum number of selection sets
Непонятно почему, я же обнуляю SS?
Просмотров: 3895
 
Непрочитано 07.12.2004, 17:50
#2
AY


 
Сообщений: n/a


Возможно уже существует слишком много наборов, хотя справка говорит о другом поведении при такой ситуации:
Цитата:
Selection sets consume AutoCAD temporary file slots, so AutoLISP is not permitted to have more than 128 open at one time. If this limit is reached, AutoCAD refuses to create any more selection sets and returns nil to all ssget calls. To close an unnecessary selection set variable, set it to nil.
 
 
Автор темы   Непрочитано 07.12.2004, 17:55
#3
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 943
<phrase 1=


>>AY
Все согласно справке.
После использования ss я присваиваю ей nil.
По идее наборы не должны скапливаться.
Torino вне форума  
 
Непрочитано 07.12.2004, 17:55
#4
AY


 
Сообщений: n/a


Это я к тому, что даже если количество превышено не по Вашей вине (может какой-то лисп их копит ) то судя по справке ssget должен возвращать nil, а не выдавать ошибку (справка из 2000).
 
 
Автор темы   Непрочитано 07.12.2004, 17:59
#5
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 943
<phrase 1=


Цитата:
Сообщение от AY
может какой-то лисп их копит
Больше ничего не загружено.
Torino вне форума  
 
Непрочитано 07.12.2004, 18:12
#6
AY


 
Сообщений: n/a


У меня Ваш вариант вообще не работает пологаю, что из за кавычек на pause.
 
 
Автор темы   Непрочитано 07.12.2004, 19:10
#7
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 943
<phrase 1=


У меня все работает
Предлагаю на "ты".
Torino вне форума  
 
Непрочитано 07.12.2004, 19:19
#8
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Не очень понятно, что должна делать функция, но, если я правильно понял, то должно быть примерно так:
Код:
[Выделить все]
(defun c:pedit2 (/ ss)
  (setq ss (ssget))
  (vl-cmdf "_.pedit" "_m" ss "" "_l" pause "")
  (princ)
)
или
Код:
[Выделить все]
(defun c:pedit2 (/ ss)
  (setq ss (ssget))
  (vl-cmdf "_.pedit" "_m" ss "")
  (while (not (zerop (getvar "cmdactive")))
    (vl-cmdf pause)
  )
  (princ)
)
Alaspher вне форума  
 
Автор темы   Непрочитано 07.12.2004, 19:45
#9
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 943
<phrase 1=


>>Alaspher
Второй вариант - то, что надо. Спасибо!

А в моем варианте наборы скапливаются, т.к. программа до конца не доходит из-за ошибки в коде. Соответственно набор не обнуляется.
Torino вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Непонятное происходит с selection set

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск