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

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

Первые шаги в лисп.

Ответ
Поиск в этой теме
Непрочитано 31.01.2012, 07:07 #1
Первые шаги в лисп.
markseder
 
Регистрация: 10.02.2011
Сообщений: 6

В лиспе я полный ноль, ну может быть 0.000001.
Решил я сделать такую команду чтобы она автоматически передвигала и разворачивала все объекты чертежа на определенную величину.
С начало продумал ход действий: Запуск команды move-выделение всех объектов(ctrl+a)-указание базовой точки-перемещение объекта на заданные величины-поворот с помощью rotate-ctrl+a-указание базовой точки-поворот на нужный угол. Итак мне необходимо сместить план по X=-7497301,197 и по Y=-432553,259, повернуть на 2,82177 градуса с базовой точкой смещения и вращения x=7499111, y=427946 и чтобы все это делалось одной командой ибо очень много планов надо перемещать по таким параметрам.Теперь я хочу доказать что в лиспе я не полный ноль, где то на 0.000001 уровне. Вот пока до чего я додумался, но мне кажется в этом коде чего то не хватает
Код:
[Выделить все]
 (defun C:DVIG ()
(command "_move"))
Спасибо за будущую оказанную помощь.

Последний раз редактировалось markseder, 31.01.2012 в 08:40.
Просмотров: 2116
 
Непрочитано 31.01.2012, 08:12
#2
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от markseder Посмотреть сообщение
но мне кажется в этом коде чего то не хватает
да вроде все нормально должно работать
Do$ вне форума  
 
Автор темы   Непрочитано 31.01.2012, 08:14
#3
markseder


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


спасибо за помощь.

Тупо методом проб и ошибок, методом тыка, а так же с помощью интуиции вот что у меня вышло
Код:
[Выделить все]
 (defun C:DVIG ()
  (command "move" "all" "" "427946,7499111" "-4607.3,1809.8")
  (command "rotate" "all" "" "-4607.3,1809.8" "2.82177")
)
Спасибо всем за поддержку и помощь. Ваш форум мне очень помог в этом.

Последний раз редактировалось markseder, 31.01.2012 в 09:26.
markseder вне форума  
 
Непрочитано 31.01.2012, 09:44
1 | #4
VVA

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


markseder,
У любой команды редактирования есть запрос на выбор объектов, а в этом запросе есть много всяких опций. Для примера, вызови команду _move и на запрос "Выберите объекты" ("Select objects") введи ?, нажми enter и посмотри в командную строчку. Это я к тому, что вместо Ctrl+A можно использовать "_ALL", для последующего вращения (после команды _move) можно использовать так же опцию "_ALL", а можно (по моему мнению правильнее) "_p", базовую точку, угол поворота, смещение задай как переменные.
что-то типа такого
Код:
[Выделить все]
(defun C:DVIG ( )
  (setq base_point '(7499111.0 427946.0 0))
  (setq delta '(-7497301.197 -432553.259 0))
  (setq ang 2.82177)
  (command "_.MOVE"
	   "_ALL" ;_выбираем ВСЕ объекты
	   ""     ;_подтверждаем выбор, аналог нажатия ENTER
	   ""     ;_см в командную строчку, выбираем не базовую точку, а опцию перемещение
	   delta
	   )
  (command "_.ROTATE"
	   "_P"
	   ""
	   base_point
	   ang
	   )
  )
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 31.01.2012, 09:51
#5
markseder


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


Спасибо большое, вы мне многое прояснили. А почему лучше задавать переменные, мой код мне кажется более прост и примитивно понятен. И почему вы пишите команду
"_.MOVE" не достаточно ли просто "move"?
markseder вне форума  
 
Непрочитано 31.01.2012, 09:59
#6
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от markseder Посмотреть сообщение
не достаточно ли просто "move"?
Недостаточно: http://autolisp.ru/2010/03/04/localization/
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 31.01.2012, 10:32
#7
markseder


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


Спасибо за ответ
markseder вне форума  
 
Непрочитано 31.01.2012, 11:46
#8
KSI


 
Регистрация: 19.03.2004
Калининград
Сообщений: 1,842


А если базовая точка, смещение или угол могут быть разными, то в программе можно делать запрос на введение параметров.
Например для запроса угла поворота:
Код:
[Выделить все]
 (setq ang (getreal "Введите угол поворота: "))
KSI вне форума  
 
Автор темы   Непрочитано 31.01.2012, 11:54
#9
markseder


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


Спасибо, сделаю программу более гибкой, еще разберусь как сделать окно ввода и будет вообще супер.
markseder вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Первые шаги в лисп.

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Первые шаги в мир программирования под nanoCAD dows Другие CAD системы 15 26.05.2022 19:38
3D-моделирование: первые шаги dUmka AutoCAD 313 23.09.2014 04:41
Что прописать в acad.lsp чтобы всегда загружались пользовательские лисп команды? overband LISP 43 07.02.2013 14:47
Первые шаги в 3d моделировании. Нужна помощь! Saramary AutoCAD 27 13.12.2010 17:00
Лисп для копирования данных нескольких мтекстов по принципу расположения. Red Nova LISP 14 18.06.2008 22:08