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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Notepad++ как альтернатива VLIDE (NPPVLIDE)

Notepad++ как альтернатива VLIDE (NPPVLIDE)

Результаты опроса: Есть ли смысл развивать идею дальше?
Да 12 66.67%
Нет 4 22.22%
Не знаю 2 11.11%
Голосовавшие: 18. Вы ещё не голосовали в этом опросе

Ответ
Поиск в этой теме
Непрочитано 28.01.2015, 23:19 #1
Notepad++ как альтернатива VLIDE (NPPVLIDE)
mmax
 
Программист широкого профиля.
 
Челябинск
Регистрация: 08.09.2005
Сообщений: 722

Предлагаю вашему вниманию альтернативный LISP-редактор на основе Notepad++.

Что там имеется:
Официальная zip/portable версия Notepad++ 6.7.8 с необходимыми плагинами.
Не требует установки
Пользовательский синтаксис для языка AutoLISP с 99.9% функций.

Что оно умеет:
1. Загрузить активное окно редактора
2. Загрузить выделенный фрагмент кода в Автокад.
3. Отправляет в командную стоку AutoCAD выделенный текст с восклицательным знаком в начале. Это позволяет получить значение переменной.
4. Применяет выделенный текст в качестве аргумента функции vlax-dump-object
5. Выполняет в AutoCAD Функцию (vlax-dump-object (vlax-ename->vla-object (car (entsel))) t)
6. Выполняет в AutoCAD Функцию (entget (car (entsel)))
На панели инструментов вы найдете две, до боли знакомые, кнопки из редактора VLIDE.

Increase Size Decrease Size Нажмите для просмотра
http://www.youtube.com/watch?v=UzXSGacdNjA
Возможности почти безграничны, но до полноценного VLIDE не тянет.

Код:
[Выделить все]
Для взаимодействия редактора и AutoCAD применяются плагин NppExec и приложение AcadLISPLauncher.exe которое находится в $(NPP_DIRECTORY)\NPPVLIDE\AcadLISPLauncher 2.1.exe

Параметры запуска AcadLISPLauncher

/load "путь к файлу.lsp" - загружает LISP-файл в AutoCAD

/vdo "ТЕКСТ" - выполняет (vlax-dump-object ТЕКСТ t)

/cmd "ТЕКСТ" - отправляет ТЕКСТ в командную строку AutoCAD. При этом окно AutoCAD не активируется.

/cmda "ТЕКСТ" - отправляет ТЕКСТ в командную строку и активирует окно AutoCAD.

Вложения
Тип файла: zip npp.zip (6.66 Мб, 152 просмотров)


Последний раз редактировалось mmax, 19.05.2015 в 18:20. Причина: Ошибки исправлены, файл перезалит
Просмотров: 13245
 
Непрочитано 01.02.2015, 19:36
#2
nikе

конструктор Лего
 
Регистрация: 21.10.2005
Краснодар
Сообщений: 204


Привет, mmax!
Можешь ли связать этот редактор с Bricscad 13? Возможно ли реализовать точки останова как в M$ VS?
nikе вне форума  
 
Автор темы   Непрочитано 02.02.2015, 23:43
#3
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Цитата:
Сообщение от nikе Посмотреть сообщение
Можешь ли связать этот редактор с Bricscad 13?
Когда я собрался в лес по грибы меня позвали на рыбалку.
Для Bricscada делать связку не буду, но расскажу в каком направлении нужно копать.

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

В языках M$ VS есть функция GetObject. Она полностью идентична автолисповской функции (vlax-get-object).
В общем AcadLISPLauncher2 всего лишь выполняет такой код:
Код:
[Выделить все]
AcadObj.ActiveDocument.SendCommand("(load "путь к лисп-файлу полученый из параметра запуска программы AcadLISPLauncher2") ")
Метод SendCommand в технологии ActiveX автокада полностью идентичен лисп-функции (command) или (vl-cmdf). То бишь AcadLISPLauncher2 используя технологию ActiveX тупо пишет в командной строке функцию (load) таким образом как если бы вы её туда ввели руками.

В Bricscad тоже есть поддержка ActiveX. Значит наверняка есть и метод типа SendCommand. Написать программку на бейсике не составит большого труда.


Цитата:
Сообщение от nikе Посмотреть сообщение
Возможно ли реализовать точки останова как в M$ VS?
Это будет очень не просто. ActiveX тут явно будет недостаточно.
Мне вот интересно, насколько часто народ пользуется системой остановов в vlide?
mmax на форуме  
 
Непрочитано 03.02.2015, 00:17
#4
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от mmax Посмотреть сообщение
насколько часто народ пользуется системой остановов в vlide?
Практически постоянно Говорю про себя.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 03.02.2015, 00:21
#5
Александр Ривилис

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


Цитата:
Сообщение от mmax Посмотреть сообщение
Метод SendCommand в технологии ActiveX автокада полностью идентичен лисп-функции (command) или (vl-cmdf)
Да ну?
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 03.02.2015, 00:40
#6
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Практически постоянно Говорю про себя.
Я могу еще понять останов на ошибке, а вот нужность остальных остановов для меня загадка.
Лично мне функционал npp больше нравится чем возможность остановов в VLIDE
В любом случае для решения этой задачи придется делать какой нибудь отладчик с дизассемблированием. Не имею планов.

Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Да ну?
У каждой функции есть свои крокодилы, но предназначение у них одно. Если Вам не нравится слово "идентичность", то назовем их: "одного поля ягоды".
mmax на форуме  
 
Непрочитано 03.02.2015, 18:41
#7
Do$

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


Цитата:
Сообщение от mmax Посмотреть сообщение
Я могу еще понять останов на ошибке, а вот нужность остальных остановов для меня загадка.
Отлов ошибок - занятие творческое. Без остановок и контроля значений в нужных местах кода иногда не обойтись. Дошел до точки останова, а дальше - отладка по шагам. Трассировка, опять же, очень помогает. Писать можно в чем угодно, но для отладки VLIDE вне конкуренции.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 04.02.2015, 18:51
#8
Дима_

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


Цитата:
Сообщение от mmax Посмотреть сообщение
Мне вот интересно, насколько часто народ пользуется системой остановов в vlide?
Вообще не использую ни остановку ни трассировку и не только в Vlide (активно трассировкой пользовался только в ассемблере) - но широко использую всевозможные (для разных языков разные) "примочки" IDE - подсветки, рефакторинг, автозаполнение, автогенерацию и пр. Самое близкое к отладке - из того что использую - Macro Stepper (отображает как развертывается макрос до компиляции).
p.s. а ну и REPL конечно.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 19.02.2015, 00:01
#9
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


mmax, наконец-то дошли руки испробовать твое изобретение. Я сразу решил пойти по пути опытных и портировать его в свою сборку NP++. Однако, опытным я стал только минут через 20-30. Это я к тому, что если не трудно, опиши, пожалуйста, подробнее для не самых опытных процесс портирования в существующую сборку.
Итак, разобравшись настолько, насколько смог, я потестировал NPPVLIDE и вот что обнаружил.
1. Иконки на панели у меня почему-то так и не появились.
2. При отправке в AutoCAD и дальнейшем возврате в консоль NP++ фрагментов кода, содержащаяся в строках в кириллица преобразуется в кракозябры. Пробовал менять кодировки - не помогло. Что делать?
3. Так и не смог повесить вызов конкретного действия на горячую клавишу. Такое вообще возможно? В меню Макросы команды добавить удалось, а вот с горячей кнопки запускается максимум окно NPPExec, и из него уже надо выбрать нужное действие. Может, недостаточно расковырял настройки?
А вообще, идея мне понравилась. В NP++ больше всего мне не хватало трех вещей из тех, которые есть во VLIDE: инструмента для контроля значений переменных, загрузки в КАД файла lsp и загрузки в КАД фрагмента кода. Для первого я нацарапал себе несложный контроллер на лиспе, второй решил принудительной загрузкой lsp при каждом вызове тестируемой команды в режиме отладки, а вот с третьим до сих пор ничего не придумал толкового. Приходилось либо форматировать ступеньки в коде до одной строки на каждое выражение, либо же запускать VLIDE. Сегодня кодил - тестировал фрагменты прям из блокнота - доволен, понравилось, спасибо, mmax, за полезную для меня вещь.
skkkk вне форума  
 
Автор темы   Непрочитано 19.02.2015, 16:59
#10
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Цитата:
Сообщение от skkkk Посмотреть сообщение
1. Иконки на панели у меня почему-то так и не появились.
За иконки отвечает нотпадовский плагин Customize Toolbar. Для настройки этого плагина нужно стать еще более опытным. Я набирался опыта дня 2. В гугле много информации для получения опыта. Я буду краток и распишу только основной момент. Чтобы свои кнопки наконец-то заработали надо файл CustomizeToolbar.btn сохранить в кодировке UCS-2 Little Endian.

Цитата:
Сообщение от skkkk Посмотреть сообщение
кириллица преобразуется в кракозябры.
Плагины - NPPEXCES - Console Output...{ANSI/UTF-8}
Еще как вариант сам AcadLISPLauncher2.exe поддеживает параметр /cp
Пример:
Код:
[Выделить все]
AcadLISPLauncher2.exe /load "путь к lsp файлу" /cp UTF-8
Но сначала лучше настроить вывод консоли NPPEXCES и только потом использовать /cp если не помогает.


Цитата:
Сообщение от skkkk Посмотреть сообщение
3. Так и не смог повесить вызов конкретного действия на горячую клавишу.
На данный момент не рассматривал эту проблему. Думаю что это скорее возможно. Через настройки NPPEXCEС можно закинуть команду в меню Макросы.


Цитата:
Сообщение от skkkk Посмотреть сообщение
инструмента для контроля значений переменных
В данный момент почти готова такая штука как получение значения переменной из выделенного фрагмента кода. Переменная должна быть глобальна.
mmax на форуме  
 
Непрочитано 19.02.2015, 18:20
#11
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Цитата:
Сообщение от mmax Посмотреть сообщение
Плагины - NPPEXCES - Console Output...{ANSI/UTF-8}
Не помогло.
Цитата:
Сообщение от mmax Посмотреть сообщение
Еще как вариант сам AcadLISPLauncher2.exe поддеживает параметр /cp
Тоже безрезультатно.

Помогло вот что:
Цитата:
Сообщение от mmax Посмотреть сообщение
Код:

Код:
[Выделить все]
запуск выделенного фрагмента
sel_saveto $(NPP_DIRECTORY)\NPPVLIDE\nppvlidetmp.lsp : UTF-8ANSI
"$(NPP_DIRECTORY)\NPPVLIDE\AcadLISPLauncher2.exe" /load "$(NPP_DIRECTORY)\NPPVLIDE\nppvlidetmp.lsp"
Цитата:
Сообщение от mmax Посмотреть сообщение
В данный момент почти готова такая штука как получение значения переменной из выделенного фрагмента кода. Переменная должна быть глобальна.
Интересно. А то, что глобальной должна переменная быть, так у меня и есть: на время отладки кода я комментирую строки, где переменные объявляются локальными, кроме тех переменных, которые по логике работы программы не должны быть глобальными. А дальше из Автокада вызываю их список со значениями.
skkkk вне форума  
 
Автор темы   Непрочитано 19.02.2015, 21:52
#12
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Цитата:
Сообщение от skkkk Посмотреть сообщение
Тоже безрезультатно.

Помогло вот что:
Я так подозреваю, что у каждой версии и локализации автокада свои тараканы в кодировке символов. Наверное золотой середины тут не найти. Но судя по всему безвыходных положений не бывает.

Цитата:
Сообщение от skkkk Посмотреть сообщение
Интересно
Все очень просто. Если в автокаде ввести любой набор символов с восклицательным знаком в начале, то он выдаст в ответ значение этого выражения как значение переменной. AcadLISPLauncher будет посылать !выделенный_текст в комстроку автокада и выводить результат в консоль npp.

Еще в планах сделать команду которая будет применять к выделенному тексту функции vlax-dump-object и entget. Наверно это будут очень полезные плюшки, которые не реализованы в vlide.
mmax на форуме  
 
Непрочитано 19.02.2015, 22:45
#13
Кулик Алексей aka kpblc
Moderator

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


Позволю себе влезьть с ваш увлекательнейший диалог. lsp сохраняются в кодировке ANSI (мне так каэцца), а не UTF-8. До версии 2013 это мало кого волновало, но потом началось (до выпуска SP).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.02.2015, 10:38
#14
trushev


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


Извините за дремучесть. Когда-то изобрел велосипед. Может кому сгодится или подаст идею.
Код:
[Выделить все]
;
;ФУНКЦИЯ ОТЛАДКИ
;
(defun tect (kat / f)
            (setq f (open "aa" "w"))
            (princ (list kat) f)
            (close f)
            (setq f (open "aa" "r"))
            (alert (read-line f))
            (close f)
);defun tect
;
;Функция вставляется в точках останова:
;(tect (list "TECT 1"
;            "   A = " a
;            "   B = " b
;            "   C = " c
;            ...
;      )
;)
;На вход подается список:
;          "TECT 1" - номер точки останова
;          a, b, c - переменные, значения которых нужно увидеть
;

Последний раз редактировалось Кулик Алексей aka kpblc, 20.02.2015 в 10:45.
trushev вне форума  
 
Непрочитано 20.02.2015, 10:45
#15
Кулик Алексей aka kpblc
Moderator

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


trushev, тэг [code][/code] для чего существует, как ты думаешь?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.02.2015, 11:42
#16
trushev


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
trushev, тэг для чего существует, как ты думаешь?
Век живи, век учись.
trushev вне форума  
 
Непрочитано 13.03.2015, 22:08
#17
dows

nanoCAD, ArchiCAD - все что с ними связано :-)
 
Регистрация: 25.12.2008
Москва
Сообщений: 607


а еще есть nanoCAD
dows вне форума  
 
Автор темы   Непрочитано 17.05.2015, 23:36
#18
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Обновление. Качайте в первом сообщении. Читайте справку, задавайте вопросы.
mmax на форуме  
 
Непрочитано 19.05.2015, 16:35
#19
frostmourn


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


Нужные кнопочки, спасибо! Только почему-то перестала работать загрузка активного окна...
Такое пожелание есть - чтобы в новых версиях настройки по умолчанию оставались теми же. Хотя вот подумал, по идее, достаточно заменить .xml-и, относящиеся к конфигурации и стилям, нового ничего не потеряется?..
И ещё вопрос - как добавлять/редактировать кнопки на панели инструментов?
frostmourn вне форума  
 
Автор темы   Непрочитано 19.05.2015, 18:32
#20
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Цитата:
Сообщение от frostmourn Посмотреть сообщение
Только почему-то перестала работать загрузка активного окна
Исправлено, файл перезалит.
Цитата:
Сообщение от frostmourn Посмотреть сообщение
Такое пожелание есть - чтобы в новых версиях настройки по умолчанию оставались теми же.
Вопрос не понятен.

Цитата:
Сообщение от frostmourn Посмотреть сообщение
Хотя вот подумал, по идее, достаточно заменить .xml-и, относящиеся к конфигурации и стилям, нового ничего не потеряется?..
Экспериментируйте и делайте резервные копии файлов.
А вообще лично я использую сразу несколько портабельных(не требующих установки) версий и каждая адаптирована под определенные нужды.
Например для вебпрограммирования требуются одни кнопки и менюшки для LISP-программирования другие. В итоге у меня есть 2 блокнота npp с разными интерфейсами.

Цитата:
Сообщение от frostmourn Посмотреть сообщение
И ещё вопрос - как добавлять/редактировать кнопки на панели инструментов?
Плагин Customize Toolbar управляет расположением кнопок.
Свои кнопки с иконками прописываются в файле plugins\Config\CustomizeToolbar.btn
свои иконки должны лежать в папке plugins\Config\
mmax на форуме  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Notepad++ как альтернатива VLIDE (NPPVLIDE)

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

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