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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Изменение путей доступа к файлам поддержки.

Изменение путей доступа к файлам поддержки.

Ответ
Поиск в этой теме
Непрочитано 02.06.2004, 07:13 #1
Изменение путей доступа к файлам поддержки.
paha
 
Регистрация: 02.06.2004
Сообщений: 52

Здравствуйте, подскажите пожалуйста где хранятся пути доступа к файлам поддержки и возможножно ли их изменение из Лиспа или VB.
Спасибо.
Просмотров: 19590
 
Непрочитано 02.06.2004, 10:09
1 | #2
Эдуард

строительство
 
Регистрация: 16.01.2004
Петербург
Сообщений: 165
<phrase 1=


Пример. Добавляю путь C:\ в пути доступа.
Код:
[Выделить все]
(setq fp (vla-get-files
	   (vla-get-preferences(vlax-get-acad-object)
	     )
	   )
      )
 (setq spath(strcat(vla-get-supportpath fp)";C:\\")
       )

 (vla-put-supportpath fp spath)
Эдуард вне форума  
 
Автор темы   Непрочитано 02.06.2004, 12:48
#3
paha


 
Регистрация: 02.06.2004
Сообщений: 52
<phrase 1=


Спасибо, все работает
paha вне форума  
 
Непрочитано 03.11.2015, 10:58
#4
Gmk17

САПРовод
 
Регистрация: 22.01.2013
Красноярск
Сообщений: 290


Насколько я понял, этот код дописывает нужный путь в конец строки ACAD в реестре:
HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\Rxx.x\ACAD-D001:419\Profiles\ProfileName\General

В результате, новый путь добавляется в конец списка путей поиска.

Может кто-то подсказать - как сделать так, чтобы он дописывал в начало этой строки? Чтобы новый путь был первым в списке.
Gmk17 вне форума  
 
Непрочитано 03.11.2015, 11:23
1 | #5
ProPeller

Пастух
 
Регистрация: 16.07.2012
Питер
Сообщений: 318


Цитата:
Сообщение от Gmk17 Посмотреть сообщение
как сделать так, чтобы он дописывал в начало этой строки?
Поменяйте аргументы местами в strcat
Код:
[Выделить все]
 (setq fp (vla-get-files
	   (vla-get-preferences(vlax-get-acad-object)
	     )
	   )
      )
 (setq spath(strcat";C:\\" (vla-get-supportpath fp))
       )

 (vla-put-supportpath fp spath)
__________________
Автоматизация должна быть автоматической.
ProPeller вне форума  
 
Непрочитано 03.11.2015, 11:39
#6
Gmk17

САПРовод
 
Регистрация: 22.01.2013
Красноярск
Сообщений: 290


Ура! Спасибо огромное!

Я даже разобрался - как сразу несколько путей добавлять:
Код:
[Выделить все]
 (setq fp (vla-get-files
	   (vla-get-preferences(vlax-get-acad-object)
	     )
	   )
      )
 (setq spath(strcat"Z:\\Шаблоны\\Штриховки\\ГП;Z:\\Шаблоны\\Штриховки\\Изыскания;" (vla-get-supportpath fp))
       )

 (vla-put-supportpath fp spath)

Последний раз редактировалось Gmk17, 03.11.2015 в 11:49.
Gmk17 вне форума  
 
Непрочитано 03.11.2015, 11:49
#7
Кулик Алексей aka kpblc
Moderator

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


Насколько я помню, дублируются.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 03.11.2015, 11:56
#8
Gmk17

САПРовод
 
Регистрация: 22.01.2013
Красноярск
Сообщений: 290


Маленькая проблемка: если два раза подряд запустить код, то добавится еще один комплект этих путей.
А вот если еще несколько раз запустить, то 3-я и последующие копии не появляются.
Gmk17 вне форума  
 
Непрочитано 03.11.2015, 12:01
#9
Кулик Алексей aka kpblc
Moderator

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


Gmk17, ты в отдельном профиле AutoCAD вколоти этот код в автозагрузку, и раз 5-6 перезапусти AutoCAD. Потом проверь, что творится в путях поддержки.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 03.11.2015, 13:11
#10
ProPeller

Пастух
 
Регистрация: 16.07.2012
Питер
Сообщений: 318


Для того, чтобы не было повторений, поместите в программу, вот этот код.
Код:
[Выделить все]
 (defun PPT:SPSeparate (Str Sym)
 (if
  (setq Pos (VL-STRING-SEARCH Sym Str))
  (cons	(substr Str 1 Pos)
	(PPT:StrSeparate
	 (substr Str (+ 2 Pos))
	 Sym
	)
  )
  (list Str)
 )
)

(setq fp      (vla-get-files (vla-get-Preferences (vlax-get-acad-object)))
      sp      (vla-get-SupportPath fp)
      newPath "C:\\" ;;; сюда естественно вписываем желаемый путь
)

(if
 (not (member newPath (PPT:StrSeparate sp ";")))
 (vla-put-SupportPath fp (strcat newPath ";" sp))
)
__________________
Автоматизация должна быть автоматической.
ProPeller вне форума  
 
Непрочитано 03.11.2015, 15:42
#11
shartal


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


Как понимать: PPT:SPSeparate?
Как это запустить? Пишет "; ошибка: no function definition: PPT:STRSEPARATE"
shartal вне форума  
 
Непрочитано 03.11.2015, 16:16
#12
ProPeller

Пастух
 
Регистрация: 16.07.2012
Питер
Сообщений: 318


Цитата:
Сообщение от shartal Посмотреть сообщение
Как понимать: PPT:SPSeparate?
Как это запустить? Пишет "; ошибка: no function definition: PPT:STRSEPARATE"
PPT:SPSeparate это пользовательская функция. Для того, чтобы она заработала, необходимо чтобы её содержимое было загружено один раз за сеанас для каждого документа. Поместите её описание внутрь вашей программы и она будет автоматически загруждаться как часть вашей программы, становясь известной автокаду.
__________________
Автоматизация должна быть автоматической.
ProPeller вне форума  
 
Непрочитано 06.11.2015, 06:24
#13
Gmk17

САПРовод
 
Регистрация: 22.01.2013
Красноярск
Сообщений: 290


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Gmk17, ты в отдельном профиле AutoCAD вколоти этот код в автозагрузку, и раз 5-6 перезапусти AutoCAD. Потом проверь, что творится в путях поддержки.
Творится тоже самое, если запустить руками 5-6 раз. Как я писал выше, две копии путей появляются, а не 5-6 копий.

Цитата:
Сообщение от ProPeller Посмотреть сообщение
Поместите её описание внутрь вашей программы...
К сожалению, я ни разу не программист, поэтому нету у меня никакой своей программы
Если не затруднит, выложите пожалуйста законченную программку, которую можно поместить в автозагрузку.

У меня пути доступа на сетевые диски периодически пропадают. Вероятно из-за проблем с сетью.
Я искал ответы по своей проблеме:
http://forum.dwg.ru/showthread.php?t=12447
http://forum.dwg.ru/showthread.php?t=97049
но там их нет.

Тему "Программная настройка AutoCAD, как это делается?" только начал читать. А пока нужен простой способ, который быстро восстанавливает исходное состояние путей доступа после сбоя.
Gmk17 вне форума  
 
Непрочитано 06.11.2015, 09:49
#14
ProPeller

Пастух
 
Регистрация: 16.07.2012
Питер
Сообщений: 318


Цитата:
Сообщение от Gmk17 Посмотреть сообщение
К сожалению, я ни разу не программист, поэтому нету у меня никакой своей программы
Если не затруднит, выложите пожалуйста законченную программку, которую можно поместить в автозагрузку.
Вот вам маленький ликбез:
  • Берете код, который представлен в посте #10
  • Вставляете его в текстовый документ
  • Там где идет присвоение данных переменной newPath, указываете свои путь.
  • Сохраняете это все с расширением ".lsp" и кладете автозагрузку.
Для этого навыки программиста не нужны, зато в будущем у вас станет парой вопросов меньше.

П.С. код будет корректно работать, только для одного пути. Для нескольких путей нужно корректировать код или делать для каждого пути отдельный файл.
__________________
Автоматизация должна быть автоматической.
ProPeller вне форума  
 
Непрочитано 06.11.2015, 11:07
#15
Gmk17

САПРовод
 
Регистрация: 22.01.2013
Красноярск
Сообщений: 290


Цитата:
Сообщение от ProPeller Посмотреть сообщение
Вот вам маленький ликбез:...
Я же вроде писал в посте #6, что с этим разобрался. И даже кнопочку сделал: (if (null C:fp)(load "fp.lsp"))

Цитата:
Сообщение от ProPeller Посмотреть сообщение
П.С. код будет корректно работать, только для одного пути. Для нескольких путей нужно корректировать код или делать для каждого пути отдельный файл.
А вот это очень важное замечание. А то я уже замучился перебирать варианты - как туда запихнуть сразу несколько путей.
Еще раз спасибо. Вы уже мне сильно помогли.

Буду дальше изучать - как остальные пути прописать (к палитрам, например).
Gmk17 вне форума  
 
Непрочитано 06.11.2015, 11:43
#16
ProPeller

Пастух
 
Регистрация: 16.07.2012
Питер
Сообщений: 318


Нашел нехилый косяк в описании рекурсии из прошлого кода. Странно, каким образом он вообще у вас работал.

Цитата:
Сообщение от Gmk17 Посмотреть сообщение
Буду дальше изучать - как остальные пути прописать (к палитрам, например).
Дабы уж добить тему до конца. Авось кому-нибудь еще понадобится. Я дописал код для множества путей.
В описание переменной newPathLst вбейте по очереди все ваши пути и ставьте в автозагрузку.
Цитата:
Сообщение от Gmk17 Посмотреть сообщение
И даже кнопочку сделал: (if (null C:fp)(load "fp.lsp"))
Кнопочка это не автозагрузка, а ручная загрузка.
Код:
[Выделить все]
 
(defun PPT:StrSeparate (Str Sym)
 (if
  (setq Pos (VL-STRING-SEARCH Sym Str))
  (cons	(substr Str 1 Pos)
	(PPT:StrSeparate
	 (substr Str (+ 2 Pos))
	 Sym
	)
  )
  (list Str)
 )
)

(setq fp	 (vla-get-files (vla-get-Preferences (vlax-get-acad-object)))
      sp	 (vla-get-SupportPath fp)
      newPathLst (list
		  "C:\\Свой путь1"
		  "C:\\Свой путь2"
		  "C:\\Свой путьN"
		 )
      SPLst	 (PPT:StrSeparate sp ";")
)

(foreach f1 newPathLst
 (if
  (not (member f1 SPLst))
  (progn
   (setq SPLst (cons f1 SPLst)
	 sp    (strcat f1 ";" sp)
   )
   (vla-put-SupportPath fp sp)
  )
 )
)
__________________
Автоматизация должна быть автоматической.
ProPeller вне форума  
 
Непрочитано 06.11.2015, 12:42
#17
Gmk17

САПРовод
 
Регистрация: 22.01.2013
Красноярск
Сообщений: 290


Спасибо огромное, всё работает. Пути не дублируются при повторной загрузке.

Только надо пути в обратном порядке прописывать:
Код:
[Выделить все]
...
newPathLst (list
          "C:\\Свой путьN;"
          "C:\\Свой путь2;"
          "C:\\Свой путь1;"
...
Цитата:
Сообщение от ProPeller Посмотреть сообщение
Кнопочка это не автозагрузка, а ручная загрузка.
Ага, я знаю. Просто с кнопочки тестировать код удобнее, чем постоянно перезагружать AutoCAD.

PS. В AutoCAD 2012 не работает. Говорит - "ошибка: no function definition: VLAX-GET-ACAD-OBJECT"
в 2014-том работает, а это мне и нужно.
Gmk17 вне форума  
 
Непрочитано 06.11.2015, 12:55
#18
ProPeller

Пастух
 
Регистрация: 16.07.2012
Питер
Сообщений: 318


Цитата:
Сообщение от Gmk17 Посмотреть сообщение
PS. В AutoCAD 2012 не работает. Говорит - "ошибка: no function definition: VLAX-GET-ACAD-OBJECT"
Забыл. Добавьте вот эту строчку в самом начале LISP файла и будет работать во всех автокадах.
Код:
__________________
Автоматизация должна быть автоматической.
ProPeller вне форума  
 
Непрочитано 10.11.2015, 16:29
#19
trushev


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


Затрудняюсь с размещение вопроса. Может быть уместнее в теме для чайников?

Есть старые lisp'ы запускаемые по схеме аналогичной http://forum.dwg.ru/showthread.php?t=125737: Запускается автокад с указанным файлом прототипа и ключем /b с указанием пакетного файла загружающего lisp. Файл прототипа содержит необходимые настройки чертежа: блоки, типы линий, тектовые стили и т.п. Каталог с файлом прототипа становится текущем и содержит все вспомогательные файлы: dcl и txt с необходимой информацией.

В AutoCAD 2016 отказались от поиска по умолчанию файлов поддержки в текущем каталоге. Не могу сообразить и нет возможности проверить на версии AutoCAD 2016 можно ли использовать код из поста #16 для адаптации lisp'а или есть другой путь адаптации малой кровью?
trushev вне форума  
 
Непрочитано 22.04.2021, 13:38
#20
shartal


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


Можно ли подобным образом, через Lisp, удалить не нужный путь? Например к папке инструментальных палитр.
shartal вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Изменение путей доступа к файлам поддержки.

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

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