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

ADN Club => AutoCAD .NET API => Тема начата: avc от 16-09-2016, 23:30:58

Название: Ошибка при назначении текущего слоя
Отправлено: avc от 16-09-2016, 23:30:58
Назначаю текущий слой через Database.Clayer внутри обработчика doc_CommandWillStart. Обычно все работает хорошо, слой меняется. Но иногда, редко но регулярно, происходит ошибка eInvalidInput. Нарочно такую ситуацию создать не получается, поэтому отладка невозможна. Что можно предпринять? Может проверить какие-то свойства текущего чертежа, какие-то блокировки? Может в нем что-то происходит не вовремя, что не позволяет менять текущий слой?
Название: Re: Ошибка при назначении текущего слоя
Отправлено: Александр Ривилис от 17-09-2016, 00:55:03
1. Надеюсь, что слой существует и он может быть назначен текущим.
2. Надеюсь ты блокируешь документ перед изменением текущего слоя.
Название: Re: Ошибка при назначении текущего слоя
Отправлено: avc от 18-09-2016, 21:52:22
Наличие слоя проверяю. А вот блокировки не делал. Стыдно признаться, но спросить тут было быстрее, чем эксперементировать и месяц ждать - будут ли хоть у кого-нибудь сбои. Кроме того вообще опасаюсь ставить блокировку в обработчике CommandWillStart. И я не трогаю никаких объектов чертежа, не создаю новых. Где можно почитать про блокировку документа? Что они на самом деле блокируют, когда надо блокировать и когда нельзя?
Название: Re: Ошибка при назначении текущего слоя
Отправлено: Александр Ривилис от 18-09-2016, 22:04:12
И я не трогаю никаких объектов чертежа, не создаю новых.
Но модифицируешь базу (Database)
Где можно почитать про блокировку документа?
Autodesk ObjectARX for AutoCAD Developer's Guide 20XX > Advanced Topics > The Multiple Document Interface > MDI Overview > Document Locking.
Если в двух словах, то если будешь модифицировать документ (базу) любым способом вне lisp-функции или модальной команды, то документ нужно блокировать как минимум на время модификации базы.
Название: Re: Ошибка при назначении текущего слоя
Отправлено: avc от 19-09-2016, 12:43:38
Autodesk ObjectARX for AutoCAD Developer's Guide 20XX > Advanced Topics
Честно потратил 2 часа на поиск указанной вами документации. Не могу найти. Сдаюсь. В комплекте с ObjectARX идет документация в которой только 2 раздела: Native ObjectARX (C++) Reference Guide и Managed .NET Reference Guide. Раздела Advanced Topics нет. Найти документацию онлайн на сайте Автодеск невозможно, но нашел на форуме ссылку http://help.autodesk.com/view/ACD/2017/ENU. Там только .Net.  Ничего про ARX вообще и Advanced тем более. У меня ощущение, что это секретная информация. Или может платная?

Но модифицируешь базу (Database)
Правильно я догадываюсь, что не только изменения чертежа, считаются изменением базы, но и все настройки хранимые в DWG ? Т.о. при изменениях системных переменных, например, тоже ТРЕБУЕТСЯ лочить документ, да?

Название: Re: Ошибка при назначении текущего слоя
Отправлено: Александр Ривилис от 19-09-2016, 12:50:05
Правильно я догадываюсь, что не только изменения чертежа, считаются изменением базы, но и все настройки хранимые в DWG ? Т.о. при изменениях системных переменных, например, тоже ТРЕБУЕТСЯ лочить документ, да?
Абсолютно правильно. Если системная переменная хранится в чертеже, то тоже нужно "лочить"
В комплекте с ObjectARX идет документация в которой только 2 раздела: Native ObjectARX (C++) Reference Guide и Managed .NET Reference Guide.
Какая-то она у тебя не полная (да разделы не так называются):

(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F61897%2F7842324.7%2F0_138157_13b27390_orig.png&hash=0e94f8c41bedcadb56b18a5896b3f587)


Название: Re: Ошибка при назначении текущего слоя
Отправлено: avc от 19-09-2016, 13:08:34
Какая-то она у тебя не полная
Одназначно! В ARX2017/docs лежит msi, который куда-то что-то прописывает, но найти куда - я не смог. Единственное что нашел, что в VS появился раздел справки:

(https://s10.postimg.org/xiaivcdr9/image.png) (https://postimg.org/image/xiaivcdr9/)

Поиск по этой справке ничего не дает. Я конечно вижу на вашем фото тот раздел, который меня интересовал. Но хотелось бы все-таки докопаться. В онлайне не опубликован полный guide?
Название: Re: Ошибка при назначении текущего слоя
Отправлено: Александр Ривилис от 19-09-2016, 15:11:37
Аааааааааааааааааа! Ты не в курсе про существование chm-файлов???

(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F100036%2F7842324.7%2F0_138160_4947f181_orig.png&hash=73a8aa3ae77b52c435ff37f6e5339b3e)

Название: Re: Ошибка при назначении текущего слоя
Отправлено: avc от 19-09-2016, 15:25:52
Эх, я даже открывал пару файлов из этой папки, но перебрать ВСЕ не догадался :) Думал их инсталлятор все внедрит в VS. К тому же на моем компе отображается только дерево разделов, а самих статей нет, пустое белое окошко. Я подумал, что это просто заголовки и стал искать контент где-то в других местах. Сейчас на другой системе посмотрел - там правда есть содержание. Наверно что-то с версиями эксплорера у меня. Меню "Параметры/Свойства браузера" вообще не открывается.
Спасибо!
Название: Re: Ошибка при назначении текущего слоя
Отправлено: avc от 19-09-2016, 16:30:21
SumatraPDF прекрасно открывает эти CHM. И они и вправду не пустые! Ура! :)
Название: Re: Ошибка при назначении текущего слоя
Отправлено: Александр Ривилис от 19-09-2016, 20:42:07
SumatraPDF прекрасно открывает эти CHM.
Вообще-то они открываются самим Windows, так как являются элементами встроенной системы помощи: https://ru.wikipedia.org/wiki/HTMLHelp
Название: Re: Ошибка при назначении текущего слоя
Отправлено: avc от 19-09-2016, 21:03:44
Да я в курсе, но ДОЛЖНЫ открываться и ОТКРЫВАЮТСЯ - это не одно и то же. Я сейчас проверил на 5и компьютерах - на 2х из них открываться только оглавления, вместо содержимого - чистый белый фон. И о таких случаях полно сообщений в интернете. Я так понимаю, у этого компонента под капотом IE и это печально. А Суматра открывает без танцев с бубном. Поэтому я и написал тут о ней - чтоб другие не мучились и не искали, как я, обходные пути.
Название: Re: Ошибка при назначении текущего слоя
Отправлено: Александр Ривилис от 19-09-2016, 22:54:09
Я так понимаю, у этого компонента под капотом IE и это печально
Да. И соответственно его работа определяется Свойствами обозревателя. Плюс еще возможен вариант, когда chm-файлы помечены, как скаченные из сети и их следует разблокировать иначе как раз активное содержимое не видно.
Название: Re: Ошибка при назначении текущего слоя
Отправлено: Александр Ривилис от 19-09-2016, 22:56:32
Меню "Параметры/Свойства браузера" вообще не открывается.
Компьютер домашний или в рабочей сети, когда админ мог так урезать доступ по своему разумению?
Название: Re: Ошибка при назначении текущего слоя
Отправлено: avc от 19-09-2016, 23:42:14
chm-файлы помечены, как скаченные из сети и их следует разблокировать
Да, да, та же самая пакость, которая, мешает работе наших плагинов.
Но у меня не тот случай. IE запускается 2 минуты, может я сам что-то ему заблокировал на уровне рабочей сетки в файерволе или групповых политиках... Черт с ним, не буду дальше захламлять топик, а то это уже третья тема получается :)