Здравствуйте! У меня возникла примерно такая же задача: Надо из чертежа выбрать блоки и записать их имена и атрибуты в StringGrid.
Пишу след. код (здесь заносим только имена):
procedure TForm1.FormShow(Sender: TObject);
var AcadBlock, AcadBlocks:OleVariant; AcadAttributes: Variant;
i,j,count:integer;
begin
AcadAppString := 'AutoCAD.Application.16'; j:=1;
AcadApp := GetActiveOleObject(AcadAppString);
Count := AcadApp.ActiveDocument.ModelSpace.Count;
for i:=1 to count-1 do
if AcadApp.ActiveDocument.ModelSpace.Item(i).ObjectName = 'AcDbBlockReference' then begin
StringGrid1.Cells[1,j] := AcadApp.ActiveDocument.ModelSpace.Item(i).Name;
j:=j+1;
end;
В рисунке у меня около 8000 объектов, 100 из которых - блоки.
При проце в 3200 MГц эти 100 блоков выбирались около 30 сек.
Нет ли более быстрого способа выбрать блоки.
Tools->Attribute Extraction в AutoCAD работает намного быстрее.
Спасибо!