Редактирование параметров скрытых сообщений

Автор Тема: Редактирование параметров скрытых сообщений  (Прочитано 12005 раз)

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

Оффлайн Подшиваленко ДмитрийАвтор темы

  • ADN Club
  • **
  • Сообщений: 64
  • Карма: 0
Возможно ли редактирование параметров скрытых сообщений средствами Lisp или другими программными методами (главное чтобы не руками)?
Нужно заменить значение для параметра "Масштаб аннотаций", чтобы по-умолчанию происходил сброс списка масштабов при их большом количестве.

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Подшиваленко ДмитрийАвтор темы

  • ADN Club
  • **
  • Сообщений: 64
  • Карма: 0
Александр, спасибо за ссылку. Оказалось, что я её видел раньше. Проблема в том, что, если с Lisp-ом я хоть как-то могу разобраться, то с .NET вообще не знаком, не знаю что делать с кодом C# и как его запускать в среде AutoCAD. Потом из этой статьи я понял что можно разрешать/запрещать появление диалога, а нужно оставить запрещённым диалог для масштабов, но результат работы этого диалога должен быть таким, чтобы масштабы очищались.
То есть в секции файла FixedProfile.aws <HideableDialog id="ScaleList.LargeScaleAlert" title="Масштаб аннотаций — большое количество масштабов" category="Масштаб аннотаций" application="" result="7"> нужно чтобы было " result="6".
Был бы очень признателен, если бы Вы написали код для этого и краткую инструкцию для чайника (или ссылку) по применению этого кода.

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
То есть в секции файла FixedProfile.aws <HideableDialog id="ScaleList.LargeScaleAlert" title="Масштаб аннотаций — большое количество масштабов" category="Масштаб аннотаций" application="" result="7"> нужно чтобы было " result="6".
Был бы очень признателен, если бы Вы написали код для этого и краткую инструкцию для чайника (или ссылку) по применению этого кода.
Ну так и напиши это на лиспе. Код писать не буду.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Подшиваленко ДмитрийАвтор темы

  • ADN Club
  • **
  • Сообщений: 64
  • Карма: 0
Ну так и напиши это на лиспе. Код писать не буду.
Печаль :(
Собственно был написан лисп для правки этой секции в файле FixedProfile.aws, но как оказалось впустую. Acad считывает оттуда значение при загрузке, потом лисп его меняет, а Acad при закрытии восстанавливает то значение, которое считал при загрузке.

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Значит нужно всем подменить этот файл до запуска AutoCAD.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Подшиваленко ДмитрийАвтор темы

  • ADN Club
  • **
  • Сообщений: 64
  • Карма: 0
Значит нужно всем подменить этот файл до запуска AutoCAD.
Этим путём я тоже пробовал идти, но правильнее было бы не подменить файл готовым, а именно отредактировать эту секцию. И потом это нужно сделать только для определённого списка компов. Вторгся в среду PowerShell для Windows, в которой у меня тоже  нет никаких знаний. В общем пока с этим вариантом ничего не вышло, ибо на свои вопросы на форумах я получаю не ответы, а советы. Действительно страна советов :)
Буду дальше думать...

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Если бы я даже написал код на C#, то появилось бы еще больше вопросов, чем ответов:
1. Что с этим кодом делать? Скомпилировать в dll-файл.
2. Что делать с этим - dll-файлом? Загрузить его в AutoCAD  выполнить команду установки параметров.
3. Но это же нужно будет загружать его каждый раз вручную? Ну можно написать автозагрузчик. Но и тут могут быть проблемы с разными версиями AutoCAD
4....
ИМХО. Игра не стоит свеч.
В общем пока с этим вариантом ничего не вышло, ибо на свои вопросы на форумах я получаю не ответы, а советы. Действительно страна советов :)
А на какие ответы ты рассчитывал? Что за тебя напишут полностью программу, которая будет делать то, что нужно тебе? Ну это наверное несколько наивно....
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Подшиваленко ДмитрийАвтор темы

  • ADN Club
  • **
  • Сообщений: 64
  • Карма: 0
1. Я примерно предполагал, что этот код на C# компилится в каком-нибудь Visual Studio в .dll, в котором содержится команда.
2 и 3. В принципе есть успешный опыт подключения в автозагрузку такой dll командой netload (тот же DgnLsPurge.dll для очистки dgn) и проверенный на разных версиях AutoCAD, так что как раз с этим проблем думаю не будет.
А на какие ответы ты рассчитывал? Что за тебя напишут полностью программу, которая будет делать то, что нужно тебе? Ну это наверное несколько наивно...
Ну некоторые программисты действительно помогают с кодом. Тот же Алексей Кулик мне очень сильно помог с кодами на лиспе, за что я ему премного благодарен :) На форуме по бат-файлам мне тоже писали готовые коды. Но вот с этим вопросом оказалось туго.
Попробую самостоятельно поразбираться с С#.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Off-Topic: показать
Я с этим завязал (писать готовые приложения на LISP), когда столкнулся с откровенно потребительским отношением. Мол тебе это легко и непринужденно, поэтому, ты почти что обязан мне написать.А потом такой же человек-потребитель рассказывает о том, что ему нафик не надо знать программирование и все готовые коды легко качаются на DWG.RU, а я, как лисп-программист фигней занимаюсь. Кстати, зачатки такого отношения просматриваются и в этой теме: "а чего это вы готовые коды не даете??"

Оффлайн Подшиваленко ДмитрийАвтор темы

  • ADN Club
  • **
  • Сообщений: 64
  • Карма: 0
Off-Topic: показать
Я с этим завязал (писать готовые приложения на LISP), когда столкнулся с откровенно потребительским отношением. Мол тебе это легко и непринужденно, поэтому, ты почти что обязан мне написать.А потом такой же человек-потребитель рассказывает о том, что ему нафик не надо знать программирование и все готовые коды легко качаются на DWG.RU, а я, как лисп-программист фигней занимаюсь. Кстати, зачатки такого отношения просматриваются и в этой теме: "а чего это вы готовые коды не даете??"
Дмитрий, я всего лишь попросил человека написать небольшой код, а не полноценную работоспособную программу с кучей функций. Без претензий на "ты почти что обязан мне написать". Человек не захотел, на этом вопрос закрылся. Некоторым людям совсем несложно написать небольшой код в знакомой ему среде. Как я писал выше, Алексей Кулик мне очень помог с лиспом, на форуме http://www.cyberforum.ru/ народ тоже помог со скриптами и батниками. Я конечно пытаюсь разобраться и многое писать самостоятельно, но невозможно одновременно знать Lisp, C#, BAT/CMD, скрипты, Power Shell работая не программистом. Просто в силу определённых обстоятельств пришлось этим заняться. Никого не хотел обидеть своей просьбой.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Off-Topic: показать
Дмитрий, я не буду сейчас делать выкройки из Ваших сообщений этой темы, чтобы показать какие именно фразы навели меня на нехорошие мысли по поводу Вашего отношения к людям, оказывающим помощь на данном ресурсе. Как бы грубо это не звучало, но то, что Вы не программист, а нужно писать программы - это сугубо Ваша проблема. Есть повод к тому, чтобы учиться и развиваться. Если что-то не можете сделать в силу отсутствия знаний и навыков - есть отличный раздел для поиска того, кто сможет: http://adn-cis.org/forum/index.php?board=38.0. Будет совсем отлично, если на будущее Вы возьмете себе в привычку относиться к предоставляемым фрагментам кодов, решающих конкретно Вашу проблему, как к акту величайшей щедрости, а не как к выполнению обязанностей отвечающего ;D

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1097
  • Карма: 172
Хоть убей не понимаю - почему не взять готовые коды для работы с xml (я где-то предоставлял, насколько я помню) и подшаманить "под себя"?
Все, что сказано - личное мнение.

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

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

Оффлайн Подшиваленко ДмитрийАвтор темы

  • ADN Club
  • **
  • Сообщений: 64
  • Карма: 0
Хоть убей не понимаю - почему не взять готовые коды для работы с xml (я где-то предоставлял, насколько я помню) и подшаманить "под себя"?
Алексей, если ты имеешь ввиду коды на лиспе, то, как я уже писал в Ответе #4, код для правки FixedProfile.aws был написан, но оказался бесполезен :(. Файл нужно править через BAT/CMD до запуска Автокада, либо менять параметры при работе Автокада с помощью C#. А поскольку это надо делать только для определённого списка компов, функция чтения списка была написана на лиспе и её придётся переписывать на BAT/CMD (как это можно сделать пока не представляю).
Попытался разобраться с компиляцией C# кода в .dll в Visual Studio 2010 Express - пока безрезультатно. В общем пока временно забил на этот вопрос.

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1097
  • Карма: 172
Если все так, как ты говоришь - я про чтение/запись Profile.aws, то создание dll поможет как мертвому припарки. Надо писать нормальный bat / cmd / exe, который запускать доменной политикой.
Все, что сказано - личное мнение.

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

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

Оффлайн Подшиваленко ДмитрийАвтор темы

  • ADN Club
  • **
  • Сообщений: 64
  • Карма: 0
создание dll поможет как мертвому припарки
Так я думал, что на C# как раз меняются настройки Автокада внутри самой среды, а уже потом при закрытии Автокада эти настройки сохраняются в FixedProfile.aws. Или не так?
Писать bat/cmd - это совсем на потом, сейчас на это пока нет времени.

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1097
  • Карма: 172
Если я правильно понимаю ситуацию, то: AutoCAD загружается сам, читает настройки (в т.ч. и из Profile.aws), потом загружает уже все дополнения (в т.ч. и твои .NET-dll). Срабатывает DLL, меняющая параметры в Profile.aws. Пользователь закрывает AutoCAD. Сначала срабатывает DLL, меняющая данные в Profile.aws, потом срабатывает закрытие AutoCAD, который снова записывает Profile.aws.
Подчеркиваю - если я не ошибаюсь,- то придется писать стороннее приложение, которое будет срабатывать хотя бы при авторизации пользователя в системе и которое будет менять все Profile.aws, какие только найдет. Ну или отлавливать старт приложения acad.exe.
Все, что сказано - личное мнение.

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

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

Оффлайн Подшиваленко ДмитрийАвтор темы

  • ADN Club
  • **
  • Сообщений: 64
  • Карма: 0
Алексей, что-то как-то сложно у тебя получается. Если на C# меняются настройки внутри среды AutoCAD, то, как я понимаю, можно сделать так:
1. Создаётся .dll с командой изменения параметра скрытых сообщений при большом количестве масштабов.
2. В файле acaddoc.lsp проверяется имя компа по списку, пишется "netload @@@.dll" и вызывается команда для изменения параметра, описанная в этом dll. И всё. При закрытии AutoCAD уже сам сохранит новый параметр в файл FixedProfile.aws. Файл acaddoc.lsp грузится у всех пользователей, так что не надо ничего отлавливать.
Если так не прокатит, то BAT с изменением файла FixedProfile.aws. (У всех пользователей на System Start стоит выполнение bat-файла, который я периодически правлю, туда можно дописать). Наковырял всяких xml-редакторов, надо с ними разобраться, и ещё писать функцию чтения списка компов из текстового файла.)
При этом есть ещё один момент. Как выяснилось (написал прогу для отчёта), у многих пользователей вообще не установлено значение параметра скрытых сообщений при большом количестве масштабов. То есть у них каждый раз выскакивает окошко с предложением очистить :)

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1097
  • Карма: 172
Да не, это я сложно написал :)
Если очень коротко и очень грубо, то ситуация в моем понимании такова:
1. Загрузка ACAD. Чтение параметров из profile.aws
2. Загрузка дополнения. Изменение profile.aws
3. Закрытие ACAD. Запись в profile.aws исходных значений.
Поэтому писать дополнение для AutoCAD, работающее на втором шаге, считаю бессмысленным. Проще нарисовать чуть ли не Windows-приложение, которое будет запускаться у определенных пользователей и менять profile.aws, вообще не привязываясь к AutoCAD.
P.S. XML-редакторы тут не нужны совсем. Создается на C# / VB.NET / F# / ... приложение, использующее достаточно стандартные средства xml-парсинга от MS, и все. Я в своих лиспах по редактированию / чтению xml никаких редакторов не использую - не нужны они ;)
P.P.S. Пользователь может сменить компьютер. А вот логин - уже тяжелее.
Все, что сказано - личное мнение.

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

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

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Подчеркиваю - если я не ошибаюсь,- то придется писать стороннее приложение, которое будет срабатывать хотя бы при авторизации пользователя в системе и которое будет менять все Profile.aws, какие только найдет.
Зачем? Достаточно исправить FixedProfile.aws (это можно делать любыми средствами), а затем вызвать  AAIW.ProfileManager.LoadHideableDialogSettingsDictionary(); как они окажутся применёнными. Т.е. необходимости делать это во внешнем приложении нет.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1097
  • Карма: 172
Кого-кого вызвать? :) Лиспом-то? ;)
Все, что сказано - личное мнение.

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

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

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Кого-кого вызвать? :) Лиспом-то? ;)
Ну тут очевидно, что одним лиспом не отделаться.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение