如何运用vba绘制游标卡尺_第1页
如何运用vba绘制游标卡尺_第2页
如何运用vba绘制游标卡尺_第3页
如何运用vba绘制游标卡尺_第4页
如何运用vba绘制游标卡尺_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

如何运用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对象。BeginXSingle类型,必需。直线起点相对于锁定标记的水平位置,以磅为单位。BeginYSingle类型,必需。直线起点相对于锁定标记的垂直位置,以磅为单位。EndXSingle类型,必需。直线终点相对于锁定标记的水平位置,以磅为单位。EndYSingle类型,必需。直线终点相对于锁定标记的垂直位置,以磅为单位。2.AddTextbox方法在文档中添加一个文本框。返回一个代表该文本框Shape对象,并将其添加到Shapes集合。语法:expression。AddTextbox(Orientation,Left,Top,Width,Height)各参数解释:expression必需。该表达式返回“应用于”列表中的一个对象。OrientationMsoTextOrientation必需。指定文本的方向。LeftSingle类型,必需。文本框左侧边缘的位置,以磅为单位。TopSingle类型,必需。文本框上部边缘的位置,以磅为单位。WidthSingle类型,必需。文本框的宽度,以磅为单位。HeightSingle类型,必需。文本框的高度,以磅为单位。提示:在编写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′主尺总长度(磅)。Ifzcl<6Then′通过以下算法返回主尺整厘米刻度值的第1个刻度值。bzckd=Round((zcl/10),0)Elsebzckd=Round((zcl/10)+0.1,0)EndIfybzxfd=zczxfd*(1-(1/ybcgs))′游标卡尺最小分度的屏幕长度(磅)。SetdocActive=ActiveDocumentdocActive.Shapes.AddLine(80,180,80+zccd,180).Select′画主尺横线。再利用line的属性设置直线的格式(代码略)。Fori=1Tozkds′画主尺刻度线。If(zcl-4+i)/10=bzckdThendocActive.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.TypeTextText:=bzckd′写整数厘米刻度值。bzckd=bzckd+1′ElseIfl<6Andi=1Then′读数值小于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.TypeTextText=bzckd′写整数厘米刻度值bzckd=bzckd+1′刻度值加1,返回下一个整厘米刻度值。zcl=3′因为一般主尺的第一条刻度线是zcl-3,而读数值小于6mm的第一条刻度线是零,故要给zcl重新赋值,根据算法推算为zcl=3。ElsedocActive.Shapes.AddLine(80+zczxfd*i,175,80+zczxfd*i,180).Select′画主尺刻度线。EndIfNext′画游标尺刻度线n=0If1<6Then′通过以下算法返回游标尺零刻度线的位置。ybl=zczxfd*(l+1)Elseybl=zczxfd*(l-Int(l)+4)EndIfForII=0Toybcgs′画游标尺的刻度线。IfII=5*nThen′每5格标一个格数值n=n+1docActive.Shapes.AddLine(80+ybl+ybzxfd*II,180,80+ybl+ybzxfd*II,187).SelectdocActive.Shapes.AddTextbox(msoTextOrientationHorizontal,80+ybl+ybzxfd*II-2,188,15,10).Select再利用TextFrame属性设置文本框的格式(代码略)。Selection.TypeTextText:=IIElsedocActive.Shapes.AddLine(80+ybl+ybzxtd*II,180,80+ybl+ybzxfd*II,185).SelectEndIfNextWithdocActive.Shapes′画游标尺的边框。AddLine(75+ybl,180,75+ybl,200).SelectAddLine(88+ybl+ybzxfd*ybcgs,180,88+ybl+ybzxfd*ybcgs,200).SelectAddLine(75+ybl,200,88+ybl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论