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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Получение пути lisp в момент запуска.

Получение пути lisp в момент запуска.

Ответ
Поиск в этой теме
Непрочитано 23.11.2005, 11:04 #1
Получение пути lisp в момент запуска.
Кулик Алексей aka kpblc
Moderator
 
LISP, C# (ACAD 200[9,12,13,14])
 
С.-Петербург
Регистрация: 25.08.2003
Сообщений: 36,760

Собственно вопрос-то в этом и есть. Запускается лисп (неважно, каким образом, но, как правило, через _.appload). Жизненно необходимо получить путь, по которому хранится запущенный лисп. Это вообще возможно?
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Просмотров: 4100
 
Непрочитано 23.11.2005, 11:33
#2
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,151


Что, собственно говоря, хранится? Если сам LISP-файл, то он никуда не девается, его можно даже редактировать. А информация о загруженных ранее файлах хранится нна вкладке "History" того же окна "appload", так что их можн оттуда загружать по-новой.
Лентяй вне форума  
 
Автор темы   Непрочитано 23.11.2005, 11:39
#3
Кулик Алексей aka kpblc
Moderator

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


Не, мне надо, загрузив такой лисп:
Код:
[Выделить все]
(defun start()
;; <Что-то делаю>
)
(start)
в support path прописать путь, по которому он находится. Прописывать надо во время выполнения. (findfile "prog.lsp") возвращает nil.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.11.2005, 11:46
#4
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,151


Опять не понял. Некомпилированный lsp-файл никуда не девается, так что его путь можно просто прописать. Или требуется, чтобы программа нашла сама себя?
Лентяй вне форума  
 
Автор темы   Непрочитано 23.11.2005, 11:54
#5
Кулик Алексей aka kpblc
Moderator

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


Ага. И прописала путь поддержки (но это уж сам сделаю, не вопрос).
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.11.2005, 12:00
#6
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,151


А кофе в койку? :?
Лентяй вне форума  
 
Автор темы   Непрочитано 23.11.2005, 12:03
#7
Кулик Алексей aka kpblc
Moderator

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


Лучше в чашке.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.11.2005, 12:08
#8
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,151


Ежели серьезно, то чой-то у меня ACAD сегодня глючит - открываться не хочет. Попробую завтра на работе, если только кто не догадается, пока я сплю.
Лентяй вне форума  
 
Непрочитано 23.11.2005, 12:18
#9
AY

webcad.pro
 
Регистрация: 06.01.2005
Московская обл.
Сообщений: 501


Как на счет DOSLIB?

Цитата:
dos_lisplist
--------------------------------------------------------------------------------
Returns a list of loaded AutoLISP/Visual LISP files.

Syntax
(dos_lisplist [T])
Parameters
T
If specified, fully qualified paths are returned. Otherwise, just the filenames are returned.

Returns
A list of string identifying the loaded LISP files if successful.

nil on error.

Example
Command: (dos_lisplist)

("acetutil.fas" "acetauto.LSP" "acettest.fas" "dwfout.lsp" "acad2000.FAS" "acad2000doc.FAS" "acad.mnl" "acetmain.mnl")

Command: (dos_lisplist t)

("C:\\Program Files\\AutoCAD 2002\\express\\acetutil.fas" "C:\\Program Files\\AutoCAD 2002\\express\\acetauto.LSP" "C:\\Program Files\\AutoCAD 2002\\support\\acettest.fas" "C:\\Program Files\\AutoCAD 2002\\support\\legacy\\dwfout\\dwfout.lsp" "C:\\Program Files\\AutoCAD 2002\\support\\acad2000.FAS" "C:\\Program Files\\AutoCAD 2002\\support\\acad2000doc.FAS" "C:\\Program Files\\AutoCAD 2002\\Support\\acad.mnl" "C:\\Program Files\\AutoCAD 2002\\express\\acetmain.mnl")
AY вне форума  
 
Автор темы   Непрочитано 23.11.2005, 12:43
#10
Кулик Алексей aka kpblc
Moderator

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


> AY : не катит. Сделал лисп
Код:
[Выделить все]
(defun test()
  (princ (dos_lisplist))
  (princ)
  )
Записал его как d:\temp_lisp.lsp, загрузил. Выполнение (test) дает
Код:
[Выделить все]
(acetutil.fas acetauto.LSP acettest.fas acad2005.FAS acad2005doc.FAS acad.mnl acetmain.mnl)
И все! Т.е. мой лиспик там в принципе не участвует. Такое ощущение, что выдается список только автозагружаемых lsp и fas файлов (те, которые "бледные" в appload). Не более.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.11.2005, 12:56
#11
AY

webcad.pro
 
Регистрация: 06.01.2005
Московская обл.
Сообщений: 501


>kpblc
Повторил твой пример - никаких проблем все показывает.
AY вне форума  
 
Автор темы   Непрочитано 23.11.2005, 12:59
#12
Кулик Алексей aka kpblc
Moderator

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


На всякий случай - ACAD 2005 Eng + SP1, DOSLib 6.1. Мимо. ACAD 2006 Eng, DOSLib 6.1. Результат - нулевой.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.11.2005, 13:04
#13
AY

webcad.pro
 
Регистрация: 06.01.2005
Московская обл.
Сообщений: 501


Я проверял в такой ситуации:
Код:
[Выделить все]
Command: (dos_version)
"6.1.4"

Command: acadver

ACADVER = "16.1s (LMS Tech)" (read only)
AY вне форума  
 
Автор темы   Непрочитано 23.11.2005, 13:13
#14
Кулик Алексей aka kpblc
Moderator

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


у меня:
Код:
[Выделить все]
(dos_version)
"6.1.5"
(vlax-product-key)
"Software\\Autodesk\\AutoCAD\\R16.1\\ACAD-301:409"
acadver мало что дает. Она и на LT такая же, как на полном.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.11.2005, 13:25
#15
AY

webcad.pro
 
Регистрация: 06.01.2005
Московская обл.
Сообщений: 501


Ну и у меня так же:
Код:
[Выделить все]
Command: (vlax-product-key)
"Software\\Autodesk\\AutoCAD\\R16.1\\ACAD-301:409"
Только, вроде, SP1 у меня не стоит - разве это в версии не должно отразиться?
AY вне форума  
 
Автор темы   Непрочитано 23.11.2005, 13:35
#16
Кулик Алексей aka kpblc
Moderator

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


> AY : плевать, я нашел решение! Ура тебе и ура мне. Функция (dos_search "test_lisp.lsp") вернула путь в момент. Все-таки имя лиспа лично я менять точно не буду, так что решения достаточно на данный момент.
---
Добавлено: полный оффтоп.
Гы-гы-гы
Мало того, что проблема решена, так еще и количество постов прикольное...
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.11.2005, 15:03
#17
AY

webcad.pro
 
Регистрация: 06.01.2005
Московская обл.
Сообщений: 501


(dos_search "test_lisp.lsp") не очень надежно - файлов с таким именем может быть несколько, а если может, то рано или поздно случится.
AY вне форума  
 
Автор темы   Непрочитано 23.11.2005, 15:29
#18
Кулик Алексей aka kpblc
Moderator

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


Ну тут дело в том, что у меня один лисп - один файл. Поэтому повторения исключены.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.11.2005, 15:57
#19
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,210


А так не устраивает? Если нужен только путь без имени файла, то его можно отрезать.
Код:
[Выделить все]
(setq dir (findfile "filename.ext"))
Pilot вне форума  
 
Автор темы   Непрочитано 23.11.2005, 16:05
#20
Кулик Алексей aka kpblc
Moderator

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


Если файл не находится по путям доступа, то (findfile "filename.ext") вернет nil. Что, ессно, не устраивает.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Получение пути lisp в момент запуска.

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

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