4autocad2009-机械图学基础随书光盘2.97g ch02n_第1页
4autocad2009-机械图学基础随书光盘2.97g ch02n_第2页
4autocad2009-机械图学基础随书光盘2.97g ch02n_第3页
4autocad2009-机械图学基础随书光盘2.97g ch02n_第4页
4autocad2009-机械图学基础随书光盘2.97g ch02n_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、机械设计2.1Visual LISP 的界面首先,为您介绍编写 Visual LISP(以下简称 VLISP)的主操作窗口环境。进入AutoCAD 2000 中,选择【工具(T)】【AutoLISP(S)】【Visual LISP 编辑器(V)】选项。或直接在程序编辑窗口区中键入“指令:vlisp ”或“指令:vlide ”,都可出现如图 2-1 所示的窗口。图 2-1LISP/VLISP/DCL 的程序编写窗口下拉式菜单区:由此发出 VLISP 编辑指令。常用工具图标区:可快速发出常用的 VLISP 编辑指令。10程序编辑窗口区:在此编辑 LISP、VLISP、DCL 等程序原代码文件。控制

2、台窗口区:在此可执行许多 VLISP 语法指令。状态栏区:接下来,显示环境目前的状态。为您详述此窗口中重点组件的功能。【文件】下拉式菜单,如图 2-2 所示。图 2-2 【文件】下拉式菜单的内容【编辑】下拉式菜单,如图 2-3 所示。11新建一个文件来进编辑(它可以是 LISP、DCL 等文件)。打开一个现成的文件(它可以是 LISP(.LSP)、DCL(.DCL)、SQL快速打开最近编辑过的文件(.SQL)或 C/C+保存当前活动窗口中的新文件( .C/.CPP ) 等文 打印目前活动窗口中的文件字文件)设定可将您的( LSP)文件、(.FAS)文件、(.PRJ)项目文件加入资源文件(.DC

3、L)后,再封装成独的应用程序(.VLX)文件加载(.LSP)文件、(.FAS)文件或(.VLX)文件打开/关闭控制台窗口所输出的(.LOG)日志文件退出此窗口机械设计图 2-3 【编辑】下拉式菜单的内容【搜索】下拉式菜单,如图 2-4 所示可在此添加/删除/跳转至指定的书签处(与 Word 的书签功能类似,但无书签名)跳转至输出窗口的第一则跳转至输出窗口的下一则一次跳转到某信息信息使光标一次移到最近一次编辑的位置图 2-4 【搜索】下拉式菜单的内容12在目前活动的窗口中搜寻指定字符在目前活动的窗口中搜寻指定字符,并以指定字符取代之以这种方式来寻找某一字符,对长的 VLI SP 指、变或函数来说

4、可缩短输入的时间在程序文本中可以加入的特殊属性值选项群。用这的项目,将可以减少您的输入工作,同时又可以准确地得到所需要的值。放弃上一次编辑操作重复上一次所放弃的编辑操作将选取的文字剪贴到剪贴板中,以备后续的粘贴将选取的文字到剪贴板中,以备后续的粘贴在目前位置贴上剪贴板中的文字删除已选取的文字选取目前窗口中的所有文字检查与目前括号匹配的另一括号的选项群。这在测试程序时用来检查多余的、缺少的或错位的括号十分有效。【视图】下拉式菜单,如图 2-5 所示。图 2-5【视图】下拉式菜单的内容13选择希望出现的工具选择要以么方式来浏览 AutoCAD 图面数据库打开检查窗口并输入表达式,就可以查出任何变或

5、表达式的值打开堆栈检验器(当程序运到截断点或发生错误退出时,可用堆栈来“ 记住” 一系的嵌入表达式,以解程序当时所做的工作。在程序后,该堆栈也可告诉您当程序时,VLISP 所执的是哪一个函数)打开最近一个堆栈错误的检查窗口打开【符号服务】检查窗口(可增强除错中的变存取功能)打开监视窗口。可查看您要监看的变搜寻包含有输入字符的函数和变搜寻与编辑所有截断点显示最近输出的窗口激活 LISP 控制台,并将控制台移至最前面机械设计【工程】下拉式菜单,如图 2-6 所示。图 2-6 【工程】下拉式菜单的内容【调试】下拉式菜单,如图 2-7 所示。图 2-7 【调试】下拉式菜单的内容14跳进一对括号的程序段

6、忽一对括号的程序段执程序代码到目前暂停函数结束处继续执到下一个断点或到结束结束所有目前活动的截断循环并返回到控制台顶层“ 读算写” 循环(设定断点后,当程序执进入截断循环后,在控制台将出现“ _1_$” 来代表第一层循环,“ _2_$” 代表第二层循环。选择此选项后,无论目前处于哪一层循环,都将返回至顶层)结束目前的中断循环并返回到上一层的“ 读算写” 循环中(与“ 重设顶层” 选项相比,本项是一层一层地退出)添加要监视的表达式到监视窗口中激活监视窗口,查看监视窗口内最后的表达式计算结果在目前位置添加或删除断点清除所有已设定的断点让上一个断点处的代码以反白显示执追踪指换到“ 即停止” 模式(当

7、选择此选项时,在第一次对表达式进求值时将使程序暂停。暂停后可以采用各种调试指来让程序继续执)在发生错误的内容中进入“ 读算写” 循环放弃所有的计算建一个新的工程打开现成的工程( PRJ)关闭目前工程工程文件管与修改工程的编译选择加载工程的 FAS 文件或其源文件(无 FAS 文件,则提示您是否要产生)加载工程的 LISP 源文件将工程编译成 FAS 文件重新编译整个工程【工具】下拉式菜单,如图 2-8 所示。图 2-8 【工具】下拉式菜单的内容【窗口】下拉式菜单,如图 2-9 所示。水平平铺所有 VLISP 环境中的窗口垂直平铺所有 VLISP 环境中的窗口层叠排所有 VLISP 环境中的窗口

8、缩放目前活动的窗口窗口布局指的整模式最小化所有 VLISP 环境中的窗口排最小化 VLISP 图记关闭部分窗口图 2-9 【窗口】下拉式菜单的内容常用工具图标区常用工具区图标由【标准】、【搜索】、【工具】、【调试】、【视图】5部分组成。虽然这些功能都可以在下拉式菜单中找到,但是多利用它将可以缩短发出命令的时间。15目前已打开的文件表换至 AutoCAD设定 VLISP 开发环境的选项(包括编辑器,页面布置,自动执延时等,选项改设定后,请选择“设定值” 选项)所做的设定自定义目前窗口的属性(包括文字、颜色与文字等)在控制台中执指模式的换(此选项要在控制台为目前窗口时才有)机械设计快捷键部分在键盘

9、上编辑程序时,快捷键可以帮助快速发出指令。例如,在 Windows当下常按下【Ctrl+C】组合键来进行,按下【Ctrl+V】组合键来执行贴上,按下【Ctrl+X】组合键执行剪切。如表 2-1 所示就是一些在 Visual LISP 开发过程中常用到的快捷键:表 2-1编写VLISP 时常用的快捷键列表控制台窗口部分除了 VLISP 主操作窗口上的下拉式菜单、工具条与快捷键以外,在控制台窗口中输入指令也一样可以发出 VLISP 指令。Visual LISP 的控制台窗口可说是一个类似 AutoCAD 程序编辑窗口区的工具,不过,它可提供比程序编辑窗口区的功能。在 VLISP 程序的开发过程中,

10、有效地使用控制台窗口可提高您的开发效率。在控制台窗口中,您可以直接计算输入的表达式。如果您希望16快 捷 键操 作 环 境作用Tab控制台窗口取出刚输入的前一条指令Shift+Tab控制台窗口反转取出指令的方向Esc控制台窗口清除控制台目前指令行中的文字Shift+Esc控制台窗口保留目前指令行文字并打开一新指令行Ctrl+程序编辑窗口到对应的左括号Ctrl+程序编辑窗口到对应的右括号Ctrl+E程序编辑窗口调出编辑需要的快捷菜单Ctrl+Shift+Space程序编辑窗口使用“自动匹配”来寻找指定文字Ctrl+Al+E程序编辑窗口加载编辑窗口内的文字Ctrl+Alt+F程序编辑窗口格式化编辑

11、窗口内程序代码F9程序编辑窗口在目前位置添加/删除断点F8调试时跳到下一括号表达式内Shift+F8除错时略过一括号表达式F6任意显示控制台Ctrl+W任意将变量添加至监看窗口Ctrl+Shift+W任意显示监看窗口有一个临时性的变量,那么您也可以在这里直接将变量值纳入目前程序文本中,当然,这个变量是暂时性的,当程序文本关闭就结束了。此外,您还可文本与文本执行后的输出结果。控制台窗口中所输入的例如,您可以将程序源代码分段拷贝在控制台中执行,查看它的结果。这样,在程序的调试效率上会比较好。虽然 VLISP 控制台窗口和 AutoCAD 程序编辑窗口区所提供的功能相近,但完成同一功能的操作可能不同

12、。例如,为了显示 AutoLISP 变量的目前值,在 VLISP 控制台窗口中,您只需在窗口中键入变量名称并按下【Enter】键即可;但是在 AutoCAD 程序编辑窗口区中,您必须在变量名称前加一个感叹符号(!)。在 AutoCAD 程序编辑窗口区中,按空格键将对表达式求值。而 VLISP 控制台窗口就不同了,它只有在按下【Enter】键后,才会处理在控制台提示处所输入的表达式,如此,您就可以在控制台窗口中编写一行程序代码,而无需担心未写完就被执行。在需要换行处按【Ctrl+Enter】组合即可在下一行继续程序文本的表达式。在按【Enter】键之前可以输入多个表达式,如:_$ (setq a

13、 1)(setq b 2)。用【Tab】键或【Shift+Tab】组合键则可重复前一条指令。2.2VBA 的界面首先,为您介绍编写 VBA 的主操作窗口环境。要编写 VBA 程序,您可以选择【工具(T)】【宏(M)】【VisualBasic 编辑器(B)】选项,或直接在程序编辑窗口17机械设计区中键入“指令:vbaide”后,按【Enter】键来进入。进入后的窗口界面如图 2-10 所示。但是,因为在 AutoCAD 里,执行 VBA 与编写 VBA关,所以,在此介绍的是以进入【VBA 管理器】的方式来操作。请进入的动作AutoCAD 2000,并选择【工具(T)】【宏(M)】【VBA 管理器

14、(V)】选项,或直接在程序编辑窗口区中键入“指令:vbaman”后,按【Enter】键均出现如图口。2-10 所示的窗家属问疯人院院长道:“ 要怎样做出院测试?” 院长说:“浴缸注满水,然后在旁边放一个勺子与一根汤匙,要把浴缸的水移出。”家属说:“ 这还不简单,再傻的人都会用勺子。”“ 不! 正常人会将浴缸的塞子拔掉!”院长轻描淡写地说道。进入 VBA 的程序编辑窗口图 2-10 VBA 的管理器窗口现在,针对图 2-10 里相关的专有名称,再作进一步的说明。宏(Macro)就是一个可以完成某特定功能的指令集。在 VBA 中也称之为“过程”,其语法形式为:Public SuboWorld().

15、(程序源代码)18在目前图形中加入一已选取的工程新建一个工程将已选取的工程另存一个工程名称加载一个已存在的工程卸下一个已选取的工程打开宏框,可在此可执宏、建宏、删除宏 等动作.(程序源代码)End Sub在 VBA 中通常宏包装在模块(Module)中。模块(Module)就是由一个或多个宏所组成的程序段。模块的主要作用是用于建立执行宏,程序中的源代码,通常都存放在一个或几个模块中。窗体(Form)就是窗口资源。工程(Project)包含一个或多个的模块、宏与窗体,并将这些宏与资源整合而构成一应用程序模块。当在图 2-10 中单击【Visual Basic 编辑器(V)】按钮时,将出现如图 2

16、-11 所示的程序编写窗口界面。一位老太太到去看孙子。“ 他叫什么名字?” 值日官问。“曾正待。” 老太太答道。“老太太,他请假回去了,说要去参加祖母的!”19机械设计图 2-11 VBA 的程序编写窗口由此发出 VBA 编辑指令。可快速发出常用的 VBA 编辑指令。在此编辑 VBA 程序原代码文件。列表显示工程中的模块、窗体等资源。显示于“工程总管区”内,显示所选对象的属性。类似 VLISP 的控制台,可于此直接计算表达式。显示区域变量的内容。显示表达式内容。下拉式菜单区: 常用工具图标区:程序文本区:工程总管区:属性区:立即窗口区:本地窗口区:监视窗口区:上述第各项的窗口区必须分别选择【视

17、图(V)】下拉式菜单下的【立即窗口】、【本地窗口】、【监视窗口】等命令来调用。在程序中断时,您可使用“? + 变量名”可查看变量值。执行一些 VB 命令。如图 2-12 所示。可以在程序未执行前先20图 2-12 “立即窗口区”的操作实例当于上图中执行“msgbox test immediate windows”时,将出现如图 2-13 所示的信息框。图 2-13 立即执行“msgbox test immediate windows”表达式的结果在中断程序的情况下,【立即窗口】、【本地窗口】与【监视窗口】都是程序调试时的好工具,建议您多学习这类调试工具的使用。下面,详述 VBA 程序窗口各组件

18、的功能。【文件】菜单【文件】下拉式菜单如图 2-14 所示。21* dvb 的项目文件导入现有的 Visual Basic 窗体文件(* frm)、Basic 文件(* bas)、Class 文件(* cls)到目前的项目中(注意:在此,您只能打开“ 导出文件” 选项)从其他项目中所导出的文件(导出 Visual Basic 窗体文件(* frm)、Basic 文件(* bas)、Class 文件(* cls)。常用于项目中各类文件与其他项目的交换)用于删除指定的项目(模块或窗体)打印窗体、模块或指定的内容关闭 VBA 编辑器,重回到 AutoCAD 的画面中机械设计图 2-14【文件】下拉式

19、菜单的内容22【编辑】菜单【编辑】下拉式菜单如图 2-15 所示。图 2-15 【编辑】下拉式菜单的内容医大,教授问学生:“ 为什么外科医生都戴着面罩做手术?”学生答道:“ 为23设定、换和清除书签(与VLISP 中的书签功能类似)回复上一步的操作,但是所有指都能取消重复上一步所回复的操作将选取的文字剪贴到剪贴板,以备后续的粘贴将选取的文字 到剪贴板,以备后续的粘贴在目前位置上 剪贴板中的文字从模块或窗体中删除所选取的文字或对象选取模块编辑窗口中所有的内容或窗体中所有的对象在模块中搜寻特定的文字(与 Word 中的类似指相同)重复搜寻操作以指定字符替换模块中特定的字符(与 Word 中的类似指

20、相同)将选定的文字符缩进一个制表符(Tab)宽将所有的文字向左移动一个制表符(Tab)宽在程序本文区窗口中打开一个下式表来显示 所键入对象的属性和方法(打开一个程序编写过程中可用的属性和方法表,将可以提高程序指输入速与准确性)在程序本文区窗口中打开一个下式表来显示有效的属性常数值如以下代码:Dim lineA As AcadLine, lineB As AcadLineDim pt As Variantpt = lineA. ersectWith(lineB, acExtendNone)将光标移至 lineB, 后面,单击【常数表】命后,于表中选取“ acExtendNone” 就可以为您自动

21、输入“ acExtendNone” 字符。将在程序本文区窗口中出现一个指示窗口,用来告诉您刚才输入的程序、函数或方法的正确语法或参数在程序本文区窗口中打开一个指示窗口,用来告诉您刚才键入的程序、函数或的参数信息根据已键入的部分指语法字符来自动完成该指语法的完整字符机械设计的是万一出了纰漏,没有人认得出是谁干的。”24【视图】菜单【视图】下拉式菜单如图 2-16 所示。图 2-16 【视图】下拉式菜单的内容【】菜单【】下拉式菜单如图 2-17 所示。一位沉迷于与酒的男子到医院求诊。诊毕,医生说道:“为了你的健康,我不得不建议你在女人与美酒中,先放弃女人,再放弃美酒。” 该男子答道:“ 大夫,25

22、将目前活动窗口转移到AutoCAD 画面使用这的选项来制定自己喜欢的工具激活程序本文区窗口以显示与模块或窗体相关的 VBA 程序代码显示在目前工程资源管器中指定的对象显示光标所在处对象的定义(变则显示变的定义,程序与函数则显示其 VBA 程序代码或打开对象浏览器来显示其来源)在使用定义选项后或编辑程序代码之后,再跳回到最后的位置显示对象库以及工程程序中可用的类别(Class)、属性、方法、事件以及常数变数(您可以用它来搜寻与使用既有的对象,或是源自于其他应用程序的对象)显示即窗口(此窗口可以显示来自程序代码中的调试语法信息,或直接于此键入表达式)显示本地窗口(此窗口可自动显示出所有在目前程序中

23、的变以及变数值,以在调试过程中对变值一目然)显示监视窗口(显示目前项目中已定义的监看表达式)为目前 VBA 函数或程序显示来呼叫堆栈(与VLISP 中的“堆栈”选项类似)显示工程资源管器(类似 Windows 的“ 资源管器”)显示属性窗口(可于此查看或修改所选对象的属性)显示工具箱工具(可以使用工具箱来于窗体中添加控件)在建窗体时可使用此选项机械设计那也得先看看她们是哪一个年份的啊!”26图 2-17 【】下拉式菜单的内容【格式】菜单【格式】下拉式菜单如图 2-18 所示。将几个选取的对象组移动、改变大小、剪与以于改变它们的属性)一个整体,这样就可以将它们作为一个群组来进(过,群组中的单一对

24、象仍然可以被选取,解散指定的群组改变窗体上对象的顶部底部顺序(如,如果在窗体上一个本文框与图形物件,就可以使用此选项来让本文框出现在图形对象之前)图 2-18 【格式】下拉式菜单的内容27调整选取对象的位置到窗体的水平或垂直自动排窗体上的指按钮将对象的宽与高调整到最适当的状态将对象的宽与高调整到窗体上最近的网格线让选取对象的大小条件与指定对象相同选取此处的选项来控制窗体上的对齐方式指定所需的选项来调整选取对象的垂直间距指定所需的选项来调整选取对象的水平间距在目前项目中添加一个新的过程、函数或属性过程在目前项目中添加一个窗体在目前项目中添加一个模块在目前项目中添加一个类别(Class)模块在目前

25、项目中一个文件的内容机械设计【调试】菜单【调试】下拉式菜单如图 2-19 所示。编译“ 项目管区” 中目前所选取的项目逐步执宏程序代码(一次一地执宏程序代码,执完后将停在下一条语法上)执宏中的所有指(会在每一条独语法上停止) 执完宏中所剩余指(会在每一条独语法上停止)从目前语法执到程序代码中光标所在的位置将已选取的变或表达式加入到监视窗口中编辑监看窗口中选取的变或表达式出现一个窗口并显示目前变或表达式的值在 VBA 程序代码中设定或清除断点清除程序代码中所有的断点程序中断时,手动指定下一条将被执的语法(即改变程序代码正常的执顺序)高显示出下一条要执的语法图 2-19 【调试】下拉式菜单的内容【

26、运行】菜单【运行】下拉式菜单如图 2-20 所示。图 2-20 【运行】下拉式菜单的内容【工具】菜单【工具】下拉式菜单如图 2-21 所示。28执正在编辑的宏或目前激活的窗口中的代码中断程序代码的执,使 VBA 进入中断模式清除所有模块级变执完宏中的剩余指(会在每一条独的语法上停止)选取可以的各类或控制选项添加可以添加到窗体的控件打开“ 宏” 窗口( 在此,您可以建、编辑、执或删除一个宏) 显示“ 选项” 窗口(在此,您可以为 VBA 编辑器做同的选项设定,如程序编写设定、编写风格、窗体格式、编译方式等设定) 设定目前的工程属性(如工程名称、工程说明、说明文件名称、条件式的编译自变加密等) 图

27、 2-21 【工具】下拉式菜单的内容常用工具图标区常用工具图标区由【标准】、【编辑】、【用户窗体】、【快捷菜单】、【菜单条】与【调试】等 6 部分所组成。同时,您也可以选择【视图】【工具条】【自定义(C)】选项来自定义。虽然工具图标内的功能都可以在下拉式菜单中找到,但是多利用它可以缩短点取指令的时间。快捷键部分当在键盘上编辑程序时,快捷键也是一种快速发出指令的工具。如表 2-2 所示就是一些在 VBA 开发过程中常用到的快捷键。表 2-2 编写VBA 时常用的快捷键29快 捷 键操 作 环 境作用Ctrl+J程序编辑窗口打开一个下拉式列表,以显示刚才键入对象的属性和方法Ctrl+Shift+J

28、程序编辑窗口打开一个列表以显示有效的属性常数值Ctrl+I程序编辑窗口打开一个跳出式的说明窗口来显示刚才所输入的程序、函数或方法的正确语法Ctrl+Shift+I程序编辑窗口在程序代码窗口中打开一个跳出式的说明窗口,以显示刚才键入的程序、函数或可用的参数信息F7任意激活程序代码窗口F2任意打开对象浏览器窗口F8任意逐一执行语法程序F5任意执行子程序/自订窗体机械设计o World! 程序初步2.3(AutoLISP 与 Visual LISP)在了解了 LISP/VLISP 与 VBA 的程序开发环境后,现在,就以一个简单的范例来为您示范 LISP/VLISP 程序的语法编写。在这个范例中,希

29、望程序能以(100,100,0)坐标点为圆心,50 为半径,自动画出一个圆,并在程序编辑窗口区中显示 “字样。o World!”2.3.1AutoLISP/VLISP 程序的编写与执行部分AutoLISP 程序部分请按以下步骤来执行整个 AutoLISP 程序的编写与执行。进入 AutoCAD 2000 中,并选择【工具(T)】【AutoLISP(S)】【Visual LISP编辑器(V)】选项。在“程序编辑窗口区”中输入以下的程序文本。以下每条程序前括号里的数字,如(1)、(2)等,是为了方便稍后的语法说明,输入。(1);o World AutoLISP Program-lisp.lspo

30、World(2);function:draw a circle and pr(3)(4)(defun clisp(/ centt radius)(5) (setvar cmdecho 0)30(6)(7)(8)(9)(setq centt (list 100 100 0)(setq radius 50)(d circle centt radius)(prompt o World!)(10) (princ) (11)分析:首先,程序的第(1)、(2)行是批注,意即以分号“;”开头的就表示此行为批注。批注行是不执行的,它是程序设计员用来提醒或说明该程序的设计重点或设计内容的。第(4)行是指令的定义

31、语法,后面括号内,斜线后的变量名称是表示该变量是暂时性的变量。第(5)行用来设定“cmdecho”系统变量为 0,“cmdecho”系统变量将用来控制当AutoLISP 的 (d) 函数执行时,AutoCAD 是否显示提示与输入。第(6)、(7)行的语法是表示要将圆的圆心与半径的值分别分派给变量 centt 与radius。第(8)行则是调用 AutoCAD 的 circle 指令,并根据 centt 与 radius 的值来执行画圆动作。第(9)行则表示要在程序编辑窗口区出o World!字样。第(10)行是第(9)行的动作执行指令。第(11)行则是第(4)行的对称括号。由于d 函数很常用,

32、所以在此先介绍。d 是一个系统函数,它将使 AutoLISP 可以简单而方便地调用所有的AutoCAD 指令。d 函数的参数用来表示所调用的 AutoCAD 指令与其副指令需要的资料;它将视所执行的 AutoCAD 指令以及其所需要的数据类型而定。例如,在AutoCAD 中使用 LINE 指令,要从点“ 0,0” 到“ 100,100” 画出一条直线,其指令流程是:指令:line 指定第一点: 0,0指定下一点或 复原(U): 100,100 指定下一点或 复原(U): 31机械设计如果要在 LISP/VLISP 中使用d 函数来执行一样的动作,则为:(其中d line 0,0 100,100

33、 ),line 对应 line 0,0 对应 0,0空双引号 代表 请读者理解并掌握(3)执行时,请按图d 函数的用法。2-22 所示步骤,先加载,再于AutoCAD的指令行下输入:lisp.ISP,程序执行结果如图中所示。32图 2-22 执行lisp.Isp 的结果VLISP 程序部分请按以下步骤来执行整个 VLISP 程序的编写与执行。进入 AutoCAD 2000/2000i/2002 中,选择【工具(T)】【AutoLISP(S)】【Visual LISP 编辑器(V)】选项。在“程序编辑窗口区”中输入以下的程序文本。下列每条程序前括号里的数字,如(1),(2)等,是为了方便稍后的语

34、法说明,输入。(1);o World Visual LISP Program-vlisp.lsp(2);function:draw a circle and pro World(3)(4)(defun cvlisp (/ centt radius)(5)(6)(7)(8)(9)(10)(11)(12)(13)(14)(15)(16)(setvar cmdecho 0)()(setq acadObject (vlax-get-acad-object)(setq acad(vla-get-ActiveacadObject)(setq mSpace (vla-get-MSpace acad (set

35、q pt (list 100 100 0)(setq centt (vlax-3d-popt) (setq radius 50)(vla-addcircle mSpace centt radius)(prompt (princ)o World!)分析:VLISP 的语法是涵盖 LISP 语法的。所以,仅分析其不同处。首先,第(6)行的()函数是用来加载 VLISP 所提供的“扩展 AutoLISP 函数”。这是因为33机械设计VLISP 必须通过扩展的 AutoLISP 函数来执行对 ActiveX 的支持。第(7)、(8)、(9)行将设定一些 vl 系列的变量,其功用会在第 11 章中详述。

36、第(13)行的函数将在模型空间以centt 为圆心,radius 为半径画一个圆。这条指令看来要比 AutoLISP 通过d函数的画圆语法更直接,而且执行速度也比较快!(3)执行时如图 2-22 所示,但于 AutoCAD 的指令行下输入“结果也如图 2-22 所示。vlisp”。程序的执行2.3.2Visual LISP 程序的编译部分都知道,AutoLISP 以前一直只有加密的程序(但是此程序也早已被,毫无保护功用),却无编译器(Compiler)来将原始程序编译成一个二进制的文件。现在,这个梦想已经在 Visual LISP 里实现了。AutoCAD 的编译功能可以将一个属文字文件的 V

37、isual LISP 源文件 .LSP,编译成一个文件扩展名为 .FAS 的二进制编译文件。这样的 .FAS 的编译文件就仅能被执行,而不能修改其内容。请按以下步骤来进行编译 Visual LISP 源文件的操作。请选择【工具(T)】【AutoLISP(S)】【Visual LISP 编辑器(V)】工程,并将要编译且执行已无问题的 Visual LISP 原始文件加载。选择编辑窗口里【工程(P)】【新建工程(N)】选项。并按图 2-23 所示步骤操作。34图 2-23 编译vlisp.Isp 的操作上图的步骤说明如下:步骤 1:选择要建立工程的目录步骤 2:输入工程名称步骤 3:单击【保存(S

38、)】按钮步骤 4:选择要编译的原始程序文件名,如vlisp步骤 5:单击【】按钮,随即在右边的框中选择“vlisp”字样35机械设计步骤 6:单击【编辑】菜单步骤 7:选择“优化(T)”单选项步骤 8:选择要存放编译文件的目录步骤 9:单击【确定】按钮步骤 10:单击【编辑工程 Fas】按钮来开始编译3)编译完成后,当如图 2-24 所示结果。到AutoCAD 设计院NO.6Sles 的目录下,就可以看到类似图 2-24 编译后的结果以后,为了保护您的智力件来加载执行即可。,您可以将 .LSP 文件另外存起来,而仅留下 .FAS 文o World!程序初步(VBA)2.4继上节,以一个简单的画

39、圆为例,以下用 VBA 语法来编写。36编译文件原始文件这些文件最后可以删除2.4.1VBA 程序的编写与执行部分请按以下步骤来执行整个 VBA 程序的编写与执行。请进入 AutoCAD 2000/2000i/2002 中,并选择【工具(T)】【宏(M)】【VBA管理器(V)】选项。单击【新建(N)】按钮新建一个工程。单击【Visual Basic 编辑器(V)】按钮,进入 Visual Basic 编辑窗口中。4)选择【(I)】【添加模块(M)】【属性】选项,在窗口中将模块名称 Module1修改为vba。5)选择【图 2-25 所示。(I)】【添加过程(P)】选项。加入一个名称为o 的子程

40、序。如图 2-25 编写vba.dvb 程序前的操作6)在“程序文本区”中输入以下的程序文本。37机械设计以下每条程序前括号里的数字,如(1),(2)等,是为了方便稍后的语法说明,输入。(1)o World VBA Program-vba.dvbo World(2)function:draw a circle and pr (3)(4)Option Explicit (5)Public Subo()(6)Dim centt(0 To 2) As Double (7)Dim radius As Double(8)Dim circ As AcadCircle(9)cent (10)cent(11)

41、centt(0) = 100#t(1) = 100#t(2) = 0#(12)radius = 50#(13)Set circ = ThisDrawing.M (14)ThisDrawing.Utility.Prompt (15)End SubSpace.AddCircle(centt, radius)o World!分析:首先,第(1)、(2)行的批注语法,与 LISP/VLISP 稍有不同。VBA 的批注行语法符号是一个单引号。第(4)行表示要强制对模块中的所有变量进行明确,否则编译器会报错。从第 5 行起将开始一个名为o 的公用程序(子程序)。第 6 到第 8 行的语法是用来坐标点、半径

42、等变量名称。第 9 到 12 行的语法则用来赋予点与半径值给对应的变量名称。第 13 行是 VBA 执行画圆的语法。第 14 行则是在 AutoCAD 指令行上打印“o World!”字样。第(15)行是结束o 公用程序(子程序)的固定语法。(7)执行时,如果您还在程序编写的编辑窗口内,按【F5】键,单击【执行(R)】按钮,即可执行此程序。如果您已经跳出,则请按图 2-22 所示,执行【工具(T)】【加载应用程序(L)】选项来加载,只是要选取的文件名是图 2-26 所示步骤键入。vba.dvb。然后,在指令提区按“ 船到桥头自然直” 的说法不能用于人生阶段性的生涯规划中。在人生中,38如果不能

43、预期或认真规划数年后的生涯,那么“没有料到” 、“悔不当初”或“不知所措”等形容用语将终生跟随。图 2-26vba.dvb 程序的执行2.4.2VBA 程序的加密部分由于 VBA 程序必须在 AutoCAD 里进行,所以为了程序的安全,请使用本节所述的方式来加密保护您的 VBA 程序。承上一节范例,请按下述步骤操作。请进入 AutoCAD 2000/2000i/2002 里。2)选择【工具(T)】【宏(M)】【VBA 管理器(V)】选择项,随即出现如图2-27 所示界面。请按图例中所示步骤操作。39机械设计“ 有所求才去做” 是人一生中为了生存最无奈的事,有很多的烦恼、计较与不满足都因此而起。

44、事实证明,将这种“ 为自己” 的心态降得愈低,在精神层面就会过得乐富足。所以,在此鼓励人们要多做无求且默默付出的善事,有机会的时候,大家应该多参与各类公益活动。40图 2-27vba.dvb 程序的加密操作3)这样,当您下一次还要编辑这个 VBA 的原始程序时,就会出现一个询问您的窗口。此时,您必须正确回答后,才能进入编辑窗口内见到程序文本!41机械设计2.5重要的环境设定练习过简单程序的进入、编写、执行与后续的编译或加密等完整的流程后,还要再加入本节所告诉您的重要系统环境设定才算完整。这个设定就是搜索路径的设定。还记得以前在 DOS 版的时代里,要进入 AutoCAD 以前都要执行一批处理文

45、件吗?此批处理文件内将执行:SET ACAD=.SET ACADDRV=.SET ACADCFG=.这类环境变量设定文件搜索,到了 Windows 版的 AutoCAD R14 问世后,这些设定仍然是有必要设定的;否则,AutoCAD 怎么会知道所有的 AutoLISP/VLISP/VBA 文件范例、图块文件范例或菜单文件都放在哪里呢?请按下述步骤来执行这些文件搜索路径的设定。1)在 AutoCAD令提示符后键入指令“CONFIG”后按【Enter】键,将出现如图2-28 所示的窗口。此界面就是单击窗口左上角的【文件】按钮后将出现的窗口。图 2-28 环境选项设定窗口422)现在,要设定的是本

46、书范例文件所在的搜索路径。请单击“支持文件搜索路径”名称前的【】符号,再按图 2-29 所示步骤操作。图 2-29 设定本书范例所在的搜索路径刚开始,您的窗口里可能只有前面的几个预设的 AutoCAD路径。须将放置工作文件的目录于此;这样,AutoCAD 才会知道要到这些目录里来找。如图 2-29所示,要加入的目录路径应该是:AutoCAD 设计院NO.6Sles。操作的方法是:单击窗口右边的【添加(D)】按钮,然后,再直接键入路径或单击【浏览(B)】按钮来选取路径输入均可。其他的设定依默认值即可。如您还有其他的目录需要设定搜索路径,则请自行设定。2.6程序里的路径指向问题解决方案设定文件搜索

47、路径是针对文件,但是还有一个很重要:即以后在程序安装的路径可能不同,但是否可以在程序中将指向文件的路径写法简化到只要指定文件名即可,而不需大费周折地指定完整路径?43于随后出现的窗口中指定文件所在的目录径机械设计例:加载某个 tofun.fas 文件,如果其路径已加入 AutoCAD 的“工作文件支持搜索路径”,只要简单地使用(load “tofun.fas”)即可。但如果安装后路径没有加入 AutoCAD 的“工作文件支持搜索路径”,而且一般的安装也都是这样,那么应该如何解决呢?在 AutoLISP/VLISP 方面,也跟着以下的步骤来做。执行以下的步骤来解决处理这个问题。建议您1)Auto

48、LISP/VLISP 并没有提供解决这个问题的适当功能,所以须使用其他的方式来处理。于是想了一个办法:在一个文字文件中写下要取得文件的路径,然后想办法让一个 LISP 程序能够这个路径并将此路径到一个变量中。这样就能将这个字符串变量来与要存取的文件名称结合,而形成完整路径。同时,当变换欲存取文件所在的目录时,只要再到此文字文件中改变路径内容即可。2)此时,这个文字文件可以随意命名,但它称为:dragon.cfg,并将它放在盘的根目录上。这是因为每一台计算机一定会有盘。此文件内容如图 2-30 所示。D:AutoCADNO.6Sles图 2-30 dragon.cfg 文件的内容3)那么,现在有哪一个 LISP 文件最适合来这个文件呢?都知道:在AutoCADAutoCAD的 LISP 文件就称为 ACAD2000.LSP。所以里,一进入就会自动就到的系统目录SUPPORT 目录中找到这个文件,并在此文件的尾端编写三条程序(本范例以 AutoCAD 2000i 版的ACAD2000.LSP 文件为例),如图 2-31 所示。图 2-31 在ACAD2000.LSP 文件中增加三条程序44这条三条程序是要打开 dragon cfg文字文件,并将撷取自文本文件的径字符 到全局变*fn*

温馨提示

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

评论

0/150

提交评论