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

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

Автоматизация процесса добавления настроек в текущий профиль Автокада

Ответ
Поиск в этой теме
Непрочитано 29.06.2021, 12:41 #1
Автоматизация процесса добавления настроек в текущий профиль Автокада
olga87
 
Регистрация: 28.05.2007
Сообщений: 152

Здравствуйте Уважаемые программисты!

Помогите исправить код ниже (*.scr, AutoCAD 2020), чтобы для всех разделов выполнялось сначала удаление серверных путей (если они существуют), а затем их добавление. Сейчас в коде удаление и добавление работает только для раздела "Путь доступа к вспомогательным файлам:".

*Удаление с последующим добавлением путей нужно для того, чтобы правильно определить порядок расположения пути, например, путь "\\\\server\\CAD\\Plotters" должен быть первым в своем разделе.


Код:
[Выделить все]
(vl-load-com)

;;;Путь доступа к вспомогательным файлам:
(defun LM:sfsp- ( lst / pos str tmp )
    (setq str (strcat (vl-string-right-trim ";" (getenv "ACAD")) ";")
          tmp str
    )
    (foreach pth lst
        (if (/= "" pth)
            (while (setq pos (vl-string-search (strcase (strcat pth ";")) (strcase str)))
                (setq str (strcat (substr str 1 pos) (substr str (+ pos (strlen pth) 2))))
            )
        )
    )
    (if (/= tmp str) (setenv "ACAD" str))
)

(defun LM:sfsp+ ( lst )
    (   (lambda ( str lst )
            (if (setq lst
                    (vl-remove-if
                       '(lambda ( x )
                            (or (vl-string-search (strcase x) (strcase str))
                                (not (findfile x))
                            )
                        )
                        lst
                    )
                )
                (setenv "ACAD" (strcat (apply 'strcat (mapcar '(lambda ( x ) (strcat x ";")) lst)) ";" str))
            )
        )
        (vl-string-right-trim ";" (getenv "ACAD"))
        (mapcar '(lambda ( x ) (vl-string-right-trim "\\" (vl-string-translate "/" "\\" x))) lst)
    )
)

(LM:sfsp- '("\\\\server\\CAD\\Fonts" "\\\\server\\CAD\\Макросы"))
(LM:sfsp+ '("\\\\server\\CAD\\Fonts" "\\\\server\\CAD\\Макросы"))

;;;Доверенные местоположения:
(setq trustdir "\\\\server\\CAD\\...")
(if (not (vl-string-search (strcase trustdir) (strcase (getvar "trustedpaths"))))
(setvar "trustedpaths" (strcat (vl-string-right-trim ";" (getvar "trustedpaths")) ";" trustdir))
)
(setq trustdir nil)

;;;Файл альтернативного шрифта:
(setvar "fontalt" "Arial.ttf")

;;;Путь поиска конфигураций печати:
(setq printerconfig "\\\\server\\CAD\\Plotters")
(if (not (vl-string-search (strcase printerconfig) (strcase (getenv "PrinterConfigDir"))))
(setenv "PrinterConfigDir" (strcat printerconfig ";" (getenv "PrinterConfigDir")))
)
(setq printerconfig nil)

;;;Путь поиска файлов описания принтеров:
(setq printerdesc "\\\\server\\CAD\\Plotters\\PMP Files")
(if (not (vl-string-search (strcase printerdesc) (strcase (getenv "PrinterDescDir"))))
(setenv "PrinterDescDir" (strcat printerdesc ";" (getenv "PrinterDescDir")))
)
(setq printerdesc nil)

;;;Папка для файлов автосохранения:
(defun _kpblc-dir-create (mypath / tmp)
  (cond ((vl-file-directory-p mypath) mypath)
    ((setq tmp (_kpblc-dir-create (vl-filename-directory mypath)))
      (vl-mkdir (strcat tmp "\\" (vl-filename-base mypath)
                  (cond ((vl-filename-extension mypath))
                    (t "")
                  )
                )
      )
      (if (vl-file-directory-p mypath)
        mypath
      )
    )
  )
)

(setq tmppath (_kpblc-dir-create "C:\\Автосохранение"))
(setenv "SaveFilePath" "C:\\Автосохранение")

;;;Папка для шаблона чертежа:
(setenv "TemplatePath" "\\\\server\\CAD\\Template")

;;;Шаблон по умолчанию для команды БСОЗДАТЬ:
(setenv "QnewTemplate" "\\\\server\\CAD\\Template\\Общий шаблон.dwt")

;;;Шаблон по умолчанию для создания листов:
(setenv "AlternativePageSetUpsTemplate" "\\\\server\\CAD\\Template\\Листы.dwt")

;;;Папка для временных файлов:
(setenv "TempDirectory" "C:\\Автосохранение\\")

;;;Папка для временных файлов внешних ссылок:
(setenv "XrefLoadPath" "C:\\Автосохранение")
Заранее спасибо за помощь!

Последний раз редактировалось olga87, 29.06.2021 в 12:46.
Просмотров: 3760
 
Непрочитано 29.06.2021, 12:48
#2
Кулик Алексей aka kpblc
Moderator

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


Что значит "для всех разделов".
И это ни разу не scr, а чистый самовыполняемый lsp.
__________________

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


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


Для разделов:
;;;Путь доступа к вспомогательным файлам:
;;;Доверенные местоположения:
;;;Файл альтернативного шрифта:
;;;Путь поиска конфигураций печати:
;;;Путь поиска файлов описания принтеров:
;;;Папка для файлов автосохранения:
;;;Папка для шаблона чертежа:
;;;Шаблон по умолчанию для команды БСОЗДАТЬ:
;;;Шаблон по умолчанию для создания листов:
;;;Папка для временных файлов:
;;;Папка для временных файлов внешних ссылок:

Я этот файл запускаю как ...acad.exe /b *.scr
olga87 вне форума  
 
Непрочитано 29.06.2021, 12:56
#4
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
_$ (vlax-dump-Object (vla-get-files (vla-get-Preferences (vlax-get-acad-object))))

; IAcadPreferencesFiles: This object contains the options from the Files tab on the Options dialog
; Property values:
;   ActiveInvProject = "C:\\Program Files\\Autodesk\\AutoCAD 2020\\Inventor Server\\Bin\\Default.ipj"
;   AltFontFile = "simplex.shx"
;   AltTabletMenuFile = ""
;   Application (RO) = #<VLA-OBJECT IAcadApplication 00007ff7e96b2ec0>
;   AutoSavePath = "C:\\Users\\kpblc\\AppData\\Local\\Temp\\"
;   ColorBookPath = "C:\\Program Files\\Autodesk\\AutoCAD 2020\\Support\\Color;C:\\Users\\kpblc\\AppData\\Roaming\\Autodesk\\AutoCAD 2020\\R23.1\\enu\\Support\\Color"
;   ConfigFile (RO) = "C:\\Users\\kpblc\\AppData\\Local\\Autodesk\\AutoCAD 2020\\R23.1\\enu\\acad2020.cfg"
;   CustomDictionary = "C:\\Users\\kpblc\\AppData\\Roaming\\Autodesk\\AutoCAD 2020\\R23.1\\enu\\Support\\sample.cus"
;   CustomIconPath = "C:\\Users\\kpblc\\AppData\\Roaming\\Autodesk\\AutoCAD 2020\\R23.1\\enu\\support\\icons"
;   DefaultInternetURL = "http://www.autodesk.com"
;   DriversPath = "C:\\Program Files\\Autodesk\\AutoCAD 2020\\drv"
;   EnterpriseMenuFile = "."
;   FontFileMap = "C:\\Users\\kpblc\\AppData\\Roaming\\Autodesk\\AutoCAD 2020\\R23.1\\enu\\Support\\acad.fmp"
;   HelpFilePath = "C:\\Program Files\\Autodesk\\AutoCAD 2020\\Help\\index.html"
;   LogFilePath = "C:\\Users\\kpblc\\appdata\\local\\autodesk\\autocad 2020\\r23.1\\enu\\"
;   MainDictionary = "enu"
;   MenuFile = "C:\\Users\\kpblc\\AppData\\Roaming\\PIK-Industry-CAD\\menu\\2020x64-409\\pik debug\\acad"
;   PageSetupOverridesTemplateFile = ""
;   PlotLogFilePath = "C:\\Users\\kpblc\\AppData\\Local\\Autodesk\\AutoCAD 2020\\R23.1\\enu\\"
;   PostScriptPrologFile = ""
;   PrinterConfigPath = "C:\\Users\\kpblc\\AppData\\Roaming\\Autodesk\\AutoCAD 2020\\R23.1\\enu\\plotters"
;   PrinterDescPath = "C:\\Users\\kpblc\\AppData\\Roaming\\Autodesk\\AutoCAD 2020\\R23.1\\enu\\plotters\\PMP Files"
;   PrinterStyleSheetPath = "C:\\Users\\kpblc\\AppData\\Roaming\\Autodesk\\AutoCAD 2020\\R23.1\\enu\\plotters\\Plot Styles"
;   PrintFile = "."
;   PrintSpoolerPath = "C:\\Users\\kpblc\\AppData\\Local\\Temp\\"
;   PrintSpoolExecutable = ""
;   QNewTemplateFile = "<...>.dwt"
;   SupportPath = "C:\\Users\\kpblc\\AppData\\Roaming\\Autodesk\\AutoCAD 2020\\R23.1\\enu\\Support;C:\\Program Files\\Autodesk\\AutoCAD 2020\\Support;C:\\Program Files\\Autodesk\\AutoCAD 2020\\Support\\en-US;C:\\Program Files\\Autodesk\\AutoCAD 2020\\Fonts;C:\\Program Files\\Autodesk\\AutoCAD 2020\\help;C:\\Program Files\\Autodesk\\AutoCAD 2020\\express;C:\\Program Files\\Autodesk\\AutoCAD 2020\\Support\\Color;C:\\Program Files (x86)\\Autodesk\\ApplicationPlugins\\Autodesk AppManager 2020.bundle\\Contents\\Windows;C:\\Program Files (x86)\\Autodesk\\ApplicationPlugins\\Autodesk AppManager 2020.bundle\\Contents\\Windows\\2020;C:\\Program Files (x86)\\Autodesk\\ApplicationPlugins\\Autodesk FeaturedApps 2020.bundle\\Contents\\Resources;C:\\Program Files (x86)\\Autodesk\\ApplicationPlugins\\Autodesk FeaturedApps 2020.bundle\\Contents\\Windows\\2020\\Win64;C:\\Program Files\\Common Files\\Autodesk Shared\\ru-RU"
;   TempFilePath = "C:\\Users\\kpblc\\AppData\\Local\\Temp\\"
;   TemplateDwgPath = "C:\\Users\\kpblc\\AppData\\Local\\Autodesk\\AutoCAD 2020\\R23.1\\enu\\Template"
;   TempXrefPath = "C:\\Users\\kpblc\\AppData\\Local\\Temp\\"
;   TextEditor = "Internal"
;   TextureMapPath = ""
;   ToolPalettePath = "C:\\Users\\kpblc\\AppData\\Roaming\\Autodesk\\AutoCAD 2020\\R23.1\\enu\\Support\\ToolPalette"
;   WorkspacePath = "C:\\Users\\kpblc\\AppData\\Roaming\\Autodesk\\AutoCAD 2020\\R23.1\\enu\\Data Links"
Берешь и меняешь что надо и как надо
__________________

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


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


Скажите пожалуйста, как определить чтобы путь на сервер был всегда сверху, например, путь "\\\\server\\CAD\\Plotters" должен быть первым в своем разделе.?
olga87 вне форума  
 
Непрочитано 29.06.2021, 14:27
#6
Кулик Алексей aka kpblc
Moderator

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


Ставить его в самое начало строки. Чем он раньше - тем главнее.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 29.06.2021, 14:52
#7
olga87


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


Дело в том, что у пользователя до выполнения кода, могут уже существовать свои пути. И эти пути нужно сохранить, добавив серверные наверх.
olga87 вне форума  
 
Непрочитано 01.07.2021, 14:18
#8
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 470
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


Если память не подводит, через лисп не получится прописать несколько путей для папок печати (по крайней мере на акад 2013 у меня не получалось) и решали мы это через изменения в реестре инструментами сисадмина
Цитата:
Сообщение от olga87 Посмотреть сообщение
Дело в том, что у пользователя до выполнения кода, могут уже существовать свои пути. И эти пути нужно сохранить, добавив серверные наверх.
SupportPath вернет длиннющую строку, которую надо анализировать и править как хочется - тут проблем нет, главное лишнего не отрезать
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Автоматизация процесса добавления настроек в текущий профиль Автокада

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос настроек и приложений в новую версию Автокада *AllA* AutoCAD 7 05.08.2013 17:50
Civil 3d Как построить продольный профиль с шагом отметок в 50м. dimandos Вертикальные решения на базе AutoCAD 4 17.08.2012 04:03
Фатальная ошибка при попытке мониторинга изменения файла настроек. hwd Программирование 7 24.03.2010 23:45
Импорт настроек AutoCad 2009 sashkalee AutoCAD 6 05.10.2009 15:09
ADT сбивается профиль favorite Прочее. Программное обеспечение 2 04.05.2006 18:34