Тема: Свойства атрибутов блока

Как из Delphi прочитать или назначить новые свойства атрибутам блока? Есть разработки или программы?
Заранее спасибо.

Re: Свойства атрибутов блока

procedure TForm1.Button1Click(Sender: TObject);
var Acad, AcadDoc, Blk, pt, Attr: OLEVariant;
    ObjBlk: IDispatch;
    str: string;
    i: integer;
begin
  try
    Acad := GetActiveOLEObject('AutoCAD.Application');
    AcadDoc := Acad.ActiveDocument;
    Acad.Visible := True;
    AcadDoc.Utility.GetEntity(ObjBlk, pt, 'Выбери блок:');
    blk := ObjBlk;
    str := blk.ObjectName;
    attr:= blk.GetAttributes;
    for i := 0 to VarArrayHighBound(attr,1) do begin
      str := attr[i].TagString;
      MessageDlg('Tag='+str, mtWarning, [mbOk], 0);
      if str = 'NAME2' then attr[i].TextString := 'Aleksei';
    end;
  except
    on EOleException do MessageDlg('Нет связи с AutoCAD!',mtWarning,[mbOk], 0);
    on EOleSysError do MessageDlg('Операция недоступна!',mtWarning,[mbOk], 0);
    on EOleError do MessageDlg('Незагружен AutoCAD!', mtWarning, [mbOk], 0);
  end;
end;

Re: Свойства атрибутов блока

В принципе, для демонстрации идеи, пример хороший.
Но в реальной программе надо делать надежней.
Не факт, что надо вызвать именно AutoCAD.Application - может быть и AutoCAD.Application.16 и AutoCAD.Application.16.1 и AutoCAD.Application.15
В ответ на Выбери блок: юзер может и ничего не выбрать и выбрать не блок.
Даже если это блок, в нем может не быть атрибутов.

Re: Свойства атрибутов блока

Естественно. В реальной программе нужна еще куча проверок.