haihongyuan.com
海量文库 文档专家
全站搜索:
您现在的位置:首页 > 幼儿教育 > 幼儿读物幼儿读物

Autolisp

发布时间:2013-09-23 17:01:31  

第八章

二维几何建模方法

第八章
? ? ?

二维几何建模方法

8.1 交互几何建模 8.2 参数化几何建模 8.3Auto lisp语言简介

8.1

交互几何建模

8.1.1 AutoCAD简介 AutoCAD是美国AutoDesk公司与1982年 12月开始推出的一种通用的微机辅助设计 和设计软件包,是目前应用最普遍的交互 式图形软件。从AutoCAD V1.0起,经 AutoCAD V2.0、R9、R10等经典版本的 变更,至目前AutoCAD R12、R13、R14 和2000、2002版,其功能越来越强。它实 际上已经成为一种微机CAD系统的标准、 工程设计人员之间交流思想的公共语言。

一、显著特点
1.

2. 3.

4.

5.

能够在绝大多数微机和工作站上运行,功能 强大。 具有使用方便的用户界面(图形窗口界面)。 具有开放的体系结构,便于用户二次开发。 可通过标准的或专用的数据格式与其它CAD 系统进行图形信息交换。 软件易学易用,可适用于各种层次的用户。

二、AutoCAD运行环境
?

2000版要求的硬件环境:
?

? ? ? ? ?

主机:CPU主频为133以上的奔腾机,内存为 32MB以上; 硬盘:至少有100MB的剩余空间; 显示器:VSG、SVGA彩显; 软驱:1.44MB; 键盘:101键; 输入输出设备:鼠标、绘图仪、打印机等。 Windows 95、98、2000或WinNT。

?

2000版要求的软件环境:
?

三、用户界面
标题栏 下拉菜单 工具栏 屏幕 菜单 区







命令窗口(命令提示区) 状态栏

用户界面(续)
1.

用鼠标和多种菜单与AutoCAD对话 屏幕菜单、下拉菜单、弹出式菜单(即快捷菜 单)、图标菜单等 ;

2.

用键盘和AutoCAD对话; 用鼠标和对话框与AutoCAD对话。

3.

四、基本概念
? ?

?

?
? ?

实体(entity):即点、直线、圆、圆弧、文本等 图形元素。 图形单位:图形未输出时,图形的长度单位可看成 抽象的(如可看成mm、cm、inch等),输出时要 设置单位和比例。用UNITS命令可以设置长度或角 度的单位制和精度。 作图范围:是通过左下、右上两个角点的坐标所确定 的矩形区域。用LIMITS命令可以设置作图范围或设 置绘图界限的开关。 坐标系 图层 模型空间和图纸空间

坐标系
?

?

?

世界坐标系( W C S):AutoCAD采用笛卡 尔右手坐标系。世界坐标系 W C S 的重要之 处在于,它总是存在于每一个设计的图形之中, 并且不可更改。 用户坐标系( U C S ):相对于世界坐标系 W C S ,可以创建无限多的坐标系,这些坐 标系通常称为用户坐标系( U C S ),并且 可以通过调用 U C S 命令去创建用户坐标系。 坐标系图标:显示在屏幕左下角,便于了解当 前坐标系的种类或状态。

图层

模型空间和图纸空间

五、基本操作
1. 2. 3. 4. 5. 6.

7.

命令输入方式 点输入方式 点

的四种坐标表示法 增强的鼠标右键 图形显示操作 取消操作命令 常用功能键

1、四种命令输入方式

2、点的输入方式

3、点的四种坐标表示法

4、增强的鼠标右键

4、增强的鼠标右键

4、增强的鼠标右键

4、增强的鼠标右键

5、图形显示操作

6、取消操作命令

常用功能键

六、图形生成功能
?

?

?

生成简单实体 POINT(点)、LINE(直线)、CIRCLE (圆)、ARC(弧)、TRACE(轨迹线)和 SOLID(区域填充)、文本等; 生成复杂的实体 PLINE(多义线)、ELLIPSE(椭圆)、 POLYGON(正多边形)、DONUT(圆环)、 TEXT(文本)和MTEXT(多行文本)等; 绘制剖面符号、标注尺寸等。

图形生成功能(续)
?

?

?

生成三维表面 3DPOLY三维多义线、3DMESH三维多边形 网格、TABSURF柱面、RULESURF直纹曲 面、REVSURF回转面等; 生成三维实体 SOLBOX长方体、SOLCYL圆柱体和 SOLCONE圆锥体等; BLOCK命令定义块,INSERT命令插入块; 用形文件定义形,用SHAPE命令调用形.

七、图形编辑和查询功能
1.

通过DBLIST、LIST、AREA、DIST、ID等 命令了解实体数据、或光标的位置; 通过ERASE、MOVE、COPY、SCALE、 ROTATE、MIRROR、ARRAY、CHANGE、 BREAK、TRIM、EXTEND、STRETCH、 FIILET、CHAMFER、OFFSET、 EXPLODE、PEDIT等命令对实体进行编辑;

2.

图形编辑和查询功能(续)
3.

可通过SOLINT(交)、SOLUNION(并)、 SOLSUB(差)、SOLCUT(切)命令对三 维形体进行布尔运算,构造复杂形体。

4.

通过MOVE(移动)、SOLCHP(修改) SOLFILL(倒圆角)、SOLCHAM(倒棱 边)、SOLSEP(坼散)命令修改三维形体 形体。

八、辅助作图功能
1.

2.

3.

4.

通过UCS命令确定用户坐标系,并自动实现 用户坐标系向世界坐标系变换; 通过MVIEW或VIEWPORTS确定视窗数量、 大小和位置; 通过ZOOM、PAN、VIEW命令确定显示范 围、大小和位置; 通过VPOINT、PLAN 和DVIEW命令确定用 户的观察方向;

辅助作图功能(续)
5.

6.

通过LAYER(图层)、COLOR(颜色)、 LINETYPE(线型)等命令确定实体的非几 何信息; 通过SNAP(捕捉)、OSNAP(目标捕捉)、 GRID(栅格)、ORTHO(正交)等命令设 置更好的工作环境,可以用较少的时间绘制 出更高精度的图形。

九、扩充或开发AutoCAD的多种途径
1.

利用块、形建立图形库或符号库; 提供SCRIPT命令,可读入一文

RX等 开发工具对AutoCAD进行二次开发。

5.

6.

8.1.2 图形交互技术
1、交互任务
交互任务是交互式图形系统要解决的主要问 题。在作图过程中遇到了大量的交互现象, 尽管它们的形式和内容多种多样,但都可以 分解为下列4种基本交互任务: 定位:为图形系统指定一个点的坐标。 选择:从一个表中选出某一项。 数值:输入一个数,如半径值、文本高度等.

? ? ?

?

文本值:输入一个字符串。

2、交互设备
?

?

能够完成上面交互任务的设备即为交互设 备。 图形核心系统GKS定义六类逻辑设备: 1)定位(Locator):得到一个位置(坐标) 2)笔划(Stroke):得到一组位置。 3)定值(Valuator):得到一个数值。

4)选择(Choice):从一组可能选择的对象 中选择一个,得到一个非负整数。 5)拾取(Pick):得到一个图段、标识或状态 值。 6)字符串(String):得到一个字符串。 与这六类逻辑设备对应的物理设备: 鼠标、旋钮、按钮、光标、键盘、触笔、数字 化仪等。
?

3、交互方式

逻辑输入设备的交互作用是一个进程, 可以认为是在应用程序和输入进程之间 发生的。任一逻辑设备都有四种操作方 式,操作方式决定了输入数据的接收方 法和应用程序获得数据的方法。

1)

请求方式
应用程序与输入进程交替工作。应用程序 请求输入,等待回答,输入进程启动,向应 用程序传递数据。如:
?
? ?

Command:SETVAR Variable name or ?:MIRRTEXT New Value for MIRRTEXT<1>:0

2)

采样方式 应用程序与输入进程同时工作,应用 程序处于支配作用。如SKETCH命令徒手 画线时,鼠标移动,立即在屏幕上就有 一波浪线在不断增长,使用户立即见到 效果,具有动态响应能力。

3)

事件方式(如鼠标事或键盘事件)

应用程序与输入进程同时工作,输入进程 处于支配作用。输入进程向应用程序传递数 据并期待应用程序按所接收的数据工作。
4)

混合方式

混合方式在交互图形系统中最常见,如在 “Command:”状态下可直接键入命令,也可点 菜单,菜单还可以是屏幕菜单、下拉菜单、 图标菜单或数字化仪菜单。

4、交互控制技术
?

动态作图技术:动态方式作图可以使用户随 时都能看到将要得到的图形形状、大小和位 置,以便做出决策。如交互图形系统中常见 的橡皮筋。

?图形拖动技术:
?

交互图形系统中某些命令,如Move、 Copy 、Scale 、Rotate 、Mirror等,在选 中待编辑实体后它们的位置和大小将随光标 移动而变化,这就是图形拖动现象。 它的原理是,首先获取被选中这些实体 的图形信息,包括它们的几何数据和颜色、 线型等非几何数据,然后不断重复删除原有 位

置上的这些实体,在新位置上生成这些实 体。

◆约束技术:

1)网格约束
将光标限制在格点上。

SNAP(捕捉)命令可设置约束网格。 2)约束橡皮筋的方向 如当ORTHO正交命令为ON时可控制橡皮筋为水平 或垂直方向。 3)将光标约束到实体的某些特殊点上 用目标捕捉命令OSNAP,特殊点有端点、中点、交 点、切点、垂点等。

8.2 参数化几何建模 一、参数法图形程序设计的特点
在机械图中,象键、销、螺钉、螺母、 滚动轴承等标准件,其形状是相似的,因 此它们的二维视图也很相似,所以常采用 参数化编程方式来绘图。 参数化绘图:将图形中的某些尺寸或全部 尺寸定义为变量,在画几何形状类似的图 形时给变量赋以新值,就可以得到大小不 同的图形。参数化绘图主要是确定基本参

数和参数化处理。

参数化绘图特点: 1、在参数化程序方式下,用户无需逐步绘 图,只需输入一些参数即可。 2、参数化绘图减少了用户输入数据的数量, 提高了作图精度和作图效率。 3、可以解决用交互方式难以绘制的图形。

二、参数法编程步骤与方法 1、确定参数
1)对抽象的几何图形,可用尺寸标注作为图形参数。 2)机械图中的图形表示具体的零件或结构,因此参数 的名称和定义应尽量结合工程实际,如普通平键的 R R 图形参数为:
L L

a) 不好

b) 好

3)优先考虑描述零件规格、性能的参数作为图形 参数。如:螺钉外径、滚动轴承内径、用齿轮的模 数、齿数和变位系数代替分度圆和齿顶圆直径等。

4)为便于用户操作,参数的数量应尽量少。

方法:①利用规格尺寸,从文件或数据库中 检索出其它尺寸数据;(如P180表8-1中 开槽圆柱头螺钉可由D和 L查其它参数) ②在不影响零件表达情况下,图形的某些部 分采用简化画法,使其参数间建立一定关 系,从而可省去一些参数。(如P180的 图8-27螺栓的简化画法)

2、通过已确定参数确定构成图形的各个实体 的几何参数 3、调用图形函数或图形命令绘制图形 如:用Autolisp语言绘制

8.5 Autolisp语言简介
Autolisp语言是嵌入AutoCAD软件包的 LISP(Lisp processing language)编程语言, 它是一种符号处理语言,又称函数型的语言, 它没有语句,程序就是表。每个函数都是以表 的形式书写的,它可以交互执行,也可写成程 序。程序存贮是ASCII码,属于文本编辑文件。 一、数据类型 Autolisp语言数据类型有数值型(整型、 实型)、字符型、表(图括号内的单元)等。

二、语法规则

(函数名┕┘参数1┕┘参数2┕┘…)

三、常用函数
1.赋值setq (setq x 5) 量x (setq x (+ 值给变量x ;将数字5赋值给变

3

5))

;将数字8赋

2.算

术函数:+、-、*、/ ? (- 10 2 3) ;即10-2-3 ? (/ <被除数> <除数> <除数> …) ? (1+ <数>) ;加1 ? (1- <数>) ; 减1

3.三角函数sin 、cos等
?
? ?

(sin <弧度>) (cos <弧度>) (atan <数1> [<数2>]) ;<数2> 为可选项,若没有<数2>,则返回<数1>的反正 切值,否则返回<数1>/<数2>的反正切值。

4.常用数学函数

?
? ?

?

? ?

(ABS <数>) ;求<数>的绝对值 (exp <数>) ;返回e的<数>)次方值 (expt <底数> <幂>) ;返回<底数>的<幂 >)次方值 (log <数>) ;返回以e为底<数>)的对 数 (sqrt <数>) ;返回数d的平方根 (fix <数>) ;返回数的整型数

常用数学函数(续)

(float <数>) ;返回数的实型数 ? (max <数1> <数2> …) ;求最大值 ? (distance <点1> <点2> ) ;返回两点 间距离 如: (distance ?(1.0 2.5) ?(7.7 2.5)) ;返回两点间距离6.7 ? (angle <点1> <点2>) ;返回通过点1的 水平线与两点连线的夹角(弧度)
?

(polar <已知点> <弧度> <距离>) ;返回一个点的 坐标。 如: (setq p2 (polar p1 1.57 10) ) ;根据P1点求P2 点,如下图所示:
?

p2 p1

10

注:表的第一个元素必须是函数名,若是数值,则在 括号前应带有单撇号“ ’ ”。 如:’(1.0 2.5)表示坐标(1.0, 2.5)

5.输入函数 ? (getpoint [提示符]);该函数是暂停下来 等待用户输入一点坐标。 例 :(Setq pt (getpoint “\n 请 输 入 点 坐 标:”)) ;运行后,屏幕将显示“ 请输入点 坐标:” ? (getreal [提示符]) ;等待用户输入一 实型数 ? (getint [提示符]) ;等待用户输入一 整型数 如:(setq d (getdist p0 “\n 轴径:”)); 交互输入轴径值。

?

?

?

(getstring [提示符]) ;等待用户输入一字 符串 (getdist [已知点] [提示符]) ;等待用户 输入一距离值。 (getangle [已知点] [提示符]) ;等待用户 输入一角度值,并返回其弧度。

6.调用AutoCAD命令函数
(Command “命令名” 参数…) 如:(command “circle” “3p” ’(3 4) ’(4 7) ’(1 5)) ;调三点画圆命令。
?

(command “line” p1 p2 p3 p4 “c ”)

;调画线命令。

(command “arc” p1 “c” p0 p2)

;调画弧命令。

p2

p1
p3 画线

p2

p4

p0

画弧

p1

格式: (defun
)

7.自定义函数defun
<函数名> (<参数1> <参数2> …) <表达式> …

1) (defun abc( ) … ) ;无参数 2) (defun abc(x y) … ) ;x ,y 为函数abc的参数(自变量)

3) (defun abc(x y / u v w)


) ;x ,y 为函数abc的参数(自变量),u,v,w 为局部变量

例如:为x2+y2定义函数如下: (defun add (x y) (+ (* x x) (* y y)) ) 其中,add是函数名,x,y是参数,在调用时给 值,表达式是具体操作。其调用方法如下: Command:(add 2 5) ;

8.定义命令函数
格式: (defun c:<函数名> ( ) <表达式> … ) ;在自定义函数前加C: 例如:为AutoCAD增加一个画正方形命令

(defun c:abcd() (setq

p1 (getpoint "\n左下角点:") ) (setq L (getreal "\n边长:") ) (setq p2 (polar p1 0.0 L) )

p4

p3

p1

p2

(setq p3 (polar p2 1.57 L) )
(setq p4 (polar p1 1.57 L) ) (command "line" p1 p2 p3 p4 "c") )

9.表处理函数
? ?

?

?
?

1)取表中第i个元素的函数: (nth i <表>) 若表中有n个元素,则i取值范围[0,n-1],若 I<0 或I>n-1 ,则函数返回NIL。 如: (nth 0 ?(x y z) ;提取元素x 2)取表中第一个元素函数(car <表>) 3)取表中最后一个元素函数(Last <表> )

?

?

? ?

?

4)(cdr <表>):返回自变量的子表,子表 包括原表中除了第一元素以外的全部元素。 如: (cdr (2 3 1 4)) ;返回表( 3 1 4) 5)car和cdr的组合 (cadr ?(x y z )) ;返回Y坐标 (caddr ?(x y z )) ;返回Z坐标

10.判断函数
格式:(if <判别式> <函数1> <函数2>) ;若判 别式满足,则执行函数1,否则执行函数2。 如:(if (= 3 4) (setq x 30) (setq x 40) ;结果是 x=40

11.组合函数
格式:(progn (函数1 函数2 …)) 如: (if (< 3 4) (progn (setq x 30) (setq y 40) (setq z (+ x y) ) )
Progn [ ] 按顺序计算每一个表达式,返回最后一个表达 式的值。

三、Autolisp程序的编辑、装入与运行

1.程序编辑:
可使用任意文本编辑程序建立( 如DOS下的Edit 和Notepad.exe,扩展名为:“.lsp”

2.程序装入:
Load函数:command: (load “c:\\acad\\mylisp”) 或command: (load “c:/acad/mylisp”) 用command: AppLoad命令弹出对话框来加载LISP 程序。

3.程序运行:
形如(defun abc( ) 方法: command: (abc) …)的自定义函数的调用

形如 (defun c:abc( ) …)的自定义命令函数 的调用方法:command: abc

p1

四、应用举例——形状特征 法绘制传动轴

d c

p2 p0
p3 p4

(defun c:featurea() 图8-32(a) featurea (setq p0 (getpoint "\n插入点:")) (setq alf (getangle p0 "\n旋转角:")) (setq d (getdist p0 "\n轴径:")) (setq c (getdist p0 "\n倒角宽:")) (setq p2 (polar p0 (+ (* 0.5 pi) alf) (- (* 0.5 d) c))) (setq p1 (polar p2 (+ (* 0.25 pi) alf) (* 1.414 c))) (setq p3 (polar p2 (+ (* 1.5 pi) alf) (- d (* 2 c)))) (setq p4 (polar p1 (+ (* 1.5 pi) alf) d)) (command "line" p1 p2 p3 p4 \033);或(command "line" p1 p2 p3 p4 \e)或(command "line" p1 p2 p3 p4 "") ) Polar 返回相对于一点指定距离和角度的三维点。

L1

p1 p0 p4
L

p2 b p3

(defun c:featureg() 图8-32(g) featurea (setq p0 (getpoint "\n插入点:")) (setq alf (getangle p0 "\n旋转角:")) (setq L (getdist p0 "\n键槽长:")) (setq b (getdist p0 "\n键槽宽:")) (setq r (* 0.5 b) L1 (- L b)) (setq p1 (polar p0 (+ (* 0.5 pi) alf) r)) (setq p2 (polar p1 alf L1)) (setq p3 (polar p2 (+ (* 1.5 pi) alf) b)) (setq p4 (polar p1 (+ (* 1.5 pi) alf) b)) (command "pline" p1 p2 "a" p3 "L" p4 "a" "cl") )


网站首页网站地图 站长统计
All rights reserved Powered by 海文库
copyright ©right 2010-2011。
文档资料库内容来自网络,如有侵犯请联系客服。zhit326@126.com