如何在应用程序中显示AutoCAD的dwg文件(100分)

  • 主题发起人 主题发起人 nust960151
  • 开始时间 开始时间
N

nust960151

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在程序中直接调用dwg格式的文件,该如何做?
 
有一些控件可以用,不过我都是直接读取dwg格式的。
我有它的格式标准,你要的话,可以给你。
 
你可以安装一个ESRI公司的MAP OBJECTS控件。
如何。另外在,CHINA.GISCHINA.COM上也有DWG的文件格式,
不过是E文的
 
to 浪子
要用ActiveX或OLE显示dwg倒用不着麻烦MO,直接嵌入AutoCAD就可以了。

unit AcadTest2000;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ActiveX, ComObj, OleCtnrs;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
p1, p2 : OleVariant;
Acad, ActiveDoc, : OleVariant;
begin
// create variant arrays to hold coordinates of the window
p1 := VarArrayCreate([0,2], VT_R8);
p2 := VarArrayCreate([0,2], VT_R8);

// assign values to array elements
p1[0] := 14330.0; p1[1] := 400.0; p1[2] := 0; //point (14330,400,0)
p2[0] := 26400.0; p2[1] := 8500.0; p2[2] := 0; //point (26400,8500,0)

Acad := CreateOleObject('AutoCad.Application');
if not varisempty(Acad) then
Acad.visible := visible;

// open drawing
ActiveDoc := Acad.Documents.Open('E:/Home/Planview.dwg');

// zoom appliciation
Acad.ZoomExtents;
Acad.ZoomWindow(VarArrayRef(p1),VarArrayRef(p2));
end;

end.


The Approach for Acad-14 is different. The ZoomExtents and ZoomWindow methods apply to a viewport, also the sintaxe of opening a file is different
unit AcadTest14;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ActiveX, ComObj, OleCtnrs;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
p1, p2 : OleVariant;
Acad, ActiveDoc, ViewPort : OleVariant;
begin
// create variant arrays to hold coordinates of the window
p1 := VarArrayCreate([0,2], VT_R8);
p2 := VarArrayCreate([0,2], VT_R8);

// assign values to array elements
p1[0] := 14330.0; p1[1] := 400.0; p1[2] := 0; //point (14330,400,0)
p2[0] := 26400.0; p2[1] := 8500.0; p2[2] := 0; //point (26400,8500,0)

Acad := CreateOleObject('AutoCad.Application.14');
if not varisempty(Acad) then
Acad.visible := visible;

// open drawing
ActiveDoc := Acad.ActiveDocument.Open('E:/Home/Planview.dwg');

//Activate viewport
ViewPort := ActiveDoc.ActiveViewPort;

// zoom appliciation
ViewPort.ZoomExtents;
ViewPort.ZoomWindow(VarArrayRef(p1),VarArrayRef(p2));
end;

end.

 
显示控件,我可以给你发一个去!
 
试用一下volo view控件,她是AUTODESK公司提供的免费(OCX)控件,非常好,可到
http://maxcom.top263.net/下载
 
在AutoCAD2000的光盘上就有一个ThumbNeil.ocx名字具体记不清了,找一个th*.ocx,安装就
能解决你的问题,由于是ACAD自带的,发布也简单。
 
后退
顶部