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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Сравнение функций command-s и command

Сравнение функций command-s и command

Ответ
Поиск в этой теме
Непрочитано 20.01.2015, 10:27 1 | #1
Сравнение функций command-s и command
trushev
 
Регистрация: 12.01.2015
Сообщений: 261

Уважаемые форумчане не молчите, мне важно Ваше мнение. Опровергайте, подтверждайте, дополняйте.

Собирая информацию по функциям command-s и command прижожу к выводам:

1. command-s доступна в версиях автокада 2014, 2015 и наверное в следущих;
command доступна в версиях от R10 (возможно более ранних), по 2014. При беглой проверке лиспов без проблем отработавших от R12 по 2014 при отсутсвии вложенности command в foreach и мapcar с удивлением обнаружил их рабоспособность в ACADVER = "20.0s (LMS Tech)".
Предполагаю, что в следующих версиях автокада поддержка command будет прекращена полностью.
2. Синтаксис функции command-s: (command-s [cmdname [arguments ...]]),
синтаксис функции command: (command [cmdname [arguments ...]] ... [cmdname [arguments ...]]).
По многолетней привычке за включение в command-s нескольких комманд функция коварно мстит за невнимательность. Выполняется только первая команда, остальные молча игнорируются, код без остановки и предупреждений продолжает штатно работать до завешения, результат работы кода не соответствует должному.
Просмотров: 7614
 
Непрочитано 20.01.2015, 11:08
1 | #2
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,171


Цитата:
Предполагаю, что в следующих версиях автокада поддержка command будет прекращена полностью.
С появлением .net многие опасались за судьбу поддержки VBA и LISP в Акаде, но пока LISP живее всех живых, и VBA тоже скорее жив, чем мертв. Так что за (command) я бы тоже сильно не беспокоился. Offtop: Вопросы стиля программирования с массовым использованием этой функции оставим без внимания.
kp+ вне форума  
 
Непрочитано 20.01.2015, 11:33
1 | #3
Do$

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


Цитата:
Сообщение от trushev Посмотреть сообщение
command доступна в версиях от R10 (возможно более ранних), по 2014.
И в 2015 она доступна. Причем, в зависимости от обстоятельств, нужно использовать либо COMMAND, либо COMMAND-S.
Цитата:
Сообщение от trushev Посмотреть сообщение
Предполагаю, что в следующих версиях автокада поддержка command будет прекращена полностью.
С чего это вдруг? COMMAND работает асинхронно, COMMAND-S - синхронно. Так и будут дальше обе поддерживаться. COMMAND-S не заменяет полностью COMMAND, а используется в случаях, когда нужно синхронное выполнение кода.
Цитата:
Сообщение от trushev Посмотреть сообщение
2. Синтаксис функции command-s: (command-s [cmdname [arguments ...]]),
синтаксис функции command: (command [cmdname [arguments ...]] ... [cmdname [arguments ...]]).
По многолетней привычке за включение в command-s нескольких комманд функция коварно мстит за невнимательность. Выполняется только первая команда, остальные молча игнорируются, код без остановки и предупреждений продолжает штатно работать до завешения, результат работы кода не соответствует должному.
Интересное замечание, надо будет проверить. Я никогда больше одной команды в COMMAND не вставлял, потому и не заметил каких-то изменений.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)

Последний раз редактировалось Do$, 20.01.2015 в 11:41.
Do$ вне форума  
 
Непрочитано 20.01.2015, 11:57
#4
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Цитата:
Сообщение от Do$ Посмотреть сообщение
COMMAND работает асинхронно, COMMAND-S - синхронно
Do$, объясни, пожалуйста, что это значит? Не то, чтобы я не понимал значение слова "синхронный", но вот применительно к программированию...
Цитата:
Сообщение от Do$ Посмотреть сообщение
используется в случаях, когда нужно синхронное выполнение кода
Синхронное с чем?
Только не ругайся, яж не программист
skkkk вне форума  
 
Непрочитано 20.01.2015, 13:43
#5
Do$

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


Ну тут лучше всего изучать первоисточники: http://through-the-interface.typepad...-commands.html
В контексте лиспа, я так понимаю, это означает, что COMMAND-S надо использовать в том случае, когда все аргументы заранее известны. Если же внутри подразумевается пользовательский ввод или выбор объектов - то надо использовать COMMAND. Я второй вариант никогда не использую, поэтому, не знаю, что произойдет, если будет использоваться COMMAND-S. Можешь проверить, если интересно, и нам потом рассказать
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 22.01.2015, 10:02
#6
trushev


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


Цитата:
Сообщение от kp+ Посмотреть сообщение
Так что за (command) я бы тоже сильно не беспокоился. Offtop: Вопросы с
Цитата:
Сообщение от Do$ Посмотреть сообщение
Так и будут дальше обе поддерживаться. COMMAND-S не заменяет полностью COMMAND, а используется в случаях, когда нужно синхронное выполнение кода.
Такая перспектива радует!

Цитата:
Сообщение от Do$ Посмотреть сообщение
Интересное замечание, надо будет проверить.
Например при параметрическом вычерчивании получен список координат точек

Код:
[Выделить все]
 (setq sp (list '(0 0) '(10 10) '(20 0))
       n 1
)
  ;Вычерчивается ломанная линия, подписываются точки с выделением окружностями.
(while (cadr sp)
       (command-s "_.line" (list (caar sp) (cadar sp)) (list (caadr sp) (cadadr sp)) ""
                  "_circle" (list (caar sp) (cadar sp)) "0.5"
                  "_.text" "_j" "_mc" (list (caar sp) (+ 5 (cadar sp))) "2" "0"
                           (strcat "Т-" (itoa n))
       )
       (setq n (1+ n) sp (cdr sp))
);while (cadr sp)
(command-s "_circle" (list (caar sp) (cadar sp)) "0.5"
           "_.text" "_j" "_mc" (list (caar sp) (+ 5 (cadar sp))) "2" "0"
                    (strcat "Т-" (itoa n))
)
(alert "Программа завершена.\n\nЗамечаний нет.")
У меня получается так
В AutoCAD 2015 ACADVER = "20.0s (LMS Tech)" вычерчиваются только линии и последняя окружность
В AutoCAD 2014 ACADVER = "19.1s (LMS Tech)" вычерчивается все. Странно, ничего кроме версии не меняю.
trushev вне форума  
 
Непрочитано 22.01.2015, 10:09
#7
Кулик Алексей aka kpblc
Moderator

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


Проверяй фиксированность высоты текстового стиля - 90% за то, что проблема именно в этом.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 22.01.2015, 10:21
#8
trushev


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Проверяй фиксированность высоты текстового стиля - 90% за то, что проблема именно в этом.
А как быть с этим: Синтаксис функции command-s: (command-s [cmdname [arguments ...]]), синтаксис функции command: (command [cmdname [arguments ...]] ... [cmdname [arguments ...]]).
trushev вне форума  
 
Непрочитано 22.01.2015, 10:27
#9
Кулик Алексей aka kpblc
Moderator

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


trushev, ты код выполняй в разных версиях, но на одном и том же файле, где настройки гарантированно одинаковы.
Offtop: P.S. Вообще говоря, использовать command / command-s / vl-cmdf для таких достаточно тривиальных целей я бы не стал. Отрезки, окружности, тексты и проч. нередко можно создавать другими, более устойчивыми и предсказуемыми методами ))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 22.01.2015, 10:32
#10
trushev


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


При использовании command все рисуется в полном объеме во всех версиях.
Считаю причина в разности синтаксиса комманд. command-s допускает ввод только одной команды.
trushev вне форума  
 
Непрочитано 22.01.2015, 12:06
#11
Do$

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


Похоже, что trushev не ошибся: https://screencast.autodesk.com/main...d-b6747b0fc18d
Кстати, забавно, что в 2014 версии есть COMMAND-S. Интересно, когда ее добавили?
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)

Последний раз редактировалось Do$, 22.01.2015 в 12:11.
Do$ вне форума  
 
Автор темы   Непрочитано 22.01.2015, 12:52
#12
trushev


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Интересно, когда ее добавили?
(if command-s 1 2) возвращает 2 в AutoCAD 2011 и 1 в AutoCAD 2012


Не могу найти синтаксис command-s для AutoCAD 2014, или официально функция введена с AutoCAD 2015?

Последний раз редактировалось trushev, 23.01.2015 в 08:52.
trushev вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Сравнение функций command-s и command



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AUTOCAD 2010 перестал переключаться в многооконный режим. Проблемы с переменными Андрей Х. AutoCAD 24 27.05.2015 10:17
Как переделать коды AutoCAD R14 работающие с БД для работы в AutoCAD 2009 Andru1968 Программирование 84 12.10.2011 08:19
Два задания не могу найти ошибку...подскажите.. Kashtan$$$ Программирование 7 07.08.2011 21:28
построение профиля с помошью лиспа rino_black LISP 9 27.11.2010 19:32
повторное выполнение операции с ощибкой msblast Программирование 7 14.03.2009 23:04