CAD二次开发技术课件(一、二)ppt.ppt_第1页
CAD二次开发技术课件(一、二)ppt.ppt_第2页
CAD二次开发技术课件(一、二)ppt.ppt_第3页
CAD二次开发技术课件(一、二)ppt.ppt_第4页
CAD二次开发技术课件(一、二)ppt.ppt_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

河南工业大学机电工程学院 CAD二次开发技术 授课 韩莉莉 本课程要学习的内容 第1章AutoCAD及其二次开发工具简介第2章AutoLISP基本函数和绘图功能第3章AutoLISP分支函数与循环结构第4章AutoLISP输入输出函数和图形数据库第5章AutoLISP对话框设计技术 1 1AutoCAD简介 1 2AutoCAD二次开发 1 3AutoCAD二次开发工具简介 1 4AutoLISP语言概述 第1章AutoCAD及其二次开发工具简介 1 1AutoCAD简介 AutoCAD是美国Autodesk公司开发的通用CAD软件 1982年首次推出了AutoCADR1 0版本 经过不断的版本更新 现最新的是AutoCAD2011版本 AutoCAD是目前微机上应用最为广泛的通用交互式计算机辅助绘图与设计软件包 AutoCAD的强大生命力在于它的通用性 多种工业标准和开放的体系结构 用AutoCAD绘图速度更快 精度更高 而且便于个性 它已经在航空航天 造船 建筑 机械 电子 化工 美工 轻纺等很多领域得到了广泛应用 并取得了丰硕的成果和巨大的经济效益 AutoCAD软件具有如下特点 1 具有完善的图形绘制功能 2 有强大的图形编辑功能 3 可以采用多种方式进行二次开发或用户定制 4 可以进行多种图形格式的转换 具有较强的数据交换能力 5 支持多种硬件设备 6 支持多种操作平台 7 具有通用性 易用性 适用于各类用户 1 1AutoCAD简介 为了适用于各种产品的设计需求 多数CAD软件的功能都具有很高的通用性 但由于针对性不强 用户需求与CAD系统规模之间的矛盾日益增加 存在设计效率不高的问题 在CAD软件平台上 结合具体的应用需求 总结行业的设计知识和经验 开发面向行业和设计流程的CAD系统 这就是所谓CAD二次开发 AutoCAD的开放体系结构 允许用户采用高级编程语言对其进行扩充和修改 Autodesk公司自AutoCADv2 18版至AutoCAD2000的短短十几年间 就相继推出了三代二次开发工具 1 2AutoCAD二次开发 AutoLISPAutoLISP是1986年随AutoCADv2 18提供的二次开发工具 它是嵌入AutoCAD内部的一种人工智能语言 使用AutoLISP可调用几乎所有的AutoCAD命令 AutoLISP语言最典型的应用之一是实现参数化绘图程序设计 包括尺寸驱动程序和鼠标拖动程序等 另一个典型应用就是驱动AutoCAD提供PDB模块构成DCL文件 创建自己的对话框 AutoLISP适合于有能力的终端用户完成一些自己的开发任务 1 3AutoCAD二次开发工具简介 VisualLISP VLISP VLISP是AutoLISP的换代产品 与AutoLISP完全兼容 并提供它所有的功能 是新一代的AutoCADLISP语言 VLISP对语言进行了扩展 可以通过MicrosoftActiveXAutomation接口与对象交互 作为开发工具 VLISP提供了一个完整的集成开发环境 IDE 包括编译器 调试器和其他工具 可以提高二次开发的效率 1 3AutoCAD二次开发工具简介 VBAVBA是2000版本后具备的功能 它通过AutoCADActiveXAutomation接口对AutoCAD进行编程控制 是一个引入了对象的设计环境 为用户提供类似VisualBasic语言所拥有的功能 可以执行并存取AutoCAD环境的所有资源 适合编写中型的数据库类的CAD软件 1 3AutoCAD二次开发工具简介 ActiveXAutomation是微软公司推出的一个技术标准 其作用是在Windows系统的统一管理下协调不同的应用程序 允许应用程序之间相互控制 相互调用 AutoCADActiveX技术提供了一种机制 可使编程者通过编程手段从AutoCAD的内部或外部来操纵AutoCAD ActiveX是由一系列的对象组成 每一个对象代表了AutoCAD中一个明确的功能 如绘制图形对象 定义块和属性等等 ActiveX所具备的绝大多数AutoCAD功能 均以方法和属性的方式被封装在ActiveX对象中 只要使用某种方式 使ActiveX对象得以 暴露 那么就可以使用各种面向对象编程的语言对其中的方法 属性进行引用 从而达到对AutoCAD实现编程的目的 ARXObjectARX是AutoDesk公司针对AutoCAD平台上的二次开发而推出的一个开发软件包 它提供了以C 为基础的面向对象的开发环境及应用程序接口 能真正快速的访问AutoCAD图形数据库 ObjectARX应用程序是一个DLL 动态链接库 共享AutoCAD的地址空间 对AutoCAD进行直接函数调用 所以 使用ARX编程的函数的执行速度得以大大提高 ARX类库采用了标准的C 类库的封装形式 这也大大提高了程序员编程的可靠度和效率 由于是在Windows及VC 编程环境里运行 所以 对开发者的编程能力要求较高 1 3AutoCAD二次开发工具简介 LISP ListProcessingLanguage 是一种计算机的表处理语言 是在人工智能学科领域广泛应用的一种程序设计语言 AutoLISP语言是嵌套于AutoCAD内部 将LISP语言与AutoCAD有机结合的产物 使用AutoLISP可直接调用几乎所有的AutoCAD命令 AutoLISP语言既具备一般高级语言的基本功能 又具有一般高级语言所没有的强大的图形处理功能 是当今世界上CAD软件中被广泛应用的语言之一 AutoLISP程序设计较简单易懂 易于掌握 适合于有能力的终端用户完成一些自己的开发任务 VisualLISP是AutoLISP的换代产品 与AutoLISP完全兼容 并提供它所有的功能 是新一代的AutoCADLISP语言 VLISP对语言进行了扩展 可以通过MicrosoftActiveXAutomation接口与对象交互 1 4AutoLISP语言概述 一 AutoLISP的数据类型 整数 2147483648到 2147483648 实数 1 797693 10308到 1 797693 10308 符号 包括除 以外的任何打印字符 长度没有限制 大小写等价 字符串 包含在一对双引号内的一组字符包括任何可以打印的字符 区别大小写 最大长度为100个字符 100以后的字符无效 没有任何字符的字符串为空串 1 4AutoLISP语言概述 常用术语 符号 来指储存静态数据的一个符号名 如内建式函数和自定义函数 常用术语 变量 来指存储程序数据的符号名 只有当前类型没有固定类型 字母开头 不用内部函数名和保留字符 如 pi pause T nil等等 AutoLISP的变量不需要事先定义 每一个变量都要消耗少量内存 故当变量值不再有用时重复使用变量名或将变量设置成nil是良好的程序设计习惯 其值保持不变的变量称为常量 如 Pi 整数 实数 符号 字符串在AutoLISP语言中称为原子 原子包括 数字原子 符号原子和串原子 表 放在一对相匹配的左右括号内的一个或多个元素的集合 元素间用空格分开 有标准表和引用表两种类型 一 AutoLISP的数据类型 1 4AutoLISP语言概述 表有标准表和引用表两种类型 AutoLISP程序就是用标准表来表示的 引用表用作数据处理 相当于其它高级语言的数组 提供了保存各种数据的有效方法 引用表中的每一个元素可以是数字 符号 字符串 也可以是表 表可以嵌套 如 231 5Adfg 程序 20 030 00 0 仅有两个元素 并用 分开表称为点对 点对常用于构造连接表 原子和表是AutoLISP最基本的数据 总称为符号表达式 S 表达式 表有标准表和引用表两种类型 AutoLISP程序就是用标准表来表示的 引用表用作数据处理 相当于其它高级语言的数组 提供了保存各种数据的有效方法 引用表中的每一个元素可以是数字 符号 字符串 也可以是表 表可以嵌套 如 231 5Adfg 程序 20 030 00 0 仅有两个元素 并用 分开表称为点对 点对常用于构造连接表 文件描述符 打开文件时的返回值 相当于其它语言的文件号 用于数据的存取 选择集 选择集是一个或多个对象的集合 实体名 图元名 是AutoCAD系统在绘图过程中赋予所绘对象的一个数字标号 确切地说 它是指向一个AutoCAD系统内部数据文件的指针 利用图元名 AutoLISP可以查找到图形对象的数据库记录 并对其进行各种方式的处理 一 AutoLISP的数据类型 1 4AutoLISP语言概述 AutoLISP语言中的一切设计成份都是以函数的形式给出的 它没有语句的概念或其它语法结构 执行程序就是执行函数 再调用函数 学习掌握AutoLISP语言 核心就是要掌握它的函数 学习AutoLISP函数要掌握的基本内容 1 调用格式 即函数名 函数要求的参数个数和类型 2 功能 即该函数的作用 它对其参数如何进行处理 3 求值情况 即哪些参数被求值 哪些不被求值 4 求值结果的返回值类型 二 AutoLISP的函数 1 4AutoLISP语言概述 这一点很重要 因为大多数函数的返回值都要被其它函数接受 而每个函数所需要参数都有特定的类型 因此只有搞清被调用函数的返回值的类型 才不会因用错函数的参数而导致错误 AutoLISP程序是由一系列按顺序排列的标准表组成 每个标准表的第一个元素均为系统或用户定义的函数 其后的各元素为该函数的参数 如 setqx25 0 setqy25 0 xy x AutoLISP的程序的书写格式 所有括号必须左右匹配 阅读AutoLISP程序时 按从左到右的规则进行 函数必须放在表中的第一个元素位置 一个表可以占多行 一行也可以写多个表 AutoLISP用 作注释 AutoLISP是以扩展名为 lsp 的ASCII码文本文件的形式存储 三 AutoLISP的程序 setqx25 0 setqx25 0 setqy25 0 xy 1 4AutoLISP语言概述 程序编辑 AutoLISP程序是纯文本文件 可以用任意一种ASCII码文本编辑器 如记事本 来进行编辑 编辑后以扩展名为 lsp 进行保存 使用VisualLISP编程环境 打开AutoCAD2000及以上版本 点击 工具 菜单下AutoLISP S 菜单项中的VisualLISP编辑器 V 进入VisualLISP编程环境 程序运行 将编辑好的程序 加载后 在AutoCAD的命令行Command下输入函数名即可运行 四 编辑和运行AutoLISP的程序 1 4AutoLISP语言概述 2 1AutoLISP的基本函数 2 2AutoLISP绘图功能 第2章AutoLISP基本函数和绘图功能 2 1AutoLISP基本函数 一 数值函数 1 数值运算函数加 减 乘 除 注意防止除数为零 如 25 49 求最大数 max 求最小数 min 求平方根 sqrt 求幂次方 expt 求绝对值 abs 2020 3 17 20 可编辑 2 1AutoLISP基本函数 一 数值函数 2 三角函数正弦函数 sin 用弧度表示余弦函数 cos 用弧度表示反正切函数 atan 若没有提供 atan返回的反正切值 单位为弧度 返回角度范围为 到 若提供了 则返回 的反正切值 单位为弧度 若为0 则返回值的符号同 其值为1 570796 90 2 1AutoLISP基本函数 一 数值函数 3 数的类型转换函数取整函数 fix 截去的小数部分 将转换为整型数 实型化函数 float 将转换为实型数 2 1AutoLISP基本函数 二 符号与函数处理函数 1 赋值函数 setq setq函数返回值是最后一个表达式的赋值结果 AutoLISP程序中作为参数的任何符号都必须先赋值 setq函数的求值结果很重要 常作为其它函数的参数 不使用系统内部函数作为变量查看变量的值 在AutoCAD的Command下可在变量前加 在控制台下直接输入变量 回车 2 禁止求值函数 quote 也可简写成 禁止对表达式求值 返回 表达式 本身 2 1AutoLISP基本函数 二 符号与函数处理函数 3 定义用户函数的函数 defun 函数名 就是用户所定义的函数名 它必须是符号原子 形参表 每个参数都是符号原子 由用 隔开的形参和局部变量组成 它可以是空表 只有形参 只有局部变量或形参和局部变量都有 表达式 可以是一个或多个 在函数调用时对它们进行求值 利用defun可以为AutoCAD增加命令 defunC XXX 2 1AutoLISP基本函数 二 符号与函数处理函数 3 定义用户函数的函数 defun函数的调用是对已定义的函数的调用 其调用格式为 函数名 实参表 实参表 中实参的个数与位置 要与函数定义的 形参表 中形实参的个数与位置逐一对应 Defun函数的返回值是所定义函数的函数名 执行完defun定义的函数 局部变量将被释放掉 全局变量可由任何函数访问和修改 或在任一表达式中使用 局部变量仅在定义它的函数求值期间 函数调用期间 有意义 2 1AutoLISP基本函数 三 表处理函数 1 提取表中数据的函数 car 提取表中第一个元素 cdr 提取表中除第一个元素以外的所有元素组成表 nth 提取表中第n个元素 n 0 1 2 last 提取表中顶层的最后一个元素 AutoLISP接受car和cdr的任意组合 如 cadar 等效于 car cdr car 2 1AutoLISP基本函数 三 表处理函数 2 构造和修改表的函数 list 构造表 将任意数目的表达式的求值结果串在一起 并返回它们组成的表 append 构造表 将所有中的元素串联在一起 构成一个新表 cons 构造表 将 新的第一个元素 加入 表 返回加入元素后的表 若 表 为原子 则构造一个点对表 reverse 构造表 将中的顶层元素倒排 构成一个新表 2 1AutoLISP基本函数 三 表处理函数 3 提取并修改表中数据的函数 assoc 连接表又称 表 它是以点对或子表为元素组成的表 每个点对和子表的第一个元素称为关键字 函数assoc搜索 连接表 以找到此表中的关键字 并提取包含关键字的子表 并返回该子表 若未找到关键字 则返回nil subst 函数subst从 表 搜索 旧项 将表中的每一个 旧项 用 新项 替换 并返回替换后的表 若未在 表 中找到 旧项 则返回没有更改的表 2 1AutoLISP基本函数 三 表处理函数 4 表循环处理函数 foreach 该函数循环地将 表 中每一个顶层元素赋给 符号原子 再对循环体中的每一个表达式求值 并返回最后一次循环时循环体中最后一个表达式的求值结果 mapcar 该函数依次循环地把 表1 表2 表n 的元素赋给 函数名 所指函数的相应参数 并调用此函数进行求值 把每次循环的求值结果按求值顺序构成一个表 作为mapcar函数的返回值 2 1AutoLISP基本函数 四 字符串处理函数 1 数串互换函数 itoa 该函数将整数转换成整数字符串 返回字符串 atoi 该函数将数字字符串转换成整数 返回整数 atof 该函数将数字字符串转换成实型数 返回实型数 2 1AutoLISP基本函数 四 字符串处理函数 1 数串互换函数 rtos 该函数该函数根据和 将转换成相应的字符串 其中和都为整数 的值的意义 1科学计数格式2十进制格式3工程计数格式4建筑计数格式5任选的分数单位 保留小数点后几位 2 1AutoLISP基本函数 四 字符串处理函数 2 字符串处理函数 strcat 该函数将 按顺序头尾相连组成一个新的字符串 并返回这个新字符串 substr 该函数从中截取一个子字符串并返回 其中和变量都必须是正整数 strlen 该函数求中字符的个数 含空格 并返回 2 2AutoLISP的绘图功能 一 GET类输入函数 GET类 屏幕 输入函数的通用格式 getXXX XXX intrealstringpointdistangle getint 从提示行输入一整型数 getreal 从提示行输入一实型数 getstring 从提示行输入一字符串 getpoint 从提示行输入一个点或在屏幕上用鼠标输一个点 getdist 从提示行输入一个实型或整型值 距离值 或从屏幕上输入两点而决定距离 getangle 从提示行输入一个角度值或基于从屏幕上选取的点决定角度值 2 2AutoLISP的绘图功能 二 Command函数 1 Command函数的格式 Command 参数 格式取决于所执行的AutoCAD命令及其所需要的数据类型 即command函数中所调用的 参数 类型 个数 与顺序均要和AutoCAD命令严格对应 AutoCAD的命令 子命令和选择项要用不含空格的字符串表示 大小写均可 数字常量 整数或实型数 可写成数本身也可写成字符串形式点常量有两种表示方法 一是用表的形式 如 10 025 0 二是用字符串中的数据表示如 10 0 25 0 command函数调用参数中的空串 等效于在键盘上按一次空格键 command函数调用的参数 如数字 点也可为表达式 但表达式求值结果的数据类型要和AutoCAD命令的要求一致 command函数可以不带任何参数 相当于在键盘上按一次Ctrl C AutoLISP具有强大的绘图编辑功能 主要是由于它提供了一个系统内部函数Command函数 利用Command函数可以非常方便地调用几乎全部AutoCAD命令 以完成各种工程图形的绘制功能 2 2AutoLISP的绘图功能 二 Command函数 2 Command函数的功能Command函数的功能

温馨提示

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

评论

0/150

提交评论