Mapcar, foreach и Autocad 2015
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Mapcar, foreach и Autocad 2015

Mapcar, foreach и Autocad 2015

Ответ
Поиск в этой теме
Непрочитано 24.10.2014, 12:07 #1
Mapcar, foreach и Autocad 2015
roaa
 
ОПС
 
Kazakhstan
Регистрация: 29.03.2012
Сообщений: 128

Столкнулся с тем, что с Autocad 2015 перестала работать программа, работающая со всеми остальными версиями Autocad.
чертеж не прилагаю, все очень просто. Полилиния и блоки на ней. Наткнулся на такой лаг. Для подсчета блоков на полилинии используется команда:

(mapcar
'(lambda (_pl) (_sensor_prim_sel (_sensor_pline_ent _pl) t))
(list (car (entsel))) ; выбор полилинии
)

Выполнение частично отрабатывает нормально, а вот одним кодом...
То же самое и с запуском foreach.
Может кто сумеет прояснить ситуацию?

Используемые функции во вложении
test.lsp

Просмотров: 7623
 
Непрочитано 24.10.2014, 13:25
1 | #2
Do$

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


В 2015 версии появилась новая функция COMMAND-S. Ее надо использовать вместо VL-CMDF и COMMAND, если функция вызывается с заранее заданными аргументами и не подразумевается никаких действий пользователя во время ее вызова. Скорее всего, дело в этом.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 24.10.2014, 14:06
#3
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


а причем здесь mapcar и foreach, если я command вызываю только для зума?
roaa вне форума  
 
Непрочитано 24.10.2014, 14:13
#4
Do$

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


Заменили? Помогло?
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 24.10.2014, 14:16
#5
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Кстати, foreach дает еще более интересные результаты...
(foreach _pl (list (car (entsel)))(setq testlist (cons (_sensor_prim_sel (_sensor_pline_ent _pl) t) testlist)))

----- добавлено через ~6 мин. -----
вот енто да....помогло...СПАСИБО!
roaa вне форума  
 
Непрочитано 24.10.2014, 14:23
#6
Do$

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


Пожалуйста
Просто уже сталкивался с этим: http://adn-cis.org/forum/index.php?t...sg4553#msg4553
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 24.10.2014, 15:18
#7
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Сколько лиспов испортили...надо ли было.
roaa вне форума  
 
Непрочитано 24.10.2014, 16:37
#8
VVA

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


Цитата:
Сообщение от Do$ Посмотреть сообщение
В 2015 версии появилась новая функция COMMAND-S.
Цитата:
Сообщение от roaa Посмотреть сообщение
вот енто да....помогло...СПАСИБО!
У меня из-за этого в коде появились такие конструкции
Код:
[Выделить все]
 (if command-s (command-s "_UCS" "_p")(command "_UCS" "_p"))
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 24.10.2014 в 23:19.
VVA вне форума  
 
Непрочитано 24.10.2014, 20:10
#9
Do$

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


Ха! Красиво
Я думал версию проверять, но так изящнее!
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 24.10.2014, 21:28
#10
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


а я, дурында, vla-zoomall использовал...
gomer вне форума  
 
Непрочитано 25.10.2014, 00:43
#11
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


можно еще так завернуть
Код:
[Выделить все]
 ((lambda (command) 
    ...
    (command "_UCS" "_p")
    ....)
 (if command-s command-s command))
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 25.10.2014, 01:40
#12
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Тогда уж (cond (command-s) (command)). Занятно что код
Код:
[Выделить все]
 ((cond (command-s) (command)) "_zoom" "_obj" (entlast) "")
при попытке прервать из vlide вызывает фатал
gomer вне форума  
 
Автор темы   Непрочитано 25.10.2014, 07:47
#13
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


Обрабатывать каждый command лениво. Думаю, что потянет такой код:
(set 'comand (if (> (read (substr (getvar "ACADVER") 1 2)) 19) command-s command))

И функцию написать по замене в lsp vl-cmdf и command на comand для пакетной обработки.
Ну вот и программки...
HTMLChanger.zip
UVsoftium.zip

Последний раз редактировалось roaa, 25.10.2014 в 09:18.
roaa вне форума  
 
Непрочитано 25.10.2014, 18:24
#14
Александр Ривилис

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


Цитата:
Сообщение от roaa Посмотреть сообщение
Думаю, что потянет такой код:
(set 'comand (if (> (read (substr (getvar "ACADVER") 1 2)) 19) command-s command))
Только если нет запроса к пользователю. В противном случае "не потянет".
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 25.10.2014, 21:31
#15
roaa

ОПС
 
Регистрация: 29.03.2012
Kazakhstan
Сообщений: 128


конечно, было б великолепно, если бы Autodesk вернул все на круги своя....или им совсем без разницы, что станет с лиспом?
roaa вне форума  
 
Непрочитано 25.10.2014, 21:54
#16
Nick Kononenko

Конструктор-строитель
 
Регистрация: 18.05.2007
Сочи
Сообщений: 216


Может а/к 2015 нелицензионный и отсюда эти проблеы.
__________________
Любить свою работу не вредно, а женщин ...
Nick Kononenko вне форума  
 
Непрочитано 25.10.2014, 22:45
1 | #17
Do$

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


Цитата:
Сообщение от roaa Посмотреть сообщение
конечно, было б великолепно, если бы Autodesk вернул все на круги своя....или им совсем без разницы, что станет с лиспом?
Было бы без разницы, не добавляли бы команду новую.
Цитата:
Сообщение от Nick Kononenko Посмотреть сообщение
Может а/к 2015 нелицензионный и отсюда эти проблеы.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 14.01.2015, 10:15 на #13
#18
trushev


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


Цитата:
Сообщение от roaa Посмотреть сообщение
set 'comand (if (> (read (substr (getvar "ACADVER") 1 2)) 19) command-s command))

И функцию написать по замене в lsp vl-cmdf и command на comand для пакетной обработки
А как это будет работать, если в теле command несколько комманд
trushev вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Mapcar, foreach и Autocad 2015

Реклама i


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение единиц измерения текстур (изображений) материалов в AutoCAD 2015 Julia-94 AutoCAD 5 03.12.2018 13:31
AutoCAD 2015 - что за линии между объектами? Const_s AutoCAD 5 04.09.2014 16:37
Проблема в объектном отслеживание (AutoCAD 2013-2014) gomer8 Баги и пожелания в Autodesk 0 19.06.2013 12:22
защита чертежа Ден Программирование 2 26.11.2004 22:10