- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Delphi在AutoCAD绘制三维公式曲线中的应用.doc
Delphi在AutoCAD绘制三维公式曲线中的应用
摘要:本文介绍了通过分析三维公式曲线的方程式,将公式曲线转化为符合应用思维的简易方程式,通过AutoCAD提供的接口,用编程软件Delphi进行空间三维曲线的绘制。
关键词:AutoCAD Delphi 曲线
中图分类号:TP391.72 文献标识码:A 文章编号:1007-9416(2013)07-0080-02
1 引言
随着绘图软件的不断普及,现在已经逐步代替了效率较低的手工绘图。而其中较为著名的要数AutoDesk公司开发的绘图软件AutoCAD。AutoCAD凭借着良好的用户界面、强大的图形编辑功能和多方式二次开发和用户定制而备受用户的青睐。
但是,AutoCAD的公式曲线绘制功能较弱,一般凭借Excel、Matlab等软件对公式进行逐点坐标解析,然后粘贴到样条线拟合点坐标输入窗口进行绘制,这样的方式虽然简便,但是却不适合复杂的三维空间公式曲线。所以,使用编程的方式对三维公式曲线进行绘制是一种不可或缺的方法。
Delphi是Borland公司开发的一款快速应用程序开发工具(Rapid Application Development,简称RAD),其较快的编译速度、丰富的VCL类库、强大的可重用性和可扩展性深受用户的青睐。
本文将举例说明Delphi在AutoCAD中的部分开发和使用方面的应用。
2 在Delphi中导入AutoCAD类型库
在Delphi中依次展开Component - Import Component,打开Import Component窗口后选择Import a Type Library来导入类型库,在Registered Type Libraries的Description中找到AutoCAD的类型库AutoCAD 2007 Type Library,对应的文件为acax17enu.tlb,最后Install即可,这样就会生成一个AutoCAD_TLB.pas文件。使用时,对该单元进行引用即可。
3 使用Delphi进行曲线绘制
3.1 三维曲线分析
例如给定的球面螺旋线公式为:
Rho=4;
Theta=t×180°;
Phi=t×360°×20;
很明显,给定的公式是球坐标方程,其中距离r为4,仰角θ为t×180°,方位角φ为t×360°×20,但是球坐标方程不符合日常的方程解析习惯,为了便于编程,在写程序时应先转换为直角坐标方程,转换公式如下:
x=rsinθcosφ;
y=rsinθsinφ;
z=rcosθ;
3.2 分析编写程序
首先先引入必须的单元,创建或者连接CAD需使用System.Win.ComObj单元,角度与弧度的转换需使用System.Math单元,基本绘制函数需使用AutoCAD_TLB单元。
然后分析需要用到的常量:
const
range_begin: Double = 0.0;
range_end: Double = 1.0;
step: Double = 0.01;
CylinderNumber: Integer = 10;
rho: Double = 4.0;
其中range_begin和range_end分别代表曲线的起始的终止范围,step是曲线计算的步进量,CylinderNumber是球面螺旋线的螺旋圈数,rho则是球面螺旋线的半径值。再分析需要用到的变量:
var
ACAD17: AcadApplication;
theta: Double;
phi: Double;
t: Double;
x, y, z: Double;
point_xyz: OleVariant;
pb, pe: OleVariant;
index: Integer;
其中ACAD17则是与CAD连接的变量,theta和phi分别代表方位角和仰角,t是步进递增变量,xyz分别代表球面螺旋线的拟合点的坐标值,point_xyz则是用来绘制拟合点时的坐标变量,pb与pb是起始和终止点的切向矢量,index是坐标维度的迭代数值。
分析完毕后,开始连接CAD,使用函数GetActiveOleObject,连接后则开始创建取样点并制定维度及类型,用VarArrayCreate函数来创建,程序如下:
point_xyz:=VarArrayCreate([0,3×Round((range_end- range_begin)/step)-1],varDouble);值得注意的是,三维坐标创建时,
文档评论(0)