玩软件 > AutoCAD
+

AutoCAD VBA编程初级教程(3)

2016-09-26    作者:未知    来源:网络文摘

第三课 编程基础二

    有一位叫自然9172的网友提出了下面的问题:

    绘制三维多段线时X、Y值在屏幕上用鼠标选取,Z值用键盘输入

    本课将讲解这个问题。

    为了简化程序,这里用多o直线来代替多段线。以下是源码:

Sub myl()

Dim p1 As Variant '申明端点坐标

Dim p2 As Variant

p1 = ThisDrawing.Utility.GetPoint(, "输入点:") '获取点坐标

z = ThisDrawing.Utility.GetReal("Z坐标:") '用户输入Z坐标值

p1(2) = z '将Z坐标值赋予点坐标中

On Error GoTo Err_Control '出错陷井

Do '开始循环

  p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & "输入下一点:") '获取下一个点的坐标

  z = ThisDrawing.Utility.GetReal("Z坐标:") '用户输入Z坐标值

  p2(2) = z '将Z坐标值赋予点坐标中

  Call ThisDrawing.ModelSpace.AddLine(p1, p2) '画直线

  p1 = p2 '将第二点的端点保存为下一条直线的第一个端点坐标

Loop

Err_Control:

End Sub

    先谈一下本程序的设计思路:

1、获取第一点坐标

2、输入第一点Z坐标

3、获取第二点坐标

4、输入第二点Z坐标

5、以第一、二点为端点,画直线

6、&一条线的第一点=这条线的第二点

7、回到第3步进行循环

    如果用户没有输入坐标或Z值,则程序结束。

   首先看以下两条语句:

p1 = ThisDrawing.Utility.GetPoint(, "输入点:") ‘获取点坐标

……

p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & "输入下一点:") '获取下一个点的坐标

    这两条语句的作用是由用户输入点用鼠标选取点坐标,并把坐标值赋给p1、p2两个变量。   ThisDrawing.Utility.GetPoint()在ACAD中这是最常用的方法之一,它需要两个参数,在逗号前面的参数应该是一个点坐标,它的作用是在屏幕上画一条线,前一个端点位于点坐标位置,后一个端点跟随鼠标移动,逗号之前可以什么都不填,这时没有线条会跟随鼠标移动,但逗号必须p留。

    逗号后面使用一串字符,程序在命令行显示这串字符,这不难理解。

    VbCr通常代表一个回车符,而在这个语句中,它的作用是在命令行不显示“命令:”

&的作用是连接字符。举例:

“爱我中华 ”&”抵制日货 ”&”从我做起”

z = ThisDrawing.Utility.GetReal("Z坐标:") '用户输入Z坐标值

由用户输入一个实数

On Error GoTo Err_Control '出错陷井

……

Err_Control:

On Error是出错陷井语句,在程序出错时将执行On Error 后面的语句

GoTo Err_contorl 是程序跳转语句,它的作用是在程序中寻找Err_control:,并执行这一行后面的语句,本例中Err_Control:后就是结束宏,所以只要出p错误,程序中止。

Do '开始循环

……

Loop ‘结束循环

    这个循环就历害了,它会无休止地进行循环,好在本例中已经有了一个出错陷井,当用户输入回车时,由于程序没有得到点或坐标,程序出错p跳出循环,中止程序。如果要人为控制跳出循环,可以在代码中用Exit Do语句跳出循环。在For 变量 和Next 变量之间如果要跳出循环,那么只要在循环体内加一个Exit for 就可以跳出循环,关于这方面的例程以后会讲到。

Call ThisDrawing.ModelSpace.AddLine(p1, p2) '画直线

画直线方法也是很常用的,它的两个参数是点坐标变量

    本课到此结束,请做思考题:

    连续画圆,每次要求用户输入圆心、半径,当用户不再输入圆心或半径时程序才退出

阅读:15722    评论:0
  • 相关文章
  • 热门文章
  • 相关评论
网站地图

免责申明:我要玩起网旨在提供一个相互学习交流的平台,是一个完全免费的网站,部分原创作品,欢迎转载,部分内容来自互联网,如果侵犯了您的权利请尽快通知我们!邮箱:279459762@qq.com Copyright 2018-2021我要玩起网

  湘ICP备17006802号-2
【电脑版】  【回到顶部】