螺旋管厂家
免费服务热线

Free service

hotline

010-00000000
螺旋管厂家
热门搜索:
成功案例
当前位置:首页 > 成功案例

AutoCAD2000与VisualBa啊

发布时间:2021-08-01 09:44:48 阅读: 来源:螺旋管厂家

AutoCAD2000与VisualBasic的接口技术在公路工程设计中的开发

在Autodesk公司没有推出AutoCAD2000版本以前,公路工程设计程序的开发是基于C++或Auto Lisp语言对AutoCAD进行二次开发,还有大量程序目前最大的利用以鞋材为主是利用AutoCAD的外部文件(Script文件)对AutoCAD进行二次开发。然而,对于一个普通的公路工程设计人员来说,AutoCAD与C++的接口技术过于繁琐、Auto Lisp语言又语句颠倒让人望而却步(笔者在这点上深有感触!),Script文件在使用中并不能直接产生Dwg文件。由于上述原因,尽管AutoCAD绘图软件以它强大的功能,几乎占领了整个中国公路工程设计行业,然而利用其二次开发编写的应用程序却寥寥无几。

在这种情况下,AutoCAD2000版本的推出为公路工程设计者提供了强大二次开发工具--VBA及ActiveX。公路工程设计者只需要有一定Basic语言的编程技巧就可以随心所欲的开发本领域的设计、计算、绘图程序了。笔者在短短的两个月时间内就开发了一套挡土墙设计绘图程序,并已开始推广。

1) AutoCAD ActiveX技术概述

AutoCAD ActiveX提供在AutoCAD内或在AutoCAD外控制编程的机制。它是通过使AutoCAD对象开放到外部世界来做到这一点的。只要这些对象被开放,就可以通过多种不同的编程语言环境和其它应用程序(比如 Microsoft Word VBA等)来访问它们,如图所示:

实现AutoCAD的ActiveX界面有两个好处:

㈠对AutoCAD绘图的编程对更多的编程环境开放,而在ActiveX以前,这一类的开发一直都局限在Auto Lisp和C++的接口上。本文将着重介绍Visual Basic编程环境下的AutoCAD绘图的编程。

㈡ActiveX界面和其它的Windows应用程序(比如:Microsoft Excel 和 Word)共享数据变得意想不到的方便。

对任何ActiveX应用程序来说,它的主体都是一个对象。每一个公开的对象都代表AutoCAD很具体的一部分。AutoCAD ActiveX接口中就有很多不同类型的对象。例如:

◆ 图形对象,比如直线、圆弧、文本和尺寸;

◆ 类型设置,比如现行和尺存类型;

◆ 组织结构,比如层、组、快;

◆ 图形显示,比如视图和视口

◆ 图形和AutoCAD应用程序也可认为是对象。

2)Visual Basic编程环境下公路工程设计绘图的编程实例

现在,我们举一个简单例子来说明在Visual Basic 编程环境下如何实现与AutoC习主席在贺电中高度评价非洲同盟在非洲发展、1体化进程和国际和地区事务中发挥的重要作用AD的链接。

比如:我们要画一个10×10cm的泄水孔,并标出其尺寸。

㈠首先,我们要写一个画直线的子程序:

Sub Ch2_addline(a#, b#, c#, d#)

'画线(相对坐标)a为X坐标,b为Y坐标,c,d为相对坐标

Dim AcadDoc As AcadDocument '定义CAD文件

Set AcadDoc = tiveD根据比对值的差来肯定实验机技术状态及精度ocument

Dim Linea As AcadLine '定义CAD线

Dim StaPoint(0 To 2) As Double '定义起点

Dim EndPoint(0 To 2) As Double '定义终点

StaPoint(0) = a

StaPoint(1) = b

StaPoint(2) = 0

EndPoint(0) = StaPoint(0) + c

EndPoint(1) = StaPoint(1) + d

EndPoint(2) = 0

Set Linea = dLine(StaPoint, EndPoint) 'CAD画线

End Sub '结束子程序

㈡ 第二步,我们要写一个标注子程序:

Sub Ch2_Dim(a#, b#, c#, d#, Scale1#, Angle#) '垂直标注

'角度确定标注 a为X坐标,b为Y坐标,c,d为相对坐标,Scale1为比例

Dim AcadDoc As AcadDocument '定义CAD文件

Set AcadDoc = tiveDocument

Dim dimObj As AcadDimRotated '定义CAD标注

Dim StaPoint(0 To 2) As Double '定义起点

Dim EndPoint(0 To 2) As Double '定义终点

Dim ladPoint(0 To 2) As Double '定义标注距离点

StaPoint(0) = a : StaPoint(1) = b : StaPoint(2) = 0

ladPoint (0) = 4 : ladPoint (1) = 4 : ladPoint (2) = 0

EndPoint(0) = StaPoint(0) + c

EndPoint(1) = StaPoint(1) + d<这不但给复合材料行业提出了挑战/p>

EndPoint(2) = 0

Set dimObj = dDimRotated(StaPoint, EndPoint, ladPoint, Angle) '标注尺寸

nearScaleFactor = Scale1 / 10 '改变标注比例:由于工程中我们多用cm为单位,AutoCAD一般用mm为单位,故需要减少10倍。

End Sub '结束子程序

㈢调用子程序,根据定值绘泄水孔图:

Call Ch2_addline(0, 0, 0, 10)

Call Ch2_addline(0, 0, 10, 0)

Call Ch2_addline(0,10, 10, 0)

Call Ch2_addline(10,0, 0, 10)

Call Ch2_Dim(0,10, 10, 0, 1, 0)

Call Ch2_Dim(10,0, 0, 10, 1, 3./2)

㈣ 运行上述程序,将会在AutoCAD2000中产生一个以(0,0)为起点,比例为1:1,并标注了长宽尺寸的泄水孔。

3) 结论

通过上述的例子,我们不难看出:由于Visual Basic相对比较易学易用,再加上公路工程中,许多工程人员已经熟练的掌握了Basic语言的编程甚至Visual Basic语言的编程,并且拥有一大批成熟的公路工程程序。一旦我们掌握了Auto CAD2000与Visual Basic的接口技术,我们就将有一个崭新而强有力的

高血压会引起青光眼吗
急性脑梗死的病因
灰指甲剪掉就好了吗