Тема: Свойства атрибутов блока
Как из Delphi прочитать или назначить новые свойства атрибутам блока? Есть разработки или программы?
Заранее спасибо.
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → Delphi → Свойства атрибутов блока
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Как из Delphi прочитать или назначить новые свойства атрибутам блока? Есть разработки или программы?
Заранее спасибо.
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;
В принципе, для демонстрации идеи, пример хороший.
Но в реальной программе надо делать надежней.
Не факт, что надо вызвать именно AutoCAD.Application - может быть и AutoCAD.Application.16 и AutoCAD.Application.16.1 и AutoCAD.Application.15
В ответ на Выбери блок: юзер может и ничего не выбрать и выбрать не блок.
Даже если это блок, в нем может не быть атрибутов.
Естественно. В реальной программе нужна еще куча проверок.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → Delphi → Свойства атрибутов блока
Форум работает на PunBB, при поддержке Informer Technologies, Inc