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

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

как наполнять список с апострофом списками?

Ответ
Поиск в этой теме
Непрочитано 07.03.2017, 15:10 #1
как наполнять список с апострофом списками?
tujn08
 
Регистрация: 26.12.2013
Сообщений: 284

Не нашел, написал Евгению в личку.
А пока сам пытаюсь и тут вопрос:
как наполнять список с апострофом списками?

т.е. надо координаты (X Y Z) добавить в новый список но с апострофом.
Результат: ('(X Y Z))
Добавить как функцию получится вот так:
((quote (X Y Z))) - правильно написал?
Просмотров: 1360
 
Непрочитано 07.03.2017, 22:07
#2
Кулик Алексей aka kpblc
Moderator

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


Неправильно
(list x y z)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 08.03.2017, 10:23
#3
tujn08


 
Регистрация: 26.12.2013
Сообщений: 284


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Неправильно
(list x y z)
Я не то имел ввиду.

мне надо добавлять в список другие списки, но заквотированные.

(xyz1) (xyz2) в один список, но что бы получилось так: ('(xyz1) '(xyz2))
tujn08 вне форума  
 
Непрочитано 08.03.2017, 19:18
#4
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
 _$ (setq xyz1 '(1 2 3))
(1 2 3)
_$ (setq xyz2 '("qwert"))
("qwert")
_$ (apply 'append (mapcar 'list (list xyz1 xyz2)))
((1 2 3) ("qwert"))
_$ (append (list xyz1) (list xyz2))
((1 2 3) ("qwert"))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 09.03.2017, 10:13
#5
tujn08


 
Регистрация: 26.12.2013
Сообщений: 284


не то...

как итог надо получить:
(grdraw '(2516.32 1475.51 0.0) '(3477.87 1571.89 0.0) 5 1)

имею:
(grdraw ((2516.32 1475.51 0.0) (3477.87 1571.89 0.0) 5 1))

Последний раз редактировалось tujn08, 09.03.2017 в 10:32.
tujn08 вне форума  
 
Непрочитано 09.03.2017, 10:18
#6
Кулик Алексей aka kpblc
Moderator

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


Ну йопырысыты... Числа откуда получаешь? И как?
Приведи кусок своего кода, тогда можно будет уже что-то говорить - а так, мне кажется, ты просто что-то либо путаешь, либо недопонимаешь.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 09.03.2017, 10:59
#7
tujn08


 
Регистрация: 26.12.2013
Сообщений: 284


Что-то вроде такого:
(setq as (list 'grdraw 'pt1 'pt2 3 1))
(eval as)

----- добавлено через ~1 мин. -----
Код:
[Выделить все]
 	(setq point_1(getpoint "Точка: "))
	(setq point_2(getpoint "Точка: "))
	(setq point_3(getpoint "Точка: "))
	(setq pt1 point_1)
	(setq pt2 point_2)
(progn
	(setq lst  nil)
	(while (and (not (vl-catch-all-error-p
                     (setq pt (vl-catch-all-apply
                                (function
                                  (lambda ()
                                    (getpoint "\nТочка <Esc> : ")
                                    )
                                  )
                                )
                           )
                     )
                   )
              pt
              ) ;_ end of and
    (setq lst (cons pt lst))
	(if (> (length lst) 1)
		(progn
			(setq i 0 lst2 nil)
			(foreach
				p lst
				(
					(setq lst2 (cons (quote (list (rtos (nth 0 p)) (rtos (nth 1 p)))) lst2)) ;надо сделать что б получался '(координаты) список а не (координаты)
					(setq i (+ i 1))
					(if (= i 2)
						(progn
							(setq lst2 (cons 5 lst2))
							(setq lst2 (cons 1 lst2))
							(setq i 0)
						)
					)
				)
			)
			(reverse lst2)
			(grdraw lst2)
			(setq lst2 nil)
		)
	)
	)
)

tujn08 вне форума  
 
Непрочитано 09.03.2017, 11:51
#8
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
 (defun test2 (/ pt lst i)
  (while (and (= (type (setq pt (vl-catch-all-apply
                                  (function (lambda ()
                                              (if lst
                                                (getpoint "\nPoint : " (last lst))
                                                (getpoint "\nPoint : ")
                                                ) ;_ end of if
                                              ) ;_ end of LAMBDA
                                            ) ;_ end of function
                                  ) ;_ end of vl-catch-all-apply
                             ) ;_ end of setq
                       ) ;_ end of type
                 'list
                 ) ;_ end of =
              pt
              ) ;_ end of and
    (setq lst (append lst (list pt)))
    (if (> (length lst) 1)
      (mapcar '(lambda (x) (apply 'grdraw x))
              ((lambda (/ res i tmp)
                 (setq tmp (mapcar '(lambda (x) (list (car x) (cadr x))) lst))
                 (while (and tmp (> (length tmp) 1))
                   (setq res (append res (list (list (car tmp) (cadr tmp) 1)))
                         tmp (cdr tmp)
                         ) ;_ end of setq
                   ) ;_ end of while
                 (append res (list (list (cadr (last res)) (car lst) 1)))
                 ) ;_ end of lambda
               )
              ) ;_ end of mapcar
      ) ;_ end of if
    ) ;_ end of while
  (redraw)
  lst
  ) ;_ end of defun
Но лично мне результат не нравится. Наверняка были другие, более изящные решения (скажу честно - лично я не искал)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > как наполнять список с апострофом списками?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Solidworks 2014. Как создать выпадающий список? voverrr SolidWorks 1 18.02.2016 16:27
Как передать функции (getkword) Список ключевых слов из списка? Kostinok Программирование 31 31.05.2012 13:08
Программно получить список системных переменных (без вывода в текстовый файл) Ax3 Программирование 3 27.12.2010 16:29
Помощь по Лире Серега М Лира / Лира-САПР 52 28.05.2007 02:47