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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Лисп. Как выполнить команду по завершении предыдущей?

Лисп. Как выполнить команду по завершении предыдущей?

Ответ
Поиск в этой теме
Непрочитано 18.11.2009, 11:31 #1
Лисп. Как выполнить команду по завершении предыдущей?
BetinS
 
системный администратор
 
Рязань
Регистрация: 18.11.2009
Сообщений: 6

Здравсвуйте!

Пытаюсь написать функцию для проставления цепочки размеров в плоскости проходящей через заданную точку параллельно одной из координатных плоскостей.

Проблема: после завершения команд измерений надо вернуться в исходную систему координат. Как это сделать без использования функции command или без использования реактора команд?? Или используя?

Все это для Autocad 2005.
Просмотров: 2550
 
Непрочитано 18.11.2009, 11:33
#2
Profan


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


Может, воспользоваться именованными ПСК (UCS)?
Profan вне форума  
 
Автор темы   Непрочитано 18.11.2009, 11:45
#3
BetinS

системный администратор
 
Регистрация: 18.11.2009
Рязань
Сообщений: 6
<phrase 1=


Как к ним обратиться из функции вызываемой реактором?? Или функция какая есть (искал - не нашел)?? Подробней, если можно.

Вообще, смена ПСК - частный случай. Хочу понять, как в принципе выполнить команду по завершении предыдущей. Программно, естетственно.
BetinS вне форума  
 
Непрочитано 18.11.2009, 12:05
#4
Do$

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


Не совсем понял, зачем реакторы? Запомнил состояние СК до выполнения измерений, измерил, восстановил СК.
Do$ вне форума  
 
Автор темы   Непрочитано 18.11.2009, 12:11
#5
BetinS

системный администратор
 
Регистрация: 18.11.2009
Рязань
Сообщений: 6
<phrase 1=


так это три кнопки нажимать!
В этом случае и проги-то не надо никакой. все есть уже в акаде.

Мне кажется, я не понимаю чего-то основного.. Поэтому здесь и пишу.

Цитата:
Сообщение от Do$ Посмотреть сообщение
Запомнил состояние СК до выполнения измерений, измерил, восстановил СК.
Как это сделать одной функцией?
BetinS вне форума  
 
Непрочитано 18.11.2009, 12:16
#6
Do$

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


Ага, кажется начинаю понимать. Тебе нужна функция типа:
  1. запускаем ее, она запоминает текущую СК
  2. выполняем комманду (или несколько комманд?) при которой(-ых) меняется СК
  3. по завершению комманды (-д) СК восстановливается (реактор на завершение комманды)
Если это так, то те действия, на которые планируется реактор, нельзя в программу загнать?
Do$ вне форума  
 
Автор темы   Непрочитано 18.11.2009, 12:26
#7
BetinS

системный администратор
 
Регистрация: 18.11.2009
Рязань
Сообщений: 6
<phrase 1=


Дадададада.
1.Переходим в новую пск
2.В новой пск задаем первый размер, позиционируем его.
3.Продолжаем размерную цепь. завершаем.
4.Возвращаемся в предыдущую пск (даже запоминать не надо, акад ее сам помнит).

Реактор я планирую на завершение команды. загнать в программу - это как?
BetinS вне форума  
 
Непрочитано 18.11.2009, 12:56
#8
Do$

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


Я имел в виду рисование размеров в самой программе. Возможно?
Вообще, пример чертежа, скриншоты преобразований и др. наглядности не помешали бы...
Do$ вне форума  
 
Автор темы   Непрочитано 18.11.2009, 13:12
#9
BetinS

системный администратор
 
Регистрация: 18.11.2009
Рязань
Сообщений: 6
<phrase 1=


Суть задачи - передать управление из программы пользователю, чтоб он размеры проставил, а потом вернуть управление программе, чтоб она вернула ПСК.

Код:
[Выделить все]
(defun ucprev (reac cname / _ad )
  (vlr-remove cmr)
  ;(command "_ucs" "_p") но так НЕЛЬЗЯ, к сожалению
 )

(defun reac0115 ( / )
 (setq cmr (vlr-command-reactor "hallo, world!"
  (list '(:vlr-commandEnded . ucprev)))
 )
)

(defun c:dimPYZ
        (/ p1 p2)
    (setq p1 (getpoint "Укажите 1-ю точку")
	 p2 (getpoint "Укажите 2-ю точку")
    )
  (command "_ucs" "_n" "_3p" p1 (3polar p1 0 -1 0) (3polar p1 0 0 1)
	     "_dimlinear" (trans p1 0 1) (trans p2 0 1) (3polar (trans p1 0 1) 0 80 0)
  )
  (reac0115)
  (command "_dimcontinue)
  
)

Последний раз редактировалось Кулик Алексей aka kpblc, 18.11.2009 в 13:32.
BetinS вне форума  
 
Непрочитано 18.11.2009, 13:26
#10
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


А как на счет переменной CMDACTIVE? Не думал?
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 18.11.2009, 13:42
#11
BetinS

системный администратор
 
Регистрация: 18.11.2009
Рязань
Сообщений: 6
<phrase 1=


Сейчас изучу вопрос. Судя по звучанию - то, что нужно. Спасибо
BetinS вне форума  
 
Непрочитано 20.11.2009, 13:21
#12
Jonas

конструктор машиностроитель
 
Регистрация: 14.05.2007
Новосибирск
Сообщений: 893


Попробовал в сом-строке.
Пишет - CMDACTIVE = 1 (только чтение)

Естественно, как исползовать?
Jonas вне форума  
 
Непрочитано 20.11.2009, 13:30
#13
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Jonas Посмотреть сообщение
Естественно, как исползовать?
А описание переменной читать не пробовал?
Александр Ривилис вне форума  
 
Непрочитано 20.11.2009, 14:04
#14
CB

Конструирование в области нефтеразведки
 
Регистрация: 10.02.2006
Гомель
Сообщений: 321


Смотри здесь
CB вне форума  
 
Непрочитано 19.06.2014, 03:25
#15
480725


 
Регистрация: 06.10.2007
Москва
Сообщений: 132


Цитата:
Сообщение от BetinS Посмотреть сообщение
Суть задачи - передать управление из программы пользователю, чтоб он размеры проставил, а потом вернуть управление программе, чтоб она вернула ПСК....
....
(reac0115)
(command "_dimcontinue)
Вместо этих операторов в цикле до пустого ответа поставить запрос конца очередной размерной линии и, при непустом ответе, построение очередного размера. По выходе из цикла вернуться в предыдущую ПСК. И никаких реакторов не потребуется. Если речь только о размерной цепи.
480725 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Лисп. Как выполнить команду по завершении предыдущей?

Реклама i


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как же правильно отлаживать лисп? Serge_BN LISP 15 17.09.2009 15:15
Как выполнить балкон в котедже jonik007 Прочее. Архитектура и строительство 16 15.09.2009 13:18
Как выполнить сварные швы? Kotor Металлические конструкции 2 19.08.2009 09:10
Как сделать команду copy многоразовой??? BAX AutoCAD 42 31.07.2008 08:41
Мониторы LCD CRT Разное 94 17.06.2008 10:51