外部アプリケーションは、文字列、数値、3D 点、距離、画層名といったデータを AutoCAD オブジェクトにアタッチすることができます。このデータを拡張データ(XDATA)といいます。特定のアプリケーションによって追加されたデータを含むオブジェクトを選択できます。
次の例は、"MY_APP" アプリケーションが追加した拡張データ(XDATA)を含む円を選択します。
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
[CommandMethod("FilterXdata")]
public static void FilterXdata()
{
// Get the current document editor
Editor acDocEd = Application.DocumentManager.MdiActiveDocument.Editor;
// Create a TypedValue array to define the filter criteria
TypedValue[] acTypValAr = new TypedValue[2];
acTypValAr.SetValue(new TypedValue((int)DxfCode.Start, "Circle"), 0);
acTypValAr.SetValue(new TypedValue((int)DxfCode.ExtendedDataRegAppName,
"MY_APP"), 1);
// Assign the filter criteria to a SelectionFilter object
SelectionFilter acSelFtr = new SelectionFilter(acTypValAr);
// Request for objects to be selected in the drawing area
PromptSelectionResult acSSPrompt;
acSSPrompt = acDocEd.GetSelection(acSelFtr);
// If the prompt status is OK, objects were selected
if (acSSPrompt.Status == PromptStatus.OK)
{
SelectionSet acSSet = acSSPrompt.Value;
Application.ShowAlertDialog("Number of objects selected: " +
acSSet.Count.ToString());
}
else
{
Application.ShowAlertDialog("Number of objects selected: 0");
}
}