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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP - entsel

LISP - entsel

Ответ
Поиск в этой теме
Непрочитано 01.08.2004, 14:52 #1
LISP - entsel
Torino
 
Штаб
Регистрация: 21.08.2003
Сообщений: 943

Как с использованием ENTSEL различить пустой выбор от нажатия ENTER?
Либо с использованием не ENTSEL, а какой-нибудь другой функции?
Просмотров: 5377
 
Непрочитано 02.08.2004, 07:20
#2
ShaggyDoc


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


По вопросу

http://www.kurganobl.ru/cad/book.jsp...=507&tn=main#b

Более широко по выбору примитивов

http://www.kurganobl.ru/cad/book.jsp...=499&tn=main#b
 
 
Автор темы   Непрочитано 02.08.2004, 12:23
#3
Torino


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


Спасибо, именно то, что нужно!
Я так понял это части какой-то книги?
Не подскажете, как она называется?
Torino вне форума  
 
Автор темы   Непрочитано 02.08.2004, 12:38
#4
Torino


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


Название нашел.
Пошел покупать
Torino вне форума  
 
Непрочитано 02.08.2004, 14:13
#5
kos

LISP-программист
 
Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238


Цитата:
Сообщение от Torino
Название нашел.
Пошел покупать
Рановато. Если я не проспал, то она еще не вышла...
__________________
Там все есть для счастья - меня там только нет.
Так это значит, что я там - буду!
kos вне форума  
 
Автор темы   Непрочитано 02.08.2004, 18:57
#6
Torino


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


Точно, не вышла, и выйдет тиражем всего 3000 экз...
Torino вне форума  
 
Непрочитано 10.01.2012, 10:36
#7
V.Khomyakov

IT, LISP, ACAD, LDD
 
Регистрация: 04.06.2008
Иркутск
Сообщений: 14
<phrase 1=


Ребята, ссылки не работают.
Обновите ссылки плиз.
Или, кто знает, подскажите здесь, в теме.
Заранее благодарю.
V.Khomyakov вне форума  
 
Непрочитано 10.01.2012, 10:46
#8
Кулик Алексей aka kpblc
Moderator

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


Попробуй посмотреть значение системной переменной ERRNO
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.01.2012, 11:37
#9
V.Khomyakov

IT, LISP, ACAD, LDD
 
Регистрация: 04.06.2008
Иркутск
Сообщений: 14
<phrase 1=


Ага, то что надо!
А я два дня мучился, уже надежду терять начал
Спасибо!
V.Khomyakov вне форума  
 
Непрочитано 10.01.2012, 11:50
#10
Кулик Алексей aka kpblc
Moderator

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


С другой стороны, какая разница, как "не получен" примитив? У меня обычно используется конструкция наподобие
Код:
[Выделить все]
 (defun getent (msg / res)
  (if (not msg)
    (setq msg "Выберите примитив <Отмена> : ")
    ) ;_ end of if
  (if (not (vl-catch-all-error-p
             (setq res (vl-catch-all-apply
                         (function
                           (lambda ()
                             (entsel (strcat "\n" (vl-string-left-trim "\n" msg)))
                             ) ;_ end of lambda
                           ) ;_ end of function
                         ) ;_ end of vl-catch-all-apply
                   ) ;_ end of setq
             ) ;_ end of vl-catch-all-error-p
           ) ;_ end of not
    res
    ) ;_ end of if
  ) ;_ end of defun
Пока хватало...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.01.2012, 12:47
#11
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


По примерам состряпал такое:

Код:
[Выделить все]
 ;|Функция Kr_entsel
*** Морозов С.В. aka Krieger ***
Еденичный выбор объекта, замена функции entsel
Возвращает entity name выбранного примитива или nil, точку указки запоминает в переменной LASTPOINT
Параметры:
promt - предложение выбрать объект (string)
filter - фильтр объектов для выбора вида '("LINE" "LWPOLYLINE")
entlist - список примитивов которые не надо выбирать (либо список entity name, либо PICKSET)

Примеры:
(Kr_entsel "\nВыберите объекты" '("LINE" "LWPOLYLINE") nil)
(Kr_entsel "\nВыберите объекты" nil nil)
(setq aa nil) (Kr_entsel "\nВыберите объекты" '("LINE" "LWPOLYLINE") (while (setq a (car (entsel))) (setq aa (append aa (list a)))))
(Kr_entsel "\nВыберите объекты" '("LINE" "LWPOLYLINE") (ssget))

|;

(defun Kr_entsel (promt filter entlist / key n newentlist ent_point promt)
  
  (setq key T n 0 newentlist nil)
  (if (eq (type entlist) 'PICKSET)
    (progn
    	(while (setq a (ssname entlist n)) (setq newentlist (append newentlist (list a)) n (1+ n)))
    	(setq entlist newentlist)
    );progn
   );if
    (while key
    	(if (or (setq ent_point (entsel promt)) (= (getvar "ERRNO") 7))
	  	(if (or (eq (type ent_point) 'LIST) (not ent_point))
		  (if ent_point
		    (if (member (setq ent (car ent_point)) entlist)
		      (princ "\nПримитив уже выбран")
		      (if filter
			      (if (not (member (cdr (assoc 0 (entget ent))) filter))
				(progn (setq str "\nНе верный выбор, выберите: ")
				  (princ (substr (setq str (foreach n filter (setq str (strcat str n ", ")))) 1 (- (strlen str) 2)))
				);progn
				(setq key nil)
			      );if
				(setq key nil)
			);if
		    );if
		    (setq key T)
		  );if
	    	(setq key nil)
	    );if
	  (setq key nil)
      	);if
     );while
  (if (eq (type ent_point) 'LIST)
    (progn (setvar "LASTPOINT" (cadr ent_point)) ent)
    ent_point
  );if
);defun
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 10.01.2012, 13:31
#12
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


еще пару ссылок
_ru-get-ent-default, _ru-get-entsel-no-erro, ru-get-entsel, ru-get-entsel-by-type, ru-ssentget-by-type - здесь
_tdg-get-object-byselect - здесь
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 10.01.2012, 15:01
#13
V.Khomyakov

IT, LISP, ACAD, LDD
 
Регистрация: 04.06.2008
Иркутск
Сообщений: 14
<phrase 1=


Цитата:
С другой стороны, какая разница, как "не получен" примитив?
Дело в том, что мне необходимо было в цикле, предоставить пользователю возможность,
набрать примитивы одиночным указанием, с вариантами завершения выбора:
ESC - отказ от набранных объектов и завершение, ENTER - подтверждение набора и продолжение.
Плюс фильтр объектов и защита от промазывания.
Для этого и пришлось изобретать свой entsel.
С вашей помощью получилось
За примеры и ссылки спасибо. Полезно расширить кругозор.
V.Khomyakov вне форума  
 
Непрочитано 10.01.2012, 17:05
#14
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от V.Khomyakov Посмотреть сообщение
За примеры и ссылки спасибо. Полезно расширить кругозор.
И тебе за пример спасибо
Олег (jr.) вне форума  
 
Непрочитано 10.01.2012, 18:42
#15
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


а я, обычно, использую ssget примерно так:
Код:
[Выделить все]
 (prompt "\n Выберите линию")
(setq s(ssget "_:S:E" '((0 . "line"))))
при необходимости, можно играться с аргументами внутри ssget и получать набор примитивов или примитив.
Так же, если необходимо, можно получить точку указанную на экране, как в функции entsel...
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Непрочитано 10.01.2012, 19:51
#16
Кулик Алексей aka kpblc
Moderator

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


Елпанов Евгений, забыл точку и плюс, кажется...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.01.2012, 02:12
#17
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


не думаю, что часто переопределяют параметры для вольной локализации...
Действительно, можно добавить точку, причем добавляется она только через плюс, но для применения этой точки, я ни разу не доходил - не сталкивался с ее реальной необходимостью.
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Непрочитано 11.01.2012, 08:14
#18
Кулик Алексей aka kpblc
Moderator

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


В вертикальных решениях (имею в виду, конечно, локализованные версии) иногда строка вида (ssget "_:S:E") вываливала ошибку. Почему - не знаю, лично я принял это как данность и с тех пор как-то привык уже ставить точку и плюс
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP - entsel

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

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