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

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

Адаптация AutoCad. Автозагрузка CUI без участия пользователя.

Ответ
Поиск в этой теме
Непрочитано 17.07.2013, 19:53 #1
Адаптация AutoCad. Автозагрузка CUI без участия пользователя.
Kirill_Ja
 
Мурманск
Регистрация: 28.07.2008
Сообщений: 208

Итак. Чтобы загрузить частичную адаптацию пишем в командной строке _cuiload, сразу открывается окошко и все счастливы.

А вот без этого вот^ можно как-нибудь? Я понимаю, что для многих пользователей это просто, а вот для некоторых - нет(

Если запихать (command "_-cuiload" "cui.cui") в acaddoc.lsp, AutoCad вылетит с ошибкой и без принудительного сброса настроек извне больше не запустится.

Окно настройки позволяет задать путь к файлу адаптации предприятия (а это был бы самый-присамый отличный вариант), но только к одному. Т.е. загрузить 2 и более файлов таким образом не получится.

А как правильно?

Сразу скажу про поиск. Пользовался. Кроме игр с cui ничего путного не нашел. Но у меня-то не игры. Тут все серьезно)))
__________________
Мне не нужно сделать за меня. Если я что-то ищу, то пути решения.
Просмотров: 9755
 
Непрочитано 17.07.2013, 20:50
#2
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Вместо menu_file - путь к своему cui/cuix
Код:
[Выделить все]
;;Загрузка cuix файла:
	   (if
	     (vl-catch-all-error-p
	       (vl-catch-all-apply
		 '(lambda ()
		    (vla-load (vla-get-MenuGroups (vlax-get-acad-object))
			      menu_file
		    ) ;_ end of vla-load
		  ) ;_ end of lambda
	       ) ;_ end of vl-catch-all-apply
	     ) ;_ end of vl-catch-all-error-p
	      (alert "Неудачная попытка загрузки надстройки")
	   ) ;_ end of if
Do$ вне форума  
 
Автор темы   Непрочитано 17.07.2013, 23:18
#3
Kirill_Ja


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


А меню файл - это файл cui в том формате, который выдает (findfile)?
Еще вопрос: при загрузке через acaddoc - будет работать?
И еще: файл загрузится или перезагрузится, не потуряется расположение панелей?
А так гранд спасиб)
__________________
Мне не нужно сделать за меня. Если я что-то ищу, то пути решения.
Kirill_Ja вне форума  
 
Непрочитано 17.07.2013, 23:21
#4
Кулик Алексей aka kpblc
Moderator

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


Do$, забыл проверку на предмет "если такая группа (или меню) уже загружена(о)" Это основной головняк лично у меня
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 17.07.2013, 23:23
#5
Kirill_Ja


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


А как сделать? а то будет и у меня)))
Можно не код, а хотя бы подход к решению)

А может можно задать несколько путей к адаптации предприятия. Этим сразу можно было бы решить проблему.

В реестре это называется EnterpriseMenuFile. Через точку с запятой - не работает.

Может есть еще какой вариант?
__________________
Мне не нужно сделать за меня. Если я что-то ищу, то пути решения.

Последний раз редактировалось Kirill_Ja, 17.07.2013 в 23:41.
Kirill_Ja вне форума  
 
Непрочитано 17.07.2013, 23:58
#6
Кулик Алексей aka kpblc
Moderator

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


EnterpriseMenuFile может быть только один, насколько я помню. Так что это не прокатит.
Мое отношение к корпоративному меню: http://autolisp.ru/2011/09/23/about_corporatemenu/
И вот еще один не очень хороший момент: http://adn-cis.org/autocad-2014-i-bezopasnost.html + http://adn-cis.org/forum/index.php?topic=105.0
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 18.07.2013, 00:07
#7
Kirill_Ja


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


А можно автоматически (на лету) объединить свой файл частичной адаптации и предполагаемую адаптацию предприятия?
Типа как
(defun-q load_1 ...)
(append s:startup load_1)
Синтаксис не сохранен, но суть, вроде, передал.
__________________
Мне не нужно сделать за меня. Если я что-то ищу, то пути решения.
Kirill_Ja вне форума  
 
Непрочитано 18.07.2013, 00:31
1 | #8
Кулик Алексей aka kpblc
Moderator

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


Я предпочитаю копировать файлы меню на локальную машину и грузить их именно с локальной машины. А вот как программно объединять файлы адаптации - если честно, не представляю
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 18.07.2013, 00:37
#9
Kirill_Ja


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


Печаль((
У меня файлы частичной адаптации, но я не хочу их прописывать как файл адаптации предприятия, т.к. при наличии другой адаптации предприятия будет неудобно никому.
Придется грузить частичную как писал DOS через acaddoc и надеяться, что панельки не будут слетать каждый раз при перезагрузке АКД.

С другой стороны, повторная загрузка файла адаптации очень может быть будет считаться ошибкой(исключением) и будет ловиться (vl-catch-all-apply).
Спасибо за помощь.
__________________
Мне не нужно сделать за меня. Если я что-то ищу, то пути решения.
Kirill_Ja вне форума  
 
Непрочитано 18.07.2013, 09:25
#10
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Do$, забыл проверку на предмет "если такая группа (или меню) уже загружена(о)" Это основной головняк лично у меня
Есть такое, решил все не выкладывать. Может ТС сам захочет написать проверку
Там все просто - прошелся по MenuGroup, проверил наличие. Если нет - загружаем, если есть - выгружаем. Можно еще различные запросы - вопросы добавить по вкусу.
Do$ вне форума  
 
Непрочитано 18.07.2013, 09:39
1 | #11
gomer

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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Там все просто - прошелся по MenuGroup
ходить никуда не надо, есть Item
gomer вне форума  
 
Непрочитано 18.07.2013, 09:48
1 | #12
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Теоретически - можно, конечно же. Но года три назад, когда я писал такой загрузчик, я почему-то именно проходился по группам. Почему - сейчас уже не помню.
Do$ вне форума  
 
Автор темы   Непрочитано 18.07.2013, 14:43
#13
Kirill_Ja


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


Вроде и не очень головная боль.
Спасибо за ценные советы.

Код:
[Выделить все]
 (defun tg_cui_detect ( / cui_list Mgroups tmp i)
(vl-load-com)
(setq Mgroups (vla-get-MenuGroups (vlax-get-acad-object)))

(setq i 0)
(while
  (not (vl-catch-all-error-p (vl-catch-all-apply (function
						   (lambda (x) (setq tmp (vla-item Mgroups x)))
						 ) (list i))))
  (setq
    cui_list (append cui_list (list (vla-get-Name tmp)))
    i (1+ i)
  )
  );_while
cui_list
);end degun


(defun tg_load_cui (/ cui_list cui_list_to_load Mgroups)

(setq cui_list_to_load '(
			"TG_GROUP_AD"
			"TG_GROUP_AD2"
;Сюда дописываем те адаптации, которые необходимо грузить
			 ))
(setq cui_list (tg_cui_detect))
(setq cui_list_to_load (vl-remove-if
			 (function
			   (lambda (x) (member x cui_list))
			  ) cui_list_to_load))
(setq Mgroups (vla-get-MenuGroups (vlax-get-acad-object)))

(mapcar
  (function
    (lambda (cui_file)
     (if 
      (vl-catch-all-error-p
	(vl-catch-all-apply
	  (function (lambda (y)
		      (vla-load Mgroups y))) (list (findfile (strcat cui_file ".cui"))))

     )
    (alert (strcat "Неудачная попытка загрузки адаптации" cui_file))
    )
   )
  )
 cui_list_to_load)

);end defun
__________________
Мне не нужно сделать за меня. Если я что-то ищу, то пути решения.
Kirill_Ja вне форума  
 
Непрочитано 05.07.2016, 14:18
#14
Vladimir_Sergeevich

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


Два вопроса: почему и как лечить?
Написал свой .mnu (есть разделы и ***POPn и ***TOOLBARS).
1. При загрузки ручками через _menuload - все чинно и красиво робит. (только коробит вечно выползающая ribbon после этого)
2. При попытке загрузки программно грузятся только ***TOOLBARS, а ***POPn не отображаются.
Код:
[Выделить все]
 (vla-load (vla-get-MenuGroups (vlax-get-acad-object))
     menu_file ;_здесь подставляю .mnu
     :vlax-false
) ;_ end of vla-load

В принципе, "почему", достаточно очевидно: загружаю в IAcadMenuGroups. А для IAcadMenuBar метод Load похоже вообще не применим, судя по дампу.
Есть ли способ привести второе к первому?
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 05.07.2016, 14:58
#15
Кулик Алексей aka kpblc
Moderator

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


Используй vla-insertmenuinmenubar, тогда будут появляться в выпадающем меню. Но элементы ленты лиспом не покажешь, кажется.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.07.2016, 06:54
#16
Vladimir_Sergeevich

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


Алексей, ты, как всегда, прав!
Описание меню действительно присутсвует в базе. Хранится оно тут (vla-item (vla-get-Menus (vla-item (vla-get-MenuGroups (vlax-get-acad-object)) 3)) 0)
Код:
[Выделить все]
; IAcadPopupMenu: An AutoCAD cascading menu
; Значения свойств:
;   Application (RO) = #<VLA-OBJECT IAcadApplication 015091b4>
;   Count (RO) = 12
;   Name = "ОПАД"
;   NameNoMnemonic (RO) = "ОПАД"
;   OnMenuBar (RO) = 0
;   Parent (RO) = #<VLA-OBJECT IAcadPopupMenus 136b41c4>
;   ShortcutMenu (RO) = 0
;   TagString (RO) = "PMU_0002"
; Поддерживаемые методы:
;   AddMenuItem (3)
;   AddSeparator (1)
;   AddSubMenu (2)
;   InsertInMenuBar (1)
;   Item (1)
;   RemoveFromMenuBar ()

Только я использовал InsertInMenuBar к IAcadPopupMenu. Все команды отображаются замечательно и флаг "OnMenuBar (RO) = 0" переключился на -1
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Адаптация AutoCad. Автозагрузка CUI без участия пользователя.

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
1. AutoCAD Кулик Алексей aka kpblc FAQ: Часто задаваемые вопросы 25 27.09.2016 13:29
запуск программы из AutoCADа kminas Программирование 19 15.06.2012 13:42
О создании темы (раздела) для новичков в AutoCAD. Profan Разное 110 23.10.2008 10:01
AUTOCAD 2006 Aragorn AutoCAD 14 01.04.2005 00:55
Что нового в AutoCAD 2005 ilka_t AutoCAD 40 19.05.2004 16:48