Сообщество программистов Autodesk в СНГ

ADN Club => JavaScript и web-программирование для ПО Autodesk => Тема начата: Андрей Бушман от 21-03-2014, 12:34:12

Название: Выгрузка кода JavaScript
Отправлено: Андрей Бушман от 21-03-2014, 12:34:12
Можно ли выгрузить ранее загруженный код JavaScript или же это невозможно, как для LISP? В .NET API вижу только возможность загрузки.
Название: Re: Выгрузка кода JavaScript
Отправлено: Александр Ривилис от 21-03-2014, 15:35:46
Можно ли выгрузить ранее загруженный код JavaScript или же это невозможно, как для LISP?
Ну, во-первых, выгрузить можно только компилированный LISP. JavaScript выгрузить нельзя и интуиция подсказывает, что этого никогда не будет. В чем-то JavaScript напоминает некомпилированный LISP.
Название: Re: Выгрузка кода JavaScript
Отправлено: Алексей Кулик от 23-03-2014, 13:37:27
Стоп, что значит "выгрузить"? Сделать недоступной функцию? Так это и в некомпилированном лиспе делается на ура. Или я чего-то не понимаю?
Название: Re: Выгрузка кода JavaScript
Отправлено: Александр Ривилис от 23-03-2014, 13:40:00
Стоп, что значит "выгрузить"?
Выгрузить - это выгрузить. Т.е. загрузили файл file.vlx, а затем его выгрузили. Соотвественно все (!!!) функции, определенные в нем становятся недоступными.
Название: Re: Выгрузка кода JavaScript
Отправлено: Алексей Кулик от 23-03-2014, 22:33:49
Я аналогичные действия с любым лиспом могу провернуть:
_$ tt
nil
_$
Создаем функцию
(defun tt ()
  (princ "\nTest function")
  (princ)
  ) ;_ end of defun
И загружаем ее:
_$

TT
; 1 form loaded from #<editor "<Untitled-0> loading...">
_$ tt
#<USUBR @00000000331b5c50 TT>
Теперь присваиваем ей nil:
_$ (setq tt nil)
nil
_$ tt
nil
_$
Все, функция "выгружена", т.е. ее код стал недоступен.  Или тут опять какие-то высшие материи? :)
Название: Re: Выгрузка кода JavaScript
Отправлено: Александр Ривилис от 23-03-2014, 22:40:05
Все, функция "выгружена", т.е. ее код стал недоступен.  Или тут опять какие-то высшие материи? :)
Ага. Ну во-первых JS не lisp. Во вторых и в lisp'е ты когда грузишь lsp-файл не знаешь заранее список всех функций, которые в нём определяются. Причем часть из них может вообще динамически создаваться. Так что то, что следует "обниливать" совершенно неясно. В чистом виде можно выгружать только arx/dbx/dvb/vlx-файлы.

Похоже я был не прав. У команды WEBLOAD есть опция _UNLOAD, т.е. выгружать можно!
Приношу извинение всем, кого ввёл в заблуждение. Что касается .NET API, то в нём похоже такую возможность (пока) не добавили.
Название: Re: Выгрузка кода JavaScript
Отправлено: Алексей Кулик от 23-03-2014, 22:42:34
Во вторых и в lisp'е ты когда грузишь lsp-файл не знаешь заранее список всех функций, которые в нём определяются. Причем часть из них может вообще динамически создаваться.
Ну, atoms-family еще пока работает :)
Название: Re: Выгрузка кода JavaScript
Отправлено: genfild от 29-05-2015, 21:49:02
У меня одного командой WEBLOAD не  выгружает скрипт?
Делаю поправки в скрипт, но он AutoCADом не обновляется, даже после перезапуска выполняется первоначальный скрипт.
Название: Re: Выгрузка кода JavaScript
Отправлено: Александр Ривилис от 29-05-2015, 22:17:45
Приветствую на форуме.
У меня одного командой WEBLOAD не  выгружает скрипт?
Проверил - выгружает. Для примера взял код отсюда: http://adndevblog.typepad.com/autocad/2013/03/reactors-using-autocad-javascript-api.html
1. Сохранил его по адресу c:\1.js
2. Загрузил при помощи WEBLOAD
3. Убедился что команда STARTMONITOR работает.
4. Выгрузил
5. Убедился что команда STARTMONITOR не работает.
6. Изменил в коде имя команды на STARTMONITOR1.
7. Убедился что команда STARTMONITOR1 работает.
Проверял в AutoCAD 2016 x64
Название: Re: Выгрузка кода JavaScript
Отправлено: genfild от 29-05-2015, 22:43:16
Попробуйте изменить этот скрипт и опять загрузить. У меня выполняется первоначальный. Попробуйте ссылку, а не локальный путь. Ссылки понимает и фтпишные.
Название: Re: Выгрузка кода JavaScript
Отправлено: Александр Ривилис от 29-05-2015, 23:36:55
Попробуйте изменить этот скрипт и опять загрузить.
Ты невнимательно прочитал мой ответ. Я менял скрипт, загружал его и выполнял по новой - выполнялась новая версия скрипта.
Попробуйте ссылку, а не локальный путь. Ссылки понимает и фтпишные.
Проверил на своём сайте: http://maestrogroup.com.ua/1.js - изменял текст, выгружал и загружал по новой. Всё работает правильно - работает изменённый код. Похоже, что у тебя не сбрасывается кэш и поэтому скачивается старое состояние файла. Других предположений у меня нет. Проверь с локальным расположением файла.
Название: Re: Выгрузка кода JavaScript
Отправлено: genfild от 30-05-2015, 06:50:09
Спасибо, извините, действительно не заметил 6 и 7 пункты.
Но не работает.
Про кеш
Пробовал версию на сайте http://through-the-interface.typepad.com/through_the_interface/2013/03/implementing-an-autocad-palette-using-html5-and-javascript.html (http://through-the-interface.typepad.com/through_the_interface/2013/03/implementing-an-autocad-palette-using-html5-and-javascript.html)
Цитировать
I deleted the contents of the following folder, which seemed to do the trick (and should be safe as they’re stored beneath the temp folder): “C:\Users\username\AppData\Local\Temp\cache”
Остается вопрос, где очистить кеш? :(
Название: Re: Выгрузка кода JavaScript
Отправлено: Андрей Бушман от 30-05-2015, 09:59:05
Что касается .NET API, то в нём похоже такую возможность (пока) не добавили.
Она появится лишь в том случае, если управляемые расширения будут загружаться в отдельные домены (AppDomain).
Название: Re: Выгрузка кода JavaScript
Отправлено: genfild от 30-05-2015, 10:15:46
Запутался.
Как мне отлаживать мое приложение на js?
Название: Re: Выгрузка кода JavaScript
Отправлено: Александр Ривилис от 30-05-2015, 10:51:07
Что касается .NET API, то в нём похоже такую возможность (пока) не добавили.
Она появится лишь в том случае, если управляемые расширения будут загружаться в отдельные домены (AppDomain).

Ты меня не понял. Речь шла о выгрузке средствами AutoCAD .NET API кода JavaScript. То есть Application.LoadJSScript есть, а Application.UnLoadJSScript - нет.
Название: Re: Выгрузка кода JavaScript
Отправлено: genfild от 30-05-2015, 10:53:52
Спасибо.
Но как быть с командой WEBLOAD, где искать кеш?
Название: Re: Выгрузка кода JavaScript
Отправлено: Александр Ривилис от 30-05-2015, 10:54:40
Остается вопрос, где очистить кеш? :(
Запутался.
Как мне отлаживать мое приложение на js?
Подозреваю что это проблемы с неочисткой кеша на сервере. Как его чистить - не подскажу. Попробуй отлаживать код используя локальное расположение JS.
Название: Re: Выгрузка кода JavaScript
Отправлено: genfild от 30-05-2015, 11:42:56
На другом компьютере почему-то вообще WEBLOAD не запускает скрипты.
Цитировать
Команда: WEBLOAD
Введите параметр [Загрузить/вЫгрузить/?] <Загрузить>:
Введите URL-адрес JavaScript для загрузки: "C:\Program Files\Autodesk\ApplicationPlugins\sgTopo.bundle\Contents\test.js"
Команда: WEBLOAD
Введите параметр [Загрузить/вЫгрузить/?] <Загрузить>: ?

Загруженные файлы JavaScript:
C:\Program Files\Autodesk\ApplicationPlugins\sgTopo.bundle\Contents\test.js
Название: Re: Выгрузка кода JavaScript
Отправлено: Александр Ривилис от 30-05-2015, 13:38:54
Тут может быть множество причин. В частности системный запрет на выполнение VBScript/JavaScript.