/// <summary> /// Gets all objects in the current document within the polygon and layer filter defined /// </summary> /// <param name="polyPoints"></param> /// <param name="layerFilter"></param> /// <returns></returns> public static SelectionSet GetSelectionSet(Point3dCollection polyPoints, string layerFilter, bool isCrossing, bool isFence) { SelectionSet selectionSet = null; Document currentDoc = Active.MdiDocument; Editor editor = currentDoc.Editor; Acaddb.TypedValue[] typedValues = new Acaddb.TypedValue[5]; int i = 0; Acaddb.TypedValue beginningOr = new Acaddb.TypedValue((int)Acaddb.DxfCode.Operator, "<or"); Acaddb.TypedValue endingOr = new Acaddb.TypedValue((int)Acaddb.DxfCode.Operator, "or>"); Acaddb.TypedValue beginningAnd = new Acaddb.TypedValue((int)Acaddb.DxfCode.Operator, "<and"); Acaddb.TypedValue endingAnd = new Acaddb.TypedValue((int)Acaddb.DxfCode.Operator, "and>"); typedValues[i++] = beginningOr; typedValues[i++] = beginningAnd; Acaddb.TypedValue tv = new Acaddb.TypedValue((int)Acaddb.DxfCode.LayerName, layerFilter); typedValues[i++] = tv; typedValues[i++] = endingAnd; typedValues[i++] = endingOr; // Assign the filter criteria to a SelectionFilter object SelectionFilter selectionFilter = new SelectionFilter(typedValues); // Request for objects to be selected in the drawing area PromptSelectionResult promptResult; if (isFence == true) { promptResult = editor.SelectFence(polyPoints, selectionFilter); } else { if (isCrossing == true) { promptResult = editor.SelectCrossingPolygon(polyPoints, selectionFilter); } else { promptResult = editor.SelectWindowPolygon(polyPoints, selectionFilter); } } // If the prompt status is OK, objects were selected if (promptResult.Status == PromptStatus.OK) { selectionSet = promptResult.Value; } return(selectionSet); }
/// <summary> /// Gets the selection set. /// </summary> /// <param name="prompt">The prompt.</param> /// <param name="layerFilter">The layer filter.</param> /// <param name="objectFilter">The object filter.</param> /// <returns></returns> public static SelectionSet GetSelectionSet(string prompt, string layerFilter, string objectFilter) { PGA.MessengerManager.MessengerManager.AddLog("Start GetSelectionSet"); SelectionSet selectionSet = null; Document currentDoc = Active.MdiDocument; Editor editor = currentDoc.Editor; PromptSelectionOptions options = new PromptSelectionOptions(); if (string.IsNullOrEmpty(prompt)) { prompt = "\nSelect objects:"; } options.MessageForAdding = prompt; options.RejectObjectsFromNonCurrentSpace = true; options.RejectObjectsOnLockedLayers = true; options.RejectPaperspaceViewport = true; Acaddb.TypedValue[] typedValues = new Acaddb.TypedValue[2]; int i = 0; Acaddb.TypedValue tvLayer = new Acaddb.TypedValue((int)Acaddb.DxfCode.LayerName, layerFilter); typedValues[i++] = tvLayer; Acaddb.TypedValue tvObject = new Acaddb.TypedValue((int)Acaddb.DxfCode.Start, objectFilter); typedValues[i++] = tvObject; // Assign the filter criteria to a SelectionFilter object SelectionFilter selectionFilter = new SelectionFilter(typedValues); // Request for objects to be selected in the drawing area PromptSelectionResult promptResult; promptResult = editor.GetSelection(options, selectionFilter); // If the prompt status is OK, objects were selected if (promptResult.Status == PromptStatus.OK) { selectionSet = promptResult.Value; } PGA.MessengerManager.MessengerManager.AddLog("End GetSelectionSet"); return(selectionSet); }
/// <summary> /// Gets the filtered layers selection set. /// </summary> /// <param name="layerNames">The layer names.</param> /// <returns></returns> public static SelectionSet GetObjectsOnLayers(IList <string> layerNames) { SelectionSet selectionSet = null; Editor editor = Active.Editor; Acaddb.TypedValue[] typedValues = new Acaddb.TypedValue[(layerNames.Count * 3) + 2]; int i = 0; Acaddb.TypedValue beginningOr = new Acaddb.TypedValue((int)Acaddb.DxfCode.Operator, "<or"); Acaddb.TypedValue endingOr = new Acaddb.TypedValue((int)Acaddb.DxfCode.Operator, "or>"); Acaddb.TypedValue beginningAnd = new Acaddb.TypedValue((int)Acaddb.DxfCode.Operator, "<and"); Acaddb.TypedValue endingAnd = new Acaddb.TypedValue((int)Acaddb.DxfCode.Operator, "and>"); typedValues[i++] = beginningOr; foreach (string layerName in layerNames) { typedValues[i++] = beginningAnd; Acaddb.TypedValue tv = new Acaddb.TypedValue((int)Acaddb.DxfCode.LayerName, layerName); typedValues[i++] = tv; typedValues[i++] = endingAnd; } typedValues[i++] = endingOr; // Assign the filter criteria to a SelectionFilter object SelectionFilter selectionFilter = new SelectionFilter(typedValues); // Request for objects to be selected in the drawing area PromptSelectionResult promptResult; promptResult = editor.SelectAll(selectionFilter); // If the prompt status is OK, objects were selected if (promptResult.Status == PromptStatus.OK) { selectionSet = promptResult.Value; } return(selectionSet); }