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

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

Помогите новичку! Параметаризация детали на AutoLISPe!!!

Ответ
Поиск в этой теме
Непрочитано 16.01.2011, 14:29 #1
Помогите новичку! Параметаризация детали на AutoLISPe!!!
Nica_019
 
Регистрация: 16.01.2011
Сообщений: 1

Нужно написать параметаризацию детали. При попытки загрузить код программы в autocad выдает ошибку: неправильно сформированный список на входе. Где ошибка, подскажите, пожалуйста!

Код:
[Выделить все]
( DEFUN show ( x y L / tmp lst R1 d1 R2 R3 R4 R5)
 ; x, y, L - параметры
 ; tmp, lst - локальные переменные
 
; зададим параметры
(SETQ R1 (* 0.15 L))
(SETQ d1 (* 0.45 L))
(SETQ R2 (* 0.35 L))
(SETQ R3 (* 0.25 L))
(SETQ R4 (* 0.11 L))
(SETQ R5 (* 2 R4))

; координата x точки p2 записывается в переменную tmp
 ( SETQ tmp x )
 ; в переменную lst записывается список координат
 ; точки p2
 ( SETQ lst ( LIST tmp ( + y ( - ( / L 2 ) R5 ) ) ) )
 ; координата x точки p3 записывается в переменную tmp
 ( SETQ tmp x )
 ; в переменную tmp записывается список координат
 ; точки p3
 ( SETQ tmp ( LIST tmp ( + y ( - ( / L 2 ) R4 ) ) ) )
 ; в список lst добавляется точка p3
 ( SETQ lst ( LIST lst tmp ) )

 ( SETQ tmp x )
 ( SETQ tmp ( LIST tmp ( + y ( / L 2 ) ) ) )
 ; в список lst добавляется точка p4
 ( SETQ lst ( LIST lst tmp ) )

( SETQ tmp ( - x R4 )
 ( SETQ tmp ( LIST tmp ( + y ( / L 2 ) ) ) )
 ; в список lst добавляется точка p5
 ( SETQ lst ( LIST lst tmp ) )

( SETQ tmp ( - x R5)
 ( SETQ tmp ( LIST tmp ( + y ( / L 2 ) ) ) )
 ; в список lst добавляется точка p6
 ( SETQ lst ( LIST lst tmp ) )

( SETQ tmp ( + x ( - ( / L 2 ) R2 ) ) )
 ( SETQ tmp ( LIST tmp ( + y ( / L 2 ) ) ) )
 ; в список lst добавляется точка p7
 ( SETQ lst ( LIST lst tmp ) )

( SETQ tmp ( + x ( - ( / L 2 ) ( / d1 2 ) ) ) )
 ( SETQ tmp ( LIST tmp ( + y ( / L 2 ) ) ) )
 ; в список lst добавляется точка p8
 ( SETQ lst ( LIST lst tmp ) )

( SETQ tmp ( + x ( - ( / L 2 ) R1 ) ) )
 ( SETQ tmp ( LIST tmp ( + y ( / L 2 ) ) ) )
 ; в список lst добавляется точка p9
 ( SETQ lst ( LIST lst tmp ) )

( SETQ tmp ( + x ( / L 2 ) )
 ( SETQ tmp ( LIST tmp ( + y ( / L 2 ) ) ) )
 ; в список lst добавляется точка p10
 ( SETQ lst ( LIST lst tmp ) )

( SETQ tmp ( + x ( / L 2 ) )
 ( SETQ tmp ( LIST tmp ( + y ( - ( / L 2 ) R1 ) ) ) )
 ; в список lst добавляется точка p11
 ( SETQ lst ( LIST lst tmp ) )

( SETQ tmp ( + x ( - ( / L 2 ) ( / d1 2 ) ) ) )
 ( SETQ tmp ( LIST tmp ( + y ( - ( / L 2 ) ( / d1 2 ) ) ) ) )
 ; в список lst добавляется точка p12
 ( SETQ lst ( LIST lst tmp ) )

( SETQ tmp ( + x ( - ( / L 2 ) R3 ) ) )
 ( SETQ tmp ( LIST tmp ( + y ( - ( / L 2 ) ( / d1 2 ) ) ) ) )
 ; в список lst добавляется точка p13
 ( SETQ lst ( LIST lst tmp ) )

( SETQ tmp ( + x ( / L 2 ) )
 ( SETQ tmp ( LIST tmp ( + y ( - ( / L 2 ) ( / d1 2 ) ) ) ) )
 ; в список lst добавляется точка p14
 ( SETQ lst ( LIST lst tmp ) )

( SETQ tmp ( + x ( - ( / L 2 ) R5 ) ) )
 ( SETQ tmp ( LIST tmp ( + y ( - ( / L 2 ) R5 ) ) ) )
 ; в список lst добавляется точка p15
 ( SETQ lst ( LIST lst tmp ) )

( SETQ tmp ( + x ( - ( / L 2 ) R3 ) ) )
 ( SETQ tmp ( LIST tmp y ) )
 ; в список lst добавляется точка p16
 ( SETQ lst ( LIST lst tmp ) )

); конец функции


( COMMAND "ПЛИНИЯ"
 ( NTH 0 lst ) ; p2
 ( LIST x y ) ; точка p1
 ( NTH 14 lst ) ; точка p16
 ( NTH 11 lst ) ; p13
  "" ) ; прерывание команды "ПЛИНИЯ"

( COMMAND "ЗЕРКАЛО"
 ( CAR lst ) ; выбрали объект, указав точку p2
 "" ; прервали выбор объектов
 ( NTH 4 lst ) ; первая точка осевой линии  
 ( NTH 8 lst ) ; вторая точка осевой линии
  "Н" ) ; старые объекты не удалять
 
( COMMAND "ПОКАЖИ" "ВСЕ" )
); конец функции

( DEFUN getdim ( / L )
; ввод длины 
; возвращаемый список: ( длина )
( SETQ L ( GETREAL "\nВведите длину : " ) )
( LIST L ) ; возвращаемое значение
) ; конец функции getdim

( DEFUN C:main ( / L x y )
 
  ( SETQ L ( getdim ) x 10 y 10 )
  ( show x y ( CAR L ) )
  ( PRIN1 )
)

Последний раз редактировалось Кулик Алексей aka kpblc, 16.01.2011 в 19:12.
Просмотров: 8269
 
Непрочитано 16.01.2011, 15:03
#2
gomer

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


Код:
[Выделить все]
; в список lst добавляется точка p13
( SETQ lst ( LIST append lst  (list tmp ) ) )

( SETQ tmp ( + x ( / L 2 ) ))<-- скобку забыл :)
Для объединения списков есть функция append, а не list
И выше... Акад какой? Мрак короче...

Последний раз редактировалось gomer, 16.01.2011 в 15:50.
gomer вне форума  
 
Непрочитано 16.01.2011, 16:16
#3
Дима_

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


Цитата:
Сообщение от gomer Посмотреть сообщение
Для объединения списков есть функция append, а не list
добавлю - есть еще и "первообразующая" функция cons
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 16.01.2011, 19:13
#4
Кулик Алексей aka kpblc
Moderator

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


Ошибка
Цитата:
Сообщение от Nica_019 Посмотреть сообщение
неправильно сформированный список на входе
как правило, означает несоответствие открывающих и закрывающих скобок.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 16.01.2011, 22:18
#5
Li6-D


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Ошибка
как правило, означает несоответствие открывающих и закрывающих скобок.
Так и есть - не хватает закрывающихся скобок в 31,36,56,61,76 строках, может и еще где...
Li6-D вне форума  
 
Непрочитано 17.01.2011, 00:06
#6
Кулик Алексей aka kpblc
Moderator

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


Li6-D, мне как-то сейчас некогда построчно проверять код. И вникать в то, что он должен делать - тоже...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.01.2011, 23:06
#7
Li6-D


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


Алексей, я не хотел, чтобы кто-нибудь считал скобки в проблемном коде, кроме самого автора. Мое мнение такое, что эту несложную работу должен делать только автор до публикации кода на форуме. Даже если автор - новичок. Может принять за правило не рассматривать код, в котором баланс скобок и кавычек не соблюдается?
Li6-D вне форума  
 
Непрочитано 03.02.2011, 00:13
#8
Павел Котелевец

проектирование
 
Регистрация: 02.08.2006
Ухта
Сообщений: 32


У меня это ошибка означала символ кавычек (") в читаемой строке.
если задать
(setq xx "f\"5"); допустим, если строка читается с текстового файла, то символ кавычек " заменяется на \"

то
(read (strcat "(" xx ")"))
вернёт такую же ошибку - потому что в списке кавычек быть должно не ^_^
Павел Котелевец вне форума  
 
Непрочитано 03.02.2011, 16:10
#9
gomer

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


Цитата:
Сообщение от Павел Котелевец Посмотреть сообщение
У меня это ошибка означала символ кавычек (") в читаемой строке.
если задать
(setq xx "f\"5"); допустим, если строка читается с текстового файла, то символ кавычек " заменяется на \"

то
(read (strcat "(" xx ")"))
вернёт такую же ошибку - потому что в списке кавычек быть должно не ^_^
Попробуйте переосмыслить концепцию хранения данных в текстовом файле и такие глупости у вас перестанут возникать...
gomer вне форума  
 
Непрочитано 03.02.2011, 20:59
#10
Павел Котелевец

проектирование
 
Регистрация: 02.08.2006
Ухта
Сообщений: 32




Попробуйте переосмыслить концепцию передачи данных съёмки тахеометра Nikon TRIMBLE M3 3",5" в автокад и тогда глупости перестанут возникать у всех геодезистов.

Кроме того, моё сообщение - пока что - единственное по сабжу
Павел Котелевец вне форума  
 
Непрочитано 03.02.2011, 21:07
#11
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Павел Котелевец Посмотреть сообщение
Кроме того, моё сообщение - пока что - единственное по сабжу
Нда? Павел Котелевец, ты ничего не путаешь? Тему-то посмотри с самого начала...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 04.02.2011, 03:14
#12
Павел Котелевец

проектирование
 
Регистрация: 02.08.2006
Ухта
Сообщений: 32


Эмм... нет.
Изначально я набрёл на этот пост, введя в гуглопоиск
"неправильно сформированный список на входе"
желая узнать что именно вызывает эту ошибку в моём коде, и откуда она там неожиданно взялась. Поскольку мой акад русскоязычен, я не мог воспользоваться хелпом.
И на тот момент, когда я нуждался в ответе, меня удовлетворил бы ответ исключительно в фоме моего собственного поста.

Потому что я не нашёл в данном треде ни одного поста, объясняющего прямую причину этой ошибки, или расписывающего ситуации её возможного появления ^^

Последний раз редактировалось Павел Котелевец, 04.02.2011 в 03:23.
Павел Котелевец вне форума  
 
Непрочитано 04.02.2011, 08:35
#13
Do$

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


Цитата:
Сообщение от Павел Котелевец Посмотреть сообщение
Потому что я не нашёл в данном треде ни одного поста, объясняющего прямую причину этой ошибки, или расписывающего ситуации её возможного появления ^^
Вото оно как, оказывается...
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Ошибка
как правило, означает несоответствие открывающих и закрывающих скобок.
Do$ вне форума  
 
Непрочитано 04.02.2011, 12:12
#14
Павел Котелевец

проектирование
 
Регистрация: 02.08.2006
Ухта
Сообщений: 32


У человека рушится дом. Он спросил, что у него с фундаментом.
Десять человек сказали "у тебя чтото с фундаментом"
Один сказал "Скорее всего, изза просадки фундаментов вследствии эрозии грунтов".

Человек не спрашивал почему не работает его код. Он спросил
Цитата:
Сообщение от Nica_019 Посмотреть сообщение
При попытки загрузить код программы в autocad выдает ошибку: неправильно сформированный список на входе. Где ошибка
Верно?

Тоесть люди, упомянувшие несоответствие скобок указали её как ошибку. ^^
Пришлось продемонстрировать, что скобки к ошибке отношение имеют весьма посредственное...

И ещё - такой ошибки как Незакрытая Скобка - Unmatching Parenthesis официально нет.
Она не входит в список 85 Error Codes, обозначеных в автолиспе, поскольку код с незакрытыми скобками просто не считается полноценным.
Поэтому, ошибку может вызвать неправильная простановка, а не "несоответствие открывающих и закрывающих скобок."

Последний раз редактировалось Павел Котелевец, 04.02.2011 в 12:43.
Павел Котелевец вне форума  
 
Непрочитано 04.02.2011, 13:29
#15
Do$

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


Цитата:
Сообщение от Павел Котелевец Посмотреть сообщение
Поэтому, ошибку может вызвать неправильная простановка, а не "несоответствие открывающих и закрывающих скобок."
Что за неправильная простановка? Что за бред вообще?
Do$ вне форума  
 
Непрочитано 04.02.2011, 13:37
#16
Павел Котелевец

проектирование
 
Регистрация: 02.08.2006
Ухта
Сообщений: 32


(setq k2 "_abcd" k3 (strlen k2))
(if (< k3 3)(setq k3 0)(setq k3 (/ (ascii (substr k2 3 1)) 100.0))) ;правильная простановка возвращает 0.98
(if (< k3 3)(setq k3 0)(setq k3 (/ (ascii (substr k2 3 1))) 100.0)) ;неправильная простановка парных скобок вызывает синтакс. ошибку
(if (< k3 3)(setq k3 0)(setq k3 (/ (ascii (substr k2 3 1) 100.0)) ;неполноценный, свободноинтерпретируемый код (несоответствие открывающих и закрывающих скобок), который не вызывает ошибок не загружаясь до конца. Как детектив без развязки.

Люди... это же азы

Кстати, повторюсь - вы в топе гуглопоиска.
Соостветственно, каждый, кто будет искать "неправильно сформированный список на входе" попадёт сюда.
Предлагаю прекратить оффтоп и посвятить тред входящим спискам =)

Последний раз редактировалось Павел Котелевец, 04.02.2011 в 13:56.
Павел Котелевец вне форума  
 
Непрочитано 04.02.2011, 13:58
#17
Do$

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


Цитата:
Сообщение от Павел Котелевец Посмотреть сообщение
(if (< k3 3)(setq k3 0)(setq k3 (/ (ascii (substr k2 3 1) 100.0)) ;неполноценный, свободноинтерпретируемый код (несоответствие открывающих и закрывающих скобок), который не вызывает ошибок не загружаясь до конца
Вот это вот сохраняем в файл .lsp и загружаем в автокад. Какая ошибка выскакивает?
Вот именно, что это азы - несоответствие скобок вызывает ошибку "ошибка: неправильно сформированный список на входе", в английской версии "error: malformed list on input".
Do$ вне форума  
 
Непрочитано 04.02.2011, 14:08
#18
Павел Котелевец

проектирование
 
Регистрация: 02.08.2006
Ухта
Сообщений: 32


Цитата:
Сообщение от Do$ Посмотреть сообщение
Вот это вот сохраняем в файл .lsp
Теперь это годится в протокол Резюмирую:
  • "Ошибка: неправильно сформированный список на входе" ("error: malformed list on input") появляется если загрузить неполноценный лисп-код через *.lsp файл.
    Вставка кода в комстроку ошибку не даёт.
  • Также возможны частные случаи возникновения ошибки при формировании списков из текстов с символом \"
^_^
Павел Котелевец вне форума  
 
Непрочитано 04.02.2011, 14:20
#19
Do$

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


Цитата:
Сообщение от Павел Котелевец Посмотреть сообщение
Ошибка появляется если сохранить неполноценный лисп-код в файл и загрузить.
Вставка кода в комстроку ошибку не даёт.
Ну а какой смысл в коде, если его вручную забивают в комстроку?
Ошибки со скобками легко отлавливаются еще в процессе написания кода во встроенном редакторе VLIDE.
Для гуглпоиска - варианты ошибок при лишней открывающей и лишней закрывающей скобке (английская версия):
Код:
[Выделить все]
(alert "Test")) ; error: extra right paren on input
((alert "Test") ; error: malformed list on input
Do$ вне форума  
 
Непрочитано 04.02.2011, 15:25
#20
Павел Котелевец

проектирование
 
Регистрация: 02.08.2006
Ухта
Сообщений: 32


Цитата:
Сообщение от Do$ Посмотреть сообщение
Ну а какой смысл в коде, если его вручную забивают в комстроку?
Эээ... зачем вручную?
  • Выделить код
  • Ctrl+C
  • Перейти в комстроку автокада
  • Ctrl+V

Акад недовольно проворчит:
((((_>

Последний раз редактировалось Павел Котелевец, 04.02.2011 в 15:36.
Павел Котелевец вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Помогите новичку! Параметаризация детали на AutoLISPe!!!

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Документация Проектировщику на Torrents DEM Разное 262 24.02.2024 17:19
Proxy-графика, как с ней бороться, помогите новичку lednev AutoCAD 18 21.03.2016 09:01
Помогите советом новичку с расчетной схемой K_Sokolsky Конструкции зданий и сооружений 9 02.02.2010 13:08
Помогите написать программу на AUTOLISP'e Сергей123 LISP 28 06.09.2007 12:20
Помогите новичку Дмитрий2 Программирование 32 14.07.2004 21:57