線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2683
推到 Plurk!
推到 Facebook!

DELPHI中如何调用AUTOCAD

尚未結案
vclphi
一般會員


發表:28
回覆:39
積分:13
註冊:2003-03-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-22 08:52:19 IP:61.154.xxx.xxx 未訂閱
请问在DELPHI中如何写调用AUTOCAD画DWG图的程式? 如调用AUTOCAD可用:AutoCAD.AcadApplication 那么画Line,Circle,标注等功能如何实现?
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-22 10:18:11 IP:220.130.xxx.xxx 未訂閱
你好!關於你所提問有關如何調用AUTOCAD的問題, 我想這是屬於比較特定應用範圍的問題,建議你上 網去搜尋相關的資料;而在這裡謹提供個人對於此 類應用程式的看法.    我想你應該知道,要調用這一類以介面方式Expose其 特定功能給另一支程式叫用的應用程式,在Delphi中 你應該先去了解什麼是介面,如何取得介面,以及如何 去獲得這支輸出介面程式所提供的介面規格,另外也 必須了解Delphi如何支援這些相關的技術.    關於開發這類Automation Controler應用程式的問題, 通常命題很清楚但範圍太廣泛,通常需要較多的篇幅, 預期有人答題的機率不高,實作的經驗真的要靠自己累 積.    個人看法,謹提參酌. < >< >
elvis1000
一般會員


發表:6
回覆:50
積分:16
註冊:2004-12-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-22 10:59:27 IP:220.134.xxx.xxx 未訂閱
如果要自己寫物件,那可難了,因為光是看到DWG的格式,就覺得複雜.你可以到以下網址找到DWG & DXF的格式。 http://www.wotsit.org/search.asp?page=12&s=ALLFILES 格式看起來很複雜,所以我建議應該去抓現成的。我找了一下,大部分都是要沒源碼的shareware,只有一個有源碼的,http://vcl.vclxx.org/DELPHI/D32FREE/DXF_3_0.ZIP ----------------------- God bless you! I am Dark_Angel.
------
-----------------------
God bless you!
I am Dark_Angel.
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-22 11:23:43 IP:220.130.xxx.xxx 未訂閱
我說的介面規格,不是指DWG或DXF之類的檔案格式, 而是建議如果可能的話,應該試著Import一份AUTOCAD的 Type Library進來,其中應該有載明那些可供引用的屬性 、方法以及相關參數;至於介面的取得,由於Delphi支 援雙重介面,應用上可能要自行多加嘗試. elvis1000大大提列的方式,也是一種學習的方法,我也是 建議應多方面去搜尋相關資料,多去實作; 知其然,究其所以然,不正是學習的一種樂趣所在?
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-22 15:40:19 IP:218.15.xxx.xxx 未訂閱
vclphi您好: 
 
//画直线和圆
uses OleAuto; 
procedure TForm1.Button1Click(Sender: TObject);
var 
  Acad, AcadDoc,Line,Circle: Variant;
  p1: variant;
  p2: variant;
  p3: variant;
begin
  Acad := GetActiveOLEObject('AutoCAD.Application');
  AcadDoc := Acad.ActiveDocument;
  p1 := VarArrayCreate([0, 2], varDouble);
  p2 := VarArrayCreate([0, 2], varDouble);
  p3 := VarArrayCreate([0, 2], varDouble); 
  p1[0] := 0; p1[1] := 0; p1[2] :=0;  //直线第一点的坐标
  p1[0] := 30; p1[1] := 0; p1[2] :=0;  //直线第二点的坐标  
  p3[0] := 2.0; p3[1] := 4.0; p3[2] := 6.0;  //圆心的坐标
  Circle := AcadDoc.ModelSpace.AddCircle(p3, 10.0);//圆的半径为10
  Line := AcadDoc.ModelSpace.AddLine(p1,p2);//画线
end;
note: 1、确保您的CAD有打开; 2、OleAuto在C:\Borland\Delphi6\Source\Vcl能找到,不同的路径的话,请自行查寻; ~~~行径窄处,留一步与人行~~~
vclphi
一般會員


發表:28
回覆:39
積分:13
註冊:2003-03-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-23 10:48:05 IP:61.154.xxx.xxx 未訂閱
除画直线和圆外,请问哪里能找到更多调用OLEAUTO的资料.
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-23 11:06:19 IP:218.15.xxx.xxx 未訂閱
引言: 除画直线和圆外,请问哪里能找到更多调用OLEAUTO的资料
请自行查看Auto CAD 的在线帮助 ~~~行径窄处,留一步与人行~~~
Roach C Builder
一般會員


發表:1
回覆:1
積分:0
註冊:2005-03-18

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-04-29 20:29:07 IP:220.132.xxx.xxx 訂閱

===================引 用 deity 文 章===================
vclphi您好:
 
//;直?和
uses OleAuto; 
procedure TForm1.Button1Click(Sender: TObject);
var 
  Acad, AcadDoc,Line,Circle: Variant;
  p1: variant;
  p2: variant;
  p3: variant;
begin
  Acad := GetActiveOLEObject('AutoCAD.Application');
  AcadDoc := Acad.ActiveDocument;
  p1 := VarArrayCreate([0, 2], varDouble);
  p2 := VarArrayCreate([0, 2], varDouble);
  p3 := VarArrayCreate([0, 2], varDouble); 
  p1[0] := 0; p1[1] := 0; p1[2] :=0;  //直?第一?的坐
  p1[0] := 30; p1[1] := 0; p1[2] :=0;  //直?第二?的坐  
  p3[0] := 2.0; p3[1] := 4.0; p3[2] := 6.0;  //心的坐
  Circle := AcadDoc.ModelSpace.AddCircle(p3, 10.0);//的半?:10
  Line := AcadDoc.ModelSpace.AddLine(p1,p2);//;?
end;
note: 1、确保您的CAD有打; 2、OleAuto在C:\Borland\Delphi6\Source\Vcl能找到,不同的路?的ݯ???行查? ~~~行?窄,留一步与人行~~~

請問此段轉成BCB語法為何?
系統時間:2024-05-08 15:31:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!