Выборка ячеек таблицы рамкой?

Автор Тема: Выборка ячеек таблицы рамкой?  (Прочитано 3596 раз)

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

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

  • ADN OPEN
  • ***
  • Сообщений: 116
  • Карма: 4
здравствуйте, подскажите как можно выбрать ячейки таблицы рамкой на С#?
Еще подскажите где можно найти информации при autocad api в в виде дерева как revit api, например  autocad.net developers guide ничего про таблицы не нашел ?
И как можно установить autocad wizard 2019 на visual studio 2019?
Спасибо

Отмечено как Решение Yusuf 11-09-2020, 06:41:11

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Выборка ячеек таблицы рамкой?
« Ответ #1 : 10-09-2020, 12:44:59 »
Yusuf,
Приветствую на форуме!
На нашем форуме принято правило "один вопрос - одна тема". В этой теме я отвечу только на вопрос, заданный в названии темы. На остальные создавай отдельные темы.
Для того чтобы выбрать ячейки рамкой тебе нужно при помощи двух вызовов задать угловые точки рамки:
1) Editor.GetPoint
2) Editor.GetCorner
По этим двум точкам при помощи Editor.SelectWindow (или Editor.SelectCrossingWindow) находишь саму таблицу.
Ну а при помощи метода Table.SelectSubRegion  выделяешь нужные ячейки.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 116
  • Карма: 4
Re: Выборка ячеек таблицы рамкой?
« Ответ #2 : 10-09-2020, 14:06:06 »
Yusuf,
Приветствую на форуме!
На нашем форуме принято правило "один вопрос - одна тема". В этой теме я отвечу только на вопрос, заданный в названии темы. На остальные создавай отдельные темы.
Для того чтобы выбрать ячейки рамкой тебе нужно при помощи двух вызовов задать угловые точки рамки:
1) Editor.GetPoint
2) Editor.GetCorner
По этим двум точкам при помощи Editor.SelectWindow (или Editor.SelectCrossingWindow) находишь саму таблицу.
Ну а при помощи метода Table.SelectSubRegion  выделяешь нужные ячейки.
Спасибо, как добраться до id таблицы, не получается дальше продвинутся, можете посмотреть код res выводит ошибку?

 
Код - C# [Выбрать]
  1. [CommandMethod("selCelTable")]
  2.         public void CellOfTable()
  3.         {
  4.             Document document = Application.DocumentManager.MdiActiveDocument;
  5.             Editor ed = document.Editor;
  6.             Database db = document.Database;
  7.             Editor acDocEd = Application.DocumentManager.MdiActiveDocument.Editor;
  8.            
  9.             PromptPointResult pPtRes;
  10.             PromptPointOptions pPtOpts = new PromptPointOptions("");
  11.             // Prompt for the start point
  12.             pPtOpts.Message = "\nEnter the start point: ";
  13.             pPtRes = document.Editor.GetPoint(pPtOpts);
  14.             Point3d ptStart = pPtRes.Value;
  15.             // Exit if the user presses ESC or cancels the command
  16.             if (pPtRes.Status == PromptStatus.Cancel) return;
  17.             // Prompt for the end point
  18.             pPtOpts.Message = "\nEnter the end point: ";
  19.             pPtOpts.UseBasePoint = true;
  20.             pPtOpts.BasePoint = ptStart;
  21.             pPtRes = document.Editor.GetCorner(pPtOpts);
  22.  
  23.             Point3d ptEnd = pPtRes.Value;
  24.  
  25.             if (pPtRes.Status == PromptStatus.Cancel) return;
  26.  
  27.             PromptSelectionResult res = ed.SelectWindow(ptStart, ptEnd);
  28.  
  29.             if (res.Status != PromptStatus.OK)
  30.                 return;
  31.  
  32.             SelectionSet sset = res.Value;
  33.  
  34.             if (sset.Count == 0)
  35.                 return;
  36. }
  37.  

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Выборка ячеек таблицы рамкой?
« Ответ #3 : 10-09-2020, 14:08:36 »
можете посмотреть код res выводит ошибку?
В какой строке кода? И какую ошибку?
Стоп. Я понял. В рамку у тебя не попадает таблица полностью. Соответственно она не выбирается. Так что нужно использовать Editor.SelectCrossingWindow, чтобы она была выбрана.
Ну и лучше использовать метод Editor.SelectCrossingWindow(Point3d, Point3d, SelectionFilter) чтобы быть уверенным что выберется именно таблица (создать правильный SelectionFilter).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 116
  • Карма: 4
Re: Выборка ячеек таблицы рамкой?
« Ответ #4 : 10-09-2020, 15:57:47 »
можете посмотреть код res выводит ошибку?
В какой строке кода? И какую ошибку?
Стоп. Я понял. В рамку у тебя не попадает таблица полностью. Соответственно она не выбирается. Так что нужно использовать Editor.SelectCrossingWindow, чтобы она была выбрана.
Ну и лучше использовать метод Editor.SelectCrossingWindow(Point3d, Point3d, SelectionFilter) чтобы быть уверенным что выберется именно таблица (создать правильный SelectionFilter).

Спасибо, до таблицы добрался, только не могу найти FullSubentityPath[] ? И что такое hitTestViewDirection ?

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Выборка ячеек таблицы рамкой?
« Ответ #5 : 10-09-2020, 16:05:36 »
И что такое hitTestViewDirection ?
Направление взгляда. Если вид сверху, то Vector3d.ZAxis
не могу найти FullSubentityPath[] ?
Зачем его искать?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 116
  • Карма: 4
Re: Выборка ячеек таблицы рамкой?
« Ответ #6 : 10-09-2020, 16:12:50 »
Зачем его искать?
Table.SelectSubRegion хочет его

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Выборка ячеек таблицы рамкой?
« Ответ #7 : 10-09-2020, 16:14:33 »
Зачем его искать?
Table.SelectSubRegion хочет его
Цитировать
If Paths is not null, the cell subentities, including bounding grid lines, MTexts, and block inserts, will be returned in Paths.
Передай вместо него null.

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 116
  • Карма: 4
Re: Выборка ячеек таблицы рамкой?
« Ответ #8 : 11-09-2020, 06:43:23 »
Передай вместо него null.
получилось, указываем 2 точки находим выбранные верхние, нижние строки и левый и правый колонки потом итерацией получаю значения. Спасибо