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

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

Можно ли в лиспе, в качестве координат задать выражение?

Ответ
Поиск в этой теме
Непрочитано 11.07.2005, 05:18 #1
Можно ли в лиспе, в качестве координат задать выражение?
B2Slow
 
Иркутск
Регистрация: 20.06.2005
Сообщений: 57

Можно ли в лиспе задать в качестве координат базовой точки у команды Copybase, выражение с участием переменных?
Например что-то типа:
(command "copybase" "(+ 0 dx),(+ 0 dy)" (entlast)"" "erase" (entlast)"")
А то что-то оно ругается на инвалидную точку и прерывает функцию, не могу понять, - почему... В хелпе так и не нашел, можно ли для задания координат использовать выражения.
Вопрос, возможно, ламерский... Но начинать с чего-то тоже надо=)
Просмотров: 3766
 
Непрочитано 11.07.2005, 08:49
#2
Кулик Алексей aka kpblc
Moderator

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


Ну, я тоже не ас, тоже только начинаю (пусть профи скажут, как правильно).
Задавать можно. Но! Надо использовать строку вида
Код:
[Выделить все]
(command "_.copybase" (list (+ 0 dx) (+ 0 dy)) (entlast))
(command "_.erase" (entlast) "")
Т.е. в качестве параметров _.Copybase передавать список. Это если вообще вычисления поддерживаются внутри вызова Command. Если и это не срабатывает, то надо предварительно сделать нечто вида
Код:
[Выделить все]
(setq _x_change (+ 0 dx)
  _y_change (+ 0 dy))
и в command вставлять уже _x_change и _y_change.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 11.07.2005, 09:36
#3
B2Slow


 
Регистрация: 20.06.2005
Иркутск
Сообщений: 57


Списком пробовал... и даже координаты задавал сразу именами переменных... Результат тот же... В смылсе, - безрезультатно ))
kpblc, тогда еще вопрос по поводу: а процесс запроса базовой точки в COPYBASE как то связан с фунцией getpoint? Так как по поводу getpoint в хелпе сказано:

"...The user cannot enter another AutoLISP expression in response to a getpoint request."

Значит ли это, там нельзя оперировать даже переменными?

Да, еще.. при использовании списка ругается на неправильный тип аргумента:
; error: bad argument type: numberp: nil
B2Slow вне форума  
 
Автор темы   Непрочитано 11.07.2005, 10:14
#4
B2Slow


 
Регистрация: 20.06.2005
Иркутск
Сообщений: 57


Ой, нет со списком как раз и получилось! В первый раз просто невнимательно код писал...
kpblc спасибо, приоткрыл мне глаза пошире
B2Slow вне форума  
 
Непрочитано 11.07.2005, 10:19
#5
Кулик Алексей aka kpblc
Moderator

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


Тогда вариант:
Код:
[Выделить все]
(setq _x_change (+ 0 dx)
        _y_change (+ 0 dy))
(command "_.copybase")
(command _x_change)
(command _y_change)
Вообще-то не очень понятно, а что надо-то в результате? Может, надо нечто вида:
Код:
[Выделить все]
(defun _redef_copybase(dx dy / base_point base_x base_y old_odmode)
  (setq old_osmode (getvar "osmode"))
  (setvar "osmode" 1015)
  (setq base_point (getpoint "Select base point : "))
  (setq base_x (car base_point)
	base_y (cadr base_point)
	)
  (command "_.copybase" (list (+ dx base_x) (+ dy base_y)) "_last" "")
  (setvar "osmode" old_osmode)
  (command "_erase" "_last" "")
  );_defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 11.07.2005, 11:34
#6
B2Slow


 
Регистрация: 20.06.2005
Иркутск
Сообщений: 57


Цитата:
Сообщение от kpblc
[/code]
Вообще-то не очень понятно, а что надо-то в результате? Может, надо нечто вида:
Код:
[Выделить все]
(defun _redef_copybase(dx dy / base_point base_x base_y old_odmode)
  (setq old_osmode (getvar "osmode"))
  (setvar "osmode" 1015)
  (setq base_point (getpoint "Select base point : "))
  (setq base_x (car base_point)
	base_y (cadr base_point)
	)
  (command "_.copybase" (list (+ dx base_x) (+ dy base_y)) "_last" "")
  (setvar "osmode" old_osmode)
  (command "_erase" "_last" "")
  );_defun
Блин! Надеюсь, у меня тоже скоро будет получаться укусить локоть столь изощренным способом... кое как разобрался...=)))
Пока приходится пользоваться чужими кодами и настраивать их под себя...
B2Slow вне форума  
 
Непрочитано 11.07.2005, 11:40
#7
Кулик Алексей aka kpblc
Moderator

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


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

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

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