|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Автоматическая установка cui
Регистрация: 09.12.2010
Сообщений: 10
|
||
Просмотров: 5837
|
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Application.MenuGroups.Load - но будь внимателен если в cui содержатся ссылки на внешние файлы (лиспы например), внутри cui'я никакие ссылки%ApplicationData% и пр. не работают - только прямые пути - я способа лучше чем непосредственно правка xml (делаю в 2008 - их более младшие (по возрасту) версии читают - дальше идут вобще "зазипованные") не нашел.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Цитата:
1. Считываем содержимое CUI-файла в обычную строковую переменную 2. Формируем словарь переменных, Dictionary<string,string>, в котором в качестве имени ключа - имя переменной, а в качестве значения - соответственно значение переменной. 3. Пробегаем по всем ключам в словаре из п.2, вызывая для каждого из них метод Replace на экземпляре string из п.1. 4. Теперь мы на руках имеем xml-файл, в котором все переменные заменены их значениями. Грузим в AutoCAD именно этот файл, а не изначальный CUI-файл.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Я уж точно не помню почему - но если работать стандартными XML Noda'ми - там (cui) не все гладко - по факту у меня и реализованно примерно как ты пишешь:
Код:
p.s. "***mypath***" - я переправил в шаблоне в рукопашную, а path это Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData)+... p.p.s - сейчас вспомнил - кроме шуток - когда я делал этот код (давно) у меня была мысль воспользоваться регексами.
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 22.03.2011 в 14:21. |
|||
![]() |
|
||||
Цитата:
Цитата:
Offtop: F# мне не интересен по ряду причин, а C# мне хватает за глаза для решения любых задач. переменные бывают разные: 1.Переменные операционной системы: 1.1. переменные уровня локальной машины 1.2. переменные уровня процесса 1.3. переменные уровня юзера 2.Переменные приложения При этом имена переменных не уникальны в общем пространстве. Например переменная Temp присутствует в 1.1, 1.2 и 1.3. Переменная в своём значении может содержать имя др. переменной, т.о. нужно выполнить рекурсивную распаковку значения. Код:
Код:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 24.03.2011 в 14:07. Причина: добавлен код |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
не так быстро - это ты вобще к чему
з.ы. действительно только что ради интереса проверил замену через штатные api xml: Код:
з.з.ы - если под переменными ты о переменных окружения - то я знаю - %appdata% естественно для текущего юзера. Offtop: По моему мы опять человеку всю тему засрали
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 22.03.2011 в 15:09. |
|||
![]() |
|
||||
Я в первом фрагменте кода наглядно это показал - там всё подробно закомментировано пояснениями. Дабы различать переменные разных уровней - к имени каждой переменной программно добавляется префикс, с помощью которого можно легко определить, чья это переменная. Помимо этого, использование префикса устраняет неоднозначность (о которой я писал выше на примере переменной Temp) в именах переменных.
Префиксы, которые я использовал: "Machine.", "Process.", "User.", "Xml." - последний из перечисленных соответствует уровню моего софта. Цитата:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 22.03.2011 в 15:09. |
||||
![]() |
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
а может топик-стартеру достаточно будет всего лишь что-то типа такого кода:
Код:
Весь вышеуказанный код вставляем в ЛИСП файл и загружаем через _appload. Думаю, несложно будет создать внешний exe, который запустит акад и автоматом сделает _appload. Но я пока в эту сторону не копал - не до этого пока. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Цитата:
Цитата:
Код:
Последний раз редактировалось gomer, 29.04.2011 в 08:25. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,409
|
gomer, посмотри в справке MenuGroups - мне кажется, там были методы для загрузки и выгрузки меню.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
gomer, когда цитаты лепишь - смотри кого автором назначаешь.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
сорри исправил...
насколько мне известно, в акаде работают они аналогично командным методам и не намного быстрее, а вот в брикскаде меню загружается и доступно и происходит это пошустрее |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Кстати, раз уж вспомнили про методы - кто нибудь может сказать кому (чем) в автодеске метод Save помешал?И цитата из справки
Цитата:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Где найти xsd для cui файла? | nav3000 | AutoCAD | 2 | 29.04.2011 01:23 |
Как убрать ненужные панели из ленты частичного CUI ??? | Startrek | AutoCAD | 5 | 20.04.2010 01:20 |
Ищу РД 51-0220570-2-93 — Клапаны предохранительные. Выбор, установка и расчет | rzinnurov | Поиск литературы, чертежей, моделей и прочих материалов | 0 | 21.05.2009 15:23 |
CUI – не могу адаптироваться. | mmax | AutoCAD | 15 | 07.08.2007 10:11 |
Как пользовать Enterprize CUI ???????? | Startrek | AutoCAD | 8 | 23.09.2005 17:23 |