Адаптация древних lisp-приложений под AutoCad 2016
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Адаптация древних lisp-приложений под AutoCad 2016

Адаптация древних lisp-приложений под AutoCad 2016

Ответ
Поиск в этой теме
Непрочитано 26.01.2016, 14:26 #1
Адаптация древних lisp-приложений под AutoCad 2016
trushev
 
Регистрация: 12.01.2015
Сообщений: 261

Суть вопроса: как в AutoCad 2016 обойти отсутствие в путях поиска по умолчанию текущего каталога?

Наименование темы схоже с закрытой: Адаптация lisp-приложения под AutoCAD 2010 от 18.08.2010.
Ничего иного не нашел.

Есть около сотни lisp программ (расчетных и параметрического вычерчивания) с одинаковыми именами файлов поддержки и с системой пуска изначально примененной под R12:
"...\acad.exe" "...\*.dwg" /b "...\*.scr" /nologo, где "...\acad.exe" - запуск AutoCad с загрузкой "...\*.dwg" - файла прототипа и /b "...\*.scr" -пакета, запускающего lisp; /nologo - без заставки AutoCad.

Такой пуск позволяет работать с файлом, где уже установлена значительная часть настроек (системные переменные, слои, шрифты, типы линий, необходимые блоки и тп). Каталог с файлом прототипа является текущим, и при размещении в нем вспомогательных файлов снимался вопрос поиска файлов поддержки для версий от R12 по AutoCad 2015.
Пример программы: http://forum.dwg.ru/showthread.php?t=125737

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

2. В программах прописать полные имена файлов поддержки.
Существенный объем переработки.
Каждая программа будет жестко привязана к своему каталогу.

3. Указать в путях поиска файлов поддержки каталоги с программами, файлам поддержки дать уникальные имена.
Существенный объем переработки.

4. Как еще можно решить проблему?
Просмотров: 16422
 
Непрочитано 26.01.2016, 16:14
#2
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<phrase 1=


Цитата:
Сообщение от trushev Посмотреть сообщение
4. Как еще можно решить проблему?
Так и хочется отправить в тему "Поиск исполнителей"
По ссылке сходил, глянул.
Хорошо gomer сказал
Цитата:
Сообщение от gomer Посмотреть сообщение
Программка - действительно хлам, точнее ее оформление... можно было бы хотя бы команду нарисовать, а то запускать загрузкой лиспа... это так архаично...
ИМХО. Тут надо просто превратить набор ЛИСП"ов в удобоваримую программку.
P.S. Сам взяться не могу, отбываю в отпуск.
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Автор темы   Непрочитано 26.01.2016, 16:49
#3
trushev


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


Цитата:
Сообщение от Alan Посмотреть сообщение
Сам взяться
Не благодарный это труд. Не в этом вопрос. Фирма переходит на AutoCad 2016 и возникают проблемы с многолетними наработками.
Повторюсь с главным вопросом: как в AutoCad 2016 обойти отсутствие в путях поиска по умолчанию текущего каталога?
Впрочем на мой век хватит. На горизонте завершение трудовой деятельности, а больше эти наработки никому не нужны.
trushev вне форума  
 
Непрочитано 26.01.2016, 17:46
#4
Do$

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


Прочитал, но до конца так и не понял. Что значит текущий каталог? Папка, в которой находится открываемый чертеж? Что нужно загружать? Сперва я подумал, что речь идет о лиспах, но потом увидел, что имеются в виду какие-то "файлы поддержки". Что такое "файл прототипа"?
В общем, нужны пояснения. Видео, картинки или очень подробное описание в наиболее общепринятой терминологии.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 26.01.2016, 18:00
#5
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<phrase 1=


Цитата:
Сообщение от trushev Посмотреть сообщение
как в AutoCad 2016 обойти отсутствие в путях поиска по умолчанию текущего каталога?
IMHO. Нельзя
А что мешает добавить необходимый каталог в пути поиска и сохранить в профиле? Профиль - ключевое слово!
Всё равно используется "уникальный", т.е. самодельный ярлык.

Что есть в твоём/вашем понимании текущий каталог?
Каталог с открытым чертежом/файлом Автокада или папка/каталог окна свойств ярлыка программы?
Смотрим ХЕЛП
Цитата:
Путь поиска библиотек
Поиск вспомогательных файлов осуществляется в соответствии с установленным путем поиска библиотек, т.е. в следующем порядке:

Текущая папка. Как правило, она задается в поле “Рабочий каталог” окна свойств ярлыка программы.
Папка, в которой находится текущий файл чертежа.
Папки, перечисленные при задании пути доступа в команде НАСТРОЙКА. (См. раздел Укажите "Пути поиска" и "Местоположения файлов" в Руководстве пользователя.)
Папка, в которой находятся программные файлы AutoCAD.
В зависимости от установок среды, имена двух или более папок из приведенной последовательности могут совпадать.

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

AutoCAD использует иерархическую структуру папок. Рекомендуется хранить дополнительные файлы (например, приложения на языке AutoLISP и файлы настройки) отдельно от программных и вспомогательных файлов AutoCAD. Это упрощает разрешение возможных конфликтов и дает возможность обновлять версии приложений, не воздействуя на другие приложения.
Чтобы там не говорили в ХЕЛПЕ, главное - Путь к тому что ты ищешь д.б. описан!
Ну и запуск программы решается более простым способом, а не vd.scr
Каким образом?
Это следующая проблема, обычно решаемая при переводе ЛИСП-текстов в ЛИСП-программку.
Описано в литературе и обсуждалось неоднократно.
ИМХО Не правильно открывать файл "C:\LSP_WIN\GIDROLOG.IYA\VODOPROPUSK\vd.dwg", начинать работу надо с чертежа-прототипа,
например, так в комстроке запуска /t "C:\LSP_WIN\GIDROLOG.IYA\VODOPROPUSK\vd.dwT"
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...

Последний раз редактировалось Alan, 26.01.2016 в 19:06.
Alan вне форума  
 
Непрочитано 26.01.2016, 18:19
#6
Владимир_М


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


Цитата:
Сообщение от trushev Посмотреть сообщение
Не благодарный это труд. Не в этом вопрос. Фирма переходит на AutoCad 2016 и возникают проблемы с многолетними наработками.
Повторюсь с главным вопросом: как в AutoCad 2016 обойти отсутствие в путях поиска по умолчанию текущего каталога?
И повторно, все так же непонятен главный вопрос. Ну и добавить этот путь в настройках акада. Или я совсем- совсем не понял вопрос.

Цитата:
Сообщение от trushev Посмотреть сообщение
На горизонте завершение трудовой деятельности, а больше эти наработки никому не нужны
А вот торопиться не надо на счет "не нужны"...
Если Вам они были нужны, то найдется и другие, кому они необходимы, Вы ж не единственный в стране специалист в данной области!
И вообще, мне кажется, самое плодотворное время будет как раз на пенсии!!! Это сейчас ни на что не хватает времени!


Извините, пока собирался с мыслями, Alan уже все прописал более развернуто

Последний раз редактировалось Владимир_М, 26.01.2016 в 18:27.
Владимир_М вне форума  
 
Непрочитано 26.01.2016, 19:59
#7
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Возможно, "текущий каталог" - это рабочая папка в свойствах ярлыка. Например, для AutoCAD 2014 это
"C:\Program Files\Autodesk\AutoCAD 2014\UserDataCache\"
Profan вне форума  
 
Непрочитано 26.01.2016, 22:23
#8
Psyakrev


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


Цитата:
Сообщение от trushev Посмотреть сообщение
2. В программах прописать полные имена файлов поддержки.
Существенный объем переработки.
Каждая программа будет жестко привязана к своему каталогу.
У вас уже и так есть жесткая привязка к конкретной папки в ярлыке, так что серьезной переработки не избежать.

Как вариант можно прописать в пути поддержки "C:\\LSP_WIN", в scr и lsp изменить во все load добавить относительный путь до нужного файла.

Код:
[Выделить все]
 
(setq dlg (load_dialog "GIDROLOG.IYA\\VODOPROPUSK\\vd.dcl"))
По крайней мере, файлы переименовывать не придется и какая-никакая гибкость. Наименее затратный вариант, на мой взгляд.
Psyakrev вне форума  
 
Непрочитано 26.01.2016, 23:06
#9
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от trushev Посмотреть сообщение
1. Указать в путях поиска файлов поддержки каталог с программой.
Приемлемо только для одной программы. Имена файлов поддержки разных программ совпадают и, при указании нескольких путей, нет ни какой гарантии что загрузятся нужные файлы.
программно добавлять к supportpaths каталог с программой при старте и удалять по завершении Add & Remove Support File Search Paths
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 27.01.2016, 10:58
#10
trushev


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


Спасибо всем за проявленное внимание и терпение.
Offtop: Моя терминология оставляет желать лучшего. Программировать начал не от хорошей жизни в лихие 90-е, когда квалифицированного программиста было практически не сыскать, а молодежь переквалифицировалась в челноков.

Цитата:
Сообщение от Do$ Посмотреть сообщение
Что значит текущий каталог?
Папка, в которой находится текущий файл чертежа. В ранних версиях AutoCad'а "Рабочий каталог" не задавался.
Прототип - устаревший термин, заменен на шаблон.

Цитата:
Сообщение от Alan Посмотреть сообщение
ИМХО Не правильно открывать файл "C:\LSP_WIN\GIDROLOG.IYA\VODOPROPUSK\vd.dwg", начинать работу надо с чертежа-прототипа,
например, так в комстроке запуска /t "C:\LSP_WIN\GIDROLOG.IYA\VODOPROPUSK\vd.dwT"
Пока петух не клевал острой потребности в замене не было. Но спасибо, совсем упустил это из виду.

Цитата:
Сообщение от VVA Посмотреть сообщение
программно добавлять к supportpaths каталог с программой при старте и удалять по завершении
Вроде то что нужно. Надо попробовать. Кажется нечто подобное обсуждалось на форуме, не могу найти тему.

Offtop: PS Alan, Хорошего отдыха!
trushev вне форума  
 
Непрочитано 27.01.2016, 13:26
#11
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<phrase 1=


Цитата:
Сообщение от trushev Посмотреть сообщение
Спасибо всем за проявленное внимание и терпение.
Пжл...
Один вопрос вдогонку.
Данная программа нужна для ЕДИНИЧНОГО расчёта в каком-то разовом чертеже или может применяться в разных чертежах?
Тогда меняется подход к запуску и завершению её работы.
Зачем например по кнопке ВЫХОД закрывать Автокад?
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Автор темы   Непрочитано 27.01.2016, 14:02
#12
trushev


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


Цитата:
Сообщение от Alan Посмотреть сообщение
Данная программа нужна для ЕДИНИЧНОГО расчёта в каком-то разовом чертеже или может применяться в разных чертежах?
Это фрагмент из программы параметрического вычерчивания профиля водоотвода. Предназначен для обоснования в записке глубины элементов водоотвода и примененного типа укрепления.
Результат работы программы вычерчивания во вложении.
Вложения
Тип файла: dwg
DWG 2007
vodt2-46+53.dwg (126.3 Кб, 903 просмотров)
trushev вне форума  
 
Непрочитано 27.01.2016, 15:14
#13
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<phrase 1=


Цитата:
Сообщение от trushev Посмотреть сообщение
Это фрагмент из программы параметрического вычерчивания профиля водоотвода.
Зачем ТОГДА по кнопке ВЫХОД закрывать Автокад?
ИМХО. Самое правильное и простое решение всё-таки создать профиль с путями и запускать Автокад с этим профилем.
Вот пример инсталляции и запуска известно программы, в адаптации которой я тоже принимал посильное участие
Цитата:
Программа ПРОКАТ черчения сортамента
Двутавры, швеллеры, уголки
с выбором профиля из диалогового окна.
Работает под Автокадом 2000-2006,
английская или русская версии.
procat.lsp - для плоского чертежа
prcat3d.lsp - для объёмного изображения профилей
Автор: Кондрат Василий. (С)2000г.
------------------------------------------------------------------------------------
Инсталяция (версия 2007г.):
Папка Prokat с файлами копируется в любую папку,
описанную в "Путях доступа к вспомогательным файлам" Автокада,
например Support Автокада. Тогда это будет выглядеть так:
"d:\Program Files\AutoCAD 2005\Support\prokat\"
P.S. Папка должна быть именно под таким именем. Желающим адаптировать
ПРОКАТ под себя рекомендуется посмотреть исходные тексты
(файлы: procat.lsp prkt3d.lsp)
------------------------------------------------------------------------------------
Загрузка и пуск программы
В Автокаде необходимо выполнить следующие действия:
1. Сервис-Приложения-Найти и Загрузить: procat.lsp или prcat3d.lsp
2. Набрать в командной строке: prokat или prkt3d, соответственно
для плоского или объёмного изображения профилей
P.S. Можно создать кнопку с макросом, например, такую:
(if (= PROKAT nil) ( Load (findfile "prokat/prokat.lsp"))) PROKAT
(if (= PRKT3D nil) ( Load (findfile "prokat/prcat3d.lsp"))) PRKT3D
"И не надо лохматить бабушку!" (с)Задорнов
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...

Последний раз редактировалось Alan, 27.01.2016 в 15:26.
Alan вне форума  
 
Непрочитано 27.01.2016, 15:17
#14
Кулик Алексей aka kpblc
Moderator

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


Offtop:
Цитата:
Сообщение от Alan Посмотреть сообщение
"И не надо лохматить бабушку!" (с)М.Жванецкий
А не Задорнов?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 27.01.2016, 15:25
#15
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<phrase 1=


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Offtop:
А не Задорнов?
Обидел классика... Да, Задорнов
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Автор темы   Непрочитано 27.01.2016, 15:41
#16
trushev


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


Каюсь. В данном случае автокад используется через одно место. Он нужен только для работы lisp'а. При двухмониторной системе после заполнения таблицы на соседнем мониторе потребность в программе отпадает.
PS
Цитата:
Сообщение от Alan Посмотреть сообщение
например Support Автокада
Если есть допуск к системным папкам автокада.

----- добавлено через ~46 мин. -----
PS PS Наверное я не достаточно точно высказался: Это фрагмент оформленный в самостоятельную программу.

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

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


Что значит "если есть доступ к системным папкам"?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 28.01.2016, 08:35
#18
trushev


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Что значит "если есть доступ к системным папкам"?
Правом на внесение изменений может обладать только сисадмин.
trushev вне форума  
 
Непрочитано 28.01.2016, 08:56
#19
Кулик Алексей aka kpblc
Moderator

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


Правом на изменение чего? Папок (точнее, их содержимого)? Или их перечня?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 28.01.2016, 09:08
#20
trushev


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


Кулик Алексей aka kpblc, Содержимого папок. Приходилось сталкиваться с этим явлением, когда без помощи админа невозможно ни удалить ни добавить файл в папке.
trushev вне форума  
 
Непрочитано 28.01.2016, 09:36
#21
Кулик Алексей aka kpblc
Moderator

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


А кто-то мешает создать свою и внести ее в общий перечень?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 28.01.2016, 09:50
#22
trushev


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


Вариант уже рассматривался:
Цитата:
Сообщение от trushev Посмотреть сообщение
Возможные пути решения проблемы:
1. Указать в путях поиска файлов поддержки каталог с программой.
Приемлемо только для одной программы. Имена файлов поддержки разных программ совпадают и, при указании нескольких путей, нет ни какой гарантии что загрузятся нужные файлы.
или я чего-то не догоняю.
trushev вне форума  
 
Непрочитано 28.01.2016, 09:56
1 | #23
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А кто-то мешает создать свою и внести ее в общий перечень?
Причем эта "своя" должна быть не где попало, и не в корне диска, а там, где должна быть в Windows.

Для пользовательских настроек программ это {localappdata}\имя программы или {userappdata}\имя программы. Вот там можно хранить что угодно - доступ пользователю есть всегда. Но значения {localappdata} и {userappdata} должны определяться программно - это "пространство имен" Windows. В каждой версии Windows они могут быть свои.

Вот тогда программа будет работать везде и всегда.
ShaggyDoc вне форума  
 
Непрочитано 28.01.2016, 10:01
#24
Кулик Алексей aka kpblc
Moderator

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


trushev, для твоего "примера" программы лично я вижу только один вариант развития. Полная переработка.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.01.2016, 12:55
#25
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<phrase 1=


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
для твоего "примера" программы лично я вижу только один вариант развития. Полная переработка.
Ну зачем ты его так напугал! Приложенный топикстартёром "фрагмент оформленный в самостоятельную программу"
я бы причесал в прожку за пару часов.
Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Вот тогда программа будет работать везде и всегда.
Но я в отпуск хочу.
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Автор темы   Непрочитано 28.01.2016, 14:26
#26
trushev


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


Цитата:
Сообщение от Alan Посмотреть сообщение
Но я в отпуск хочу
Alan, я не против. Возьмем таймаут на некоторое время.
Однако без костыля предложенного VVA в #9, очень сомневаюсь что будет работать на кнопке. Надо чем-то жертвовать.
На следующей неделе обещают поставить AutoCad 2016, можно будет поэксперементировать.
trushev вне форума  
 
Непрочитано 28.01.2016, 14:56
#27
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<phrase 1=


Цитата:
Сообщение от trushev Посмотреть сообщение
Однако без костыля предложенного VVA в #9, очень сомневаюсь что будет работать на кнопке.
Совершенно спокойно будет.
А вот без теории, изложенной в п.23 уважаемым ShaggyDoc, работать не желательно.
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Непрочитано 28.01.2016, 17:35
#28
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Цитата:
Сообщение от trushev Посмотреть сообщение
Однако без костыля предложенного VVA в #9, очень сомневаюсь что будет работать на кнопке. Надо чем-то жертвовать.
Это не "костыль", а элементарная вежливость - твоя программа не должна никак влиять на другие и на "голый" AutoCAD. Однако, прежде чем запустить этот "костыль", его надо загрузить. Т.е. AutoCAD должен заранее знать, откуда загружать.

Вот для решения подобных вопросов и придуманы профили. Имеете профиль для своей программы, в свойствах профиля записываете всё, что требуется (в том числе пути поиска) для своей программы. И делаете ярлык для запуска AutoCAD с именем профиля в командной строке. Запись профиля в реестр можно сделать из reg-файла, редактируя его вручную для разных версий Windows. Это можно сделать и без программирования.

И совсем изящно будет если сделать некую программу-стартер, которая будет и профиль создавать, и файл автозагрузки генерировать и удалять все это после выхода. Но это сложнее.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 29.01.2016, 08:41
#29
trushev


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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Это не "костыль", а элементарная вежливость - твоя программа не должна никак влиять на другие и на "голый" AutoCAD. Однако, прежде чем запустить этот "костыль", его надо загрузить. Т.е. AutoCAD должен заранее знать, откуда загружать.
Прошу прощения за неудачное слово. Имелось ввиду дополнение программы функциями формирующими и удаляющими пути поиска вспомогательных файлов.

Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Вот для решения подобных вопросов и придуманы профили. Имеете профиль для своей программы, в свойствах профиля записываете всё, что требуется (в том числе пути поиска) для своей программы. И делаете ярлык для запуска AutoCAD с именем профиля в командной строке. Запись профиля в реестр можно сделать из reg-файла, редактируя его вручную для разных версий Windows. Это можно сделать и без программирования.
Спасибо за разжевование пояснения. Теперь понятен путь решения проблемы.

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

Последний раз редактировалось trushev, 29.01.2016 в 10:11.
trushev вне форума  
 
Непрочитано 29.01.2016, 10:33
1 | #30
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Цитата:
Сообщение от trushev Посмотреть сообщение
При запуске с кнопки будут ли действовать пути поиска из профиля?
Неважно каким способом запущена лисп-функция. Если в текущем профиле есть требуемые пути - они и будут использоваться.
Пути поиска записаны в реестре в ветке, наподобие:
HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R17.1\ACAD-6001:409\Profiles\ruCAD\General

В ключе ACAD в виде строки с разделителем ; и перечислены все пути, например:

E:\ruCAD\Install\LocalAppData\ru\CAD-2008\AppData\AutoCAD\R17.1\;E:\ruCAD\Install\LocalAppData\ru\CAD-2008\AppData\AutoCAD\;C:\Acad\AutoCAD 2008\support;C:\Acad\AutoCAD 2008\fonts;C:\Acad\AutoCAD 2008\help;C:\Acad\AutoCAD 2008\Express;C:\Acad\AutoCAD 2008\support\color;

Свой путь надо подставлять в начало, тогда он и будет обрабатываться в первую очередь. Проще всего из REGEDIT экспортировать существующие настройки в reg-файл, а потом откорректировать, как надо. Например

Код:
[Выделить все]
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R17.1\ACAD-6001:409\Profiles\ruCAD\General]
"ACAD"="E:\\ruCAD\\Install\\LocalAppData\\ru\\CAD-2008\\AppData\\AutoCAD\\R17.1\\;E:\\ruCAD\\Install\\LocalAppData\\ru\\CAD-2008\\AppData\\AutoCAD\\;C:\\Acad\\AutoCAD 2008\\support;C:\\Acad\\AutoCAD 2008\\fonts;C:\\Acad\\AutoCAD 2008\\help;C:\\Acad\\AutoCAD 2008\\Express;C:\\Acad\\AutoCAD 2008\\support\\color;"
Выделено жирным "мои пути". В других профилях их нет и программы и настройки недоступны Автокаду.
"Выполнив" этот файл получите новые настройки, причем изменится только переменная ACAD. Причем это будет сделано только для текущего пользователя и не надо спрашивать администратора, т.к. ветка HKEY_CURRENT_USER всегда доступна для записи текущему пользователю Windows.

А "текущий каталог" - очень скользкое понятие в Windows, это всем не обязательно каталог чертежа. Потому и вопросы были сразу.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 29.01.2016, 13:40
#31
trushev


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


Offtop: Ненавижу пятницы. Всегда по пятницам начинается аврал.
trushev вне форума  
 
Автор темы   Непрочитано 01.02.2016, 09:44
#32
trushev


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


Ура! Нашел. Спасибо gomer, http://forum.dwg.ru/showthread.php?t=128781

(strcat (getvar 'dwgprefix) "имя файла")
trushev вне форума  
 
Непрочитано 01.02.2016, 19:40
1 | #33
Александр Ривилис

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


Цитата:
Сообщение от trushev Посмотреть сообщение
Повторюсь с главным вопросом: как в AutoCad 2016 обойти отсутствие в путях поиска по умолчанию текущего каталога?
https://knowledge.autodesk.com/suppo...F9430-htm.html
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 02.02.2016, 10:13
#34
trushev


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


Александр Наумович, весьма польщен Вашим вниманием.
Подвожу итог способов решения проблемы с наименьшими затратами в порядке поступления:
1. В пакете загружающем lisp заменить (load "имя файла") на (load (strcat (getvar 'dwgprefix) "имя файла"))
Не понял почему, но после этого находятся и DCL и вспомогательные текстовые файлы.
2. В строку запуска программы с рабочего стола добавить ключ /s с путем к файлам поддержки Заменяет ранее установленные пути.
3. От Александр Ривилис, установить LEGACYCODESEARCH = 1.

Последний раз редактировалось trushev, 04.02.2016 в 10:11.
trushev вне форума  
 
Непрочитано 02.02.2016, 11:03
#35
gomer

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


Цитата:
Сообщение от trushev Посмотреть сообщение
С подачи gomer, в пакете загружающем lisp заменить (load "имя файла") на (load (strcat (getvar 'dwgprefix) "имя файла"))
только не нужно меня тут приплетать... и таким вообще не пользуюсь и никому не рекомендую
gomer вне форума  
 
Автор темы   Непрочитано 04.02.2016, 16:52
#36
trushev


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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
И совсем изящно будет если сделать некую программу-стартер, которая будет и профиль создавать, и файл автозагрузки генерировать и удалять все это после выхода.
В предложенном примере аналогичное решение инженерным методом. Никто не мешает скопировать файл пуск.lnk на рабочий стол, нарядить его в любую пиктограмму и обозвать как понравиться.
Командная строка файла пуск.lnk:
"C:\Program Files\Autodesk\AutoCAD 2014\acad.exe" - запуск автокада
"C:\LSP_WIN\VODOPROPUSK\vd.dwg" - загрузка чертежа прототипа
/b "c:\lsp_win\VODOPROPUSK\vd" - активация пакета
Пакет (load "vd") загружает лисп.
По завершению работы автокад закрывается очищая память от себя и прочего хлама.

А вот с кнопкой совсем запутался.
Макрос на кнопку: ^C^C(if (not c:vp_gid) (load ".../appdata/local/vd.lsp"));vp_gid;
Цитата:
Сообщение от Alan Посмотреть сообщение
Совершенно спокойно будет.
Не получается добиться корректной работы. При запуске с кнопки не находит файлы readme.txt (клавиша "Инструкция") и spravka.txt (справочной информации)
Вложения
Тип файла: zip КНОПКИ.zip (27.8 Кб, 25 просмотров)
trushev вне форума  
 
Автор темы   Непрочитано 08.02.2016, 10:33
#37
trushev


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


Цитата:
Сообщение от trushev Посмотреть сообщение
Не получается добиться корректной работы. При запуске с кнопки не находит файлы readme.txt (клавиша "Инструкция") и spravka.txt (справочной информации)
Нашел решение: При открытии файла имя файла должно быть с функцией findfile.
trushev вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Адаптация древних lisp-приложений под AutoCad 2016



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В AutoCAD 2016 некорректно открываются файлы, созданные в AutoCAD 2014 Nadija_arh AutoCAD 4 11.01.2016 22:09
Как добавить префикс к однострочному тексту в AutoCAD 2016 andrey_artphoto AutoCAD 5 27.05.2015 17:11