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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Что прописать в acad.lsp чтобы всегда загружались пользовательские лисп команды?

Что прописать в acad.lsp чтобы всегда загружались пользовательские лисп команды?

Ответ
Поиск в этой теме
Непрочитано 15.11.2011, 12:23 #1
Что прописать в acad.lsp чтобы всегда загружались пользовательские лисп команды?
overband
 
Инженер-конструктор
 
Москва
Регистрация: 25.02.2008
Сообщений: 142

Здравствуйте! Вопрос заключется в следующем. Есть набор лисп файлов и сделанные с их использованием команды автокад. Если добавить эти файлы в автозагрузку в акаде, то команды работают отлично, но иногда по разным причинам список автозагрузки в акаде слетает (смена профиля, изменение рабочего пространства и еще разные причины, которые я отследить не сумел) и команды естественно перестают работать. Так вот как сделать чтобы свои лисп файлы подгружались с автокад ВСЕГДА, т.е. вне зависимости от настроек, профилей и т.д.? Кажется это можно прописать в acad.lsp. Но как конкретно я к сожалению не нашел. Уважаемые программисты-лисперы, если не жалко выложите примерчик файла acad.lsp с автозагрузкой для файлов лисп (названия для примера) one.lsp, two.lsp, three.lsp, допустим лежащих в папке c:\commands. Заранее огромное спасибо!!!

P.S. Если есть другие решения данной проблемы, буду признателен за совет!
Просмотров: 19893
 
Непрочитано 15.11.2011, 12:25
#2
Profan


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


Используй функцию "load".
Profan вне форума  
 
Автор темы   Непрочитано 15.11.2011, 13:02
#3
overband

Инженер-конструктор
 
Регистрация: 25.02.2008
Москва
Сообщений: 142


если не сложно можно пример ее использования?
overband вне форума  
 
Непрочитано 15.11.2011, 13:17
#4
Profan


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


Добавь в конце файла acad.lsp строки
(load "one.lsp")
(load "two.lsp")
(load "three.lsp")
Папку c:\commands надо прописать в пути доступа AutoCAD к файлам поддержки.
Настроить AutoCAD так, чтобы файл acad.lsp загружался с каждым чертежем.
Вместо файла acad.lsp можно использовать файл acad.mnl (записать там те же строки).
Profan вне форума  
 
Непрочитано 15.11.2011, 14:33
#5
Кулик Алексей aka kpblc
Moderator

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


Вообще-то лучше не редактировать acad*.lsp. Намного проще сделать свой лисп и засунуть его либо в автозагрузку, либо (для варианта подгрузки собственного меню) использовать mnl-файл.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.11.2011, 14:53
#6
VVA

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


LISP. Общее. Загрузка файла. Вызовы функций Посты #47 и #48
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 15.11.2011, 16:47
#7
Alan

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


В случае малого количества файлов: "one.lsp"; "two.lsp"; "three.lsp", наверное проще всего воспользоваться автозагрузкой.
Я тоже не любитель использования файла acad.lsp.
Но вот если создать свой acad.lsp (а не портить стандартный), использовать СВОЙ профиль, где папка с ТВОИМ acad.lsp будет первой путях,
то очень может быть...
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Непрочитано 15.11.2011, 19:13
#8
Profan


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


Стандартного файла именно acad.lsp в последних версиях не существует. А по поводу автозагрузки автор темы выразил сомнение в первом сообщении.
Profan вне форума  
 
Непрочитано 16.11.2011, 00:58
#9
Alan

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


Цитата:
Сообщение от Profan Посмотреть сообщение
автор темы выразил сомнение в первом сообщении.
В первой теме были в куче "кони, люди".
Категорически против того
Цитата:
Сообщение от overband Посмотреть сообщение
чтобы свои лисп файлы подгружались с автокад ВСЕГДА, т.е. вне зависимости от настроек, профилей и т.д.?
Поэтому акцентировал внимание на СОБСТВЕННОМ профиле и СОБСТВЕННОМ acad*.lsp
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...

Последний раз редактировалось Alan, 27.01.2013 в 19:15.
Alan вне форума  
 
Автор темы   Непрочитано 26.01.2013, 14:34
#10
overband

Инженер-конструктор
 
Регистрация: 25.02.2008
Москва
Сообщений: 142


Спасибо всем ответившим. Прошел год. К сожалению безболезненного решения по подгрузке файлов lsp вне зависимости от настроек автокада видимо нет. В любом случае есть свои "побочные" эффекты.
Лично я все-таки остановился на автозагрузке файлов. Проблему с большим количеством файлов решил путем компоновки большого количества отдельных файлов с командами в гораздо меньшее количество файлов созданных по принципу схожести выполняемых операций. Не всегда удобно в плане работы с ними, зато меньше файлов подгружать.

Еще хотел бы пояснить на примерах, для чего нужно было "чтобы файлы подгружались ВСЕГДА":
1 Пример: Конструктор не особо разбирающий в тонкостях настройки автокада попросил установить ему простую lisp программку для суммирования чисел из текстовых примитивов (как пример). Через какое-то время программка перестает работать и исчезает из автозагрузки потому что он что-то поменял в профиле, поставил доп. программу и т.п. Соответственно появляется проблемма этот lisp восстановить. Для знающего человека не проблема, но для большинства... А если таких людей много? Замучают!
2 Пример: Существуют lisp команды, которые созданы для поддержки выполнения Стандартов оформления в организации. Но каждый пользователь все равно уникален и захочет настраивать автокад немного по-своему. Запрещать это бессмысленно и не нужно. Но опять же в результате различных манипуляций lisp команды могут начать слетать. Хорошо если под рукой есть сисадмин и может быстро все исправить, но иногда он может быть в отпуске, заболеть, уйти на обед и не вернуться и т.д. Поэтому такие "неожиданности" будут очень портить жизнь рядовому конструктору.
Автоматизация упрощая одно, усложняет другое, но попробовав ее, отказаться уже невозможно .
overband вне форума  
 
Непрочитано 27.01.2013, 05:52
#11
gomer

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


Цитата:
Сообщение от overband Посмотреть сообщение
Конструктор не особо разбирающий в тонкостях настройки автокада попросил установить ему простую lisp программку для суммирования чисел из текстовых примитивов (как пример). Через какое-то время программка перестает работать и исчезает из автозагрузки потому что он что-то поменял в профиле, поставил доп. программу и т.п.
И где логика?
Цитата:
Сообщение от overband Посмотреть сообщение
Конструктор не особо разбирающий в тонкостях настройки автокада попросил установить ему простую lisp программку для суммирования чисел из текстовых примитивов (как пример). Через какое-то время программка перестает работать и исчезает из автозагрузки потому что он что-то поменял в профиле, поставил доп. программу и т.п. Соответственно появляется проблемма этот lisp восстановить. Для знающего человека не проблема, но для большинства... А если таких людей много? Замучают!
Невежество и жадность - главный бич человеческого бытия
gomer вне форума  
 
Непрочитано 27.01.2013, 07:29
#12
ShaggyDoc

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


Цитата:
безболезненного решения по подгрузке файлов lsp вне зависимости от настроек автокада видимо нет.
Есть. Просто ты упорно не выполняешь то, на что тебе уже акцентировали внимание и "большими" буквами. Только реализовать это надо правильно. Можно сделать так, чтобы часть "программ" загружалась всегда, и чтобы пользователь мог что-то дополнительно подгрузить.

Полной "вне зависимости" достигать не надо. Должна быть одна основная "настройка" - профиль. Всё остальное прилагается.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 27.01.2013, 17:37
#13
overband

Инженер-конструктор
 
Регистрация: 25.02.2008
Москва
Сообщений: 142


Цитата:
Сообщение от gomer Посмотреть сообщение
И где логика?
Логика в том, что этому товарищу ДРУГИЕ знающие люди могут что-то понаставить. Это раз. А во-вторых, некоторые программки имеют инсталлер и у "не особо разбирающихся в тонкостях" хватает ума и способностей их самостоятельно установить. А потом выясняется, что программка пропала, потому что установили СПДС со своим профилем. А иногда действительно логики вроде бы нет, когда в настройки не лазили, ничего не меняли а программка исчезла из автозагрузки и хрен поймешь как это объяснить.
Цитата:
Сообщение от gomer Посмотреть сообщение
Невежество и жадность - главный бич человеческого бытия
Ну и где здесь невежество и жадность? Не вижу ни того ни другого.
Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Есть. Просто ты упорно не выполняешь то, на что тебе уже акцентировали внимание и "большими" буквами. Только реализовать это надо правильно. Можно сделать так, чтобы часть "программ" загружалась всегда, и чтобы пользователь мог что-то дополнительно подгрузить.
Полной "вне зависимости" достигать не надо. Должна быть одна основная "настройка" - профиль. Всё остальное прилагается.
Акцентировали внимание на том, что ПРЯМО ПРОТИВОПОЛОЖНО тому, о чем я спрашивал! И к чему такие акценты?
В том то вся и проблема - надо избавиться от зависимости от профиля! Чтобы говоря простым языком команда написанная на lisp была уравнена в правах с командами LINE СIRCLE и т.д.
Другой вопрос, что это невозможно и вполне вероятно неправомерно. Но это уже другая история.
Еще раз подчеркиваю, основная задача по сути заключается в поиске условно говоря "защиты от дурака" для lisp команд. Чтобы не было вероятности их "неподгружения".
Полной "вне зависимости" достигать не надо когда есть 3 грамотных сисадмина под рукой, а когда их нет, как в большинстве фирм в России, то конструкторы сами совмещают все возможные профессии и программирование в том числе. Поэтому, многие и работают на голых автокадах, потому что так хотя бы есть уверенность, что никакая из команд внезапно не "отвалится". А за эффективность работы у нас не доплачивают.
overband вне форума  
 
Непрочитано 27.01.2013, 18:06
#14
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Если команда вызывается кнопкой, то загрузку нужного лиспа можно прописать в макросе этой кнопки. Например, так:
Код:
[Выделить все]
^C^C(if(null C:one)(Load "one.lsp"));one;
Папка с лиспами должна быть прописана в путях доступа. Плюс это даст прирост к скорости открытия чертежа, если файлов в автозагрузке много.

Последний раз редактировалось skkkk, 27.01.2013 в 18:39.
skkkk вне форума  
 
Непрочитано 27.01.2013, 18:34 skkkk
#15
perpetule


 
Регистрация: 23.09.2008
Волгоград
Сообщений: 805
<phrase 1= Отправить сообщение для perpetule с помощью Skype™


Это замечательно, большинство кнопок у меня сейчас так и оформлено, но есть еще *.arx, *.vlx, *.dll с ними то что делать? Help!
perpetule вне форума  
 
Непрочитано 27.01.2013, 18:45
#16
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


К сожалению, я не использую *.arx, *.vlx и *.dll - и не смогу подсказать на этот счет, но вопрос темы подразумевает только *.lsp.
skkkk вне форума  
 
Непрочитано 27.01.2013, 19:22
#17
Кулик Алексей aka kpblc
Moderator

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


Вот придумываете лисапед себе на голову... Все уже есть, и очень давно: http://autolisp.ru/2012/06/10/app-au...-another-path/
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 27.01.2013, 19:47
2 | #18
Alan

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


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Должна быть одна основная "настройка" - профиль.
Полностью согласен.
О чём и писал в пп. 6,9
К сожалению в Автокад"е другого способа практически нет. Способ с *.mnl ИМХО менее универсален.
А вот из acad*.lsp (я обычно использую acaddoc.lsp) можно вызывать любой ЛИСП. Например:
Код:
[Выделить все]
(defun s::startup()
  (load "main.vlx" )
  (princ)
)
А там и меню подгрузить и что-то еще...
Что касается профиля/профилей
Первое, что я делаю после первого запуска установленного Автокада - это создаю профиль "по умолчанию",
но не тот, который создаёт сам Автокад в HCU\..........\Profiles\<<Профиль без имени>>
- а свой с именем acad. (который сохраняю еще и в файл acad.arg)
Тогда ярлык вызова Автокада выглядит так "D:\Program Files\AutoCAD 2008\acad.exe" /p "D:\Program Files\AutoCAD 2008\acad.arg"
И никаких дополнительных путей и текстов в автозагрузку в этот профиль не записываете.
Для чего это делается? Потом начинается "улучшение Автокада" разными сторонними ЛИСПами, но для этих улучшений сделайте свои поименованные профили.
Конструктор 1, сделает свой профиль - konstr1, со своими дополнительными путями, прожками и автозагрузками и т.д.
У меня вызывается так с одного рабочего стола Автокад "для электрика", "для технолога" и т.д.
Когда понадобится "чистый" Автокад, без всех приблуд, вы вызываете его вот тем самым вышеописанным ярлыком с профилем acad.
И будет Вам счастье, а не вопросы "Как избавиться от CS Studio или прога - Конструктор 1?", если она вам в этот момент не нужна
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Непрочитано 27.01.2013, 20:10 наверно так
#19
perpetule


 
Регистрация: 23.09.2008
Волгоград
Сообщений: 805
<phrase 1= Отправить сообщение для perpetule с помощью Skype™


в конец
acad*.lsp

;---------------------------------------------------------------------------------------
;c:\Program Files\Autodesk\AutoCAD 2011\Support\acad2011.lsp
;;; TC71 2012-07-03
;;; (load "NAME.lsp")
(load "1-LOAD-ME-TC71")
;
;-------------------------------------------------------------------------
;
;
;;; (load "NAME") ; без .lsp
(load "CF")
(load "flatten")
(load "Flatten2")
(load "math")
(load "pltools")
(load "CopyBlock-VVA")
(load "AsmiTools-Mpl")
(load "AsmiTools_Talon")
(load "AsmiTools_Ttc")
(load "color sheme")
(load "00003-Kr_DeleteAllObjectScale-V001")
(load "LOADQSP")
(load "LSTATT")
(load "norm-blocks")
(load "page_setup")
(load "PL_Lib")
(load "PL_XRefChgr")
(load "rename-all-blocks-in-all-docs-in-select-folder")
(load "SUMMATOR")
(load "z0")
(load "FAST_SELECT")
(load "layout")
(load "get-last-select")
(load "NumInc")
(load "DDCHPROP")
(load "DTextTL")
(load "easyplot")
(load "LTEXTRACT")
;
;
;---------------------------------------------------------------------------------------
;
;; Silent load.
(princ)


1-LOAD-ME-TC71.lsp

;;;
;;; предварительно записываем файл (acad2011.lsp) в
;;; c:\Program Files\Autodesk\AutoCAD 2011\Support\acad2011.lsp
;;; в нем (acad2011.lsp) прописаны
;;; *.lsp в автозагрузку (из папок по путям доступа) в том числе (в конце)
;;; файл который вы сейчас читаете (load "1-LOAD-ME-TC71")
;;;
;;; здесь подгружаются *.arx
;;; (arxload "NAME.arx")
(arxload "DWGConvert2010x64.arx")
(arxload "ExplodeProxy2010x64.arx")
(arxload "GsTest.arx")
;(arxload "MdiTab18.arx")
; (arxload "qqarx.arx")
; (arxload "qqdelphidll.arx")
; (arxload "SelSim2010x64.arx")
;
(setvar "CMDECHO" 1)
;
;;;
;;; здесь подгружаются *.vlx
;;; (load "NAME.vlx")
(load "sysvar.vlx")
;(load "viewsblk.vlx") не срабатывает, грузить через портфель
;
(princ)

Последний раз редактировалось perpetule, 27.01.2013 в 20:22.
perpetule вне форума  
 
Непрочитано 27.01.2013, 20:19
#20
Кулик Алексей aka kpblc
Moderator

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


perpetule, тэги [code][lisp][/lisp][/code] придуманы не просто так.
P.S. Когда количество файлов превысит все допустимые пределы, каково будет редактировать такой файлик?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 27.01.2013, 20:34
#21
perpetule


 
Регистрация: 23.09.2008
Волгоград
Сообщений: 805
<phrase 1= Отправить сообщение для perpetule с помощью Skype™


Цитата:
Когда количество файлов превысит все допустимые пределы, каково будет редактировать такой файлик?
Вот на это я и наткнулся - попросили подкинуть красивые кнопочки которых кроме как у меня и людей из моего отдела более ни у кого нет.

Папку отдать со всем этим добром - вопросов не возникает, пути доступа прописать, создать профиль юзверю, подгрузить частичный CUIX и т.д. это достаточно быстро, с *.lsp тоже все ясно -
в начальные строки макроса проверка на загрузку.

Но есть еще *.arx *.vlx *.dll

Вот бы волшебный код загружающий
*.arx
*.vlx
*.dll
просто из конкретной папки все что он там найдет.
perpetule вне форума  
 
Непрочитано 27.01.2013, 21:01
#22
Кулик Алексей aka kpblc
Moderator

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


В качестве варианта к размышлению: http://www.caduser.ru/forum/index.ph...D=44&TID=19699
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 27.01.2013, 21:29
#23
VVA

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


Цитата:
Сообщение от perpetule Посмотреть сообщение
Это замечательно, большинство кнопок у меня сейчас так и оформлено, но есть еще *.arx, *.vlx, *.dll с ними то что делать? Help!
В посте #6 по ссылке все есть. Решение предложено год назад
Цитата:
;загрузка библиотеки лиспов и arx модулей с отловом ошибок и запросом директории
(foreach fil (z-files-in-directory
(getenv "*z_root_dir*")
'("*.lsp" "*.fas" "*.vlx" "*.arx")
t
) ;_ end of z-files-in-directory
добавить dll и netload несложно
PS Линк можно взять не из #6, а с предыдущего поста
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 28.01.2013, 01:00
#24
gomer

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


Цитата:
Сообщение от overband Посмотреть сообщение
Логика в том, что этому товарищу ДРУГИЕ знающие люди могут что-то понаставить.
Так это и есть н. и ж. В уважающей себя конторе должен быть отдел сапр, который занимается адаптацией автокада под конкретные задачи. Это должно понимать руководство. Штат,зп, все дела... Причем этот отдел должен разрабатывать сам - конкретное комплексное приложение, по определенным правилам. А так... kpblc уже достаточно прозрачно нассылал вам, мне даже добавить нечего. Кхм, *.lsp - это пережиток прошлого, когда еще не было возможности собирать приложения *.vlx.
зы нищенствовать по инетам - не самый лучший подход. Весь собранный зоопарк, в любом случае, нужно подвергнуть ревизии.
зызы Если приложение написано хорошо, что довольно нечастое явление, то его можно продавать даже, что будет приносить какой-никакой доход
gomer вне форума  
 
Автор темы   Непрочитано 28.01.2013, 15:41
#25
overband

Инженер-конструктор
 
Регистрация: 25.02.2008
Москва
Сообщений: 142


gomer
Согласен со всем, что Вы сказали, кроме того, что приложения у нас в стране можно продавать. Наша страна из эры пиратства еще не скоро выйдет.
К тому же я катеригорически не согласен с тем, что как Вы выражаетесь "нищенствовать по инетам" не лучший подход. Иногда как раз таким образом рождаются очень интересные идеи и разработки. А проблема различных разработок в больших компаниях состоит в том, что руководят ими зачастую люди, которые этими разработками НЕ ПОЛЬЗУЮТСЯ. А на первом месте стоят трудозатраты НА РАЗРАБОТКУ и прибыль от ПРОДАЖИ РАЗРАБОТОК. И прибыль эта выражается не в сэкономленном конструктором времени или улучшении качества документации, а в количестве денег, которые придут в "отдел САПР" или коммерческую компанию по разработке ПО. Я это видел и наблюдаю своими глазами на ярком примере программы CS Project Studio. В свое время работал в немаленькой проектной организации где было 3(три) сисадмина, которые не то что в lisp не разбирались, они даже толком не понимали как Автокад работает и что с ним совместимо, а что нет. А Вы говорите, "в уважающей себя конторе"... Эх, Вашими бы устами
overband вне форума  
 
Непрочитано 28.01.2013, 16:55
#26
gomer

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


Сисадмин и программист - разные профессии.

Цитата:
Сообщение от overband Посмотреть сообщение
К тому же я катеригорически не согласен с тем, что как Вы выражаетесь "нищенствовать по инетам" не лучший подход. Иногда как раз таким образом рождаются очень интересные идеи и разработки.
Возьмите всем известный прокат и болты от культового разработчика ВК, поставьте одновременно на один автокад и попробуйте запустить сначала одно, потом второе. Сразу начнутся проблемы, а причина банальна, одноименные функции различного содержания
Для того чтоб создать с нуля серьезное приложение, нужно потратить несколько лет и иметь достаточно знаний, так что эникей однозначно отпадает. Можно конечно купить что-нибудь от CS, это будет дешевле, но всех проблем это не решит
Насчет того, что команды отпадают, возможно проблема как раз в том, что контент лежит на сервере. При локальном хранении сапр таких проблем не замечал за многие годы работы.

Кстати, вот вам пример простой функции, выполняющей заданную команду и при необходимости загружающей ее с диска

Код:
[Выделить все]
 (defun cdl-run (cmd fil / tmp)
;;; функция загрузки и запуска команд
;;; (cdl-run 'ALIST "ALIST.LSP")
  (if (not (boundp (read (setq tmp (strcat "c:" (vl-princ-to-string cmd))))))
	  (progn (if *cdl_nomute* (prompt "\nЗагрузка..."))(load (findfile fil)))
  )
  (eval (read (strcat "(" tmp ")")))
)
Это нечто среднее между
Цитата:
^C^C(if(null с:оne)(Load "one.lsp"));one;
и предварительной загрузкой всех лиспов. Написал ради эксперимента, так как предпочитаю грузить все сразу, не так уж это много
gomer вне форума  
 
Автор темы   Непрочитано 29.01.2013, 15:29
#27
overband

Инженер-конструктор
 
Регистрация: 25.02.2008
Москва
Сообщений: 142


В общем из всего обсуждения, так или иначе можно сделать вывод, что вопросы подобные описанному в заголовке темы все-таки надо оставлять программистам. Я соглашусь, что если речь идет о распространении каких-либо наработок без постоянной техподдержки, то это просто нереальная ситуация. Даже у профессиональных разработчиков постоянно выявляются баги и т.д.
Тем, кто все же захочет докопаться до сути в этом вопросе, было представлено много решений.
Я для себя выводы сделал. Спасибо всем ответившим!
overband вне форума  
 
Непрочитано 06.02.2013, 08:45
#28
Kirill_Ja


 
Регистрация: 28.07.2008
Мурманск
Сообщений: 208
<phrase 1=


Не рассмотрели еще один путь. На мой взгляд более простой.
Создаете файл acaddoc.lsp и прописываете папку где он лежит в путях доступа к файлам в настройках.
Файл будет загружаться при открытии каждого документа вне зависимости от значения системных переменных
, т.е. для каждого документа будут подгружены требуемые функции.

У меня файл выглядит так:

Код:
[Выделить все]
 
(defun-q TG_Load ()

(princ "  Загружаются базовые функции Topo_Graph")
(load "TG_List.lsp") ;содержит простые дополнительные функции системы TG
(princ "  Загружаются функции Topo_Graph для работы с конфигурацией")
(load "TG_Config.lsp") ;содержит функции настройки импорта
(princ "  Загружаются функции импорта Topo_Graph")
(load "TG_Import.lsp") ;содержит функции импорта пикетов
(princ "  Загружаются функции преобразования файлов Topo_Graph")
(load "TG_transform.lsp") 
(TG_Cfg_load)
(load "TG_Two.lsp") 
(load "TG_BLK_EQ.lsp") 
(load "tg_Blk_insert.lsp") 
(load "TG_TIN.lsp") 


); end defun

(setq S::STARTUP (append S::STARTUP tg_load))
Здесь моя функция автозагрузки добавляется к стандартной функции STARTUP, которая автоматически грузится при открытии чертежа.

Можно, приложив немного смекалки, написать программу, которая будет подгружать все файлы (lsp и arx) из определенной папки, а положение самой папки прописать в реестре например.
Kirill_Ja вне форума  
 
Непрочитано 06.02.2013, 10:05
#29
ShaggyDoc

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


Цитата:
Не рассмотрели еще один путь.
Да все рассмотрели, здесь повторять не стали, было в ссылках. Вариант с acaddoc.lsp на путях доступа своего профиля самый правильный.

А вот использование
Цитата:
(setq S::STARTUP (append S::STARTUP tg_load))
не очень-то хорошо. Там есть неприятные нюансы. Лучше сделайте в конце своего acaddoc.lsp прямой вызов своей "стартовой" функции в виде (TG_Load)

Вот мой пример acaddoc.lsp
Код:
[Выделить все]
 
(vl-load-com)
(setq 
  *ru_common_dir*  "c:\\ruCAD\\Install\\LocalAppData\\ru\\CAD-2008\\"
 *ru_app_data_dir*  "c:\\ruCAD\\Install\\LocalAppData\\ru\\CAD-2008\\AppData\\"
 *ru_help_dir*  "c:\\ruCAD\\Install\\PF\\ru\\CAD-2008\\Help\\"

 *ru_archives_dir*  "c:\\ruCAD\\Install\\LocalAppData\\ru\\CAD-2008\\Archives\\"
 *ru_docs_dir*  "c:\\ruCAD\\Install\\LocalAppData\\ru\\CAD-2008\\Docs\\"
 *ru_layers_dir*  "c:\\ruCAD\\Install\\LocalAppData\\ru\\CAD-2008\\Layers\\Слои\\"
 *ru_libs_dir*  "c:\\ruCAD\\Install\\LocalAppData\\ru\\CAD-2008\\Libs\\"
 *ru_add_dir*  "c:\\ruCAD\\Install\\LocalAppData\\ru\\CAD-2008\\Add\\"
 *ru_xml_menu_dir*  "c:\\ruCAD\\Install\\LocalAppData\\ru\\CAD-2008\\XML\\Menu\\"
 *ru_xml_images_dir*  "c:\\ruCAD\\Install\\LocalAppData\\ru\\CAD-2008\\XML\\Images\\"
 *ru_topo_dir*  "c:\\ruCAD\\Install\\LocalAppData\\ru\\CAD-2008\\Archives\\Topo\\"
)
 (if (equal (load (strcat *ru_common_dir* "Libs\\App\\common\\ru-lib-main.fas") "Failed") "Failed")
	(alert "Не загружена библиотека ruCAD. Работа в ruCAD невозможна.") 
	(if (ru-acad-2008-test)
		(progn
			(ru-express-load)
			(ru-app-load-3d-lib)
			(ru-init-start-rucad)
		)	
	)	
 )
(princ)
Вообще-то этот файл существует только во время работы. Он автоматически создается и автоматически удаляется. Т.е. никого не трогает, никому не мешает и не может случайно загрузиться куда не надо.
ShaggyDoc вне форума  
 
Непрочитано 06.02.2013, 16:17
#30
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Вариант с acaddoc.lsp на путях доступа своего профиля самый правильный.
Чем и пользуются рукожопые лиспо-"вирусо"-пописатели... Однако, начиная с версии AutoCAD 2013 SP1.1 имеется возможность отключить обозначенное поведение. Т.о. данный вариант с "автозагрузкой" далеко не "самый правильный", ибо не 100%-ный.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 07.02.2013 в 12:02.
hwd вне форума  
 
Непрочитано 06.02.2013, 19:39
#31
ShaggyDoc

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


Цитата:
Чем и пользуются рукожопые лиспо-"вирусо"-пописатели...
Вирусописатели рассчитывают на лохов. Мой acaddoc автоматически создается и автоматически удаляется. Туда никто посторонний ничего не напишет. Отключение автозагрузок - идти на поводу у дурачков. Ну, пусть отключают.
ShaggyDoc вне форума  
 
Непрочитано 06.02.2013, 19:55
#32
gomer

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


У меня этот автолоад не работает грузит и при нуле и при единице, почему-то
gomer вне форума  
 
Непрочитано 06.02.2013, 21:32 Ой ли?
#33
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Вирусописатели рассчитывают на лохов. Мой acaddoc автоматически создается и автоматически удаляется. Туда никто посторонний ничего не напишет. Отключение автозагрузок - идти на поводу у дурачков. Ну, пусть отключают.
Ну конечно же у дурачков... Куда же нам в лаптях, да за паровозом-то... А теперь давайте добавим немного конкретики, дабы нарисованный вами шарж на тему "дурачков" и "гениев" был более убедительным:

1. Юзер открывает по сетке доступный ему только для чтения DWG файл. В том же каталоге, как показывает практика, порой находится зараза в виде acaddoc.lsp, либо acaddoc.fas, либо acad2013.lsp, либо acad2013.fas (соответственно доступная так же только для чтения). Вопрос: что в результате будет грузиться: ваш динамически генерируемый LSP файл, или же обозначенная выше зараза?

2. Если по п.1. будет первой загружена всё же зараза, которая автоматом пропишет себя во все каталоги поддержки (что она как правило и делает), а так же в каталоги открытых файлов (разумеется, если для записи будет доступ), то в этом случае, в дальнейшем, какой LSP файл будет грузиться: реально существующий, или же динамически генерируемый?

3. Как текущая реализация вашего файла спасёт от ситуации, когда имя заразного файла будет acad.lsp, или acad.fas (помнится, я встречал заразу под этими именами)?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 06.02.2013, 21:42
#34
ShaggyDoc

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


Дурачки - это те, кто вообще позволяет появляться на компьютере (или компьютерах их подзащитных пользователей) всякой заразе. Путей появления много, давайте все возможные отключать. Начинать придется с Windows.
ShaggyDoc вне форума  
 
Непрочитано 06.02.2013, 21:47
#35
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Путей появления много, давайте все возможные отключать. Начинать придется с Windows.
Мда... Вообще-то я ожидал конкретики, и даже пронумеровал вопросы...

Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Дурачки - это те, кто вообще позволяет появляться на компьютере (или компьютерах их подзащитных пользователей) всякой заразе.
Поподробней пожалуйста... Как именно вы "не позволяете" (например - флешки, почта)?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 06.02.2013 в 23:10.
hwd вне форума  
 
Непрочитано 06.02.2013, 23:25
#36
gomer

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


Прелестнейший холиварчик из-за сущего пустяка, кстати не забывайте про acad.mnl, который по сути та же дыра. Да и какие это вирусы, так, шалости, блин, ну, как что-то полезное сделать, так лисп - отстой и архаизм, а как "подхватили вирус", так лисп впереди планеты всей". С параноидальностью современных ОС это вообще не проблема, так как так просто записать в автокадовские файлы всякую ерунду не даст именно она, ОС. Вообще, если для работы программы, нужно отключать UAC или копаться в параметрах доступа к файлам или иметь админскую учетку - это не зер гут, тем более, что автокад без лиспа - это как ЛТ почти, но на порядок дороже.
gomer вне форума  
 
Непрочитано 07.02.2013, 11:51
#37
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


2 ShaggyDoc
Верно ли я понял, что по обозначенным мною выше вопросам вам ответить нечего (по существу)? Тема безопасности мне на самом деле интересна, потому и уточняю...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 07.02.2013 в 12:01.
hwd вне форума  
 
Непрочитано 07.02.2013, 12:28
#38
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Не надо давать никаким юзерам прямую запись в общие папки - вся "синхронизация" только через сервер, только для которого открыты расшаренные папки юзеров, а он уж сам следит что там появилось, что скопировать (заодно пометить, кто подправил, бэкапы, версии и т.д.). То есть юзер может скопировать только с ReadOnly сервера, а записать только к себе в открытую, только для сервера папку - а он (сервер) уж решит что с этим добром делать, что копировать и пр.
Offtop: p.s. FileSystemWatcher прекрасно следит и за удаленными машинами
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 07.02.2013, 12:42
#39
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Не надо давать никаким юзерам прямую запись в общие папки
Никто и не даёт. Каждый юзер работает в составе определённой группы, каталогам которой на сервере заданы соответствующие права. Другие каталоги, содержимое которых может потребоваться в работе (например файлы из других разделов, используемые в XRef), доступны членам этой группы только для чтения.
Цитата:
Сообщение от Дима_ Посмотреть сообщение
а он (сервер) уж решит что с этим добром делать, что копировать и пр.
Сегодня пользователь работает в составе одной проектной группы, завтра в другой, после завтра в третьей, поскольку нанимает его ГИП, на выполнение конкретной работы, предварительно проанализировав текущие заявки общего проектного зала. Как серверный скрипт узнаёт, куда какие файлы копировать? Один и тот же файл может быть скопирован и отредактирован сразу несколькими сотрудниками (каждый из них зачастую считает, что он всего лишь только чуть-чуть подправит DWG, внеся необходимые изменения, которые на других и не должны, вроде как, повлиять...). Как скрипт разруливает такую ситуацию?
Цитата:
Сообщение от Дима_ Посмотреть сообщение
FileSystemWatcher прекрасно следит и за удаленными машинами
И? Нужно знать куда и что копировать.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 07.02.2013 в 12:48.
hwd вне форума  
 
Непрочитано 07.02.2013, 13:07
#40
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Ну ведь как-то выдаются права группе куда можно записывать - все то-же самое, только сервер "срисовывает" сам - через свой фильтр и заодно "бекапя". У пользователя есть открытые папки "туда" "сюда" "незнаю-куда" - сервер за ними смотрит и в зависимости от того в какой-он сейчас "проектной группе" "зале" и что еще там туда и копирует. Здесь на форуме тысячи файлов лежат в БД, на каждый есть инфа и откуда и куда - и все без прямого доступа, а с ним бы это было вряд-ли возможно - а каждый, упрощенно говоря, просто выкладывал у себя и в соответствующей теме.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 07.02.2013, 13:11
#41
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Ну ведь как-то выдаются права группе куда можно записывать - все то-же самое, только сервер "срисовывает" сам - через свой фильтр и заодно "бекапя". У пользователя есть открытые папки "туда" "сюда" "незнаю-куда" - сервер за ними смотрит и в зависимости от того в какой-он сейчас "проектной группе" "зале" и что еще там туда и копирует.
У пользователя для записи на сервере может быть доступно более одного каталога. Кроме того, следует учитывать человеческий фактор: пользователь выполнил работу в группе и уже работает над другой задачей у другого ГИПа, а предыдущий ГИП забыл его удалить из состава своей группы, тем самым оставив права на редактирование.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 07.02.2013, 13:18
#42
ShaggyDoc

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


Цитата:
Сообщение от hwd Посмотреть сообщение
2 ShaggyDoc
Верно ли я понял, что по обозначенным мною выше вопросам вам ответить нечего (по существу)? Тема безопасности мне на самом деле интересна, потому и уточняю...
Вообще на эту тему не хочу беседовать. Там, где есть нормальный администратор и проводится нормальная политика - никаких проблем нет. Уж всяких "acad-вирусов" точно нет. Это где-нибудь у декстрона каждый день то понос, то золотуха. Я только раз и поглядел ради любопытства, скачав с форума. При вменяемом администраторе их и не будет. Могу только посоветовать - вообще не допускать автозагружаемых откомпилированных файлов acad*.fas. Если кто-то умудрится притащить - уничтожать без разборок. В автозагрузках не должно быть ничего "секретного". Ну, и всякие VBA в DWG - само собой. Нечего им там делать.

Кроме того, лиспописателям должен быть категорический запрет на использование WSH и подобного им. Коды, публикуемые на форуме этим, кстати, страдают. Мало ли что "удобно". Включив поддержку скриптов - открываем настежь двери для вирусов (или просто деструктивных действий со страниц).

С "не-кадовской" заразой проблемы есть конечно. На 90% решаются опять же правильным администрированием, а на 10% - поркой по пятницам "на конюшне". Одно только изгнание Outlook столько предотвращает. Но эти темы на этом форуме незачем обсуждать. В Сети хватает болтовни.

Уж как-то так случилось, что везде, где мне довелось работать, никаких проблем с "заразами" вообще не было. Веде были правильные сисадмины (не я). Там и говорить-то об этом это даже неприлично - всё равно как обсуждать, в какой тональности лучше пукать.
ShaggyDoc вне форума  
 
Непрочитано 07.02.2013, 13:55
#43
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


2 ShaggyDoc
Вы проигнорировали мой вопрос относительно магнитофона (пронумерованы как 1,2,3): имеет ли ваш динамически генерируемый файл преимущество в загрузке перед заразой? Если нет, то возможность отключения автозагрузки лиспов - очень полезная возможность, что бы вы там выше не писали в своих "красочных эмоциях" и, как следствие - использовать acad*.lsp в качестве лошадки, загружающей другие лиспы - это не надёжный способ.

Цитата:
Могу только посоветовать - вообще не допускать автозагружаемых откомпилированных файлов acad*.fas. Если кто-то умудрится притащить - уничтожать без разборок.
Это всё понятно и само собой разумеется... Только вопрос был не в этом, а в том, как вы реализовываете сие?

Здесь несколько проблемных моментов:

1. Лечить нужно одновременно сразу все машины. Если зараза останется хотя бы на одной - она автоматом расползается по сети (поскольку DWG файлы, над которыми работают группы, находятся именно в сети), а с неё уже и на локальные машины.

2. Юзеры не смотрят на то, что они сами же на флэшках и тащат, а так же не смотрят что там в архивах с чертежами, которые им присылают. Они просто бездумно копипастят всё на сервер в каталог своей группы, со всеми вытекающими последствиями. Руководство их в этом поддерживает, забраковав соответствующую инструкцию на тему того, что прежде чем открыть чертёж, убедитесь, что в его каталоге нет acad*.lsp или acad*.fas. Мотивация руководства: "это очень сложно и нереально".

3. Двести человек, которые сидят в разных зданиях (это только в одном городе). На работу приходят в разное время, соответственно нет 100% момента, когда все компы включены одновременно и их можно одновременно пролечить. Не пролечен один - с него всё расползётся снова, как только юзер откроет с него чертежи.

4. Обозначенная лиспохрень не только копипастит себя по каталогам, но и модифицирует найденные LSP и MNL файлы, со всеми вытекающими последствиями. Если такие файлы начинает "лечить" касперский, то автокад более не запускается. Приходится запускать специально созданную программку, которая выполняет реинициализацию автокада, восстанавливая то состояние, в котором он был сразу после установки.

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

Однако я бы всё же предпочёл как-то очистить сетку с локальными машинами и отключить мой "антивирус".
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 07.02.2013, 14:47
#44
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от hwd Посмотреть сообщение
зараза снова расползается, поскольку имеются индивидуально упёртые обезьянки, которые по религиозным соображениям не хотят лечить свою машину (иначе они покроются сыпью)
так Вы возмите такой зараженный acad.lsp и допишите в конец (while T (alert "!!! Я Злой Вирус !!!")) - они за 2 дня к Вам сами все за клизмой прибегут.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Что прописать в acad.lsp чтобы всегда загружались пользовательские лисп команды?

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработка ПОС, искусство проектирования Tyhig Технология и организация строительства 117 25.11.2021 17:38
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19
запуск программы из AutoCADа kminas Программирование 19 15.06.2012 13:42