用AutoLISP语言实现零件尺寸公差的自动标注

   2019-08-22 31
核心提示:[db:简介]
摘要:利用AutoCAD 提供的AutoLISP 语言编写了一个尺寸公差自动标注程序,应用该程序可自动检索以数据文件形式存贮的常用尺寸公差数值,实现尺寸公差的自动标注。

1 引言

尺寸公差的标注是应用AutoCAD进行机械设计时的一个重要内容。用text命令进行手工标注,不仅速度慢,而且容易出错;而通过对话框设定参数进行标注时,对每个不同的公差值都要设定一次,相当繁琐。此外,采用上述方法进行尺寸公差标注时常常需要翻阅设计手册,给设计带来很多不便。在AutoCAD为用户提供的AutoLISP语言、ADS、ARX等开发工具中,AutoLISP语言是一种简便易学的解释性语言,具有很强的数据表格处理功能,是开发AutoCAD的一种重要手段。因此笔者利用AutoLISP语言编写了一个尺寸公差自动标注程序,设计时只需选择基本尺寸和公差带代号即可自动标注尺寸公差,避免了翻阅手册的繁琐,可显著提高标注尺寸公差的速度和准确性。

2 公差值数据的存贮

在公差标注过程中,由于标准公差值取决于基本尺寸和公差等级,基本偏差则取决于基本尺寸和基本偏差代号,因此对于一定的基本尺寸而言,根据基本尺寸、公差等级和基本偏差代号查询出公差大小以及公差带的位置是实现自动标注的关键。
首先根据标准公差数值和基本偏差表定义三个数据文件data1、data2、data3,并以“.txt”为文件名保存。data1代表孔的基本偏差表,data2代表轴的基本偏差表,data3代表标准公差表。标准公差表的数据文件(data3.txt)格式如图1。
在数据文件data3中,若基本尺寸为15mm,公差等级为6,则其标准公差为0.011。因查询函数是以字符位置获取公差值,公差数值表应对位整齐,否则所获取的公差值将出错(需要说明的是,孔、轴的公差值数据是两个数据文件,在标注孔、轴的公差时应调用相应的数据文件)。
图1 标准公差表的数据文件(data3. txt)格式IT01 IT00 IT1 IT2 IT3 IT4 IT5 IT6 IT7 (本行实际文件中没有)
(0.0003 0.0005 0.0008 0.0012 0.002 0.003 0.004 0.006 0.010 …); dimt0~3mm
(0.0004 0.0006 0.001 0.0015 0.0025 0.004 0.005 0.008 0.012 …); dimt3~6mm
(0.0004 0.0006 0.001 0.0015 0.0025 0.004 0.006 0.009 0.015 …); dimt6~10mm
(0.0005 0.0008 0.0012 0.002 0.003 0.005 0.008 0.011 0.018 …); dimt10~18mm
……

3 公差数值的查询

为了自动查询出所需的公差数值而编制了两个函数。首先用recor()函数检索出数据文件中符合基本尺寸(dimt)范围的数据行,用read()函数将该行中所有值赋给相应的变量h1。如要查询data3中的标准公差值,当获取的基本尺寸为15mm时,得到的数据行号为4,该行上的数值全部赋给hi,程序如下:
(defun read(record fname)
(setq fp(open fname“r”))
(if( = fp nil)
(alert“not open datatxt!”)
(progn
(repeat recor(setq h(read(read-line fp))))
(setq n(length h))
(setq b()i 1)
(while( < = i n)
(setq b(append b(list(read(strcat“h”(itoa i))))))
(setq i(1 + i))
)
(setq i 0)
(while( < i n)
(setq name(nth i b)value(nth i h)
)
(set name value)
(setq i(1 + i))
)
(close fp)
))
)
*********************
(defun recor(dimt)(
cond(( < = dimt 3)1)
((and( > dimt 3)( < = dimt 6))2)
((and( > dimt 6)( < = dimt 10))3)
((and( > dimt 10)( < = dimt 18))4) ;dimt为获取的基本尺寸
……;因篇幅所限,以下数行略
)
)
根据给定的公差等级和公差带代号即可从数据文件中查询出标准公差数值和基本偏差数值,然后再根据公差带代号判断所得基本偏差是上偏差还是下偏差。例如,若标注轴公差,则公差带代号为a~h时的基本偏差为上偏差,公差带代号为k~zc时基本偏差为下偏差;若公差带代号为j(jc),则上下偏差相等,根据标准公差值可计算出上偏差或下偏差值。

4 公差的自动标注

在标注公差时,首先应根据所选的尺寸标注用entget、substr函数获取基本尺寸dimt、字高txth、旋转角angd,以便在标注公差时确定公差的字高、角度等参数。这里应注意,在尺寸标注前dimaso应设定为off,否则将取不到尺寸。对于基本尺寸前有R、r、Ø等符号时,应作特殊处理。对用“text”命令标注的尺寸和用“dimension”命令标注的尺寸,其处理方法略有不同,方法如下:
(setq ss(entget(car(entsel))))
(setq dim1 dim)
(progn
(if ( =(substr dim 1 1)"R")(setq dim1(substr dim 2)))
(if ( =(substr dim 1 1)"r")(setq dim1(substr dim 2)))
(if ( = (substr dim 1 3)"%%c")(setq dim1(substr dim4)))
(if ( =(substr dim 1 4)" A1;")(setq dim1(substr dim5)))
(if (or( =(substr dim 1 5)" A1;R")( =(substr dim 15)“ A1;r”))(setq dim1(substr dim 6)))
(if ( =(substr dim 1 7)"A1; U + ")(setq dim1(substrdim 12)))
);获取各类尺寸的尺寸数值
(setq dimt(atof dim1))
为使标注的尺寸公差与基本尺寸协调,在标注前先根据基本尺寸的字高、旋转角等确定出公差的字高和旋转角,计算出上、下偏差的标注位置,然后用“text”命令标注公差。在程序设计时既考虑到上、下偏差值已知而公差等级和公差带代号未知的情况(此时可不输入公差等级和代号,而直接输入上、下偏差),同时也考虑到某些特殊情形(如:±0.01等)的标注。
该程序以gcbz.lsp为文件名保存,因篇幅所限源程序从略。

图2

5 菜单定制及运行实例

将程序放在Support子目录下,在AutoCAD环境下用load函数将程序装入,也可用tools/application装入,或直接将文件放在ACAD2000.LSP文件中,这样在运行AutoCAD时可直接将该程序装入。为方便标注,可通过下拉菜单dimension段增加尺寸公差标注项。方法如下:打开菜单文件ACAD.MNU,在**DIMENSION下增加[尺寸公差标注]^C^CGCBZ即可。在程序中利用DCL设计出公差等级和公差带代号输入的对话框。当选择菜单项“尺寸公差标注”时,弹出如图2所示的公差设置对话框,即可选择标注类型,并输入公差带代号和公差等级。
具体操作步骤如下:选择dimension菜单下尺寸公差标注命令,在对话框中选择轴或孔,输入公差代号h,公差等级7级(若公差带代号和公差等级未知,对话框中可不输入,可根据提示直接输入上、下偏差),再根据提示选择要标注公差的基本尺寸,即可在图中标注出尺寸公差。
本程序涵盖了机械设计中的全部公差标注类型,并在AutoCAD R14、AutoCAD2000上调试通过。应用本程序可显著提高标注尺寸公差的速度和准确性。
 
举报收藏 0打赏 0
 
更多>同类数控技术
推荐图文
推荐数控技术
点击排行
网站首页  |  关于我们  |  升级会员  |  联系客服  |  广告合作  |  广告位图  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  RSS订阅  |  违规举报  |  蜀ICP备2021024440号