利用CorelDraw VBA开发宏程序绘制地图 doc
利用CorelDraw VBA开发宏程序绘制地图
上海测绘院第四分院 钟炜
摘要:
CorelDraw软件为用户提供了VBA编写宏程序的开发环境,用户可以编写宏程序来让计算机自动完成一系列的操作,从而达到减轻工作量的目的。这个技术也可以用来解决在地图绘制领域普遍存在的一些问题。本文通过两个实际例子,介绍了CorelDraw VBA的基本情况和对象模型,以及这个工具是如何解决问题,提高生产效率的。
关键字:CorelDraw VBA 地图绘制
1、问题的提出
在目前的地图制作领域,我们主要使用的软件是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)也几乎相同。二者不同之处在于:利用VB我们可以编写出独立的windows可执行程序(exe文件),而在使用VBA时我们必须在一个宿主软件中调用我们所编写的程序。CORELDRAW从6.0版本即支持宏命令(Marcos),但直到9.0版本它都主要使用它自己特有的CORELSCRIPT语言进行宏命令的编写。1998年,COREL公司作出战略
性决定,决定在CORELDRAW 9.0中引入VBA,这使CORELDRAW立刻得到了很多VBA开发者的喜爱。但是在CORELDRAW的9.0版本中,针对VBA的对象模型并不很完善,这很大程度地限制了利用VBA对CORELDRAW的开发。在10.0以后的版本中,情况得到了彻底的改善,在11版本后的VBA环境已经非常的成熟,用户可以用CorelDraw VBA很轻松地调用CORELDRAW的现有功能,也可以利用CorelDraw VBA来调用CORELSCRIPT语言来实现一些特定的操作。
为了让读者更好地理解CorelDraw VBA是如何调用CORELDRAW功能,在这里我们介绍一下在解决文中的两个示例问题时我们用到的CorelDraw VBA的对象模型:
Application Documents Document Pages Documents Document Layers Shapes Properties ShapeRange
3、如何使用CorelDraw VBA
以CORELDRAW 12为例,我们要想使用CorelDraw VBA开发的宏命令,首先要把宏命令程序文件(.gms文件)存到“\\CORELDRAW\\Draw\\GMS”中,之后我们在只CORELDRAW按下“工具→Visual Basic(V)→播放”键,就可以看到宏管理器的窗口,在此窗口下我们可以很方便地运行和管理宏命令。
4、问题的解决:
在分析问题和操作流程后,就可以通过编写成宏程序,让计算机进行批量的操作,实现自动化处理。上述两个问题,我们可以通过以下程序解决。程序的关键代码如下: 1.符号替换问题
ActiveDocument.ReferencePoint = cdrCenter ActiveDocument.BeginCommandGroup \ 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
2.清理重复物件问题
ActiveDocument.BeginCommandGroup \ 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 Loop
ActiveDocument.EndCommandGroup 5、结论
以上两个例子说明,通过使用CorelDraw VBA编写的宏程序,可以减轻工作
量,缩短工作时间。笔者认为,编写这样的宏程序的关键是分析制图过程中一般都会碰到的问题和解决问题的传统方法,再利用VBA的开发环境写出宏程序,让计算机实现一定程度的自动化。这样的宏程序才可以被应用于每一张地图的绘制当中。
参考文献:
[1] CorelDraw 12 Programming Guide for VBA [2] CorelDraw 12 VBA Object Model
[3] “Using VBA with Corel Applications”
http://www.oberonplace.com/vba/index.htm
…… 此处隐藏:1162字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [高等教育]公司协助某村精准扶贫工作总结.doc
- [高等教育]高二生物知识点总结(全)
- [高等教育]苏教版数学三年级下册《解决问题的策略
- [高等教育]仪器分析课程学习心得
- [高等教育]2017年五邑大学数学与计算科学学院333
- [高等教育]人教版七年级下册语文第四单元测试题(
- [高等教育]2018年秋七年级英语上册Unit7Howmuchar
- [高等教育]2017年八年级下数学教学工作小结
- [高等教育]湖南省怀化市2019届高三统一模拟考试(
- [高等教育]四年级下册科学_基础训练及答案教材
- [高等教育]城郊煤矿西风井管路伸缩器更换施工安全
- [高等教育]昆八中20182019学年度上学期期末考试
- [高等教育]项目部各类人员任命书
- [高等教育]上市公司经营水务产业的模式
- [高等教育]人教版高二化学第一学期第三章水溶液中
- [高等教育]【中考物理第一轮复习资料】四.压强与
- [高等教育]金坑水电站报废改建工程机电设备更新改
- [高等教育]高中生物教学工作计划简易版
- [高等教育]2017年西华大学攀枝花学院(联合办学)44
- [高等教育]最新整理超短爆笑英文小笑话大全
- 优秀教师继续教育学习心得体会
- 阳历到阴历的转换
- 留守儿童教育案例分析
- 华师17春秋学期《玩教具制作与环境布置
- 测速传感器新型安装装置的现场应用
- 人教版小学数学三年级下册第四单元
- 创业个人意向书
- 山东省潍坊市2012年高考仿真试题(三)
- [恒心][好卷速递]四川省成都外国语学校
- 多少人错把好转反应当成了病情加重处理
- 中外广播电视史复习资料整理
- 江苏省扬州市江都区宜陵镇中学2014-201
- 工程造价专业毕业实习报告
- 广西师范学院心理与教育统计
- aympkrq基于 - asp的博客网站设计与开
- 建筑业外出经营相关流程操作(营改增后
- 人治 德治 法治
- [精华篇]常识判断专项训练题库
- 中国共产党为什么要实行民主集中
- 小学数学第三册第一单元试卷(A、B、C




