Удалить упоминания о незагруженных CUIX

Автор Тема: Удалить упоминания о незагруженных CUIX  (Прочитано 10370 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Алексей КуликАвтор темы

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Собственно вопрос: вполне возможна ситуация, когда при загрузке частичных CUIX-файлов эти самые CUIX-файлы на самом деле не грузятся. Ну, например, их просто не существует. Возможно ли средствами LISP вычислить эти незагруженные CUIX? menugroup и (vla-item (vla-get-MenuGroups (vlax-get-acad-object)) <...>) могут возвращать какие-то данные, но никак не ошибки...
Или тут только один вариант - проверять элемент, проверять его файл меню? Но ведь файл меню может быть и поврежден (и, следовательно, не загружен)?
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
вполне возможна ситуация, когда при загрузке частичных CUIX-файлов эти самые CUIX-файлы на самом деле не грузятся. Ну, например, их просто не существует. Возможно ли средствами LISP вычислить эти незагруженные CUIX?
Ну их в этом случае в списке MenuGroups быть не должно. Или ты утверждаешь обратное? Честно говоря я с таким не сталкивался.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей КуликАвтор темы

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
То есть ты предлагаешь сравнивать menugroup и элементы vla-get-menugroups? Попробую ;)
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Я видимо не понял твой вопрос. Ты имеешь в виду вычислить cui(x)-файл, который нельзя загрузить в AutoCAD? Если да, то такой вряд ли можно найти, а тем более средствами VisualLisp. Но если он не загружается по какой-либо причине, то его menugroup не должно быть в menugroups.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей КуликАвтор темы

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Не столько "нельзя", сколько "не удалось". В любом случае - "прямщас" я уже спать ;)
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Алексей КуликАвтор темы

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Во, вспомнил подробности.
Для выделенных частичных меню возвращается:
Код - Auto/Visual Lisp [Выбрать]
  1. _$ (menugroup "pik-industry-cad")
  2. nil
  3. _$
  4. _$ (vla-item (vla-get-MenuGroups (vlax-get-acad-object)) "pik-industry-cad")
  5. ; error: Automation Error. Invalid argument pik-industry-cad in Item
При этом загрузить их не удается:
Код - Auto/Visual Lisp [Выбрать]
  1. _$ (setq path "d:\\tmp\\pik-industry-cad.cuix")
  2. "d:\\tmp\\pik-industry-cad.cuix"
  3. _$ (findfile path)
  4. "D:\\tmp\\pik-industry-cad.cuix"
  5. _$ (command-s "_.menuload" path)
  6. nil
  7. _$ (vla-item (vla-get-MenuGroups (vlax-get-acad-object)) "pik-industry-cad")
  8. ; error: Automation Error. Invalid argument pik-industry-cad in Item
  9. _1$
  10. ; quit after error
  11. _$ (menugroup "pik-industry-cad")
  12. nil
После перезагрузки частичные меню все еще помечены как unresolved. Их можно вручную удалить из списка частичных меню - и после этого загрузка выполняется вполне корректно.
Но мне-то хочется сделать это программно ;) Возможно ли это выполнить лиспом?
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Возможно ли это выполнить лиспом?
Лиспом думаю что нет. Только через .NET
Хотя я так и не могу понять почему возникает эта ошибка, если меню нормальное. А то что оно нормальное говорит тот факт, что ты его потом нормально загружаешь.
Цитировать
; error: Automation Error. Invalid argument pik-industry-cad in Item
Может попробовать вместо
Код - Text [Выбрать]
  1. (command-s "_.menuload" path)
использовать:
Код - Auto/Visual Lisp [Выбрать]
  1. (vla-Load (vla-get-MenuGroups (vlax-get-acad-object)) path)
?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Список частичных (Partial) меню содержится в cuix-файле в Header.cui
Можно конечно как-то вытащить его из cuix-файла (это фактически zip-файл), покорректировать (как xml-файл), засунуть обратно и перезагрузить. Но мне кажется, что на лисп это будет достаточно сложно. На .NET это реализуется через AcCui.dll - пространство имён Autodesk.AutoCAD.Customization.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей КуликАвтор темы

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Файл мог быть удален (по разным причинам) при выключенном ACAD'e. Соответственно при следующей загрузке ACAD'a получаем подобное сообщение.
За намек спасибо, буду разбираться :)
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Файл мог быть удален (по разным причинам) при выключенном ACAD'e. Соответственно при следующей загрузке ACAD'a получаем подобное сообщение.
Да. Именно таким способом я у себя и получил картинку, аналогичную твоей.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение