NanoCAD-23.1 - закрыть библиотеку слайдов (*.slb)
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > NanoCAD-23.1 - закрыть библиотеку слайдов (*.slb)

NanoCAD-23.1 - закрыть библиотеку слайдов (*.slb)

Ответ
Поиск в этой теме
Непрочитано 02.08.2024, 05:35 #1
NanoCAD-23.1 - закрыть библиотеку слайдов (*.slb)
===AAA===
 
г. Норильск
Регистрация: 15.08.2005
Сообщений: 616

Всем привет!

Столкнулся ещё с одной особенностью nanoCAD'a.

Если в сеансе обратиться к библиотеке слайдов
(например, для отображения слайда в окне DCL),
то НК (в отличии от AutoCAD'а) открывает этот
файл и не закрывает его обратно, пока не будет
завершён сеанс.

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

Понятное дело - "закрывай НК и меняй файл, кто
мешает-то"?

На своём ПК - без проблем, но нужно сделать это
на многих компьютерах, при этом на некоторых из
них как раз и возникнет эта проблема - кто-то уже
успел обратиться в сеансе к библиотеке слайдов
и "заблокировал" её.

Вопрос:

Есть ли в НК какая-нибудь (vl-xxx ... ...) функция
для принудительного закрытия ("освобождения")
таких вот "захваченных" файлов библиотек слайдов?
__________________
Счастливо, Алексей!
Просмотров: 609
 
Непрочитано 02.08.2024, 07:41
#2
Кулик Алексей aka kpblc
Moderator

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


Вряд ли. Кешируй библиотеку на локальные машины и при первой же возможности - обновляй. ИМХО самое простое решение.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 02.08.2024, 09:09
#3
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616


Так она и так по локальным машинам разносится.

Проблема в том, что я не могу её гарантировано
обновить, т.к. она может быть "захвачена" любым
пользователем в любой момент.

Конечно, это всё легко решается огранизационными
методами, типа инструкции:

1. Закрой НК
2. Нажми на ярлык на рабочем столе

но пока хочется решить это дело программно, т.е. без активного
участия пользователя.
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 02.08.2024, 09:14
#4
Кулик Алексей aka kpblc
Moderator

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


Ну так перед обращением к библиотеке делай примерно следующее (все на уровне идеи):
Код:
[Выделить все]
 (setq slide_lib   "slide_library.slb"
      server_file (strcat "\\\\server\\libraries\\" slide_lib)
      local_file  (strcat (getenv "appdata") "\\" slide_lib)
)
(if 
  (and 
    (not (is-file-readonly local_file) 
         (< (get-file-datetime local_file) (get_file-datetime local_file))
    )
  )
  (progn 
    (vl-file-delete local_file)
    (vl-file-copy server_file local_file)
  )
)
Сервисные функции либо пиши сам, либо у меня в библиотеке можешь посмотреть (вроде бы там было, уже точно не помню)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 02.08.2024, 09:27
#5
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616


Не, НК его "крепко держит".

Ни (vl-file-delete local_file), ни системный "del local_file /F" не помогают.

Пока НК не закроешь - не удаляется. :-(
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 02.08.2024, 09:50
#6
Кулик Алексей aka kpblc
Moderator

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


Ты хочешь сказать, что файл библиотеки блокируется даже если к нему не было ни одного обращения??
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 02.08.2024, 09:52
#7
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616


Нет - как раз "если было."

Если не было - не блокируется и всё обновляется без проблем.
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 02.08.2024, 09:56
#8
Кулик Алексей aka kpblc
Moderator

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


Ну так я и говорю - перед обращением к библиотеке выполняй попытку ее обновления с сервера. Не получилось сейчас? Ну рано или поздно пользователь переоткроет NC.
Код нарисован только в качестве идеи, и тебе никто не мешает там дополнительных проверок накидать.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 02.08.2024, 10:09
#9
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616


Да там у меня и так всяких "финтифлюшек" понавешано...

Сейчас при входе в НК пользователь получает уведомление,
что появились новые плюшки (DCL-окно). Если у него стоит
более старая версия, чем та, что я выставил в сеть "на релиз".

Там есть кнопки "Напомнить завтра" "Уже знаю" "Обновить" и т.п.

Как правило, при открытии НК всем "некогда разбираться" и окно
просто закрывают с расчётом на то, чтобы потом посмотреть
(на панель выведена отдельная кнопка), разобраться и обновить.

В АК всё работало, как часы, а в НК вылезли ньюансы.

Пока думаю на тему, чтобы при нажатии кнопки "Обновить",
пользователь получал уведомление, что "обновление запланировано
и произойдёт после переоткрытия НК".

Типа, пока до слайдов не добрался :-)

Но параллельно думаю, а нельзя ли просто разблокировать библиотеки.
"Малой кровью" обойтись, так сказать.
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 02.08.2024, 10:15
#10
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
Но параллельно думаю, а нельзя ли просто разблокировать библиотеки.
"Малой кровью" обойтись, так сказать.
Вряд ли получится. Если это так реализовано на уровне ядра, то ты тут ничего не сделаешь.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > NanoCAD-23.1 - закрыть библиотеку слайдов (*.slb)



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
NanoCAD 23.1: Отцентровать чертёт А4 при выводе на печать ===AAA=== LISP 4 25.07.2024 11:01
NanoCAD 23.1: (command "_.save") - глюк ... ===AAA=== LISP 1 11.07.2024 10:55
NanoCAD 23.1: Как заблокировать окно "Свойства" ? ===AAA=== LISP 2 28.06.2024 13:06
NanoCAD 23.1 и MS Visual Studio 2022 - первые шаги ===AAA=== .NET 54 26.03.2024 14:09
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19