Картинка:
Сделал экспорт GetLoopAt
Это массив из наборов областей.
Каждое из возвращаемых значений есть массив из объектов акада (Entity)
Но возникает следующий вопрос:
есть три пересекающихся треугольника(см.картинку). И две области штриховки. Заштрихованы разные места на рисунке, а набор в GetLoopAt один и тот же.
Вопрос: какие еще свойства, кроме GetLoopAt шарактеризуют конкретную область штриховки?
Вот код, если кому-то интересно (как убрать его под спойлер?):
function TAcadHatch.PropertiesText: string;
var
sl, LoopEntityProperties: TStringList;
i, j: integer;
s: string;
LoopEntOle: OleVariant;
LoopOle: OleVariant;
Ent: TAcadEntity;
begin
Result := '';
sl := TStringList.Create;
try
sl.Add('I am a Hatch object');
sl.Add('ObjectId='+IntToStr(self.ObjectID));
sl.Add('OwnerId='+IntToStr(self.OwnerID));
sl.Add('Pattern name: '+Self.PatternName);
sl.Add('LoopCount: '+IntToStr(self.NumberOfLoops));
for i := 0 to NumberOfLoops-1 do
begin
fEntityOle.GetLoopAt(i, LoopOle);
sl.Add('Loop #'+intToStr(i));
j := VarArrayLowBound(LoopOle,1);
while ( j<=VarArrayHighBound(LoopOle,1) ) do
begin
try
LoopEntOle := LoopOle[j];
Ent := TEntityFactory.EntityFactory(LoopEntOle);
s := Ent.PropertiesText;
Ent.Free; Ent := nil;
AddTabulation(s);
sl.Add(s);
j := j + 1;
except
on Exception do
begin
sl.Add('Loop #'+IntToStr(i)+' ObjCount='+IntToStr(j) );
Break;//полагаю, нас послали потому, что мы за рамки массива вышли
end;
end;
end;//while true do
sl.Add('Loop #'+IntToStr(i)+' ObjCount='+IntToStr(j) );
sl.Add('');
end;//for i := 0 to NumberOfLoops-1 do
Result := sl.Text;
finally
sl.Add('end;');
Result := sl.Text;
sl.Free;
end;
end;