Перейти к содержанию

Рекомендуемые сообщения

Как в nanoCAD в консоли узнать состояние инициированной переменной ?
В AutoCAD для этого предназначена команда > !<VarName>, но в nanoCAD она не работает ни в командной строке, ни в консольном режиме.

Upd.
В nanoCAD в консоли переменная выводится без задания префиксом восклицательного знака. Но можно ли как то получить значение переменной и в командном режиме ?

Upd2.
Мелочь, но тем не менее.
Почему "Ошибка" ?
image.png.3cf7ce8b2036f2df5f087b10c6d90bec.png
 

Изменено пользователем A.Kudrjashov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

(getvar "имя_переменной")   -  не то?

правда, возвращает все только в виде текстовой строки, независимо от типа данных

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
11 минут назад, EdwardSt сказал:

(getvar "имя_переменной")   -  не то?


Нет. Эта команда относится к системным переменным, а не к переменным LISP.

Причем даже здесь получается интересно. Например, если запросить значение переменной из командной строки и через (getvar "SYSCODEPAGE"), то в первом случае получим некий индекс, а во втором случае текстовое значение.
image.png.2e0643fe6e242955a00496dd7bbaeb71.png

Соответственно, вопрос: Если я хочу поменять кодовую страницу из Lisp, я что должен вводить ?
Таблица соответствий, конечно, есть в OdCodePage.h, но  тем не менее !
 

Спойлер

image.png.4ef594b13ddf8c2c51012a15b4a5ef4f.png

 

Изменено пользователем A.Kudrjashov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

тогда можно 

(eval <имя_переменной>)

не так элегантно, как с восклицательным знаком, но работает

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 02.03.2020 в 16:01, EdwardSt сказал:

тогда можно 

(eval <имя_переменной>)

не так элегантно, как с восклицательным знаком, но работает


Отличный вариант !
... или (vl-symbol-value '<имя_переменной>)

Изменено пользователем A.Kudrjashov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
44 минуты назад, A.Kudrjashov сказал:

Причем даже здесь получается интересно. Например, если запросить значение переменной из командной строки и через (getvar "SYSCODEPAGE"), то в первом случае получим некий индекс, а во втором случае текстовое значение.
image.png.2e0643fe6e242955a00496dd7bbaeb71.png

Соответственно, вопрос: Если я хочу поменять кодовую страницу из Lisp, я что должен вводить ?
Таблица соответствий, конечно, есть в OdCodePage.h, но  тем не менее !

 

вообще-то "SYSCODEPAGE" указана, как нередактируемая переменная.

А в общем случае (setvar "имя" <значение>),  <значение> подается строго в виде, как выдается (getvar "имя" ), даже для списковых переменных

Изменено пользователем EdwardSt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 минуты назад, EdwardSt сказал:

вообще-то "SYSCODEPAGE" указана, как нередактируемая переменная.

А в общем случае (setvar "имя" <значение>),  <значение> подается строго в виде, как выдается (getvar "имя" )


Предположим, потребуется проанализировать и сравнить значения ...
Я все переменные не проверял. Хорошо, если больше таких двусмысленностей нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для сравнения, наверное, особых проблем не будет.

C помощью getvar можно получить состояние всех переменных.

А вот есть ли где-то таблица с информацией, какие переменные можно менять, да еще и где будет храниться измененное значение, - вопрос

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
16 часов назад, EdwardSt сказал:

А вот есть ли где-то таблица с информацией, какие переменные можно менять, да еще и где будет храниться измененное значение, - вопрос

 


Если нет, значит надо сделать.:)
В принципе в Мониторе системных переменных все видно >SYSVARMONITOR
 

добавлено через 4 минут

... а пока как то вот так:
_>(atoms-family 1)

nanoCAD Lisp Symbols

Спойлер

image.png.4ae5cf0656b32c2adb6833e8703ea496.png


В nanoCAD 11/20 обнаружены три функции, отсутствующие в AutoCAD 2015: APPLIST, APPLOAD и APPUNLOAD

Спойлер

image.png.de86bcb14fd2439e936cb5d0cffe7c4e.png

.
Насколько я понимаю, это LISP аналог функционала "Загрузки приложений".

Спойлер

image.png.081a59b35a4af303a83a1e94708f2676.png


AutoCAD 2015 Lisp Symbols

Спойлер

image.png.67b7656da3fc375a9f4acc41110c4d08.png


LISP_functions.xlsx

Изменено пользователем A.Kudrjashov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
25 минут назад, A.Kudrjashov сказал:

В принципе в Мониторе системных переменных все видно >SYSVARMONITOR

 

Да, монитор - вещь очень полезная. Хорошее новшество.

Поактуальней бы информацию (встречаются неполные описания). 

добавлено через 9 минут
34 минуты назад, A.Kudrjashov сказал:

... а пока как то вот так:

Кстати, а откуда список в excel?

 

Функции getpoint и prin1 в акаде точно есть.

Это те функции, которые попались на глаза. Остальные не сравнивал

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
14 часов назад, EdwardSt сказал:

Кстати, а откуда список в excel?


_>(atoms-family <1|0>)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
15 часов назад, EdwardSt сказал:

Функции getpoint и prin1 в акаде точно есть.

Это те функции, которые попались на глаза. Остальные не сравнивал

Да, действительно есть.
Но, atoms-family в AutoCAD 2015 "getpoint" не возвращает. Возвращает только "vla-getpoint".
Хотя _>(atoms-family 1 '("getpoint")) дает верный ответ.

Сейчас вручную проверю LISP nanoCAD=>AutoCAD и заменю файл.
... обновил основной пост выше.

Изменено пользователем A.Kudrjashov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
4 часа назад, A.Kudrjashov сказал:

Но, atoms-family в AutoCAD 2015 "getpoint" не возвращает. Возвращает только "vla-getpoint".

 

У меня нет 2015 :-(

Но в 2016 в списке (atoms-family 1) эта функция присутствует.

 

По поводу использования функции есть один нюанс.

Если вызвать функцию без параметров (getpoint), то в командной строке нет никакого приглашения.

А после указания точки в поле чертежа именно она и возвращается качестве ответа.

Т.е., функция работает, но с минимумом визуальных эффектов.

 

PS. У меня как-то так сложилось, что эта функция являлась и является одной из самых частых используемых.

Правда, ее применение всегда целесообразно с параметрами и кучей дополнительных опций

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Функция ACAD_TRUECOLORCLI не определена !

image.png.d8b15273d12f13095d254eb99eb7bd47.png
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ANGTOS и ANGTOF.

 

Кто может объяснить странное поведение функции ANGTOF при применении в качестве параметра Units 3 (радианы) ?

Выполняем следующие взаимные преобразований, которые должны приводить к исходному результату:
Команда: (angtos (angtof "45.00000" 0) 0 7)
"45"
Команда: (angtos (angtof "45.00000" 1) 1 7)
"45d0'0.000\""
Команда: (angtos (angtof "45.00000" 2) 2 7)
"45g"
Команда: (angtos (angtof "45.00000" 3) 3 7)
"1.0177028r"

Команда: (angtos (angtof "45.00000" 4) 4 7)
"N 45d0'0.000\" E"

При этом имеем:

Команда: (angtof "45.0000" 3)
1.0177

Команда: (angtof "1.0177r" 3)
1.0177

Команда: (angtos 1.0177 3 7)
"1.0177r"
Команда: (angtos 1.0177 0 7)
"58.3099148"
 

Каким образом в (angtof "45.0000" 3) строка "45.0000", которая в соответствии со значением единиц 3 должна быть уже выражена в радианной мере, преобразуется в нечто дающее в результате 1.0177 радиан ?
И как обратными преобразованиями выйти на это же самое значение ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, A.Kudrjashov сказал:

Каким образом в (angtof "45.0000" 3) строка "45.0000", которая в соответствии со значением единиц 3 должна быть уже выражена в радианной мере, преобразуется в нечто дающее в результате 1.0177 радиан ?
И как обратными преобразованиями выйти на это же самое значение ?

 

45 радиан = 2578.310078 градусов = 360*7+58.310078 градусов

 

отбрасывая полные круги получаем

      45 радиан = 58.310078 градусов = 1.01770285 радиан   или 

      45 радиан= 7*(2pi) + 1.01770285 радиан

 

PS. получается, что функция не просто переводит градусы-радианы, а еще и предварительно отбрасывает "лишние" круги, а уже потом производит преобразование. Значит, в общем случае это не взаимообратные (angtos и angtof) преобразования

 

Изменено пользователем EdwardSt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Функция CVUNIT не определена !
Спрашивать где находится ____.unt, как я понимаю, бессмысленно. :(
image.png.e964bcdd08f16139004c0119976c2161.png
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, EdwardSt сказал:

Значит, в общем случае это не взаимообратные (angtos и angtof) преобразования


... ну да. Еще имеем вот такое:
Команда: (angtos (angtof "450.00000" 0) 0 7)
"90"
Команда: (angtos (angtof "-450.00000" 0) 0 7)
"270"

 

Изменено пользователем A.Kudrjashov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что примечательно, в описаниях функций от Autodesk сказано, что тип результата - вещественное или nil.

А про то , что результат находится в диапазоне 0...2pi, - ни слова! :chih:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

С учетом того, что многие функции nanoCAD LISP показаны, как "Функции неопределенные", число работающих функций LISP nanoCAD 20 сократилось до 336 из 365.

Но зато обнаружены функции VL-LOAD-COM и VL-LOAD-REACTORS, которые в nanoCAD действуют совершенно одинаково, существенно расширяя число доступных функций LISP. Их работоспособность, естественно, необходимо проверять.

Всего загружаются дополнительно 3260 функций, из которых 2997 совпадают с функциями AutoCAD 2015, а 263 в AutoCAD 2015 не встречаются.

Обновленный файл
2020-03-06_LISP_functions_NC20_AC2015.xlsx

выложен на Google Disk

https://drive.google.com/drive/folders/1aJpLsgxlTtT24-do2h2Z3xJ4oEMA6pTG

 

и Яндекс Диск
https://yadi.sk/d/5_JWGHtOnsQ_HQ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Фундаментальное исследование!

Может помочь при создании универсальных скриптов, работающих во всех платформах)

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Список "Символов" LISP, сгруппированный по типам.
Собрался писать, но обнаружил уже готовую функцию. Работает замечательно. При необходимости можно доработать.
LISPDumpFile.lsp
https://hyperpics.blogs.com/beyond_the_ui/2012/07/listing-defined-autolisp-variables-and-functions.html

Там, кстати, две отличные статьи про отладку LISP программ
https://hyperpics.blogs.com/beyond_the_ui/2017/03/debugging-autolisp-programs-part-1.html
https://hyperpics.blogs.com/beyond_the_ui/2017/03/debugging-autolisp-programs-part-2-basic-debugging.html

Изменено пользователем A.Kudrjashov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Функции (help) и (acad_helpdlg) не работают. :(

Мне так и не удалось их запустить.


Причем про функцию (help) пишется, что она просто "не определена", а функция (acad_helpdlg) при указании недостаточного числа параметров пишет, что не хватает параметров, а, при задании всех необходимых параметров, пишет, что она "не определена" !
 

В AutoCAD 2015 обе команды срабатывают, но не выводят на соответствующий тег подзаголовка в разделе, просто на сам раздел.
ACAD>(acad_helpdlg "d:/test/sphinxdoc.chm" "formule.html#formule-table-05")

 

К примеру, вот такая команда из командной строки работает полностью так, как ожидается, то есть выводит на соответствующий подзаголовок:
CMD>hh.exe d:/test/sphinxdoc.chm::/formule.html#formule-table-05

Печально ...

 

Изменено пользователем A.Kudrjashov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не знаю, в этом ли дело, но команда (acad_helpdlg) в справке указана как "externally defined function".

Т.е. она не является внутренней командой акада.

Команда (help) действительно неопределенна, о чем честно написано в справке по лиспу для нанокада.

Возможно, на уровне синтаксиса команда  (acad_helpdlg) обрабатывается и требует необходимое количество параметров, а получив их обращается к внутренней команде (help) с теми же параметрами. И уже тут получает отлуп в виде "команда не определена".

 

Хотя все эти изыски не решают возникшей проблемы.

 

 

6 часов назад, A.Kudrjashov сказал:

CMD>hh.exe d:/test/sphinxdoc.chm::/formule.html#formule-table-05

PS. Кстати, может стоить попробовать осуществить запуск из лиспа досовской команды "CMD>hh.exe …".

Вроде в акаде такая конструкция была осуществима

Изменено пользователем EdwardSt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...

×
×
  • Создать...