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

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

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

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

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

P.S. Если есть другие решения данной проблемы, буду признателен за совет!
Просмотров: 18914
 
Непрочитано 27.01.2013, 20:34
#21
perpetule


 
Регистрация: 23.09.2008
Волгоград
Сообщений: 810
<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
С.-Петербург
Сообщений: 39,831


В качестве варианта к размышлению: 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,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от 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,381


Цитата:
Не рассмотрели еще один путь.
Да все рассмотрели, здесь повторять не стали, было в ссылках. Вариант с 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,381


Цитата:
Чем и пользуются рукожопые лиспо-"вирусо"-пописатели...
Вирусописатели рассчитывают на лохов. Мой 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,381


Дурачки - это те, кто вообще позволяет появляться на компьютере (или компьютерах их подзащитных пользователей) всякой заразе. Путей появления много, давайте все возможные отключать. Начинать придется с 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,840


Не надо давать никаким юзерам прямую запись в общие папки - вся "синхронизация" только через сервер, только для которого открыты расшаренные папки юзеров, а он уж сам следит что там появилось, что скопировать (заодно пометить, кто подправил, бэкапы, версии и т.д.). То есть юзер может скопировать только с 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,840


Ну ведь как-то выдаются права группе куда можно записывать - все то-же самое, только сервер "срисовывает" сам - через свой фильтр и заодно "бекапя". У пользователя есть открытые папки "туда" "сюда" "незнаю-куда" - сервер за ними смотрит и в зависимости от того в какой-он сейчас "проектной группе" "зале" и что еще там туда и копирует. Здесь на форуме тысячи файлов лежат в БД, на каждый есть инфа и откуда и куда - и все без прямого доступа, а с ним бы это было вряд-ли возможно - а каждый, упрощенно говоря, просто выкладывал у себя и в соответствующей теме.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
Ответ
Вернуться   Форум 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