Как вызвать панельку редактирования?

Автор Тема: Как вызвать панельку редактирования?  (Прочитано 9862 раз)

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

Оффлайн DoublefishАвтор темы

  • ADN Club
  • ****
  • Сообщений: 288
  • Карма: 10
  • AutoCAD Civil 3D
Добрый день

подскажите пожалуйста, как программно вызвать панельку редактирования сети?

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

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

Оффлайн DoublefishАвтор темы

  • ADN Club
  • ****
  • Сообщений: 288
  • Карма: 10
  • AutoCAD Civil 3D
Если выбран элемент сети - то правой кнопкой редактировать сеть.
Если не выбран - то на панеле команда  - редактировать сеть - появляется окно с выбором списка сетей.

Задача состоит в том чтобы создать сеть (название и параметры) и сразу открыть панельку редактирования без выбора из списка доступных сетей, т.е. сеть уже извесна какая.

Может быть надо как то выбрать созданную пустую сеть и запустить команду EDITNETWORK?

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

  • Administrator
  • *****
  • Сообщений: 13880
  • Карма: 1786
  • Рыцарь ObjectARX
  • Skype: rivilis
Если выбран элемент сети - то правой кнопкой редактировать сеть.
Так как Civil 3D у меня не установлен, то пока могу только гадать. Думаю, что при выборе пункта меню "Редактировать сеть" запускается команда. Посмотри в командной строке и если там имя команды не видно, то нажми ENTER для повтора предыдущей команды. Если это действительно команда, то запустить ее можно несколькими способами. Всё зависит от того что ты собираешься делать дальше. Если просто нужно запустить команду, то достаточно использовать метод Document.SendStringToExecute с указанием имени команды (и возможно дополнительными параметрами). Если нужно запустить команду и дождаться её завершения, то этот вариант не подходит, так как Document.SendStringToExecute выполняется асинхронно и нужно вызывать P/Invoke acedCmd или аналогичный метод.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

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

Оффлайн DoublefishАвтор темы

  • ADN Club
  • ****
  • Сообщений: 288
  • Карма: 10
  • AutoCAD Civil 3D
Что надо запустить команду EDITNETWORK - это я знаю. Но вот как задать имя сети что бы не было окна с выбором сети это пока не знаю, поэтому и спрашиваю.

Параллельно возних вопрос:

как запустить одну команду (у которой есть параметры) - дождаться её выполнения , а затем запустить вторую команду?

через sendcommand не получилось, есть какой-нибудь примерчик  на тему "P/Invoke acedCmd или аналогичный метод" ?

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

  • Administrator
  • *****
  • Сообщений: 13880
  • Карма: 1786
  • Рыцарь ObjectARX
  • Skype: rivilis
Параллельно возних вопрос:

как запустить одну команду (у которой есть параметры) - дождаться её выполнения , а затем запустить вторую команду?

через sendcommand не получилось, есть какой-нибудь примерчик  на тему "P/Invoke acedCmd или аналогичный метод" ?

Есть несколько статей на эту тему:
http://adndevblog.typepad.com/autocad/2012/04/synchronously-send-and-wait-for-commands-in-autocad-using-c-net.html
http://adndevblog.typepad.com/autocad/2012/07/show-layer-dialog-synchronously.html
Альтернатива - использование метода Editor.RunCommand. Это "непубличный" метод. Поэтому его приходится вызывать через Reflection: http://www.theswamp.org/index.php?topic=44500.msg497590#msg497590
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13880
  • Карма: 1786
  • Рыцарь ObjectARX
  • Skype: rivilis
Что надо запустить команду EDITNETWORK - это я знаю. Но вот как задать имя сети что бы не было окна с выбором сети это пока не знаю, поэтому и спрашиваю.
Тут я не подскажу, так как могу лишь гадать на кофейной гуще. Но если ты создашь нужную сеть, поместишь её в набор предварительного выбора и запустишь команду, то скорее всего это будет аналог запуска EDITNETWORK из контекстного меню.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
как запустить одну команду (у которой есть параметры) - дождаться её выполнения , а затем запустить вторую команду?
Костылищи :)
Иногда проще самому написать нужные диалоги и процедуры, чем пытаться прикрутить стандартные к своему коду. Тоже как альтернатива.
Тут я не подскажу, так как могу лишь гадать на кофейной гуще. Но если ты создашь нужную сеть, поместишь её в набор предварительного выбора и запустишь команду, то скорее всего это будет аналог запуска EDITNETWORK из контекстного меню.
Интересная мысль. Но, вряд ли получится. Потому что сеть - не графический объект, а своеобразный "накопитель" для объектов, ее составляющих. И пустую сеть без объектов выбрать предварительно никак не получится. Если сеть непустая, то по действию "выбрать" для нее, в набор попадают все объекты (трубы и колодцы), которые в нее входят.
P.S. Проверил. Предварительно выбрал объекты сети (непустой), запустил команду EDITNETWORK - появляется сразу нужный диалог без выбора сети. Так что, для непустой сети такой подход должен сработать.
« Последнее редактирование: 19-06-2014, 13:43:19 от Загорулькин Дмитрий »

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

  • Administrator
  • *****
  • Сообщений: 13880
  • Карма: 1786
  • Рыцарь ObjectARX
  • Skype: rivilis
Костылищи :)
Иногда проще самому написать нужные диалоги и процедуры, чем пытаться прикрутить стандартные к своему коду. Тоже как альтернатива.
Если то, что собирается делать Doublefish, возможно сделать при помощи Civil 3D API, то конечно это "костыли". Если нет, то увы  приходится извращаться...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
В диалоге из первого сообщения нет ничего, что невозможно сделать с помощью NET API. Если нужно весь функционал этого инструмента - то потребуется довольно немало времени для реализации. Примерно недели две-три, я думаю. Но для серьезного приложения с прицелом на будущее - это самый лучший вариант, на мой взгляд.
P.S. По крайней мере, риск обнаружить "сюрприз" какой-нибудь в будущем сводится к минимуму.