版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、例1 编写一个程序,该程序将提示用户选择三角形的三个顶点,并通过它们绘出所示的三角形。 多数程序都包含三个基本组成部分,即输入、输出及处理过程。其中处理过程的功能为根据给定的输入来产生预期的输出。编写程序前,必须确认这三部分。,本例中,程序的输入为三个点的坐标,期望的输出为一个三角形。用以生成该三角形的处理过程为:由P1到P2、由P2到P3、到P3到P1各画一条直线。弄清这三部分就会使编程过程更清晰。 输入 输出 P1点的位置 P2点的位置 三角形P1,P2,P3 P3点的位置 处理过程 从P1到P2画线 从P2到P3画线 从P3到P1画线,;this program will prompt
2、you to enter three points 1;of a triangle from the keyboard ,or select three points 2;by using the screen cursor .P1,P2,P3 are triangle corners. 3 4(defun: :triang1() 5 (setq P1(getPoint“ Enter first Point of triangle:”) 6 (setq 2(getPoint“ Enter second Point of triangle:” 7 (setq 3(getPoint“ Enter
3、third Point of triangle:”) 8 (Command“line” P1 P2 P3“”) 9) 10,说明第13行前三行为注释行,用于描述程序中的函数。这几行很重要因为有它们,编辑程序会变得简单一些。可以在任何必要的时候使用注释。所有的注释行都必须以分号(;)开头,当程序装入时这些行会被忽略。第4行:行为空行,用于分隔程序与注释部分。空行还可以用来分隔程序的不同模块。这样便于区分程序的不同部分。空行对程序没有影响。第5行:(defun C: triang1()本行中,defun为一个AutoLISP函数,它定义了函数TRIANG1。TRIANG1为该函数的函数名。由于此函
4、数名前带有:,因此该函数可以像AutoCAD命令一样被执行。若没有:, TRIANG1命令只能置于圆括号中执行(TRIANG1)。此函数带有三个全局变量( P1,P2,P3)。,第6行:(setq P1(getpoint“ Enter first Point triangle:)本行中,getpoint函数暂停程序的运行,允许用户输入三角形的第一个点。提示信息Enter first Point of triangle显示在屏幕的提示区内。可以通过键盘输入该点的坐标,也可以用屏幕光标选择该点。随后setq函数将这些坐标赋予变量P1。的作用是回车,其后的表达式将被打印在下一行上(“”代表“)第行和
5、第8行:(setq 2(getpoint“ Enter second Point of triangle:”)及(setq 3(getpoint“ Enter third Point of triangle:”)这两行提示用户输入三角形的第二个顶点和第三个顶点,随后把这些坐标赋予2和3。的作用是回车,因此输入提示显示在下一行中。,第9行:(Command“line” P1 P2 P3“”)本行中,Command函数用来输入AutoCAD的line命令,然后从P1到P2,P2到P3各画一条直线。“”(表示“”选项)把最后一点3与第一点P1连接起来。所有的AutoCAD命令及选项在AutoLISP
6、程序中使用时都必须置于双引号内。变量P1、2. 3之间用空格分隔。第10行本行仅包含一个用于表明函数TRIANG1定义完成的右括号。该括号也可以写在上一行中。把它单独放在一行是一个好习惯,因为这样做任何程序员都可以很容易的确定定义已结束。然而某些程序中,同一程序内的多个定义及模块需要明确区分开。括号及空行有助于明确定义或程序段的起始和结束。,例2 编写一个AutoLISP程序,在给定的两条线间通过输入倒角角度及倒角距离生成一个倒角。 AutoCAD使用赋予系统变量ChamferA和ChamferB的值生成该倒角。当选择了AutoCAD的Chamfer命令后,第一个倒角及第二个倒角的距离被自动赋
7、予系统变量ChamferA及ChamferB。随后Chamfer命令使用这些值生成一个倒角。然而,在多数工程图中,人们更喜欢通过输入倒角长度及倒角角度的方式来生成倒角.,输入 输出第一个倒角距离() 任意两条选中直线间的倒角倒角角度() 处理过程 计算过程.计算第二个倒角的距离 xd=tan a2.将这些值赋予系统变量ChamferA和 ChamferB =*(tan a)3.使用AutoCAD的Chamfer命令生成倒角。,;This program generates a chamfer by entering 1;the chamfer angle and the chamfer dis
8、tance 2; 3(defun :chamfer( ) 4 (setvar“cmdecho”0) 5 (graphscr) 6 (setq d(getdist“ Enter chamfer distance:”)7 (setq (getangle“ Enter chamfer angle:”) 8 (setvar“chamfera”) 9 (setvar“chamferb”( d(/sin a (cos a)) 10 (Command“chamfer”) 11 (setvar“cmdecho”) 12 (princ) 13 ) 14,cmdecho系统变量:控制 AutoLISP 的 com
9、mand 函数运行时 AutoCAD 是否回显提示和输入。第行:(setq d(getdist“ Enter chamfer distance:”)getdist函数暂停程序的运行,等候用户输入倒角距离,随后setq函数将该值赋予变量。第8行:(setq (getangle“ Enter chamfer angle:”) getangle函数暂停程序的运行,等候用户输入倒角角度,随后setq函数将该值赋予变量。第9行: setvar“chamfera )setvar函数将变量的值赋予AutoCAD系统变量chamfera。第10行: (setvar“chamferb”( d(/sin a (c
10、os a))setvar函数将从表达式(*(sin )(cos )中取得的值赋予AutoCAD系统变量chamferb。 第11行:(Command“chamfer) Command函数使用AutoCAD 命令生成倒角。,例3 编写一个程序,提示用户输入一个矩形的两个对角的坐标,然后在屏幕上画出该矩形。,输入 处理过程 P1点的坐标1.计算点和4点的坐标P3点的坐标2.画出下列直线 P1到P2的直线 P2到P3的直线 P3到P4的直线 P4到P1的直线,P2和P4两点的,坐标可以通过car及cadr函数算出。car函数从给定的列表中选取坐标,cadr函数选取坐标。 2点的坐标: 2点的坐标:
11、2=3 2=1 2=car(3 3) 2=cadr(1 1) 2=car 3 2=cadr P14点的坐标:4点的坐标:X4X1 Y4=Y3X4=car(X1 Y1)Y4=cadr(X3 Y3)X4=car P1Y4=cadr P3故,P2点和P4点为:P2=(list(car P3)(cadr P1)P4=(List(car P1)(cadr P3)),(defun :rect1(p1 p2 p3 p4)(graphscr)(setvar“cmdecho”0)(prompt“rect1 command draws a rectangle”)(terpri)(setq p1(getpoint
12、Enter first corner)(terpri)(setq p3(getpoint Enter opposite corner)(terpri)(setq p2(list(car p3)(cadr p1)(setq p4(list(car p1)(cadr p3)(command linep1 p2 p3 p4 c)(setval cmdecho 1)(Princ),第1行:(defun :rect1(p1 p2 p3 p4)defun函数定义了函数rect1。第2行:(graphscr)如果当前屏幕恰好是文本屏幕,该函数将文本屏幕转换为图形屏幕。否则,对显示屏幕无影响。第3行:(set
13、var“cmdecho”0)函数setvar将0赋予AutoCAD系统变量cmdecho,即关闭了回显。如果cmdecho被关闭,AutoCAD的命令提示就不会显示在屏幕的命令提示区中。第4行:(prompt“rect1 command draws a rectangle”)(terpri)prompt函数将显示双引号中的信息(“rect1 command draws a rectangle”)。函数terpri产生一个回车,因此下一行文本会打印在单独一行上。第5行:(setq p1(getpoint Enter first corner)(terpri)getpoint函数暂停程序的运行,等
14、候用户输入一个点(该矩形的第一个角),随后setq函数将该值赋予变量P1。第6行:(setq p3(getpoint Enter opposite corner)(terpri)getpoint函数暂停程序的运行,等候用户输入一个点(该短形的对角),随后setq函数将该值赋予变量3。,第7行:(setq p2(list(car p3)(cadr p1)cadr函数选取P1点的坐标,car函数选取P3点的坐标。setq函数将这两个值组成的列表赋予变量P2。第8行:(setq p4(list(car p1)(cadr p3)cadr函数选取P3点的坐标,car函数选取P1点的坐标。setq函数将这
15、两个值组成的列表赋予变量4。第9行:(command linep1 p2 p3 p4 c)Command函数使用AutoCAD的line命令在点P1,P2,P3和P4间画线。(close)将最后一点P4与第一点P1连接起来。第10行:(setval cmdecho 1)setvar函数将1赋予AutoCAD系统变量cmdecho,即打开了回显。第11行:(princ)princ函数在屏幕上打印一个空行。若没有这一行, AutoCAD将打印出最后一个表达式的值。该值对程序毫无影响,但却可能令人费解。princ函数用来防止在命令提示区显示该表达式的值。第12行:该右括号表明完成函数rect1的定义
16、,并且程序结束。注意 在这个程序中,定义一个矩形的两个角后,该矩形被生成。当移动屏幕光标输入第 二点时,该矩形不会被拖动。然而,可以使用getcorner函数来拖动该矩形,如以下程序清单所示:,(defun :rect2(p1 p2 p3 p4)(graphscr)(setvar“cmdecho”0)(prompt“rect2 command draws a rectangle”)(terpri)(setq p1(getpoint Enter first corner)(terpri)(setq p3(getcorner p1 Enter opposite corner)(terpri)(setq p2(list(car p3)(cadr p1)(setq p4(list(car p1)(cadr p3)(command linep1 p2 p3 p4 c)(setval cmdecho 1)(Princ),例4 编写一个AutoLISP程序,生成给定数目的同心圆。程序还应提示用户输入圆心,起始角及半径增量。,(defun c:concir()(graphscr)(Setvar“cmd
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 世界脑膜炎日互动游戏课件
- 甲状腺结节随访管理课件
- 世界骨质疏松日互动游戏课件
- 国家宪法日:未成年人保护法课件
- 2026年安徽六安市高职单招英语题库试题附答案
- 红原注册林果估价师培训试卷
- 2026公务员时政考试题库题及答案(必刷)
- 2026第二季度医保知识培训考试解析含答案
- 2025年海南语文专升本真题试卷及答案
- 《系统的计算环节》同步练习及答案-2026-2027学年川教版(新版)小学信息科技六年级上册
- 江西新华发行集团有限公司赣州市分公司2026年公开招聘工作人员笔试参考题库及答案解析
- 2026年贵阳市公共交通有限公司第二批驾驶员招聘笔试参考题库及答案详解
- 2026年成人高考专升本政治真题试卷及完整答案解析(官方标准)
- 有机废气活性炭吸附处理安装工程竣工验收报告
- 新版2026秋统编版(新版)小学道德与法治五年级上册(全册)知识点清单梳理
- 2026公务员行测申论高频刷题题库(含详细解析)
- 2026年卫生高级职称面审答辩(社区护理)副高面审经典试题及答案
- 2025-2026学年人教版(2024)数学七年级上册期中测试卷
- 《光伏发电技术》课件(共七章)
- T/CAPE 10108-2024设备设施报废管理指南
- 《诗经》诗经全文
评论
0/150
提交评论