Не выбираются объекты функцией Select

Автор Тема: Не выбираются объекты функцией Select  (Прочитано 5612 раз)

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

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Сделал тестовую команду для выбора набора объектов (тестирую в acad 2014).
Тест выбирает блоки с именем PSM_RED_PIKET в слое _PSM_RED_PIKET
Тест работает успешно во всех файлах

Но в одном файле работать не хочет
объекту sel.Value возвращается Nothing

Прикрепить файл целиком пока не могу по двум причинам:
1. Он большой 36 Мб
2. Файл может представлять коммерческую тайну предприятия.

Делаю _PURGE (с учетом вложенных удалений),  _AUDIT, SAVEAS

Если я вырезаю большую часть объектов оставляя незначительную часть этого файла и делаю _PURGE, то все работает.
Смысла нет выкладывать на форум маленький кусочек - если в нем все получается хорошо.

А вот с другими аргументами к примеру выборка из другого слоя к примеру для объектов типа
ELLIPSE - все работает хорошо.

Подскажите что еще можно сделать с этим файлом что бы выборка получилась?

Вот код теста
Код - vb.net [Выбрать]
  1. Imports CAD_RTM = Autodesk.AutoCAD.Runtime
  2. Imports CAD_EDI = Autodesk.AutoCAD.EditorInput
  3. Imports CAD_DBS = Autodesk.AutoCAD.DatabaseServices
  4. Imports CAD_APS = Autodesk.AutoCAD.ApplicationServices
  5. <CAD_RTM.CommandMethod("TEST_SEL")> _
  6. Public Sub COMM_GET_SEL()
  7.             Try
  8.                 Dim filter As CAD_EDI.SelectionFilter = _
  9.                          New CAD_EDI.SelectionFilter({New CAD_DBS.TypedValue(CAD_DBS.DxfCode.Start, "INSERT"), _
  10.                                                       New CAD_DBS.TypedValue(CAD_DBS.DxfCode.LayerName, "_PSM_RED_PIKET"), _
  11.                                                       New CAD_DBS.TypedValue(CAD_DBS.DxfCode.BlockName, "PSM_RED_PIKET")})
  12.                 Dim acDocMgr As CAD_APS.DocumentCollection = CAD_APS.Application.DocumentManager
  13.                 Dim sel As CAD_EDI.PromptSelectionResult = acDocMgr.MdiActiveDocument.Editor.SelectAll(filter)
  14.                 MsgBox("выбрано: " & sel.Value.Count & " элементов")
  15.             Catch ex As Exception
  16.                 MsgBox(ex.Message)
  17.             End Try
  18. End Sub

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Прикрепить файл целиком пока не могу по двум причинам:
1. Он большой 36 Мб
2. Файл может представлять коммерческую тайну предприятия.

Подскажите что еще можно сделать с этим файлом что бы выборка получилась?
Первый пункт не является проблемой при реальном желании предоставить файл. Всё остальное - из категории назначения диагноза больному на основе фотографии его автомобиля...

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

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

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

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