基于AutoLISP语言智能生成工程图纸表面粗糙度符号
2020-12-17张瀚升宋昕一
张瀚升 宋昕一
摘 要 利用 AutoCAD 软件内部自带的二次开发工具 Visual LISP 编写此程序。该程序能够自动判断和计算用户输入的数据,智能生成二维工程图纸中的表面粗糙度符号。将其按用户需求显示在图纸当中。本程序使用简单,能够在一定程度上减轻绘图工作者重复绘制表面粗糙度的工作负担。
关键词 Visual LISP 智能判断 表面粗糙度符号 绘图工具
中图分类号:TP391文献标识码:A
0引言
AutoCAD是一款在国际上非常流行的计算机辅助设计软件,可以用于二维图纸绘制和三维立体建模。尤其是二维绘图功能更是在机械行业发挥着重要作用。在一张完整的工程图中有许多的设计要素,包括结构、尺寸、形位公差、表面粗糙度和注意事项等。而其中的表面粗糙度标注是一项简单却又具有重复性特点的工作,事实上用户利用AutoCAD內部自带的LISP语言进行二次开发,编写可以自动绘制表面粗糙度符号的程序就可以解决这个问题。本文即是采用AutoLISP编程语言简略说明如何实现此功能。
1项目背景
1.1 AutoLISP语言简介
LISP是一种计算机的表处理语言,在人工智能学科领域广泛应用。该语言作为嵌入在AutoCAD内部的具有智能特点的编程语言,是开发应用AutoCAD不可缺少的工具。AutoLISP将LISP和AutoCAD有机结合,可直接调用几乎全部的AutoCAD命令。并且该语言对于编写环境没有特殊要求,只要是一般的文书的编辑软件(如记事本、Word等)都能用,不需要二次编译在其他CAD软件也能很好地执行。
1.2表面粗糙度在工程图中的重要性
零件表面粗糙度在机械加工中占有十分重要的地位,其好坏能够直接影响与之形成配合关系后零件表面间的相互作用。若表面粗糙度差或达不到规定要求,一方面会影响零件间配合的实际效果,极易引起零件表面磨损,引起实际配合超差。另一方面会影响工作精度,降低精度灵敏性,降低零件间接触刚度,引起振动。还可能影响零件强度及抗腐蚀性,导致零件对应力集中较敏感,使零件表面产生裂痕加剧腐蚀而导致损坏。因此,在工程图中正确标注表面粗糙度有利于零件的加工生产,避免上述一系列问题的发生。
1.3自动绘制粗糙度符号程序的产生
该程序通过判断和计算用户输入的数据自动绘制表面粗糙度符号,并根据用户鼠标点击位置显示在二维工程图中。在一定程度上解决绘图人员重复工作的问题。
2程序介绍
2.1设置运行环境并初始化数值
(defun c:ccd()
(setq v1 (getvar "cmdecho"))(setq v2 (getvar "blipmode"))
(setq old (getvar "osmode"))(setvar "osmode" 0)
(setvar "cmdecho" 0)
2.2获取用户输入数据
(setq p0 (getpoint" 点击或输入插入点: "))
(setq p01 (osnap p0 "nea")) ;捕捉最近的点
(setq h (getdist p0 "\n粗糙度数值字高<3.5>: "))
(if (not h)(setq h 3.5))
(setq h1 (* h 1.61658))
(if p01(progn ;捕捉最近点
(setq c (angle p01 p0))(setq p0 p01)(setq b (- c (* 0.5 pi))))
(progn ;未捕捉最近点
(setq b (getangle p0 "\n旋转角度<0>: "))
(if (not b)(setq b 0.0))))
(setq a (+ b (/ pi 3)))(setq p1 (polar p0 a (* 2 h1)))(setq p2 (polar p0 a h1))
(setq a (+ b (/ pi 1.5)))(setq p3 (polar p0 a h1))(setq a (+ b (* 0.5 pi)))
(setq p4 (polar p0 a (* 1.4 h1)))(setq s (getstring "\n输入表面粗糙度数值<6.3>: "))
2.3绘制表面粗糙度符号
(if (= 0 (strlen s))(setq s "6.3"))
(setq b (/ (* b 180) pi));判断数字方向
(setq b (cond
((and (> b 90) (<= b 270)) (- b 180))((> b 270) (- b 360))
((= b -90) 90)(t b)))(setvar "blipmode" 0)
(if (= s "0")
(progn;标注未加工表面符号
(setq p4 (polar p0 a (* 0.933 h)))(command "line" p1 p0 p3 "")
(command "circle" p4 (* 0.466 h)))
(progn ; 标注加工表面符号
(command "line" p2 p3 p0 p1 "")
(if (> (strlen s) 3)
(setq p4 (polar p4 (+ a (* 0.5 pi)) (* 0.4 h))))
(command "text" "m" p4 h b s) ; m为中点定位
))
2.4恢复系统初始设置并退出
(setvar "cmdecho" v1)
(setvar "blipmode" v2)
(setvar "osmode" old)
(princ)
)
3结论
经实际检验,本程序可以成功运行并绘制出任何方向表面粗糙度符号,包括标注加工表面符号和标注未加工表面符号,在一定程度上方便和节省了用户的绘图时间。Visual LISP语言简单易学,具有很好的应用前景。
参考文献
[1] 付自力.表面粗糙度的重要性及正确获得方法[J].职业,2007(17).
[2] 仲梁维等.计算机辅助设计教程[M].上海:复旦大学出版社,1997.
[3] 清宏计算机工作室.AutoCAD工程二次开发[M].北京:机械工业出版社,2000.