Тема: Выбор элементов по расширенным данным
Необходимо выбрать все примитивы типа Text и MText, у которых в области расширенных совпадают имя приложения + значение текстового поля. В документе такие объекты есть (проверено). Вот код:
procedure TmForm.Button1Click(Sender: TObject); var i: Integer; DataType, Data: Variant; FiltrType, FiltrData: OleVariant; SelSet: IAcadSelectionSet; begin AcadApp:= GetAcadApplication(True); FiltrType:= VarArrayCreate([0,1], VT_I2); FiltrData:= VarArrayCreate([0,1], VT_VARIANT); FiltrType[0]:= 1001; FiltrType[1]:= 1000; FiltrData[0]:= 'Frame'; FiltrData[1]:= 'Rec'; SelSet:= mForm.AcadApp.ActiveDocument.SelectionSets.Add('XData'); SelSet.Select(acSelectionSetAll, EmptyParam, EmptyParam, FiltrType, FiltrData); Memo1.Clear; Memo1.Lines.Add(IntToStr(SelSet.Count)); for i:=0 to SelSet.Count-1 do begin case SelSet.Item(i).EntityType of acMText: with SelSet.Item(i) as IAcadMText do Memo1.Lines.Add(TextString); acText: with SelSet.Item(i) as IAcadText do Memo1.Lines.Add(TextString); end; // end case end; // end for SelSet.Delete; end;
Так вот MText выбирается и обрабатывается, а просто Text игнорируется полностью. Если выбирать только по имени приложения, тогда выбираются все примитивы, попадающие пол условие фильтра. Где ошибка, коллеги, подмогните?!