用Delphi开发类似AutoCAD软件技术(100分)

  • 主题发起人 主题发起人 delphi万岁
  • 开始时间 开始时间
D

delphi万岁

Unregistered / Unconfirmed
GUEST, unregistred user!
我想用Delphi开发一套类似AutoCAD的软件,功能不求复杂,只想实现AutoCAD中一些
功能,要求如下:
1。能打开AutoCAD的文件。
2。能保存AutoCAD格式文件。
2。能实现类似AutoCAD的绘图,标注等,实现放大、缩小;并在程序中识别这些标注等。
就这么简单,要求不用OLE。请大家给点提示。
 
我也想知道.
 
这非常简单。因为Autocad提供了接口文件,一般是*.DXF格式的文件,它是静态的图形文件
,主要是图形的几何描述和属性。一个完整的DXF文件由四个段及文件结尾段组成。分别是
标题段、表段、块段、实体段、文件结尾。按次序用delphi的读文件方法读入就行了。
然后设计自己的类。接收数据就行了。
要想实现CAD的功能,其实不简单。这里面要设计出一个完美的图元结构,例如直线类、点类
、圆类、弧类、曲线类、矩形类、标注类。它们都是由基类派生出,然后还要由基础类继续派生其它
复杂的图元结构。要将这些图元的结构参数保存到文件中,下一次打开后才能重新编辑。
还有复杂的坐标转换、图形重画、多线程画图、尺寸调整、对齐等问题。还有复杂的取消、恢复
操作,怎么做一个数据结构来记忆用户的操作步骤,来实现用户的取消、恢复操作功能。
CAD里每一个看似简单的功能,自己做还真不好做,但是一定要吸取CAD的思想,因为它太完善了,太贴近用户了。画图很方便。例如它的
热点捕捉功能,其实很有用,但是很多绘图软件中,就没有。我做了一个绘图软件,就实现了
这个功能,简直太爽了,用户在画图时,总是画了很多无效的点,线,用了热点捕捉功能,就
很大程序上消除了这些垃圾。
就这么简单,太开玩笑吧。
 
To: OneEyeWolf 谢谢你的提示,我肯定不想从头到尾自己去开发,我想用现成的第三
方提供的构件,但我在国外站点上查到了许多做CAD功能的构件,就是不知道用什么好,
请提示一二。
 
AutoCAD 控制例子(需要安装 AutoCAD,使用 Variant 方式控制):
procedure TForm1.Button1Click(Sender: TObject);
var
p1, p2, p3: OleVariant; // start & end points of line
Mspace, Acad : OleVariant;
begin
// Create variant arrays to hold coordinates
// VT_R8 = 5; { 8 byte real defined in /Source/RTL/Win/ActiveX.Pas }
p1 := VarArrayCreate([0, 2], VT_R8);
p2 := VarArrayCreate([0, 2], VT_R8);
p3 := VarArrayCreate([0, 2], VT_R8);
// Assign values to array elements
p1[0] := 2.0; p1[1] := 4.0; p1[2] := 0.0;// from 2,4,0
p2[0] := 12.0; p2[1] := 14.0; p2[2] := 0.0; // to 12,14,0
p3[0] := 7.0; p3[1] := 8.0; p3[2] := 0.0;
// Get Application and ModelSpace objects:
try
// see if AutoCAD is already running
Acad := GetActiveOleObject('AutoCAD.Application.14'); // 看清 CAD 版本
except // 如果已经启动
// if it is not running - start it up
Acad:= CreateOleObject('AutoCad.Application.14'); // 还没启动,启动它
end;
// bring AutoCAD to the windows desktop
Acad.visible:= True; // 这才看得见
Mspace := Acad.ActiveDocument.ModelSpace;
// use AutoCAD methods to draw a line and 3 circles
Mspace.AddLine(VarArrayRef(p1), VarArrayRef(p2)).Update;
MSpace.AddCircle(VarArrayRef(p1), 1.5).Update;
MSpace.AddCircle(VarArrayRef(p2), 1).Update;
MSpace.AddCircle(VarArrayRef(p3), 2.0).Update;
// use AutoCAD methods to draw other shapes and text
MSpace.AddArc(VarArrayRef(p3), 1.2, 1, 2).Update;
MSpace.AddBox(VarArrayRef(p2), 5, 3, 2).Update;
MSpace.AddCone(VarArrayRef(p1), 1.3, 2).Update;
MSpace.AddCylinder(VarArrayRef(p3), 1.7, 1.5).Update;
MSpace.AddMtext(VarArrayRef(p3), 10, 'Delphi 5 Rocks!!!').update;
end;
 
To: :小雨哥 谢谢你的提示,但我在标题中说过了,我不用ole来开发,所以请以后需要
讨论该论题的朋友不要讲ole,因为那不是我要的。
 
楼主想从头开发一个AUTO CAD,估计是一个人难以完成的
 
TO:delphi万岁 (呵呵 Delphi 万岁? 好玩)
噢,是这样啊。呵呵,找吕雪松等大侠问问。
 
To:小雨哥 当然好玩,因为我还要靠delphi混饭吃,所以我取名delphi万岁。嘿嘿!
To:张无忌 我再三说明哟,我可不是想开发一个cad,这一点我还是有自知之明的哟,
我只想用实现其中的某些功能而已。
不管怎么说,谢谢大家了,继续讨论。
 
记得在毕业设计的时候,导师要我开发一个AutoCAD控件,那时候,刚接触DELPHI不久,
搞了几个月,没搞定,不过,导师倒是慷慨地让我过了,说什么,我大体上还是完成了
任务,天知道,不过,还是强烈关注此贴,希望高手能提供有效解决方案,或者能提供
些资料。
 
大伙帮我up一下,让更多人参与此问题。
 
搞过一段时间的CAD开发,凑凑热闹。
dwg文件的读写,如果不用OLE方式,用OpenDwg的库应该是比较可
行的http://www.opendwg.org。我也不赞成用OLE,脱离不了AutoCAD
不说,速度慢得可怕。如果只有二维图形,建议采用AutoCad2.6版
的图形格式,很简单,DWG文件的基本信息也就1K左右。
 
我沙里淘金,发觉国外的PowerCAD 2.62forDelphi7的构件很是爽,我看其说明,解决我
的问题是轻车熟路,我很想搞到它的注册版,谁有?拜托,给个下载地址,或发给我
rd_software@hotmail.com
 
To: zwx 我想知道opendwg能完成我的要求吗?我现在是觉得哪个越简单越好,只要能完成
我的想法。
 
opendwg只是一套读写工具,就象数据库连接控件,DWG文件就象数据库。具体的功能实现
还得靠自己。
 
To :zwx 你在线上?真好,我的Oicq: 1276556 联系。
 
同志们,继续讨论,有没有人知道用哪种构件做DWG文件的编辑、读取好?
 
to OneEyeWolf:
你好!
我是电力专业的学生,我需要达到的目标就是电力系统单线图的绘制和电力系统的电网拓扑分析软件。
我现在需要达到的功能如下:
1、单线图的绘制:
实现MS Visio 的部分功能,包括:基本图元如点、线、园、矩形等的绘制。能将基本图元任意组合成新的图元。能将图元组合成一个网络图。能实现任意图层的处理。
2、网络拓扑分析:
能对任意网络图的拓扑结构进行分析,主要包括:点与点之间的连通性的分析;以一个设备为中心所直接相联网络的形成。
我的盲点在与单线图的绘制部分,我对计算机图形编程没有概念,不知从何入手,也不知应该查阅那方面的资料,请指点一二。
谢谢!
gangyizhu@163.com
 
网上有相应的控件,你可以找一下,而且有VC做的类似CAD的源代码
你找一下DWGTHUMBNAIL.OCX这个东西,然后就能用这打开DWG,DXF文件了
至于在上面画基本图形就很简单了啊
 
to OneEyeWolf:
你好!
我对图形方面的软件比较感兴趣,能否发个你的
图形软件给我学习学习,能和你交个朋友就更好啦
wwl2000wwl@21cn.com
thank you very much!!!
 
后退
顶部