можно ли определить открыта ли уже в списке подшивок подшивка с определённым именем

Автор Тема: можно ли определить открыта ли уже в списке подшивок подшивка с определённым именем  (Прочитано 7018 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

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

Импортировать лист из существующего dwg в подшивку через ImportSheet получилось - Спасибо, пример помог разобраться что к чему.

Подскажите пожалуйста, можно ли определить открыта ли уже в списке подшивок подшивка с определённым именем и закрыть её, чтобы её не стало в списке открытых подшивок?
« Последнее редактирование: 03-06-2015, 10:08:23 от Doublefish »

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

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

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

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

Код - C# [Выбрать]
  1.   [CommandMethod("TestCloseDst")]
  2.         public void TestCloseDst()
  3.         {
  4.             Document doc = acadapp.DocumentManager.MdiActiveDocument;
  5.             Editor ed = doc.Editor;
  6.              try
  7.             {
  8.                 string filedst = @"C:\Temp\Dst\test.dst";
  9.                 AcSmSheetSetMgr mgr = new AcSmSheetSetMgr();
  10.                 AcSmDatabase db = mgr.FindOpenDatabase(filedst);
  11.                 ed.WriteMessage("\nfilenamedst: " + db.GetFileName());
  12.                 mgr.Close(db);
  13.                 ed.WriteMessage("\nClose - ok");
  14.             }
  15.             catch (SystemException ex)
  16.             {
  17.                 ed.WriteMessage("\nНе открыта подшивка test.dst");
  18.             }
  19.         }


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

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

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

  • ADN Club
  • ****
  • Сообщений: 288
  • Карма: 10
  • AutoCAD Civil 3D
Тогда совсем не понятно - создать можно и открыть можно, в списке появляются, а закрыть чтобы не было в списке никак нельзя кроме как нажать правой кнопкой  и выбрать Закрыть подшивку (убирается из списка). Эту команду кроме как мышкой никак не вызвать?
« Последнее редактирование: 04-06-2015, 13:32:03 от Doublefish »

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Эту команду кроме как мышкой никак не вызвать?
Я могу конечно задать этот вопрос в ADN DevHelp, но с вероятностью 99.9% ответ будет отрицательный. Команды такой нет (есть _OpenSheetSet, но нет _CloseSheetSet). SheetSet API никак не связано с самим Диспетчером подшивок (т.е. сам Диспетчер подшивок наверняка использует SheetSet API, но обратной связи нет).
Похожая тема: http://adn-cis.org/forum/index.php?topic=334.msg693#msg693
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

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

Отмечено как Решение Александр Ривилис 09-06-2015, 22:29:20

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Оказалось, что я был прав на 100%. Ответ из ADN DevHelp гласит:
Цитировать
К сожалению, как Вы уже заметили, AutoCAD не предоставляет команду CloseSheetSet чтобы закрыть SheetSet. Кроме того, нет API, чтобы удалить SheetSet из интерфейса Диспетчера Подшивок. Можно закрыть базу и соотвественно SheetSet при помощи AcSmSheetsetMgr.Close. Но это не удалит SheetSet из пользовательского интерфейса. Я зарегистрировал запрос на изменение у нашей инженерной команды, чтобы в будущем была возможность это делать. В данный же момент такой возможности нет.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

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