利用CorelDrawVBA开发宏程序绘制地图..doc

利用CorelDrawVBA开发宏程序绘制地图..doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
利用CorelDrawVBA开发宏程序绘制地图..doc

利用CorelDraw VBA开发宏程序绘制地图 上海测绘院第四分院 钟炜 摘要: CorelDraw软件为用户提供了VBA编写宏程序的开发环境,用户可以编写宏程序来让计算机自动完成一系列的操作,从而达到减轻工作量的目的。这个技术也可以用来解决在地图绘制领域普遍存在的一些问题。本文通过两个实际例子,介绍了CorelDraw VBA的基本情况和对象模型,以及这个工具是如何解决问题,提高生产效率的。 关键字:CorelDraw VBA 地图绘制 问题的提出 在目前的地图制作领域,我们主要使用的软件是Corel公司的矢量绘图软件CORELDRAW。CORELDRAW被大量应用于广告设计和制图领域,美观是用CORELDRAW绘制的地图的最大特点。由于地图相对于其他矢量图片的特殊性,在使用CORELDRAW进行地图的绘制时,我们往往会碰到一些问题或者可以改善的地方。在这里我们可以举两个例子来说明这类问题。第一个例子是在制作专题地图中,某一专题的符号已经设计好,但是由于客户的原因,这个设计需要更改,这时工作人员在CORELDRAW上要进行的操作就是在图上找到每个专题要素的位置并把新的符号放上去。而如果这个专题要素的量很多的话,这个工作是费时费力的。第二例子,我们知道,在地图制作中我们经常利用数据,也就是对已有的矢量图片进行编辑。数据的来源不一,质量也有好有坏。如果在数据中有重复的物件,肉眼从图面上也发现不了,要想清理掉重复数据只能从物件列表中一一判断,这个工作是相当烦琐的。解决这一类问题的途径之一是使用CORELDRAW为我们提供的VBA开发环境来编写一些宏程序,让程序来帮助我们完成工作。 2、CorelDraw VBA简介 VBA,(visual basic for applications),是一种标准宏语言。 VBA提供了面向对象的程序设计方法,提供了相当完整的程序设计语言它作为一种通用的宏语言可被所有的Microsoft 可编程应用软件所共享使可编程应用软件得到完美的实现VBA 是基于Visual Basic 发展而来的,它们具有相似的语言结构它们的集成开发环境IDE(Intergrated Development Environment)也几乎相同 3、如何使用CorelDraw VBA 以CORELDRAW 12为例,我们要想使用CorelDraw VBA开发的宏命令,首先要把宏命令程序文件(.gms文件)存到“\CORELDRAW\Draw\GMS”中,之后我们在只CORELDRAW按下“工具→Visual Basic(V)→播放”键,就可以看到宏管理器的窗口,在此窗口下我们可以很方便地运行和管理宏命令。 4、问题的解决: 在分析问题和操作流程后,就可以通过编写成宏程序,让计算机进行批量的操作,实现自动化处理。上述两个问题,我们可以通过以下程序解决。程序的关键代码如下: 符号替换问题 ActiveDocument.ReferencePoint = cdrCenter ActiveDocument.BeginCommandGroup Replace For Each s In ActiveLayer.Shapes If s.Type cdrTextShape Then //不对文字进行操作 s.GetPosition x, y s.Delete ActiveLayer.Paste //删去旧的符号,贴上新的 Dim Paste1 As ShapeRange Set Paste1 = ActiveSelectionRange Paste1.SetPosition x, y End If Next s ActiveDocument.EndCommandGroup 清理重复物件问题 ActiveDocument.BeginCommandGroup ClearRepeat Do Until i ActiveLayer.Shapes.Count ActiveLayer.Shapes(i).GetPosition x1, y1 Do Until j ActiveLayer.Shapes.Count ActiveLayer.Shapes(j).GetPosition x2, y2 If x2 = x1 And y2 = y1 Then ActiveLayer.Shapes(j).Delete //删去重复的物件 j = j - 1 End If j = j + 1 Loop i = i + 1 j = i + 1

文档评论(0)

juhui05 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档