- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 冬季爱车故障多发汽车保养小常识.doc
- 冬日婚礼个性婚礼策划怎样打造.doc
- 冰淞教育综合卷第56课时.doc
- 冲压实习报告.doc
- 冲压模具设计总结.doc
- 冲裁模具设计1.doc
- 决定创业之前,可以试试这个可行性分析.docx
- 决定酒价的因素.doc
- 决胜期末--七年级期末复习练习.doc
- 准妈妈注意事项.doc
- 第12课 大一统王朝的巩固 课件(20张ppt).pptx
- 第17课 君主立宪制的英国 课件.pptx
- 第6课 戊戌变法 课件(22张ppt).pptx
- 第三章 物态变化 第2节_熔化和凝固_课件 (共46张ppt) 人教版(2024) 八年级上册.pptx
- 第三章 物态变化 第5节_跨学科实践:探索厨房中的物态变化问题_课件 (共28张ppt) 人教版(2024) 八年级上册.pptx
- 2025年山东省中考英语一轮复习外研版九年级上册.教材核心考点精讲精练(61页,含答案).docx
- 2025年山东省中考英语一轮复习(鲁教版)教材核心讲练六年级上册(24页,含答案).docx
- 第12课近代战争与西方文化的扩张 课件(共48张ppt)1.pptx
- 第11课 西汉建立和“文景之治” 课件(共17张ppt)1.pptx
- 唱歌 跳绳课件(共15张ppt内嵌音频)人音版(简谱)(2024)音乐一年级上册第三单元 快乐的一天1.pptx
文档评论(0)