有一位叫自然9172的网友提出了下面的问题: 绘制三维多段线时X、Y值在屏幕上用鼠标选取,Z值用键盘输入 本课将讲解这个问题。
为了简化程序,这里用多条直线来代替多段线。以下是源码: 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中这是最常用的方法之一,它需要两个参数,在逗号前面的参数应该是一个点坐标,它的作用是在屏幕上画一条线,前一个端点位于点坐标位置,后一个端点跟随鼠标移动,逗号之前可以什么都不填,这时没有线条会跟随鼠标移动,但逗号必须保留。 逗号后面使用一串字符,液压油缸,程序在命令行显示这串字符,这不难理解。 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:后就是结束宏,所以只要出现错误,程序中止。
Do '开始循环 …… Loop ‘结束循环 这个循环就历害了,它会无休止地进行循环,好在本例中已经有了一个出错陷井,当用户输入回车时,液压油缸,由于程序没有得到点或坐标,程序出错,跳出循环,中止程序。如果要人为控制跳出循环,可以在代码中用Exit Do语句跳出循环。在For 变量 和Next 变量之间如果要跳出循环,那么只要在循环体内加一个Exit for 就可以跳出循环,关于这方面的例程以后会讲到。
Call ThisDrawing.ModelSpace.AddLine(p1, p2) '画直线 画直线方法也是很常用的,它的两个参数是点坐标变量
本课到此结束,请做思考题: 连续画圆,每次要求用户输入圆心、半径,当用户不再输入圆心或半径时程序才退出
站长致:
感谢CAD世界网-论坛 网友 普天同庆老师 提供教程! 希望更多CAD爱好者发表这类文章,CAD世界网给您提供一个展现自我的平台。 联系邮箱:zhaozh@icad.com.cn
(责任编辑:admin) |