表面粗糙度符号标注AutoCAD二次开发的改进

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:hernquist
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:该文讨论了在AutoCAD中表面粗糙度符号标注工具的改进方法,在直线、圆对象基础上增加了正多边形、多段线、尺寸标注的尺寸界线对象标注表面粗糙度符号,完善了该工具的功能,提高了机械制图的绘图效率,具有较好的实际使用价值和推广意义。
  关键词:表面粗糙度符号;AutoCAD;机械制图
  中图分类号:TP391.72;TH122文献标识码:A文章编号:1009-3044(2009)36-10551-03
  An Improvement on Surface Roughness Symbol Marking By Redevelopment of Auto CAD
  FU Chun-hua, LIU Gao-jun, HUANG Mao-fei
  (Sichuan University of Science & Engineering, Zigong 643000, China)
  Abstract: The improvement of Surface Roughness Symbol Marking in AutoCAD is discussed in the paper. On the bases of line and circle objects, the surface roughness symbol marking of the polygon, polyline and extension line of dimension objects are added. This research extended the function of AutoCAD, enhanced mechanical drawings effectively, and embodies practical value and popularizing significance.
  Key words: surface roughness symbol marking; AutoCAD; mechanical design
  AutoCAD是一种功能十分强大通用图形处理软,在机械行业中使用越来越来普遍。绘制一张复杂的零件图可能要标注好十几次粗糙度符号。由于在AutoCAD中没有现成的粗糙度符号标注工具,因而直接标注符合国标的零件表面粗糙度是一项十分繁琐的工作,而且绘图效率极低。因此为提高绘图效率,扩充AutoCAD的功能,对表面粗糙度符号标注进行AutoCAD二次开发是十分必要的。李建明发表于《东北师大学报自然科学版》第36卷2004年5月《表面粗糙度符号标注的AutoCAD二次开发》一文,使用方便,界面友好,美中不足的是不能在对多段线、矩形、多边形与尺寸标注对象直接标注表面粗糙度符号,本文对此进行改进。
  1 原文主要内容
  1.1 表面粗糙度符号标注设计思想
  开发过程采用参数化绘图的基本设计思想,通过输入标注粗糙度的数值、符号、位置、文字高度等参数,然后点取标注位置,就能标注出符合国家标准是GB/T 131-1993的表面粗糙度符号,并根据大量参考图册的粗糙度标注与笔者的工程制图经验,对该国家标准进行必要的简化,以简化程序开发工作并使开发的标注实用程序更接近实际使用情况。其设计思想流程如图1所示。
  1.2 标注方位的判断与实现
  1.2.1 直线对象的角度求解
  由于Auto lisp函数无直接得到直线对象角度的函数,因而只有通过(angle pt1 pt2)函数来求解,所以必须先求解直线的两个端点坐标。该函数返回的是由起点指向终点方向与X轴的夹角。
  求直线角度的程序如下:
  (defun jd ( )
  (command "osnap" "nea");;;设置“最近点”捕捉方式
   (setq pt (getpoint)aa (ssget pt) ;;;以“点选”方式选择直线
  stm_data (entget (ssname aa 0)));;;获得直线对象的定义数据关联表
  (setqa_1(assoc 10stm_data) ;;;从关联表中取出指定的DXF组码,
   a_2(assoc 11 stm_data);;;10为起点,11为终点
  a_1(cdr a_1) a_2(cdr a_2)) ;;;从DXF组码中取出起点与终点坐标
  (setq ang (angle a_1 a_2)) ;;;求直线12与X轴的夹角
  );defun
  1.2.2 标注粗糙度符号时α角度求解
  以标注如图2所示的粗糙度符号为例,就要知道图中的α角度,然后将粗糙度符号转过一个α角度即可。由于直线的起点与终点不一样,求得的角度也不一样,对图2来讲,要求α角度,就需要由求得的直线角度ang进行转化,求α角度的程序段如下:
   (if (and (> ang (/ pi 2)) (<= ang (* 1.5 pi)))
  (setq ang (- ang pi))
  );if
  (if (and (> ang (* 1.5 pi)) (< ang (* 2 pi)))
  (setq ang (- ang (* 2 pi)))
   );if
  2 改进方法的实施
  2.1 原文主要缺陷及原因
  原文开发的工具对直线、圆、圆弧对象的标注如图3所示,符合GB要求。对尺寸标注实体对象的粗糙度符号标注如图4所示;对多段线、正多边的粗糙度符号标注则提示“错误: 参数类型错误: 二维/三维点: nil”,不进行标注,如图5所示。主要原因是不能识别这些对象,标注不正确或不标注的原因是没有对这些实体进行处理,不能正确求解粗糙度符号标注角度。
  要正确标注只有将上述对象分解为简单实体。但分解后会出现许多新的问题,一般不采用这种方法。
  2.2 改进方法
  开发设计思想与原文一致,主要针对原文缺陷的原因,解决的关键问题就是要能取出需要的端点。通过对多段线、矩形、尺寸标注对象的图形数据的分析知道,需要利用DXF组代码取出相应的端点,然后利用原文的求解角度方法,就能得到正确的标注。
  具体过程是利用entget函数取得对象的图形数据,用assoc函数利用DXF组代码从图形数据中取出含有需要端点的数据表,如(10 330.491 75.0874 0.0),然后利用cdr函数去掉DXF组代码10后得到端点坐标(330.491 75.0874 0.0)。
  2.2.1 标注尺寸界线的角度求解
  AutoCAD的尺寸标注对象是一个整体。其图形数据为:
  ((-1 . <图元名: 7ef50d68>) (0 . "DIMENSION") (330 . <图元名: 7ef50d08>) (5 . "2D")(100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbDimension")(2 . "*D1") (10 330.491 75.0874 0.0) (11 328.616 121.982 0.0) (12 0.0 0.0 0.0) (70 . 32) (1 . "") (71 . 5) (72 . 1) (41 . 1.0)(42 . 93.7895) (52 . 0.0) (53 . 0.0) (54 . 0.0) (51 . 0.0)(210 0.0 0.0 1.0) (3 . "ISO-25") (100 . "AcDbAlignedDimension") (13 194.16 168.877 0.0) (14 194.16 75.0874 0.0) (15 0.0 0.0 0.0) (16 0.0 0.0 0.0) (40 . 0.0) (50 . 1.5708) (100 . "AcDbRotatedDimension")
  如图6所示,对应组码表其中取出来的点为P1、P2、P3、P4四个点,分别为组码表中10、11、13、14所对应的值。10、14分别为图5所示的P1、P4点对应的组代码,其取点的程序为:
  (setq a_1(cdr(assoc 10 stm_data))
  a_2(cdr(assoc 14 stm_data)))
  得到点后求解角度与直线的方法一样。
  2.2.2 多段线、矩形框及多边形的角度求解
  由于多段线、矩形及多边形对象利用组码取得的值为图形的各个顶点坐标值。如图7所示。
  因此在求解多段线、矩形及多边形的角度时必需通过循环取得。循环取出相邻两点的坐标值,求出这两点所在的直线的斜率。再取这两点的第一点与用户选取的点来计算这两点的斜率,如果分别计算的两个斜率相同,那么退出循环。即可取出当前取得的两点的坐标值来求解角度。如果取到后一点,则再取出最后一点与图形的第一点进行计算。
  如图7所示,分别计算P1与P2、P2与P3……等的斜率值,假设用户输入的点为Pt,当P1与P2的斜率等于P1与Pt的斜率,则取出当前两个点。计算及取点的程序如下:
  (if (= bzys "LWPOLYLINE");;;判断所选择的对象是否为多义线、矩形框及多边形
  (progn
  (setq do_do 2 i 14)
  (while (> do_do 1)
  (setq xxxx 0 yyyy 0)
  (setq zzzz (nth i stm_data))
  (setq i (+ i 4))
  (setq wwww (nth i stm_data))
  (if (= rrrr 210)
   (setq zzzz (nth (- i 8) stm_data)
   wwww (nth 14 stm_data))) ;;;判断是否取到最后一点
   (setq a_1 (cdr zzzz))
   (setq a_2 (cdr wwww))
   (setq rrrr (nth 0 wwww))
   (setq b_1 (angle a_1 pt)
   b_2 (angle a_1 a_2))
   (if (= (rtos b_1) (rtos b_2))
   (setq do_do 1));;;;if斜率相同则退出循环
   );;;while
  );;;progn
  );;;if
  在(if (= (rtos b_1) (rtos b_2)) (setq do_do 1));这个语句中用到了rtos将实型数转换成字符串再来进行比较。由于在计算两点的斜率时,有时候两点的斜率值非常小,为避免造成死循环,将其转换成字符串来进行比较更容易实现比较的目的。
  2.2 运行与标注实例
  运行界面如图8所示,标注实例如图9所示。
  3 结论
  本程序在AutoCAD2008中调试通过,改进后的表面粗糙度符号标注工具,增加了对多义线、矩形、及在尺寸标注对象的尺寸界限线上标注表面粗糙度符号,功能进一部完善,使用更加方便,扩充AutoCAD功能,提高了机械制图效率。本工具可作为单独的实用工具使用,也可作为机械制图适用工具的一个模块使用,具有较好的实际使用价值和推广意义。
  参考文献:
  [1] 符纯华.计算机辅助设计[M].成都:西南交通大学出版社,2006.
  [2] 李建明.表面粗糙度符号标注的AutoCAD二次开发[J].东北师大学报自然科学版,2004(5):73-76.
  [3] 汪恺.技术制图国家标准宣贯教材[M].北京:中国计量出版社,1997.
  [4] 俞汉清.表面粗糙度标准及应用[M].北京:中国计量出版社,1997.
  [5] 易春峰,张锡滨.Auto CAD中表面粗糙度标注工具的二次开发[J].企业技术开发,2001(5):4-5.
其他文献
当前全球面临营养不良和营养过剩的困惑,慢性疾病滋生,“文明病”威胁人类健康。面对这一严峻状况,必然对食品提出新的要求,期待新的食品既能提供更丰富的营养,又能遏制“文明病”
随着Internet的迅速增长以及IPv4地址空间的逐渐耗尽,IPv6作为Internet协议的下一版本,对IPv4的取代将不可避免的成为必然。但是,由于IPv6引入了一些新的特性以及IPv4向IPv6
本课题从被动式改善、人工控制调节及建筑装饰材料功能三方面出发,研究了建筑热湿环境对人体的影响,研发了建筑室内热湿环境改善与控制技术集成、研究了建筑室内热湿环境调节措
分析了VMWARE虚拟机的网段的三种类型,bridge网段、hostonly网段和NAT网段。对这三种类型的网段和网卡的host主机表现形式和虚拟机表现形式做了分析和阐述,最后以DHCP的中继
市政及工业污泥处理处置已成为我国大部分污水处理厂亟待解决的一个难题。本文介绍了污泥生物沥浸干化技术的原理、工艺、适用范围、经济效益,以及本技术的工程化应用实例,指出
江苏省人民政府副省长何权:近年来,江苏省坚定不移地实施经济社会与资源环境相协调的可持续发展战略,把构建绿色人居环境作为增进民生幸福的重要目标,把推进建筑节能和绿色建筑发
电信外线部分网络资源管理系统是对电信公司省局、市局及各个子局外线部分的网络资源进行管理和地理拓扑显示的系统。该文给出了系统硬件部分的设计方案。文中对系统总体设计
通过研究微支付协议的基本原理和特征。重点对PayWord协议进行描述与分析,总结了该协议具有的优势和存在的缺陷,在此基础上对其进行了改进。新协议比旧协议更为实用和安全。
哈尔滨新闻网讯,在大连经过打拼有了自己红火的小店后,木兰青年不奢侈、不攀比,返乡以古朴的方式操办起了婚事。目前,小宿用10辆马车迎娶了自己的新娘。
分析了目前仓储管理中的存在的主要问题。针对这些问题讨论了如何通过应用数据挖掘技术来改善仓储管理系统。设计了数据挖掘应用于仓储管理系统的思路方案和系统结构。