Jump to content

LISP. Неверный тип аргумента 2D/3D point: nil


Recommended Posts

Добрый день! Прошу помощи с загрузкой LISP в нанокад. В Автокаде он работает. Навыками программирования не обладаю.

При загрузке LISP выдает ошибку

 

743737274_.jpg.af776ee8d72f2c8f00805248424968dc.jpg

 

В редакторе LISP, при запуске пишет "Неверный тип аргумента 2D/3D point: nil"

 

Код:

(vl-load-com)

(defun C:adv_toolkit_installer
       (/ path sup_path my_path _adv-str-with-separator-to-lst)
  
  
  (defun _adv-str-with-separator-to-lst    (str pat / i)
    (cond ((= str "") nil)
      ((setq i (vl-string-search pat str))
       (cons (substr str 1 i)
         (_adv-str-with-separator-to-lst (substr str (+ (strlen pat) 1 i)) pat)
         ) ;_  cons
       )
      (t (list str))
      ) ;_  cond
    ) ;_  defun
  
  
  (setq    sup_path (vla-get-supportpath
           (vla-get-files
             (vla-get-preferences (vlax-get-acad-object))
             ) ;_ end of vla-get-files
           ) ;_ end of vla-get-supportpath
    ) ;_ end of setq
  
  ;|
(PRINC "\n")
(PRINC "Старые пути поддержки:")
(PRINC "\n")
(PRINC sup_path)
(PRINC "\n")
|;
  
  (setq    sup_path (vl-remove-if
           '(lambda (x) (wcmatch x "*ADV*"))
           (_adv-str-with-separator-to-lst sup_path ";")
           ) ;_ end of vl-remove-if
    ) ;_ end of setq
  (setq path "")
  (mapcar '(lambda (x) (setq path (strcat path x ";")))
      sup_path
      ) ;_ end of mapcar
  (vl-string-right-trim ";" path)
  (setq my_path ";C:\\ADV_Toolkit")
  (setq path (strcat path my_path))
  (vla-put-supportpath
    (vla-get-files (vla-get-preferences (vlax-get-acad-object)))
    path
    ) ;_ end of vla-put-supportpath
  
  ;|
(PRINC "\n")
(PRINC "Новые пути поддержки:")
(PRINC "\n")
(PRINC (vla-get-supportpath (vla-get-files (vla-get-preferences (vlax-get-acad-object)))))
(PRINC "\n")
|;
  
  (vl-cmdf "_.-WSSAVE" "" "_y")

  (vl-cmdf "_.CUIUNLOAD" "adv_toolkit")
  (vl-cmdf "_.CUIUNLOAD" "adv_cad")
  (vl-cmdf "_.CUILOAD" "adv_toolkit")
  
  (setvar "WSCURRENT" (getvar "WSCURRENT"))
  
 
  ) ;_ end of defun


(C:adv_toolkit_installer)

(PRINC "\nADV_Toolkit успешно загружен и настроен.")

Link to comment
Share on other sites

Ну как бы нанокад говорит, что vla-put-supportpaths / vla-get-supportpaths не реализован. Так что пути поддержки надо обрабатывать как-то по-другому (сам с подобными задачками сижу, эффекта нуль - хоть через лисп, хоть через NET).

Кроме того, команд _.cuiload / _.cuiunload / _.wssave, равно как и переменной wscurrent я в NC не припомню. Загружать меню (да и приложения тоже) лучше через package, как мне подсказал @doctorraz.

  • Like 3
Link to comment
Share on other sites

35 минут назад, kpblc сказал:

Так что пути поддержки надо обрабатывать как-то по-другому

приходится вытаскивать параметры поодиночке 

Спойлер

(vl-load-com)

(setq a (vla-get-files (vla-get-preferences (vlax-get-acad-object))))

(vla-get-AutoSavePath a)

Вместо AutoSavePath

Спойлер

image.png.bef5917e165a1193f212a85ceda10062.png

 

Некоторые из перечисленных свойств срабатывают

Link to comment
Share on other sites

vla-get-configfile в частности не сработал. Так что надо будет каждый элемент проверять - реализовано или нет (

Link to comment
Share on other sites

4 часа назад, kpblc сказал:

Так что надо будет каждый элемент проверять - реализовано или нет (

Нашел пока только три работающих.

В части get.

В части put ожидаю еще меньшей поддержки

 

UPd.

Спойлер

(APPLICATION . #<VLA-OBJECT InanoCADApplication 000001B9EAF519D0>)

(AUTOSAVEPATH . "")

(PRINTERCONFIGPATH . "C:\\Users\\...\\AppData\\Roaming\\Nanosoft\\nanoCAD x64 23.0\\PlotConfigs")

(PRINTERSTYLESHEETPATH . "G:\\FONTS\\PlotStyles;C:\\Users\\...\\AppData\\Roaming\\Nanosoft\\nanoCAD x64 23.0\\PlotStyles")

(SUPPORTPATH . ";G:\\FONTS;C:\\ProgramData\\Nanosoft\\nanoCAD x64 23.0\\shx")

(TEMPFILEPATH . "C:\\Users\\...\\AppData\\Local\\Temp\\")

(TEMPLATEDWGPATH . "C:\\Users\\...\\AppData\\Roaming\\Nanosoft\\nanoCAD x64 23.0\\Templates")

(TOOLPALETTEPATH . "C:\\Users\\...\\AppData\\Roaming\\Nanosoft\\nanoCAD x64 23.0\\Templates")

На этих параметрах нана не ругается.

 

На остальных выскакивает окошко с руганью.

Причем конструкция (vlax-property-available-p params  par) выдает, что параметр par доступен, но извлечь его не получается

Edited by EdwardSt
  • Like 3
Link to comment
Share on other sites

Ну хоть где-то да работает:

Команда: (vl-load-com)
Команда: (setq files (vla-get-files (vla-get-preferences (vlax-get-acad-object))))
#<VLA-OBJECT InanoCADPreferencesFiles 0000025C322CD590>
Команда: (vlax-dump-object files); InanoCADPreferencesFiles: Specifies the settings that affect the use of various external files.
; Значения свойств:
;   AltFontFile = Ошибка.
;   AltTabletMenuFile = Ошибка.
;   Application (RO) = #<VLA-OBJECT InanoCADApplication 0000025C042B7AA0>
;   AutoSavePath = ""
;   ColorBookPath = Ошибка.
;   ConfigFile (RO) = Ошибка.
;   CustomDictionary = Ошибка.
;   DefaultInternetURL = Ошибка.
;   DriversPath = msxml3.dll: Не удается найти указанный ресурс.

;   FontFileMap = Ошибка.
;   HelpFilePath = Ошибка.
;   LogFilePath = Ошибка.
;   MainDictionary = Ошибка.
;   MenuFile = Ошибка.
;   PostScriptPrologFile = Ошибка.
;   PrintFile = Ошибка.
;   PrintSpoolExecutable = Ошибка.
;   PrintSpoolerPath = Ошибка.
;   PrinterConfigPath = "C:\\Users\\kpblc\\AppData\\Roaming\\Nanosoft\\nanoCAD x64 23.0\\PlotConfigs"
;   PrinterDescPath = Ошибка.
;   PrinterStyleSheetPath = "C:\\Users\\kpblc\\AppData\\Roaming\\Nanosoft\\nanoCAD x64 23.0\\PlotStyles"
;   SupportPath = ";C:\\ProgramData\\Nanosoft\\nanoCAD x64 23.0\\shx"
;   TempFilePath = "C:\\Users\\kpblc\\AppData\\Local\\Temp\\"
;   TempXrefPath = Ошибка.
;   TemplateDwgPath = "C:\\Users\\kpblc\\AppData\\Roaming\\Nanosoft\\nanoCAD x64 23.0\\Templates"
;   TextEditor = Ошибка.
;   TextureMapPath = Ошибка.
;   ToolPalettePath = "C:\\Users\\kpblc\\AppData\\Roaming\\Nanosoft\\nanoCAD x64 23.0\\Templates"
;   WorkspacePath = Ошибка.
T
Команда: (vlax-property-available-p files 'templatedwgpath)
T
Команда: (vlax-property-available-p files 'supportpath)
T

 

Link to comment
Share on other sites

Спасибо, что не оставили вопрос без внимания. Я так понимаю, проблема не решаемая? 

Link to comment
Share on other sites

51 минуту назад, Megaz сказал:

Я так понимаю, проблема не решаемая?

Во всяком случае через прямой вызов (vlax-put-proprerty не получается.

Без @ISL тут не разобраться. 

Link to comment
Share on other sites

1 час назад, Megaz сказал:

Я так понимаю, проблема не решаемая? 

Дело в том, что то что не срабатывает инсталлятор ADV_Toolkit это не проблема, в конце концов всегда можно прописать и настроить все руками

проблема в другом...

нано не умеет файлы *.fas, ограниченно умеет dcl и cuix (напрямую автокадовские менюшки не поймет)

Выход один, просить Frigate что бы адаптировал "план кабельных сетей " для НК, на что он вряд ли сможет пойти, иначе зачем он закрывал исходники в fas

Edited by doctorraz
Link to comment
Share on other sites

3 минуты назад, doctorraz сказал:

нано не умеет файлы *.fas, ограниченно умеет dcl и cuix (напрямую автокадовские менюшки не поймет)

Выход один, просить Frigate что бы адаптировал "план кабельных сетей " для НК, на что он вряд ли сможет пойти, иначе зачем он закрывал исходники в fas

 

 Это точно сюда?

Link to comment
Share on other sites

17 минут назад, EdwardSt сказал:

Это точно сюда?

думаю да

ТС пытается загрузить в нано вот это https://forum.dwg.ru/showthread.php?t=57484&page=33

 

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

мои познания в лисп скудны,  но как ты интерпретируешь эту строчку??)

(PRINC "\nADV_Toolkit успешно загружен и настроен.")

 

Link to comment
Share on other sites

40 минут назад, doctorraz сказал:

,  но как ты интерпретируешь эту строчку??)

(PRINC "\nADV_Toolkit успешно загружен и настроен.")

(PRINC "\nADV_Toolkit успешно загружен и настроен.")

Это единственное, что перекликается с твоим комментом.

Но вопрос поднят не об адаптации приложения, а конкретно о неработающей функции (vla-put-... ).

К сожалению, она действительно не работает...

И это затрагивает значительно более широкую аудиторию, чем потенциальные пользователи ADV_ToolKit на базе Нанокад

Link to comment
Share on other sites

1 минуту назад, EdwardSt сказал:

Но вопрос поднят не об адаптации приложения, а конкретно о неработающей функции

вопрос о том, что в первом посте топа инсталлятор который сам по себе никакой пользы не имеет

конечная цель загрузка и настройка приложения которое в принципе в НК не работоспособно

эту мысль ТС'у я и попытался донести...

 

и даже если бы  

2 минуты назад, EdwardSt сказал:

(vla-put-... )

работала, это ТС'у  в данном конкретном случае никак не помогло бы, просто я немного забежал вперед.. предвосхищая следующие вопросы)))

---------------------

8 минут назад, EdwardSt сказал:

это затрагивает значительно более широкую аудиторию, чем потенциальные пользователи ADV_ToolKit на базе Нанокад

дык кто же спорит, давно бы уже тему

Неработающие lisp функции нанокад иль чего подобное запилили

вон и у Алексея мысли в этом направлении бродят

 

В 15.03.2023 в 12:01, kpblc сказал:

мелькнула мысль нарисовать некий аналог Assert из C# для проверки работы функций. Оно кому-нибудь надо или хоронить идею?

Link to comment
Share on other sites

26 минут назад, doctorraz сказал:

вопрос о том, что в первом посте топа инсталлятор который сам по себе никакой пользы не имеет

конечная цель загрузка и настройка приложения которое в принципе в НК не работоспособно

эту мысль ТС'у я и попытался донести...

 

Первый пост был с конкретной проблемой ( 2 сообщения об ошибке):

  1. Окошко про неподдерживаемую функцию (vl-put-...). Самая интересная часть и самая неприятная, т.к. относится ко всем пользователям функции. Решения для автора ветки предложить не удалось. Даже @kpblcрасписался в бессилии на данный момент.
  2. "Неверный тип аргумента 2D/3D point: nil" -  менее интересная и ограниченно неприятная. Вызвана тем, что пытается считать/инициализировать несуществующую системную переменную  WSCURRENT, отвечающую за управление рабочим пространством, которого нет в нанокаде. На мой взгляд, достаточно просто закомментить эту строку и забыть о проблеме.

То, что угадали следующие вопросы автора ветки и избавили его от сизифова труда в виде попыток загрузки *.fas - файлов и файлов частичной адаптации, это, конечно, разумные советы, но это  не ответ на конкретные вопросы. Если человек спросил, почему не работает механизм, это не обязательно значит, что ему нужно рассказывать про невозможность вечного двигателя.

Link to comment
Share on other sites

3 часа назад, EdwardSt сказал:

То, что угадали следующие вопросы автора

Мы не гадаем, Мы анализируем, если внимательно прочитать пост ТС, он не про лисп от слова совсем..

3 часа назад, EdwardSt сказал:

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

В этом конкретном случае да,

ему надо программу запустить или понять, что это невозможно и не тратить свое время,

а не разбираться в vla- функциях..

4 часа назад, EdwardSt сказал:

К сожалению, она действительно не работает...

И это затрагивает значительно более широкую аудиторию

С этого места про широкую затронутую аудиторию поподробнее, если не затруднит, можно со ссылками где кого когда затронула..

Ну и насколько я понял речь о чтении и записи путей окружения/поддержки, кои хранятся в реестре, нанолисп насколько мне известно с реестром умеет, т.е.   эта конкретная задача с традиционными бубном и костылями решаема..

Если ты действительно хотел помочь человеку, а не пообсуждать чего нана не умеет

 

Link to comment
Share on other sites

Ой, не душни :) Попробуй любым доступным способом поменять пути шаблонов, установить "шаблон по умолчанию", путь к которому вообще где-то на серваке валяется. Ну и запретить, ессно, пользователям пытаться поменять эти настройки. Ну и в ту же степь овердофига всяких настроек (пути поддержки, пути плоттеров и далее по тексту - все, что нужно плюс-минус адекватному CAD-манагеру) :)

Если чо, без наездов ;)

Link to comment
Share on other sites

17 минут назад, kpblc сказал:

Ой, не душни

и не думал даже

просто при желании все решаемо, не так легко и приятно как в оригинале, но мы жэж привычные анально импортозамещательно все тут в нано делать

Спойлер

image.thumb.png.8c7f9ac77f42a48029b1f0e788ed12db.png

меняй не хочу, и пути окружения тут жэж рядом... реверсинжиниринг называется, потому как в справке по API  тож сахАра

17 минут назад, kpblc сказал:

Ну и запретить, ессно, пользователям пытаться поменять эти настройки

а вот тут фигушки, это в hkcu, там юзер хозяин, хотя 

вот решение что б юзер не отключил 

 

----------------------

все это к тому, что тут это не там... нана делает в принципе все так жэж как оригинал, только API сахаркА разработчикам некогда подсыпать, поэтому не

гетсет сисвариабле, а ручками в реестре ... читаем пишем и т.д.

у тебя жэж когда то был жигуль? ну вот тут  примерно то же самое...90е

 

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

я к тому это все написал, что реализацию нужного функционала от разработчиков можно ждать годами без особого результата...

а работать надо уже еще вчера

поэтому включать фантазию креатив и из глины и палок лепить  рабочее решение здесь и сейчас..

 

Edited by doctorraz
Link to comment
Share on other sites

1 час назад, kpblc сказал:

пути поддержки

Кстати нана боле мене научился их понимать только вот прям щас с 22 23й версии, до этого пути были, только нана сам по себе они сами по себе

Ну и еще усугубляется тем что net.api не умеет лисп функции, но обещают сделать два года уже

Edited by doctorraz
Link to comment
Share on other sites

2 часа назад, doctorraz сказал:

Мы не гадаем, Мы анализируем, если внимательно прочитать пост ТС, он не про лисп от слова совсем..

Ваш полет фантазии превращает все, что Вы читаете в то, что Вам нравится анализировать.

Вопрос был именно про лисп, хотя автор сам признался, что в этом не спец.

И очевидно, что если б эти функции сработали, то следующим вопросом было бы что-то про fas-файлы.

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

Не зависящей от конкретного приложения.

Почему про нее мало запросов?

Потому то она нужна серьезным разработчикам, которые привыкли , уперевшись в подобную проблему, самостоятельно исследовать пределы работоспособности функции и подобрать альтернативу, т.к. вполне резонно не рассчитывают получить ответ на форуме. Единственное что остается - донести информацию о выявленной проблеме до разработчиков. А ВыВсеДоЕдиного (относится только к @doctorraz, если чо) зачастую мешаете донести эту информацию,  заведомо решая, что исправлять нужно, а что нет. 

Link to comment
Share on other sites

7 часов назад, EdwardSt сказал:

мешаете донести эту информацию,  заведомо решая, что исправлять нужно, а что нет. 

Дык доноси, ктожэжзапретитьтопосмеет..

В основном жалуешься, как я тебе мешаю это делать.

В клубе разработчиков заводишь задачу, ссылку на эту тему...

Разработчики ставят задачу в очередь.. ждешь и иногда их шебуршишь когда жэж когда, если еще ктото присоединится, то вероятность, что сделают быстрее увеличивается.

----

И напомни ка, где я написал, что чинить функции не надо?

Всего лишь подсказал ТСу, что это приложение у него не взлетит, дальше все сами

Edited by doctorraz
  • Like 1
Link to comment
Share on other sites

2 часа назад, doctorraz сказал:

Дык доноси, ктожэжзапретитьтопосмеет..

В основном жалуешься, как я тебе мешаю это делать.

Господи, какие уж тут жалобы?:D

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

Это просто констатация факта.

И да, зачастую при этом замыливается проблема. Или не проблема?

Я уж сам запутался...

Link to comment
Share on other sites

  • Megaz locked this topic
Guest
This topic is now closed to further replies.
 Share

  • Tell a friend

    Love Официальный форум компании Нанософт Разработка? Tell a friend!
×
×
  • Create New...