Тема: Нужна помощь с GetLoopAt

Нужна помощь!!!
Не могу вытащить объекты из LoopObj метода Hatch.GetLoopAt(i,LoopObj). Читал и справку и здесь на форуме — нашел что то подходящее, но не могу переписать на delphi.
Если можно выложите кусочек кода, который определяет имена объетов в LoopObj. Или помогите переписать вот это на Delphi:
' Найдите объекты, которые составляют первый контур
Dim loopObjs As Variant
hatchObj.GetLoopAt 0, loopObjs
' Найдите типы объектов в контуре
Dim I As Integer
Dim objName As String
objName = ""
For I = LBound(loopObjs) To UBound(loopObjs)
objName = objName & loopObjs(I).EntityName & ", "
Next
MsgBox "Объекты в первом контуре штриховки: " & objName, , "GetLoopAt Пример"
Помогите очень нужно. Заранее благодарен.)))

Re: Нужна помощь с GetLoopAt

Очень интересует вот этот момент
For I = LBound(loopObjs) To UBound(loopObjs)
objName = objName & loopObjs(I).EntityName & ", "
Next
MsgBox "Объекты в первом контуре штриховки: " & objName, , "GetLoopAt Пример"
Есть ли функции LBound и UBound на delphi. Ну и естественно вот этот момент objName = objName & loopObjs(I).EntityName - как его переписать на delphi.

Re: Нужна помощь с GetLoopAt

Что то придумал, но все равно почему-то определяет для объектов которых не больше 2-х.
Мож кто подскажет в чем дело?
procedure TForm1.btnSelectOnScreenClick(Sender: TObject);
const
  SelSetName = 'TestSelSet';
var
  c, Receding, loopObjs, BasePnt, Obj, SelSet, hatchObj, FilterType, FilterData: OleVariant;
  i,numOfLoops:integer;
  Entity: IDispatch;
  RetStr: String;
  OldColor: TOleEnum;
  cc:array of integer;
  dc:integer;
begin
  try
    SelSet:= Acad.ActiveDocument.SelectionSets.Add(SelSetName);
  except
    SelSet:= Acad.ActiveDocument.SelectionSets.Item(SelSetName);
    SelSet.Delete;
    SelSet:= Acad.ActiveDocument.SelectionSets.Add(SelSetName);
  end;
  FilterType:= VarArrayCreate([0, 2], varSmallint);
  FilterData:= VarArrayCreate([0, 2], varVariant);
  FilterType[0]:= -4;
  FilterData[0]:= '<or';
  FilterType[1]:= 0;
  FilterData[1]:= 'Hatch';
  FilterType[2]:= -4;
  FilterData[2]:= 'or>';
  Acad.ActiveDocument.Utility.Prompt('Штриховка (ENTER):');
  SelSet.SelectOnScreen(FilterType, FilterData);
  hatchObj:=Selset.Item(0);
  hatchobj.Evaluate;
  numOfLoops:=hatchobj.NumberOfLoops;
  hatchobj.GetLoopAt(0, loopObjs);
  Form1.Caption:=IntToStr(numOfLoops);
  Setlength(cc,1);
  for i:=0 to numOfLoops do
  begin
   cc[0]:=i;
   c:=vararrayget(loopObjs,cc);
   ShowMessage('Тип '+c.EntityName);
  end;
end;
Ну подскажите пожалуйста, что не так? Где я ошибаюсь с размерностью массива или вообще в чем причина?

Re: Нужна помощь с GetLoopAt

> awean
Пару ссылок:
http://discussion.autodesk.com/thread.j … ID=4909040
http://discussion.autodesk.com/thread.j … dID=334566
Вывод - этот метод не работает для неассоциативной штриховки.

Re: Нужна помощь с GetLoopAt

Спасибо Александр Ривилис. Можете пояснить что такое неассоциативная штриховка.
Тут не с размерностью ошибка.
Я вроде написал. Прога правильно определяет объекты массива loop метода getloopat(i,loop). Тока в массиве содержится тот контур который мы первый выделяем при создании штриховки (т.е. hatch, а дальше select pick 1, select pick 2 и т.д.), так вот select pick 1 содержится в массиве loop.
Как добраться до всех контуров пока не знаю, если кто знает помогите!!! :)

Re: Нужна помощь с GetLoopAt

Есть мысли что надо использовать PickAdd или PickGroup только как? Если есть примеры на других языках выложите? Заранее благодарен.