Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  3 799

•  TDictionary Custom Sort  5 907

•  Fast Watermark Sources  5 709

•  3D Designer  8 487

•  Sik Screen Capture  6 044

•  Patch Maker  6 487

•  Айболит (remote control)  6 476

•  ListBox Drag & Drop  5 342

•  Доска для игры Реверси  94 971

•  Графические эффекты  6 683

•  Рисование по маске  5 814

•  Перетаскивание изображений  4 869

•  Canvas Drawing  5 242

•  Рисование Луны  4 962

•  Поворот изображения  4 510

•  Рисование стержней  3 190

•  Paint on Shape  2 437

•  Генератор кроссвордов  3 310

•  Головоломка Paletto  2 621

•  Теорема Монжа об окружностях  3 407

•  Пазл Numbrix  2 252

•  Заборы и коммивояжеры  2 912

•  Игра HIP  1 882

•  Игра Go (Го)  1 798

•  Симулятор лифта  2 136

•  Программа укладки плитки  1 863

•  Генератор лабиринта  2 300

•  Проверка числового ввода  1 988

•  HEX View  2 297

•  Физический маятник  1 959

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Получение текущего чертежа из AutoCAD в формате DXF



{ **** UBPFD *********** by delphibase.endimus.com ****
>> Получение текущего чертежа из AutoCAD в формате DXF

Функция импортирует активного чертёж из AutoCAD в формате DXF
и записывает полученные данные в список List. В случае успешного
завершения функция возвращает True. В случае ошибки (AutoCAD не
загружен, cбой OLE и проч.) функция возвращает False не внося
изменений в список строк

Зависимости: Windows, SysUtils, ComObj, ActiveX
Автор:       Dimka Maslov, mainbox@endimus.ru, ICQ:148442121, Санкт-Петербург
Copyright:   Dimka Maslov
Дата:        22 ноября 2002 г.
***************************************************** }

function GetAcadDXFText(List: TStrings): Boolean;
var
  TempDir, FileName: string;
  ClassID: TGUID;
  Unknown: IUnknown;
  Dispatch: IDispatch;
  App, Doc, Sel: Variant;
  TempList: TStringList;
const
  Ext = 'dxf';
  DotExt = '.' + Ext;
begin
  SetLength(TempDir, MAX_PATH);
  GetTempPath(MAX_PATH, PChar(TempDir));
  SetLength(TempDir, StrLen(@TempDir[1]));
  TempDir := IncludeTrailingBackslash(TempDir);
  repeat
    FileName := TempDir + IntToHex(LoWord(GetTickCount), 4) + DotExt;
  until not FileExists(FileName);
  SetLength(FileName, Length(FileName) - Length(DotExt));
  Result := True;
  try
    ClassID := ProgIDToClassID('AutoCAD.Application');
    if not Succeeded(GetActiveObject(ClassID, nil, Unknown)) then
      Abort;
    Unknown.QueryInterface(IDispatch, Dispatch);
    App := Dispatch;
    try
      Doc := App.ActiveDocument;
      try
        Sel := Doc.SelectionSets.Add('TEMP');
        try
          Doc.Export(FileName, Ext, Sel);
        finally
          Sel := Unassigned;
        end;
      finally
        Doc := Unassigned;
      end;
    finally
      App := Unassigned;
    end;
    FileName := FileName + DotExt;
    TempList := TStringList.Create;
    try
      TempList.LoadFromFile(FileName);
      List.Assign(TempList);
    finally
      TempList.Free;
    end;
  except
    Result := False;
  end;
  if FileExists(FileName) then
    DeleteFile(FileName);
end;

// Пример использования:
if not GetAcadDXFText(Memo1.Lines) then
  ShowMessage('Невозможно получить данные от AutoCAD');







Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте