Сообщество программистов Autodesk в СНГ

ADN Club => AutoLisp / VisualLISP и DCL => Тема начата: Подшиваленко Дмитрий от 06-10-2016, 09:47:35

Название: Редактирование параметров скрытых сообщений
Отправлено: Подшиваленко Дмитрий от 06-10-2016, 09:47:35
Возможно ли редактирование параметров скрытых сообщений средствами Lisp или другими программными методами (главное чтобы не руками)?
Нужно заменить значение для параметра "Масштаб аннотаций", чтобы по-умолчанию происходил сброс списка масштабов при их большом количестве.
Название: Re: Редактирование параметров скрытых сообщений
Отправлено: Александр Ривилис от 06-10-2016, 12:24:39
http://adn-cis.org/kak-upravlyat-parametrami-skryityix-soobshhenij-v-.net.html
Название: Re: Редактирование параметров скрытых сообщений
Отправлено: Подшиваленко Дмитрий от 06-10-2016, 13:50:05
Александр, спасибо за ссылку. Оказалось, что я её видел раньше. Проблема в том, что, если с Lisp-ом я хоть как-то могу разобраться, то с .NET вообще не знаком, не знаю что делать с кодом C# и как его запускать в среде AutoCAD. Потом из этой статьи я понял что можно разрешать/запрещать появление диалога, а нужно оставить запрещённым диалог для масштабов, но результат работы этого диалога должен быть таким, чтобы масштабы очищались.
То есть в секции файла FixedProfile.aws <HideableDialog id="ScaleList.LargeScaleAlert" title="Масштаб аннотаций — большое количество масштабов" category="Масштаб аннотаций" application="" result="7"> нужно чтобы было " result="6".
Был бы очень признателен, если бы Вы написали код для этого и краткую инструкцию для чайника (или ссылку) по применению этого кода.
Название: Re: Редактирование параметров скрытых сообщений
Отправлено: Александр Ривилис от 06-10-2016, 14:04:51
То есть в секции файла FixedProfile.aws <HideableDialog id="ScaleList.LargeScaleAlert" title="Масштаб аннотаций — большое количество масштабов" category="Масштаб аннотаций" application="" result="7"> нужно чтобы было " result="6".
Был бы очень признателен, если бы Вы написали код для этого и краткую инструкцию для чайника (или ссылку) по применению этого кода.
Ну так и напиши это на лиспе. Код писать не буду.
Название: Re: Редактирование параметров скрытых сообщений
Отправлено: Подшиваленко Дмитрий от 06-10-2016, 15:25:09
Ну так и напиши это на лиспе. Код писать не буду.
Печаль :(
Собственно был написан лисп для правки этой секции в файле FixedProfile.aws, но как оказалось впустую. Acad считывает оттуда значение при загрузке, потом лисп его меняет, а Acad при закрытии восстанавливает то значение, которое считал при загрузке.
Название: Re: Редактирование параметров скрытых сообщений
Отправлено: Александр Ривилис от 06-10-2016, 15:40:04
Значит нужно всем подменить этот файл до запуска AutoCAD.
Название: Re: Редактирование параметров скрытых сообщений
Отправлено: Подшиваленко Дмитрий от 06-10-2016, 15:51:50
Значит нужно всем подменить этот файл до запуска AutoCAD.
Этим путём я тоже пробовал идти, но правильнее было бы не подменить файл готовым, а именно отредактировать эту секцию. И потом это нужно сделать только для определённого списка компов. Вторгся в среду PowerShell для Windows, в которой у меня тоже  нет никаких знаний. В общем пока с этим вариантом ничего не вышло, ибо на свои вопросы на форумах я получаю не ответы, а советы. Действительно страна советов :)
Буду дальше думать...
Название: Re: Редактирование параметров скрытых сообщений
Отправлено: Александр Ривилис от 06-10-2016, 16:09:08
Если бы я даже написал код на C#, то появилось бы еще больше вопросов, чем ответов:
1. Что с этим кодом делать? Скомпилировать в dll-файл.
2. Что делать с этим - dll-файлом? Загрузить его в AutoCAD  выполнить команду установки параметров.
3. Но это же нужно будет загружать его каждый раз вручную? Ну можно написать автозагрузчик. Но и тут могут быть проблемы с разными версиями AutoCAD
4....
ИМХО. Игра не стоит свеч.
В общем пока с этим вариантом ничего не вышло, ибо на свои вопросы на форумах я получаю не ответы, а советы. Действительно страна советов :)
А на какие ответы ты рассчитывал? Что за тебя напишут полностью программу, которая будет делать то, что нужно тебе? Ну это наверное несколько наивно....
Название: Re: Редактирование параметров скрытых сообщений
Отправлено: Подшиваленко Дмитрий от 06-10-2016, 16:24:23
1. Я примерно предполагал, что этот код на C# компилится в каком-нибудь Visual Studio в .dll, в котором содержится команда.
2 и 3. В принципе есть успешный опыт подключения в автозагрузку такой dll командой netload (тот же DgnLsPurge.dll для очистки dgn) и проверенный на разных версиях AutoCAD, так что как раз с этим проблем думаю не будет.
А на какие ответы ты рассчитывал? Что за тебя напишут полностью программу, которая будет делать то, что нужно тебе? Ну это наверное несколько наивно...
Ну некоторые программисты действительно помогают с кодом. Тот же Алексей Кулик мне очень сильно помог с кодами на лиспе, за что я ему премного благодарен :) На форуме по бат-файлам мне тоже писали готовые коды. Но вот с этим вопросом оказалось туго.
Попробую самостоятельно поразбираться с С#.
Название: Re: Редактирование параметров скрытых сообщений
Отправлено: Дмитрий Загорулькин от 27-10-2016, 14:13:42
Off-Topic: показать
Я с этим завязал (писать готовые приложения на LISP), когда столкнулся с откровенно потребительским отношением. Мол тебе это легко и непринужденно, поэтому, ты почти что обязан мне написать.А потом такой же человек-потребитель рассказывает о том, что ему нафик не надо знать программирование и все готовые коды легко качаются на DWG.RU, а я, как лисп-программист фигней занимаюсь. Кстати, зачатки такого отношения просматриваются и в этой теме: "а чего это вы готовые коды не даете??"
Название: Re: Редактирование параметров скрытых сообщений
Отправлено: Подшиваленко Дмитрий от 27-10-2016, 15:44:55
Off-Topic: показать
Я с этим завязал (писать готовые приложения на LISP), когда столкнулся с откровенно потребительским отношением. Мол тебе это легко и непринужденно, поэтому, ты почти что обязан мне написать.А потом такой же человек-потребитель рассказывает о том, что ему нафик не надо знать программирование и все готовые коды легко качаются на DWG.RU, а я, как лисп-программист фигней занимаюсь. Кстати, зачатки такого отношения просматриваются и в этой теме: "а чего это вы готовые коды не даете??"
Дмитрий, я всего лишь попросил человека написать небольшой код, а не полноценную работоспособную программу с кучей функций. Без претензий на "ты почти что обязан мне написать". Человек не захотел, на этом вопрос закрылся. Некоторым людям совсем несложно написать небольшой код в знакомой ему среде. Как я писал выше, Алексей Кулик мне очень помог с лиспом, на форуме http://www.cyberforum.ru/ народ тоже помог со скриптами и батниками. Я конечно пытаюсь разобраться и многое писать самостоятельно, но невозможно одновременно знать Lisp, C#, BAT/CMD, скрипты, Power Shell работая не программистом. Просто в силу определённых обстоятельств пришлось этим заняться. Никого не хотел обидеть своей просьбой.
Название: Re: Редактирование параметров скрытых сообщений
Отправлено: Дмитрий Загорулькин от 27-10-2016, 18:58:51
Off-Topic: показать
Дмитрий, я не буду сейчас делать выкройки из Ваших сообщений этой темы, чтобы показать какие именно фразы навели меня на нехорошие мысли по поводу Вашего отношения к людям, оказывающим помощь на данном ресурсе. Как бы грубо это не звучало, но то, что Вы не программист, а нужно писать программы - это сугубо Ваша проблема. Есть повод к тому, чтобы учиться и развиваться. Если что-то не можете сделать в силу отсутствия знаний и навыков - есть отличный раздел для поиска того, кто сможет: http://adn-cis.org/forum/index.php?board=38.0. Будет совсем отлично, если на будущее Вы возьмете себе в привычку относиться к предоставляемым фрагментам кодов, решающих конкретно Вашу проблему, как к акту величайшей щедрости, а не как к выполнению обязанностей отвечающего ;D
Название: Re: Редактирование параметров скрытых сообщений
Отправлено: Алексей Кулик от 29-10-2016, 17:20:32
Хоть убей не понимаю - почему не взять готовые коды для работы с xml (я где-то предоставлял, насколько я помню) и подшаманить "под себя"?
Название: Re: Редактирование параметров скрытых сообщений
Отправлено: Подшиваленко Дмитрий от 31-10-2016, 09:35:14
Хоть убей не понимаю - почему не взять готовые коды для работы с xml (я где-то предоставлял, насколько я помню) и подшаманить "под себя"?
Алексей, если ты имеешь ввиду коды на лиспе, то, как я уже писал в Ответе #4, код для правки FixedProfile.aws был написан, но оказался бесполезен :(. Файл нужно править через BAT/CMD до запуска Автокада, либо менять параметры при работе Автокада с помощью C#. А поскольку это надо делать только для определённого списка компов, функция чтения списка была написана на лиспе и её придётся переписывать на BAT/CMD (как это можно сделать пока не представляю).
Попытался разобраться с компиляцией C# кода в .dll в Visual Studio 2010 Express - пока безрезультатно. В общем пока временно забил на этот вопрос.
Название: Re: Редактирование параметров скрытых сообщений
Отправлено: Алексей Кулик от 31-10-2016, 10:54:07
Если все так, как ты говоришь - я про чтение/запись Profile.aws, то создание dll поможет как мертвому припарки. Надо писать нормальный bat / cmd / exe, который запускать доменной политикой.
Название: Re: Редактирование параметров скрытых сообщений
Отправлено: Подшиваленко Дмитрий от 31-10-2016, 11:17:32
создание dll поможет как мертвому припарки
Так я думал, что на C# как раз меняются настройки Автокада внутри самой среды, а уже потом при закрытии Автокада эти настройки сохраняются в FixedProfile.aws. Или не так?
Писать bat/cmd - это совсем на потом, сейчас на это пока нет времени.
Название: Re: Редактирование параметров скрытых сообщений
Отправлено: Алексей Кулик от 31-10-2016, 11:32:55
Если я правильно понимаю ситуацию, то: AutoCAD загружается сам, читает настройки (в т.ч. и из Profile.aws), потом загружает уже все дополнения (в т.ч. и твои .NET-dll). Срабатывает DLL, меняющая параметры в Profile.aws. Пользователь закрывает AutoCAD. Сначала срабатывает DLL, меняющая данные в Profile.aws, потом срабатывает закрытие AutoCAD, который снова записывает Profile.aws.
Подчеркиваю - если я не ошибаюсь,- то придется писать стороннее приложение, которое будет срабатывать хотя бы при авторизации пользователя в системе и которое будет менять все Profile.aws, какие только найдет. Ну или отлавливать старт приложения acad.exe.
Название: Re: Редактирование параметров скрытых сообщений
Отправлено: Подшиваленко Дмитрий от 31-10-2016, 12:14:29
Алексей, что-то как-то сложно у тебя получается. Если на C# меняются настройки внутри среды AutoCAD, то, как я понимаю, можно сделать так:
1. Создаётся .dll с командой изменения параметра скрытых сообщений при большом количестве масштабов.
2. В файле acaddoc.lsp проверяется имя компа по списку, пишется "netload @@@.dll" и вызывается команда для изменения параметра, описанная в этом dll. И всё. При закрытии AutoCAD уже сам сохранит новый параметр в файл FixedProfile.aws. Файл acaddoc.lsp грузится у всех пользователей, так что не надо ничего отлавливать.
Если так не прокатит, то BAT с изменением файла FixedProfile.aws. (У всех пользователей на System Start стоит выполнение bat-файла, который я периодически правлю, туда можно дописать). Наковырял всяких xml-редакторов, надо с ними разобраться, и ещё писать функцию чтения списка компов из текстового файла.)
При этом есть ещё один момент. Как выяснилось (написал прогу для отчёта), у многих пользователей вообще не установлено значение параметра скрытых сообщений при большом количестве масштабов. То есть у них каждый раз выскакивает окошко с предложением очистить :)
Название: Re: Редактирование параметров скрытых сообщений
Отправлено: Алексей Кулик от 31-10-2016, 23:30:37
Да не, это я сложно написал :)
Если очень коротко и очень грубо, то ситуация в моем понимании такова:
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. Пользователь может сменить компьютер. А вот логин - уже тяжелее.
Название: Re: Редактирование параметров скрытых сообщений
Отправлено: Александр Ривилис от 01-11-2016, 00:52:05
Подчеркиваю - если я не ошибаюсь,- то придется писать стороннее приложение, которое будет срабатывать хотя бы при авторизации пользователя в системе и которое будет менять все Profile.aws, какие только найдет.
Зачем? Достаточно исправить FixedProfile.aws (это можно делать любыми средствами), а затем вызвать  AAIW.ProfileManager.LoadHideableDialogSettingsDictionary(); как они окажутся применёнными. Т.е. необходимости делать это во внешнем приложении нет.
Название: Re: Редактирование параметров скрытых сообщений
Отправлено: Алексей Кулик от 01-11-2016, 00:58:56
Кого-кого вызвать? :) Лиспом-то? ;)
Название: Re: Редактирование параметров скрытых сообщений
Отправлено: Александр Ривилис от 01-11-2016, 14:28:11
Кого-кого вызвать? :) Лиспом-то? ;)
Ну тут очевидно, что одним лиспом не отделаться.