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

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

Перемещение отрезка в LISP

Ответ
Поиск в этой теме
Непрочитано 26.11.2007, 13:51 #1
Перемещение отрезка в LISP
AlexeySh
 
Регистрация: 26.11.2007
Сообщений: 60

Извините, если это банально просто, но я изучаю LISP второй день, а результат нужен уже...
Вообщем, нужно передвинуть выбранный отрезок на какое-то указанное расстояние (кол-во единиц) в сторону от точки (можно тоже указанной на экране или с указанными координатами) параллельно самому себе.
Заранее спасибо.
Просмотров: 9095
 
Непрочитано 26.11.2007, 14:19
#2
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Код:
[Выделить все]
 
(defun C:L_MOVE ( / echo)
(setq echo (getvar "CMDECHO"))
(setvar "CMDECHO" 1)
(command "_MOVE")
(setvar "CMDECHO" echo)
(princ)
)
Profan вне форума  
 
Автор темы   Непрочитано 26.11.2007, 14:37
#3
AlexeySh


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


Понятно...
Т.е. нужно вызвать команду автокада move с параметром расстояние перемещения? (Расстояние перемещения будет рассчитываться в другой функции.)
А перед этим не нужно выбор объекта делать?

Кстати, подскажите, пожалуйста, где можно взять список команд автокада с параметрами(!). Везде искал и везде списки без параметров, а у меня еще русский автокад, и хелп в нем соответствующий.
AlexeySh вне форума  
 
Непрочитано 26.11.2007, 14:43
#4
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Я слегка сконфужен.
Profan вне форума  
 
Автор темы   Непрочитано 26.11.2007, 14:59
#5
AlexeySh


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


В каком смысле? Что-то неясно объяснил?
AlexeySh вне форума  
 
Непрочитано 26.11.2007, 15:05
#6
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Лучше всего иметь два AutoCAD'а - русский и английский...
Profan вне форума  
 
Автор темы   Непрочитано 26.11.2007, 15:08
#7
AlexeySh


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


А в английской версии параметры корректно описаны?
AlexeySh вне форума  
 
Непрочитано 26.11.2007, 15:16
#8
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Как правило, в английских версиях описано все правильно. В русских локализациях бывают огрехи.
Profan вне форума  
 
Автор темы   Непрочитано 26.11.2007, 15:44
#9
AlexeySh


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


Хорошо.
Так что с главной задачей? Как мне команду _move с параметрами корректно написать?
AlexeySh вне форума  
 
Непрочитано 26.11.2007, 15:59
#10
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Я ведь привел исключительно примитивный пример...
Profan вне форума  
 
Автор темы   Непрочитано 26.11.2007, 16:13
#11
AlexeySh


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


Цитата:
Сообщение от AlexeySh Посмотреть сообщение
Т.е. нужно вызвать команду автокада move с параметром расстояние перемещения? (Расстояние перемещения будет рассчитываться в другой функции.)
А перед этим не нужно выбор объекта делать?
Очень тяжело дополнить его до расширенного варианта с переменной расстояния и выбором объекта отрезка?
AlexeySh вне форума  
 
Непрочитано 26.11.2007, 16:22
#12
Кулик Алексей aka kpblc
Moderator

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


А что должно быть параметрами? Там же можно в качестве параметров передавать указатель на перемещаемый примитив; указатель на сформированный набор примитивов; начальную точку; конечную точку - и все это в разных сочетаниях...
---
Опа, что значит не нажать сразу "Отправить"... Но вопрос в общем-то остается в силе.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 26.11.2007, 16:25
1 | #13
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Может так понятней будет
Код:
[Выделить все]
(defun C:L_MOVE ( / echo line dist)
(setq echo (getvar "CMDECHO"))
(setq dist 100) ;_Расстояние перемещения, расчитанное в другой программе  
(setq line (ssget "_:L:S:E" '((0 . "LINE"))))
       ;_ Выбор отрезка опции ssget
       ;_   :L - не выбирать на заблокированных слоях
       ;_   :S - единственный выбор
       ;_   :E - только непосредственное указание
       ;_   '((0 . "LINE")) - фильтр по типу примитива
;_ В переменной line - набор с 1 отрезком
(setvar "CMDECHO" 0) ;_Отключаем эхо-вывод команд
(command "_MOVE"  ;_Вызов команды перенеси
         line     ;_Выбираем отрезок в наборе line
         ""       ;_Enter подтверждаем окончание выбора
         (setq pt (cdr(assoc 10 (entget(ssname line 0))))) ;_Базовая точка - начало отрезка
         (polar  ;_Найти точку, отстоящую от
           pt    ;_ pt
           0     ;_ под углом 0 РАДИАН
           dist  ;_На расстоянии dist
           )
         )
(setvar "CMDECHO" echo)
(princ)
)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 26.11.2007, 16:29
#14
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Так, не зря я тянул резину...
Profan вне форума  
 
Автор темы   Непрочитано 26.11.2007, 17:27
#15
AlexeySh


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


Большое спасибо! Именно это я и хотел.

Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А что должно быть параметрами?
Про параметры, я имел в виду вызов какой-либо команды с "параметрами", как, в данном случае, VVA расписал вызов команды MOVE.
AlexeySh вне форума  
 
Автор темы   Непрочитано 26.11.2007, 17:37
#16
AlexeySh


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


VVA, скажите, пожалуйста.
Где Вы брали информацию по вызовам команд автокада с параметрами? В хелпе автокада английской версии?
AlexeySh вне форума  
 
Непрочитано 26.11.2007, 17:55
#17
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Параметры при вызове команды из лиспа аналогичны параметрам при запуке из командной строки. А вот опции команды лучше указывать как в английской с подчеркиванием _.
Типа
Код:
[Выделить все]
(command "_-Layer"
         "_M"              ;_ _Make Создать
         "Мой новый слой"
         "_C"              ;_ _Color Цвет
         1
         ""
         ""
         )
Кстати учти, что многие команды имеют режим диалога и командной строки.
Сравни
_Layer
и
_-Layer
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 27.11.2007, 00:08
#18
AlexeySh


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


Вот как раз параметров при запуске из командной строки я и не могу найти.
Придется, наверное, английский автокад ставить, чтобы хелп в нем смотреть.
AlexeySh вне форума  
 
Непрочитано 27.11.2007, 09:28
#19
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Что ты вкладываешь в термин параметры?
Я - тип ввода (опция, точка, угол) и их последовательность.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 27.11.2007, 09:38
#20
Кулик Алексей aka kpblc
Moderator

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


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ламерские вопросы по LISP и DCL TheBuTeK LISP 7 03.07.2016 22:15
Подскажите, существуют ли практические руководства по Lisp? vn LISP 261 26.11.2015 13:27
Библиотека доступа к содержимому растров из LISP - существуе kp+ LISP 6 16.10.2007 21:45
Как вывести текст в model из приложения написанного на lisp? paradoxvaha AutoCAD 3 16.04.2007 03:54
загрузка DOS прог через LISP Gaa LISP 15 12.08.2005 19:19