乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 94|回复: 7

[求助]斑竹:请问用delphi开发cad怎么样?帮我分析下吧◎

[复制链接]

6

主题

18

帖子

4

银币

初来乍到

Rank: 1

铜币
42
发表于 2005-6-30 16:34:00 | 显示全部楼层 |阅读模式
无奈,请问用delphi开发cad怎么样啊?我查不多什么相关的帖子,书也没见到过,请高手指点下吧!现在挺急的!它与vb,lisp的比较,以及用delphi开发cad的优缺点呀什么的!非常感激!
回复

使用道具 举报

17

主题

49

帖子

8

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
116
发表于 2005-6-30 20:19:00 | 显示全部楼层
用delphi没什么意识的,还是转VBA好。
delphi可以实现的vb都可以。且delphi开发的资料太少
我delphi用过几天,如果需要的话可以把资料发上来。
我用delphi开发可实现的功能如下:打开已有CAD文档,画直线,写文本,画多线,选择图层。
回复

使用道具 举报

124

主题

837

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1333
发表于 2005-6-30 22:21:00 | 显示全部楼层
如果有delphi的资料,麻烦上传一些吧
回复

使用道具 举报

17

主题

49

帖子

8

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
116
发表于 2005-6-30 22:37:00 | 显示全部楼层
都是自己摸索的,也没弄几天,仅供参考
可实现的功能:打开已有CAD文档,画直线,写文本,画多线,选择图层。
因为我的工作中只需用到这些功能,所以其他功能我都没写。大家有兴趣可以补充。
版本说明:delphi必须7.0以上。否则不行。
                                                                                                                                                 CAD我用的是2004
准备工作:打开DELPHI,project---〉import typelibrary                         点ADD,添加C:\Program Files\Common Files\Autodesk Shared\acax16chs.tlb。install。
下面是程序,都是基于VBA的,和VBA相似
       
unit Unit1;
interface
uses
         Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
         Dialogs, StdCtrls, ComObj, AutoCAD_TLB;
type
         TForm1 = class(TForm)
                         Button1: TButton;
                         Edit1: TEdit;
                         ComboBox1: TComboBox;
                         procedure Button1Click(Sender: TObject);
                         function drawline(a1,b1,a2,b2:Real;layers:string):Boolean;
                         function drawtext(text:string;a,b:Real;high:Real;flag:Boolean;layers:string):Boolean;
                         function drawwideline(a1,b1,a2,b2,a3,b3,a4,b4,a5,b5:Real;flag:boolean;layers:string):Boolean;
                         function drawrectangle(a1,b1,a2,b2:Real;flag:boolean;layers:string):Boolean;
         private
                         { Private declarations }
         public
                         { Public declarations }
         end;
var
         Form1: TForm1;line:Acadline;acad:AcadApplication;aPolygon: AcadLWPolyline;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var fangxiangtxt:Boolean;
begin
         try
                         acad:=GetActiveOleObject('AutoCAD.Application.16') as AcadApplication;
         except
                         acad:=CreateOleObject('AutoCAD.Application.16') as AcadApplication;
         end;
         Acad.Documents.Open('D:\1.dwg',false,false); //打开CAD;参数:(路径,是否只读,是否加密),没有这句就是新建CAD
         acad.Visible:=True;
         drawline(0,0,100,100,'SB');         //画直线;参数:(起点(x,y)、终点(x,y)、图层)
         drawtext('asds//adas',100,100,20,false,'SB');//写文本;参数:(文本,坐标,高度,横/竖,图层)
         drawrectangle(0,0,100,100,true,'SB')// 画矩形;参数:(对角两点的坐标,粗/细,图层)
end;
function TForm1.drawline(a1,b1,a2,b2:Real;layers:string):Boolean;
var vpoint1,vpoint2:OleVariant;
begin
         vpoint1:=varArrayCreate([0,2],varDouble);
         vpoint2:=varArrayCreate([0,2],varDouble);
         vpoint1[0]:=a1; vpoint1[1]:=b1; vpoint1[2]:=0;
         vpoint2[0]:=a2; vpoint2[1]:=b2; vpoint2[2]:=0;
         line:=acad.ActiveDocument.ModelSpace.Addline(vpoint1,vpoint2);
         line.Layer:=layers;
         line.Update;
end;
function TForm1.drawtext(text:string;a,b:Real;high:Real;flag:Boolean;layers:string):Boolean;
var vpoint:OleVariant;cc:widestring;bb:wordbool;dd:wordbool;ee:integer;ff:integer;
begin
vpoint:=varArrayCreate([0,2],varDouble);
vpoint[0]:=a; vpoint[1]:=b; vpoint[2]:=0;
flag:=false;
if flag then
begin
acad.ActiveDocument.ActiveTextStyle.setFont(cc,bb,dd,ee,ff);
acad.ActiveDocument.ModelSpace.Addtext(text,vpoint,high).Layer:=layers;
end
else//         本来想用这段实现从上到下排列的单行文字但是未果,
begin
acad.ActiveDocument.ActiveTextStyle.FontFile:='C:\Program Files\AutoCAD 2004\Fonts\txt.shx';
acad.ActiveDocument.ModelSpace.Addtext(text,vpoint,high).VerticalAlignment:=acVerticalAlignmentMiddle;
end;
//acad.ActiveDocument.ModelSpace.AddText()
//
//edit1.text:=cc;
end;
function Tform1.drawwideline(a1,b1,a2,b2,a3,b3,a4,b4,a5,b5:Real;flag:boolean;layers:string):Boolean;
var                                 pline:OleVariant ;
begin
                         pline:=varArrayCreate([0,9],varDouble);
                         pline[0]:=a1; pline[1]:=b1; pline[2]:=a2; pline[3]:=b2; pline[4]:=a3; pline[5]:=b3;
                         pline[6]:=a4; pline[7]:=b4; pline[8]:=a5; pline[9]:=b5;
                         if flag then
                         begin
                         aPolygon:=acad.ActiveDocument.ModelSpace.AddLightWeightPolyline(pline);
                         aPolygon.ConstantWidth:=10;
                         aPolygon.Layer:=layers;
                         end
                         else
                         begin
                         aPolygon:=acad.ActiveDocument.ModelSpace.AddLightWeightPolyline(pline);
                         aPolygon.Layer:=layers;
                         end;
                 // acad.ActiveDocument.ModelSpace.AddMLine(pline)//多线,两条平行的,只要指定2个点;
end;
function Tform1.drawrectangle(a1,b1,a2,b2:Real;flag:boolean;layers:string):Boolean;
begin
drawwideline(a1,b1,a1,b2,a2,b2,a2,b1,a1,b1,flag,layers);
end;
end.
       
以上程序调试,运行成功
回复

使用道具 举报

6

主题

18

帖子

4

银币

初来乍到

Rank: 1

铜币
42
发表于 2005-7-1 11:11:00 | 显示全部楼层
我想知道delphi与其它语言开发cad的情况怎么样?比较下,大家用delphi开发cad很少吧?其实我也不想用,delphi,苦衷!
回复

使用道具 举报

5

主题

18

帖子

3

银币

初来乍到

Rank: 1

铜币
38
发表于 2005-7-5 16:30:00 | 显示全部楼层
我原来也使用delphi,后来要开发CAD的程序,查到DELPHI开发CAD的资料少,所以改用vb来做CAD了。用DELPHI倒底怎么样不知道,不过我觉得可以确定的是没有使用VB方便。
回复

使用道具 举报

4

主题

22

帖子

6

银币

初来乍到

Rank: 1

铜币
38
发表于 2007-7-8 21:38:00 | 显示全部楼层
    我觉得实现一般的功能,用lisp或vlisp就可以了。有些功能实现不了,而delphi比较容易实现的,就用delphi来实现。
可以用delphi写个dll文件实现该功能,然后用lisp调用。这样比较方便和快速。
回复

使用道具 举报

10

主题

23

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
63
发表于 2007-7-8 23:25:00 | 显示全部楼层
我现在就是用delphi做cad二次开发呢。个人感觉问题多多,相关资料太少,都是自己摸索。绝对没有VB方便,不过可惜我也有自己的苦衷啊,不得不用delphi,有时间的话大家交流一下吧!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-6 19:30 , Processed in 0.923308 second(s), 68 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表