Delphi进行CAD二次开发教学(1)——基础学习:运行、新建、打开图形文件
2008-11-19 08:48
661 查看
http://hi.baidu.com/piaoliuxia/blog/item/d61e03faed3bd18c9f514670.html | 查看文章 |
2008-06-13 22:24
//用到了Rz控件,请自行安装,若没有可以到盒子下载,也可以不用此控件,但代码要相应修改。 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComObj, AutoCAD_TLB, ComCtrls, RzLabel, ExtCtrls, ActiveX, RzButton, ImgList, RzStatus, RzPanel, ActnList, Mask, RzEdit, RzBorder; type TForm1 = class(TForm) Timer1: TTimer; RzToolbar1: TRzToolbar; RzStatusBar1: TRzStatusBar; RzStatusPane1: TRzStatusPane; RzClockStatus1: TRzClockStatus; ImageList1: TImageList; BtnSendtoBack: TRzToolButton; BtnNew: TRzToolButton; BtnOpen: TRzToolButton; BtnSave: TRzToolButton; ActionList1: TActionList; Act_CadApp: TAction; Act_NewDrawing: TAction; Act_OpenDrawing: TAction; Act_SaveDrawing: TAction; SaveDialog1: TSaveDialog; OpenDialog1: TOpenDialog; RzGlyphStatus1: TRzGlyphStatus; Act_ZoomAll: TAction; Act_ZoomWindow: TAction; Act_ZoomPrevious: TAction; Act_ZoomExtents: TAction; procedure Timer1Timer(Sender: TObject); procedure Act_CadAppExecute(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Act_NewDrawingExecute(Sender: TObject); procedure Act_OpenDrawingExecute(Sender: TObject); procedure Act_SaveDrawingExecute(Sender: TObject); procedure Act_ZoomAllExecute(Sender: TObject); procedure Act_ZoomPreviousExecute(Sender: TObject); procedure Act_ZoomExtentsExecute(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Cad, ActDrawing: OleVariant; BlockSet: Olevariant; Tip: string; implementation {$R *.dfm} //判断应用程序是否在运行 function IsObjectActive(ClassName: string): Boolean; var ClassID: TCLSID; Unknown: IUnknown; begin try ClassID := ProgIDToClassID(ClassName); Result := GetActiveObject(ClassID, nil, Unknown) = S_OK; except Result := False; end; end; //判断CAD应用程序是否在运行 procedure GetCADapp(); begin if IsObjectActive('AutoCAD.Application') then begin Cad := GetActiveOleObject('AutoCAD.Application'); Form1.RzGlyphStatus1.ImageIndex := 14; end else begin Tip := 'AutoCAD没有运行!'; cad := null; Form1.RzGlyphStatus1.ImageIndex := 12; end; end; //打开新的CAD应用程序 function OpenCadapp(): boolean; begin try cad := createOleObject('AutoCAD.Application'); result := true; except cad := null; MessageBox(0, '系统没有安装AutoCAD,或者AutoCAD版本不适合,请检查!' + #13 + #10 + '(需要AutoCAD2004或AutoCAD2005)', '错误提示', MB_ICONERROR or MB_OK); result := false; end; end; //获取当前的图纸文档 procedure GetActDrawing(); var SS: string; begin try ActDrawing := cad.activedocument; SS := ActDrawing.fullname; if SS = '' then Tip := '当前文档:未保存,请尽快保存!' else Tip := '当前文档:' + SS; except ActDrawing := null; Tip := '当前文档:无'; end; end; //打开已有的图形文件 function OpenDrawing(Drawing, Password: string): boolean; begin try ActDrawing := cad.documents.open(Drawing, false, Password); Tip := '当前文档:' + ActDrawing.fullname; result := true; except ActDrawing := null; Tip := '打开图形文档失败!'; result := false; end; end; //新建图形文档 function NewDrawing(): boolean; //打开已有的图形文件 begin try ActDrawing := cad.documents.add(); //ActDrawing.saveas('c:/Drawing_Temp.dwg'); Tip := '当前文档:未保存'; result := true; except ActDrawing := null; result := false; end; end; procedure TForm1.Timer1Timer(Sender: TObject); begin GetCADapp; GetActDrawing; RzStatusPane1.Caption := Tip; end; procedure TForm1.Act_CadAppExecute(Sender: TObject); begin if (vartype(Cad) = varnull) or (Vartype(cad) = varEmpty) then begin if not OpenCadapp then begin Tip := '系统没有安装AutoCAD,或者AutoCAD版本不适合,请检查确认!'; exit; end; end else begin MessageBox(0, 'AutoCAD已经在运行了!', '提示:', MB_ICONINFORMATION or MB_OK); exit; end; cad.WindowState := $00000003; //最大化 (acmax--$00000003,acmin--$00000002,acnorm--$00000001) cad.Visible := true; //设置为可视 GetActDrawing; //获取当前活动图形文档 if vartype(ActDrawing) = varnull then if (MessageBox(0, '当前没有打开的图形文件!' + #13 + #10 + '要现在就新建一个吗?', '提示:', MB_ICONEXCLAMATION or MB_YESNO) = idYes) then NewDrawing() else begin Tip := '当前没有打开的图形文件,请新建或者打开已有的图形文件!'; exit; end; end; procedure TForm1.FormCreate(Sender: TObject); begin GetCadapp; end; procedure TForm1.Act_NewDrawingExecute(Sender: TObject); begin if (vartype(Cad) = varnull) or (Vartype(cad) = varEmpty) then MessageBox(0, '请先运行AutoCAD程序!', '警告:', MB_ICONWARNING or MB_OK) else NewDrawing; end; procedure TForm1.Act_OpenDrawingExecute(Sender: TObject); begin if (vartype(Cad) = varnull) or (Vartype(cad) = varEmpty) then MessageBox(0, '请先运行AutoCAD程序!', '警告:', MB_ICONWARNING or MB_OK) else begin if OpenDialog1.Execute then OpenDrawing(OpenDialog1.FileName, ''); end; end; procedure TForm1.Act_SaveDrawingExecute(Sender: TObject); begin if (vartype(ActDrawing) = varnull) or (Vartype(ActDrawing) = varEmpty) then begin MessageBox(0, '没有活动的图形文档!', '警告:', MB_ICONWARNING or MB_OK); exit; end else begin if Savedialog1.Execute then ActDrawing.saveas(Savedialog1.FileName); end; end; procedure TForm1.Act_ZoomAllExecute(Sender: TObject); begin Cad.zoomall; end; procedure TForm1.Act_ZoomPreviousExecute(Sender: TObject); begin Cad.ZoomPrevious; end; procedure TForm1.Act_ZoomExtentsExecute(Sender: TObject); begin Cad.ZoomExtents; end; end. |
相关文章推荐
- 程序开发基础学习五(json配置、解析文件,c++篇)
- CAD打开一原有文件时,可编辑且可删除,但一新建实体时报“图形界限超出限制”
- 使用文件进行优化 分类: python 小练习 divide into python python基础学习 2014-01-01 14:13 228人阅读 评论(0) 收藏
- CAD二次开发---导入外部文件中的块并输出预览图形(五)
- 3D数学基础及图形与游戏开发的学习 (二)
- 3D数学基础 图形与游戏开发的学习 (六)[多坐标系]
- 【Cocos2d-X开发学习笔记】解决Cocos2d-X新建项目运行报错的问题
- iOS开发 - 打开文件后进行文件分享(QLPreviewController)
- Delphi开发学习二:使用ADOQuery控件对SQL数据库表进行操作
- git基础学习(二):对修改的文件进行提交 git diff 和 git status
- [原]零基础学习在Android进行SDL开发系列文章
- 【FFMpeg视频开发与应用基础】一、使用FFmpeg命令行工具和批处理脚本进行简单的音视频文件编辑
- c语言学习之基础知识点介绍(九):预处理指令和多文件开发
- 我的Java开发学习之旅------>工具类:Java获取字符串和文件进行MD5值
- 第6天 Symbian学习之开发基础:文件
- 3D数学基础 图形与游戏开发的学习 第四章 向量
- 3D数学基础 图形与游戏开发的学习 第三章 多坐标系
- 用Eclipse进行android开发学习——新建android项目
- 零基础学习在Android进行SDL开发系列文章
- 3D数学基础及图形与游戏开发的学习 (一)