Выбор объектов по пересечению окна - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь выбрать больше объектов с помощью команды "Editor.SelectCrossingWindow", но статус выбора выдает "ошибку", даже если я использую пример кода в AutoDesk Network

PromptSelectionResult acSSPrompt;
acSSPrompt = acDocEd.SelectCrossingWindow(new Point3d(2, 2, 0),
                                            new Point3d(10, 8, 0));


if (acSSPrompt.Status == PromptStatus.OK)
{
    SelectionSet acSSet = acSSPrompt.Value;

    Application.ShowAlertDialog("Number of objects selected: " +
                                acSSet.Count.ToString());
}

Если я использую ed.SelectAll, токод работает

1 Ответ

0 голосов
/ 10 мая 2019

SelectCrossingWindow (так как все выборки, использующие ввод жестко закодированных точек) не может выбирать объекты, которые не видны в текущем окне просмотра. Таким образом, чтобы убедиться, что выбор работает, вы должны сделать масштабирование перед выполнением выбора. Самый простой способ сделать Zoom Extents - использовать COM API с динамическим типом, чтобы избежать ссылок на библиотеки Interop.

        dynamic acadApp = Application.AcadApplication;
        acadApp.ZoomExtents();

        var selectionResult = ed.SelectCrossingWindow(
            new Point3d(2, 2, 0), new Point3d(10, 8, 0));

        acadApp.ZoomPrevious();

        if (selectionResult.Status == PromptStatus.OK)
        {
            Application.ShowAlertDialog(
                "Number of objects selected: " + selectionResult.Value.Count);
        }
...