Тема: Ошибка при работе с SelectionSet

Стандартным образом меняю размеры у DomRotated с помощью SelectionSet и перебором в цикле. На Листе1 PaperSpace, все заменяется. А на листе 2 PaperSpace не меняется, в чем глючок ? Что забыл написать

sstext10:= Okno.SelectionSets.Add('Dimension');
FilterType:=VarArrayCreate([0,0],VT_I2);
FilterData:=VarArrayCreate([0,0],VT_VARIANT);
FilterType[0]:=0;
FilterData[0]:='DIMENSION';
sstext10.Select(acSelectionSetAll, EmptyParam, EmptyParam, FilterType, FilterData);// OK!
try
 for i:=0 to sstext10.Count-1 do
    begin
      with (sstext10.Item(i) as IAcadDimRotated) do
        begin
        memo5.Lines.Add(TextOverride);
 if TextOverride='SS' then TextOverride:='Texty'
        end;
 end;
except
end;

Re: Ошибка при работе с SelectionSet

А ты SelectionSet очищаешь перед добавлением? Посмотри примеры на vbamaker.narod.ru, там все очень неплохо расписано было. И по такому маленькому кусочку непонятна причина ошибки. Что такое memo5? Как оно получено? И как определено?

Re: Ошибка при работе с SelectionSet

memo5 - это многосторочное поле, я туда писал textoverride с целью посмотреть захватывается ли текст (размер).

Re: Ошибка при работе с SelectionSet

Все я очищаю.
Может там что-то добавить надо в filtertype, filterdata ?

Re: Ошибка при работе с SelectionSet

Да, вот еще - а точно язык VBA кадовский? Потому как, по-моему, надо использовать не Filterdata[0], а FilterData(0).

Re: Ошибка при работе с SelectionSet

Я сильно извиняюсь, выше был приведен Паскаль, но он похож на VBA. Текст выше наполовину работает. Только на втором paperspace не хочет менять dimrotate. Переношу эти dimrotate на первый paperspace - все нормально меняется.
Как будто надо тыкнуть акаду, чтобы он переключился к работе над вторым paperspace
Тычу ему Okno.ActiveLayout:=Okno.Layouts.Item(2); не получается

Re: Ошибка при работе с SelectionSet

Посмотри https://www.caduser.ru/forum/topic30161.html - может, там что поможет.

Re: Ошибка при работе с SelectionSet

Ох елки, ссылка неправильно вставилась:
https://www.caduser.ru/forum/topic30161.html

Re: Ошибка при работе с SelectionSet

sstext10.Select(acSelectionSetAll, EmptyParam, EmptyParam, FilterType, FilterData);// OK!
acSelectionSetAll - указывает на выбор всего по всему файлу. В примере предлагалось перебирать paperspacy. Здесь это не помогает.

Re: Ошибка при работе с SelectionSet

Кстати, а если я выбираю текст (iAcadText), то все срабатывает - и все меняется на всех лейаутах.
Вывод по теме: Обнаружен глючек AutoCADA

Re: Ошибка при работе с SelectionSet

Так, стоп. Я "перевел" код на привычный мне вид. В общем, суть прикола в следующем: DXF 0 "DIMENSION" у всех размеров. А вот имя может быть разным: AcadDimRotated, AcadDimRadial ну и так далее. Надо вводить дополнительный контроль по 70 группе DXF:

70 Dimension type:
Values 0–6 are integer values that represent the dimension type. Values 32, 64, and 128 are bit values, which are added to the integer values (value 32 is always set in R13 and later releases)
0 = Rotated, horizontal, or vertical; 1 = Aligned
2 = Angular; 3 = Diameter; 4 = Radius
5 = Angular 3 point; 6 = Ordinate
32 = Indicates that the block reference (group code 2) is referenced by this dimension only
64 = Ordinate type. This is a bit value (bit 7) used only with integer value 6. If set, ordinate is X-type; if not set, ordinate is Y-type
128 = This is a bit value (bit 8) added to the other group 70 values if the dimension text has been positioned at a user-defined location rather than at the default location

Вывод: вряд ли это можно назвать глюком AutoCAD'a

Re: Ошибка при работе с SelectionSet

А разве я не установил в тексте вверху ?
FilterType[0]:=0;
FilterData[0]:='DIMENSION';

Re: Ошибка при работе с SelectionSet

Как тогда записать с этим параметром 70 ?

Re: Ошибка при работе с SelectionSet

Я догадался :)) вместо IAcadDimRotated поставил IAcadDimension, все сработало, но осадок и глючок остались :((