Получение текущего чертежа из AutoCAD в формате DXF
Автор: Dimka Maslov
WEB-сайт: http://delphibase.endimus.com
{ **** 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");
Если Вас заинтересовала или понравилась информация по разработке на Delph - "Получение текущего чертежа из AutoCAD в формате DXF", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу:
Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи , в сообщение обязательно указывайте название или ссылку на статью!