当前位置:首页 > 作文大全 > 【AutoCAD二次开发技术在工程测绘制图中的应用】 cad制图软件手机版
 

【AutoCAD二次开发技术在工程测绘制图中的应用】 cad制图软件手机版

发布时间:2019-07-01 04:00:54 影响了:

   摘要:简要介绍了进行AutoCAD二次开发的常用方法和技术特点,并以实例说明了利用VBA实现AutoCAD二次开发的实际价值和意义。   关键词: AutoCAD二次开发 VBA 工程测绘制图 坐标标注
  中图分类号:K826.16文献标识码:A 文章编号:
  
  
  随着现代科学技术的迅猛发展,测绘科学也发生了翻天覆地的变化,测绘仪器和测绘技术都有了很大的发展,测绘仪器由原来的光学仪器、机械仪器发展到了电子仪器,图形绘制由铅笔平板仪绘制发展到计算机软件绘制。电子仪器可通过专用传输线与计算机直接连接,把野外所采集的数据传输进计算机,在计算机中进行数字化成图。以手工作业为主的测量内业计算与绘图工作已经可以通过电子仪器、计算机绘图仪完成。数字化成图已经成为测图发展的主流方向。
  目前市场上的数字成图软件有很多,测绘行业普遍使用的有南方测绘公司的 CASS 系列、广州开思公司的 SCS 系列,还有北京微远图公司的 SV300 系列等软件,这些软件多是以AutoCAD为平台开发的, 它们主要针对的是测绘行业的通用性需求,在大体框架上基本满足了地形图、地籍图等测绘工作的成图要求。但测绘性质的多样性,决定了不可能有适合所有测绘性质的数字成图软件,在实际工作中,一些制图工作在许多细节上的操作具有特殊性,并且随测绘性质和目的的不同而有所不同。而且每个测绘员又各有各的工作方式和习惯.这些通用软件对一些特殊性质的处理控制和专业性强的特殊要求就不能满足了,怎样解决这个问题和要求,使数字化成图软件更符合自己工作要求呢?
  下面针对本单位经常进行的工程测量成图工作中遇到的问题,介绍解决基本方法与过程。
  一.AutoCAD及二次开发简介
  1. AutoCAD
  AutoCAD是美国 Autodesk 公司开发的一个交互式绘图软件,具有开放的极其灵活的体系结构,它允许用户和开发者采用各种方法对其进行定制、扩充和修改,即用户自己可以对进行二次开发,能最大限度地满足用户的特殊要求。
  2. 二次开发的途径
  AutoCAD的二次开发途径主要有两个,即文件开发和程序开发:
  A.文件开发: 文件开发是按照 AutoCAD 提供的方法和文件格式,通过编辑或建立 新的AutoCAD 系统所支持的文件,来开发 AutoCAD,使其满足用户特定需要的方法。
   (1) DXF 文件接口方式:以ASCII码文本文件描述它的图形细节,可以完美的实现与高级语言的连接。但格式非常复杂,应用程序编写有难度。
  (2)SCR 文件接口方式:SCR文件又叫命令脚本文件。它是由一组AutoCAD命令组成的文件。
  (3) DWG 文件接口方式:具有打开速度快的优点。但它以机器码形式存放,一般不能让高级语言直接读取。
  B.程序开发: 程序开发是指利用 AutoCAD 提供或支持的编程环境和开发工具,通过编写程序来实现对AutoCAD开发的方法。借助于程序开发,可为 AutoCAD 扩充新的命令或定义,以满足用户具体需要。
  AutoCAD的二次开发语言主要有:ObjectARX、VisualLisp、VBA(Visual Basic For Application)以及最新的.NET等。其中ObjectARX 基于 VC++平台,功能非常强大,但其缺点是编程语言复杂, 对开发人员的编程水平要求比较高;VisualLisp与 VBA较为简单,特别是VBA,编程语句容易理解和交流, AutoCAD内嵌开发平台,使用方便且运行速度快。
  上述开发方法各有优缺点。实际的开发中,可以将多种方法综合起来,扬长避短,使 CAD系统功能得到最佳的组合,发挥最好的效益。
  二. 在工程测绘制图中的应用
  1.业务需求
  在工程测绘制图中,我们常常需要在图形中将一些特征点(比如:开挖区域的边线角点)的坐标标注出来,而且需要以引线的方式进行。使用AutoCAD本身提供的现有命令当然也可以进行,但如果需要标注的特征点比较多时,那就要重复进行繁琐的操作了。
  2.解决方案
  针对这个问题,我们使用 VBA作为开发工具,编写了一个小工具。该程序的特点是简单快速,只需在CAD图形上点击特征点和坐标标注位置,即可以以引线的方式将测量坐标标注出来,提高了制图工作的效率,在实际工作中有比较强的实用意义。主要代码如下:
  Private Sub CmdOK_Click()
  
  FrmMain.Hide "隐藏窗体
   Call 初始化 "进行有关层/字体/颜色/线型等的设置
  
  "以下进行坐标标注
  StartPt = ThisDrawing.Utility.GetPoint(,vbcr & "请选择要标注坐标的点: ")
  EndPt = ThisDrawing.Utility.GetPoint(StartPt, vbcr & "请选择引线位置: ")
  FxPt = ThisDrawing.Utility.GetPoint(EndPt, vbcr & "请选择标注方向: ")
  字高 = Val(CmbTexth.Text)
  xLong = Len(Int(StartPt(1))) "求出标注坐标的整数位个数
  yLong = Len(Int(StartPt(0)))
  LineLong =IIf( xLong > yLong , xLong, yLong) "求出坐标分隔线的长
  Select Case XyD"根据小数位数求出坐标分隔线的长度
  Case 0
  LineLong = (LineLong + XyD) * 字高
  Case 1
  LineLong = (LineLong + XyD + 1#) * 字高
  Case 2
  LineLong = (LineLong + XyD + 2#) * 字高
  Case 3
  LineLong = (LineLong + XyD + 3#) * 字高
  Case 4
  LineLong = (LineLong + XyD + 4#) * 字高
  Case Else
  LineLong = (LineLong + XyD + 3#) * 字高
  End Select
  If FxPt(0) > EndPt(0) Then"计算引线各点坐标
  Pt(0) = StartPt(0): Pt(1) = StartPt(1): Pt(2) = 0#
   Pt(3) = EndPt(0): Pt(4) = EndPt(1): Pt(5) = 0#
  Pt(6) = EndPt(0) + LineLong: Pt(7) = EndPt(1): Pt(8) = 0#

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3