Два варианта:Переформулирую: 1. Заморачиваться 2. Не париться :)
Значит у тебя остаётся только один вариант - отлавливать события создания/удаления/переключения документов.Да, наверное, достаточно будет только события Application.DocumentManager.DocumentActivated.
Да, наверное, достаточно будет только события Application.DocumentManager.DocumentActivated.Как изящно-то! Мне виделось, что всю систему автоматического открытия палитр придется похоронить и переписать по своему. А вона как все просто :) Проверено, работает (с доработочками, конечно)
Editor.SelectionRemoved -= Editor_SelectionRemoved вызывает феерическое окошко с кнопочками Прервать/Продолжить. Я такого вообще не видел не разу. И никаких Exception.Я сегодня такое окошко словил при попытке выполнить Editor.SelectionAdded -= Editor_SelectionAdded. Поймал в AutoCAD Civil 3D 2016, возможно, что и в других версиях есть такое. Появляется, если до этого не было подписки на это событие, то есть не выполнялось Editor.SelectionAdded += Editor_SelectionAdded. Пришлось ввести дополнительную переменную с булевым значением, чтобы контролировать, была ли выполнена подписка ранее или нет:
похоже капитально наколбасили в ACAD2017 с отключением событий у Editor. Editor.SelectionAdded -= Editor_SelectionAdded - просто игнорируется
Пришлось ввести дополнительную переменную с булевым значениемГлядя на ваш код я кажется начинаю догадываться, где я прокололся. У вас один флажок m_SelAdded на все чертежи. Вы ходите сказать, что у всех открытых документов один и тот же редактор и однажды подписавшись на события в одном документе будет вызываться обработчик и во всех других? Я то подписывался в каждом открытом документе. Окошко это в конце концов стало вылетать и на SelectionAdded тоже. Соответственно у меня был вариант составлять список документов, где я подписался на события. Но событие вызывалось по 7 раз и я понял, что чем со всем этим бороться, проще подписаться на Doc_ImpliedSelectionChanged - там все работает без танцев с бубном. Обратно уже не нет смысла переделывать, но хотелось бы разобраться...
Вы ходите сказать, что у всех открытых документов один и тот же редактор и однажды подписавшись на один события в одном документе будет вызываться обработчик и во всех других?Редактор действительно один и тот же. Если интересно, то посмотри класс AcEdEditor в ObjectARX, который един для всех документов и никакого отношения к AcApDocument (в .NET - Document) не имеет. Editor - это вроде как должна быть обёртка для AcEdEditor. Зачем сделали всё это в .NET с привязкой к Document для меня загадка. Я удивлялся этому еще десять лет назад...
Редактор действительно один и тот жеКруто! Если б не поднял эту тему, в жизни б не догадался...
Я давно говорил, что начинать нужно с ObjectARX, а потом переходить к AutoCAD .NET APIРедактор действительно один и тот жеКруто! Если б не поднял эту тему, в жизни б не догадался...
начинать нужно с ObjectARXВы наверно имеете ввиду программиста уже знающего С++. Мне понадобилось 2 месяца только на то, чтоб первый раз слинковать чужой готовый пример под ObjectARX. С++ - это не для слабонервных. Автодеск вроде как предлагает .Net на замену VBA. Т.е. не для программистов, а для инженеров. (Т.е. это даже не Автодеск, это Мелкомягкие давят)