如何用VBA绘制游标卡尺_游标卡尺论文

如何运用vba绘制游标卡尺,本文主要内容关键词为:vba论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。

游标卡尺作为基本测量工具之一,自然是考查的热点。物理教师在编制试卷时,最困难的就是绘制游标卡尺。很多教师就采用其他软件绘制然后以图片的形式复制到Word里,再经过缩放等操作后往往会出现模糊、变形、锯齿等现象。实际上用Word里嵌套的vba编程工具就可很准确的画出游标卡尺。下面就把笔者在实际工作中积累的一点经验介绍给大家,以供参考。

一、Word的对象及坐标系

运用vba画游标卡尺主要用到一个集合对象:Shapes。其方法又与Word坐标系有关系。

1.Shapes集合对象

Shapes集合对象是隶属于Document对象。Shapes集合对象代表文档中或者文档页眉和页脚中的所有图形。本文运用Shapes集合对象的两个方法添加形状。AddLine方法添加直线,AddTextbox方法添加文本框。

2.Word的坐标系

Word坐标系的坐标原点在Document对象的左上角,横向向右为x轴正方向,纵向向下为y轴正方向。量度值为磅,允许两位小数,可以满足一般用户的精度要求。

二、AddLine方法和AddTextbox方法

运用vba绘制游标卡尺主要就是用Shapes集合对象的这两种方法。

1.AddLine方法

在文档中添加一条直线。返回一个代表该直线的Shape对象,并将其添加到Shapes集合。

语法:expression。AddLine(BeginX,BeginY,EndX,EndY)

各参数解释:

expression 必需。该表达式返回一个Shapes对象。

BeginX Single 类型,必需。直线起点相对于锁定标记的水平位置,以磅为单位。

BeginY Single 类型,必需。直线起点相对于锁定标记的垂直位置,以磅为单位。

EndX Single 类型,必需。直线终点相对于锁定标记的水平位置,以磅为单位。

EndY Single 类型,必需。直线终点相对于锁定标记的垂直位置,以磅为单位。

2.AddTextbox方法

在文档中添加一个文本框。返回一个代表该文本框Shape对象,并将其添加到Shapes集合。

语法:expression。AddTextbox(Orientation,Left,Top,Width,Height)

各参数解释:

expression 必需。该表达式返回“应用于”列表中的一个对象。

Orientation Mso TextOrientation 必需。指定文本的方向。

Left Single 类型,必需。文本框左侧边缘的位置,以磅为单位。

Top Single 类型,必需。文本框上部边缘的位置,以磅为单位。

Width Single 类型,必需。文本框的宽度,以磅为单位。

Height Single 类型,必需。文本框的高度,以磅为单位。

提示:在编写vba代码时,要充分利用好vba的帮助。

三、算法及主程序

以10格游标卡尺为例进行算法说明,20格、50格游标卡尺算法类似。

ybcgs=10 ′游标尺格数。

l=TextBoxl.Text ′通过文本框获取需要绘制游标卡尺的读数值,以mm单位。

zcl=Int(l) ′需要绘制游标卡尺的读数值的整数部分,主尺上的第一条刻度是zcl-3。

zczxfd=10 ′主尺最小分度的屏幕长度,以磅为单位。相当于游标卡尺主尺的最小分度1mm。

zkds=7+ybcgs ′主尺总刻度数。

zccd=80+ybcgs*zczxfd ′主尺总长度(磅)。

If zcl<6 Then ′通过以下算法返回主尺整厘米刻度值的第1个刻度值。

bzckd=Round((zcl/10),0)

Else

bzckd=Round((zcl/10)+0.1,0)

End If

ybzxfd=zczxfd*(1-(1/ybcgs)) ′游标卡尺最小分度的屏幕长度(磅)。

Set docActive=ActiveDocument

docActive.Shapes.AddLine(80,180,80+zccd,180).Select ′画主尺横线。

再利用line的属性设置直线的格式(代码略)。

Fori=1 To zkds ′画主尺刻度线。

If(zcl-4+i)/10=bzckd Then

docActive.Shapes.AddLine(80+zczxfd*i,172,80+zczxfd*i,180).Select ′画整数厘米刻度线。

docAcfive.Shapes.AddTextbox(msoTextOrientationHorizontal,80+zczxfd*i-2,162,8,10).Select ′在整数厘米刻度线位置添加一个文本框。再利用TextFrame属性设置文本框的格式(代码略)。

Selection.TypeText Text:=bzckd ′写整数厘米刻度值。

bzckd=bzckd+1′

ElseIf l<6 And i=1 Then ′读数值小于6mm,主尺的第一个刻度线为零值。

docActive.Shapes.AddLine(80+zczxfd*i,172,80+zczxfd*i,180).Select ′画整数厘米刻度线

docActive.Shapes.AddTextbox(msoTextOrientationHorizontal,80+zczxfd*i-2,162,8,10).Select ′在整数厘米刻度线位置添加一个文本框。

再利用TextFrame属性设置文本框的格式(代码略)。

Selection.TypeText Text=bzckd ′写整数厘米刻度值

bzckd=bzckd+1 ′刻度值加1,返回下一个整厘米刻度值。

zcl=3 ′因为一般主尺的第一条刻度线是zcl-3,而读数值小于6mm的第一条刻度线是零,故要给zcl重新赋值,根据算法推算为zcl=3。

Else

docActive.Shapes.AddLine(80+zczxfd*i,175,80+zczxfd*i,180).Select ′画主尺刻度线。

End If

Next

′画游标尺刻度线

n=0

If 1<6 Then ′通过以下算法返回游标尺零刻度线的位置。

ybl=zczxfd*(l+1)

Else

ybl=zczxfd*(l-Int(l)+4)

End If

For II=0 To ybcgs ′画游标尺的刻度线。

If II=5*n Then ′每5格标一个格数值

n=n+1

docActive.Shapes.AddLine(80+ybl+ybzxfd*II,180,80+ybl+ybzxfd*II,187).Select

docActive.Shapes.AddTextbox(msoTextOrientationHorizontal,80+ybl+ybzxfd*II-2,188,15,10).Select

再利用TextFrame属性设置文本框的格式(代码略)。

Selection.TypeText Text:=II

Else

docActive.Shapes.AddLine(80+ybl+ybzxtd*II,180,80+ybl+ybzxfd*II,185).Select

End If

Next

With docActive.Shapes ′画游标尺的边框。

AddLine(75+ybl,180,75+ybl,200).Select

AddLine(88+ybl+ybzxfd*ybcgs,180,88+ybl+ybzxfd*ybcgs,200).Select

AddLine(75+ybl,200,88+ybl+ybzxfd*ybcgs,200).Select

End With

绘制游标卡尺的效果如图1所示:

图1

四、结束语

利用vba编程能拓展office办公软件的功能和提升工作效率,提高教学质量。此代码也可移植到PPT中制作交互性很强的课件,也可仿照着绘制其他基本测量工具的读数练习,如螺旋测微器、电表读数等。

标签:;  ;  ;  

如何用VBA绘制游标卡尺_游标卡尺论文
下载Doc文档

猜你喜欢