通过交叉窗口选择对象

时间:2019-05-09 15:32:28

标签: c# select entity autocad

我试图通过命令“ 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 :(得分:0)

SelectCrossingWindow(因为使用硬编码点输入的所有选择)无法选择在当前视口中不可见的实体。因此,为确保选择有效,您必须在进行选择之前进行缩放范围。制作范围最大化的简单方法是将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);
        }