基于VB.NET的Terrasolid和AutoCAD接口的二次开发

来源 :地球 | 被引量 : 0次 | 上传用户:kjm
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要]本文主要介绍在Terrasolid环境下的正射影像成果利用VB.NET进行二次开发,形成与AutoCAD对接的特点、原理及方法。通过实例验证图形自动生成技术,测试该软件在实际工作中的作业效率,达到提高生产效率的目的。
  [关键词]Terrasolid 正射影像 AutoCAD 图形自动生成
  [中图分类号] P2 [文献码] B [文章编号] 1000-405X(2014)-7-232-3
  0引言
  作为一种通用计算机辅助设计软件,AutoCAD由于其强大的设计功能,已被应用于各行各业。然而,在实际应用中仍存在较多不足之处,如对重复工作的自动化程度较差等。因此,对AutoCAD软件进行二次开发是更有效地应用该软件的最佳途径之一。.NET结合了VC++功能强大与VBA易学易用的特点,可以快速的开发出实用的程序。本论文最终设计并实现了一个基于VB编程语言的AutoCAD二次开发软件。
  1程序开发
  1.1程序设计
  本软件可以根据用户设定,生成带有坐标的截图框,并在图框中自动标注左下角坐标。用户在Terrasolid软件中可利用该图框对正射影像图进行截图和分图,得到的分幅图将自动以图框中的标注作为文件名。方便用户对正射影像图的后处理以及和数字地形图的坐标追踪。并可以运用到其他在面状地形图中截取线型地形图的工作中。本程序使用VS2005开发,运行于CAD2009。
  1.2程序啟动
  首先启动Visual Studio 2005,选择【文件】|【新建】|【项目】菜单,在项目类型中选择Visual Basic语言,然后在模板列表中选择【类库】项目,在下面的【名称】,【位置】等文本框中输入相应的内容,单击确定完成项目创建。其次在项目解决方案浏览器中右键单击项目,选择【添加引用】菜单,在CAD2009安装目录下找到acdbmgd.dll和acdmgd.dll,点击确定即自动添加。
  1.3核心设计
  Public Class Class1
  '创建四边形
   Public Sub CreatSquare()
  '接收用户键盘输入 起始 x,y
  Dim db As Database = HostApplicationServices.WorkingDatabase
  Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor
  Dim user_col As Double: Dim user_row As Double
  Dim optPoint As New PromptPointOptions(vbCrLf & "请捕捉,或手工输入左下角坐标!")
  optPoint.AllowNone = True
  Dim resPoint As PromptPointResult = ed.GetPoint(optPoint)
  If resPoint.Status = PromptStatus.Cancel Then Return
  Dim ptStart As Point3d
  If resPoint.Status = PromptStatus.None Then
  ptStart = New Point3d(100, 200, 0)
  Else
  ptStart = resPoint.Value
  End If
  Dim ptPrevious As Point3d = ptStart
  Dim pt1 As New Point2d(ptPrevious(0), ptPrevious(1))
  user_row = ModelSpace.GetUserInputRow()Ⅰ
  user_col = ModelSpace.GetUserInputCol()
  下面我定义了一个边长为1km为单位坐标增加量(dx = 1000, dy = 1000),用户也可以利用Input语句与用户动态的交互,得到dx,dy,以便得到不同需求四边形,从而增加程序的灵活及使用性,本文中此数值确定为1km.
  之后利用For语句进行双重循环,先对列循环,完成每个图形单元(本文中为四边形)的绘制, 与此同时, 将提取到的左下角坐标(x_txt, y_txt)以特定长度(x值取4位长度,y值取3为长度)字符串拼接形式,呈现在图形单元的(Position_x, Position_y)点. 后对行循环,完成行数方向上的图形绘制.
  Dim x, y As Double: Dim dx, dy As Integer
  dx = 1000: dy = 1000
  x = ptPrevious(0): y = ptPrevious(1)
  Dim pt(4) As Point2d
  Dim i_col As Integer: Dim set_txt As String
  Dim Position_x As Integer: Dim Position_y As Integer
  For i_Row As Integer = 0 To user_row - 1
  For i_col = 0 To user_col - 1
  pt(0) = New Point2d(x + i_col * dx, y + i_Row * dy)   Dim y_txt As Integer = Left(x + i_col * dx, 3)
  Dim x_txt As Integer = Left(y + i_Row * dy, 4)
  set_txt = x_txt & "+" & y_txt
  Position_x = x + i_col * dx + 200: Position_y = y + i_Row * dy + 500
  Dim textId As ObjectId = ModelSpace.AddText(New Point3d(Position_x, Position_y, 0), set_txt, 75, 0)
  pt(1) = New Point2d(x + (i_col + 1) * dx, y + i_Row * dy)
  pt(2) = New Point2d(x + (i_col + 1) * dx, y + (i_Row + 1) * dy)
  pt(3) = New Point2d(x + i_col * dx, y + (i_Row + 1) * dy)
  pt(4) = New Point2d(x + i_col * dx, y + i_Row * dy)
  Dim pts As New Point2dCollection(pt)
  Dim plineId As ObjectId = ModelSpace.AddSquare(pts, 0)
  Next
  Next
  End Sub
  以下两段代码位于另一个类ModelSpace中,主要功能是完成与用户交互和在模型空间中绘制单个的图形(本文中为1km*1km正方形)。
  Public Class ModelSpace
  Public Shared Function GetUserInputRow() As Integer
  ' 定義一个整数的用户交互类______row.
  Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor
  Dim jq_I_Num As New PromptIntegerOptions(vbCrLf & "请输入总行数!")
  jq_I_Num.AllowNegative = False
  jq_I_Num.DefaultValue = 50
  Dim res_I_Num As PromptIntegerResult = ed.GetInteger(jq_I_Num)
  If res_I_Num.Status = PromptStatus.OK Then
  Dim user_row As Integer = res_I_Num.Value
  Return user_row
  End If
  End Function
  同理可得到用户的列数。
  Public Shared Function AddSquare(ByVal p As Point2dCollection, ByVal width As Double) As ObjectId
  '绘制四边形到模型空间
  Try
  Dim n As Integer = p.Count
  Dim ent As New Polyline(n)
  For i As Integer = 0 To n - 1
  ent.AddVertexAt(i, p.Item(i), 0, width, width)
  Next
  Dim entId As ObjectId = AppendEntity(ent)
  Return entId
  Catch
  Dim nullId As ObjectId = ObjectId.Null
  Return nullId
  End Try
  End Function
  1.4程序运行
  打开CAD2009,输入netload命令,加载.dll文件。输入jt命令,可以手工输入或点选第一个四边形的左下角坐标,与用户交互后得到总的行列数。运行后可得到需要的结果(如图1所示,这里我设定了一个6*6的方格网)。用户也可以多次使用jt命令添加图框。
  2应用实例
  在图像外的图框可任意删除,不会对其他图框差生影响(如图2所示)。从而绘制好的图框可以被运用到其他软件中。如在Terrasolid软件中,我们要将一张完整的正射影像图分割成一个个图块,以供后期航片刺点和地形图绘制使用。
  分割好的照片自动以图框中的标注命名,方便用户后期查找。(如图3所示)
  3结束语
  本文以VB.NET为基础,根据实际工作中的需要对AutoCAD进行了二次开发,通过实例证明了使用.NET开发CAD程序简洁高效,可针对用户的不同需要做出及时的修改等特点。以CAD为基础的多软件之间的相互引用是当前测量工作的特点,所以对它的二次开发就显得尤为重要。
  VB.NET based on secondary-development-interface of Terrasolid and AutoCAD interface
  Qiu Zhi-gang,Qi Ji-qiang
  ( Xinjiang Highway Plannig Survey Design and Research Institute,Urmqi 830006)
  Abstract:This paper describes the features,principles and methods on secondary-development of Terrasolid orthophoto environment using by VB.NET ,and forms of fully automated docking with AutoCAD.Examples demonstrate the automatic generation technology of graphics, and test the operating efficiency of software in practical work , to improve production efficiency.
  Key words: Terrasolid; Orthophoto;AutoCAD;The automatic generation of graphics
  参考文献
  [1]李冠亿编著.深入浅出AutoCAD.NET二次开发.[M].中国建筑工业出版社.2012.
  [2]王文波,邹清源,张斯珩编著.AutoCAD二次开发实例教程.[M].2010.
  [3]马永昌,李建民.基于VB.NET的AutoCAD数据转换研究及应用[J].测绘与空间地理信息,2010,33(3):97-99.
  [4]罗照,李凯. VB(VBA)在AutoCAD2005二次开发中的应用[J]. 信息技术与信息化. 2005(05).
  [5]米炜雄. 基于VB的AutoCAD二次开发及其在测绘中的应用[J]. 科技咨询导报. 2007(10).
其他文献
[摘要]在磁法勘探工作中,岩石和矿石的磁性及其差异,是磁法勘探的地球物理基础,也是产生磁异常的地质原因。因此,要对此异常进行正确的地质评价,就必须对岩石和矿石的磁性进行测定。测定岩(矿)石磁性参数的仪器类型和方法甚多,本文主要介绍在野外条件下无需添置专用的磁性测定仪器,利用高精度GSM-19T微机质子磁力仪(产自加拿大)测定标本的磁性参数,具有一定实用价值。  [关键词]GSM-19T微机质子磁力
期刊
[摘要]为了做好土地利用规划实施管理工作,保障《土地管理法》确立的土地用途管制制度的实施,实现我国土地利用特别是耕地保护跨世纪的战略目标, 土地利用总体规划实施评价是土地管理中的新课题,同时也是新一轮土地利用总体规划修编的重要内容。随着我国城镇化建设的发展和城市的不断扩张,耕地面积逐年减少,非农建设用地随之猛增,土地供需矛盾逐年突出。  [关键词]管理法 管理制度 耕地保护 城镇化  [中图分类号
期刊
[摘要]旅游景区的营销有很多种,但随着信息和网络的快速发展,网络营销已经成为旅游景区营销的重要选择。偏远型旅游景区因为有其自身的特殊性和局限性,则更应顺应市场营销的发展方向,开展网络营销。本文将以藤县蝴蝶谷为例,试图找出偏远型景区的特点,提出偏远型景区网络营销策略,为偏远型景区发展提供参考依据。  [关键词]电子商务 偏远型景区 网络营销  [中图分类号] F590.1 [文献码] B [文章编号
期刊
[摘要]航空摄影像控测量是为开展地理国情普查提供高精度调查底图的前期工作,随着GXCORS系统的建成运营,给广西地理国情普查航空摄影像控测量带来了便利,本文以广西地理国情普查南宁测区航空摄影像控测量为例阐述GXCORS系统在航空摄影像控测量中相比传统的测量方法更具自己独特的优越性。  [关键词]GXCORS 地理国情普查 航空摄影像控测量 运用研究  [中图分类号] G623.45 [文献码] B
期刊
[摘要]作为一类珍贵的矿种,吸附型稀土矿已成为了推动广西经济稳定发展的又一重要因素。在我国广西地区,稀土矿资源是极其丰富的,因此稀土矿资源的开采以及相应的勘测工作也成了广西壮族自治区政府需深入思考的问题。本文从实际情况出发,以广西崇左地区吸附型稀土矿的勘探、开采为例,对吸附型稀土矿的控矿因素以及地质情况进行了细致探究。  [关键词]广西 稀土矿资源 开采 地质情况 火山岩  [中图分类号] P61
期刊
[摘要]以指导教师提供的辽宁沿海城市2007年土地利用图形数据库为基础数据源,利用土地利用景观格局指数以及区域生态环境指数,从土地构成和环境效应两个尺度定量分析了土地利用格局,并揭示了土地利用结构对生态环境的影响。结果表明:(1)锦州市地貌类型共有9类,水田景观占总景观面积的5.05%,旱地占54.93%,林地占18.87%,草地占7.81%,水域占3.24%,滩涂占0.61%,城乡工矿居民用地占
期刊
[摘要]云南的老君山成矿区是我国的滇东南锡成矿带上最重要的锡、锌多金属矿区,是我国的三大锡矿基地之一,是我国十分重要的超大型的锡矿矿区,老君山成矿区的铟矿含量更是全国第一,在矿产的勘查及开采过程中,矿产信息的集成及勘查靶区的优选是矿产勘查过程中的一个非常重要的内容,它能够将矿产资源的预测与矿产的勘查工作很好的联系起来,根据云南老君山成矿区找矿信息的集成现状及勘查靶区的选定现状,来分析基于GIS的矿
期刊
[摘要]兴源矿四采区为薄基岩区,6#煤层开采受上覆第四系底部卵石含水层水害威胁,在6402工作面安装导水裂隙带监测系统,通过导水裂隙带高度的超前和采后实时监测,确定在采高2.5m,导水裂隙带最大高度37m左右,在此基础上参照《建筑物、水体、铁路及主要井巷煤柱留设与压煤开采规程》的相关规定,计算分段采高保护层厚度和防水煤岩柱高度,制定了6402综采面薄基岩区分段科学控制采高、防止第四系底卵突水的技术
期刊
[摘要]本文主要介绍了γ能谱测量、氡气测量、土壤天然热释光测量(TL)工作方法原理,重点论述三种方法联合解释在粤西新兴天露山地区铀矿勘查中的应用效果,分析了各异常对铀成矿的地质控制因素,如断裂构造、岩体界线和矿致异常的反映特征,总结并提出了异常与含矿构造破碎带的空间关系及划分铀成矿靶区的主要依据,对今后在花岗岩地区进行铀矿找矿工作具有重要指导意义。  [关键词]γ能谱测量 氡气测量 土壤天然热释光
期刊
[摘要]在辉绿岩以及矿区内的辉长辉绿岩岩中,矿床存留在超基性属性的岩体里面。这样的构造,限于构造带及古隆起带;含有磁铁矿的多种岩体,都顺着断裂带侵入到内部。明晰这种磁铁矿特有的矿床特性,有助于发觉到矿床的潜藏特征。目前,选用新颖的地球物理办法,在磁铁矿山有的外围区域,发觉到多处的矿化点,这就提供了勘查的新颖思路。采纳惯常用到的物化探模式,以便探寻隐伏中深部矿床。  [关键词]钛磁铁矿 特征 物化探
期刊