CorelDRAW的Script语言及其在地图生产中的应用(成都地图出版社制图中心,四川成都610100)[摘要]本文简要介绍了图形软件Core1DRAW中Script程序开发语言的构成和作用,并结合地图生产中遇到的两个问题———文字转曲线和检查RGB色彩模型,列举出源程序,以加深对利用Script语言进行程序开发的理解。[关键词]CorelDRAW;Script;地图生产;程序[中图分类号P28317[文献标识码][文章编号1001-8379(2001)04-0168-04BSCRIPTLANGUAGEOFCORELDRAWANDIT’SAPPLICATIONINMAPPRODUCTIONWANGJian2wu句(如WITHOBJECTENDWITHOBJECT);此外还图形处理软件CorelDRAW是加拿大Corel公司的产品,由于它在图形设计、制作方面的强大功能和使用方便等优点,因而得到了广泛的应用。在实际使用过程中,我们发现经常要做一些重复的工作,有时有些工作手工很难完成,这时就可以使用CorelDRAW自带的Script语言编制程序,能大大提高工作效率。1语言简介Script语言也称脚本语言,用它编制的程序是一个文本文件,在CorelDRAW中以解释方式运行,速度较慢,有点类似于早期的Basic语言。Script语言分为两部分:语法部分和命令部分,下面介绍这两部分内容。语法部分包括:定义变量,有7类(Boolean-布尔型;Integer-整型;Long-长整型;Single-单精度型;Double-双精度型;Date-日期型;Currency-通用型;String-字符串型);定义常量;定义数组;各种运算符,有6类(算术运算符:+、-、3、/、∧、MOD、\;位运算符:NOT、AND、OR、XOR;联结有一些输入输出语句、文件操作语句等等,语法的具体说明可参考Script帮助文件。命令部分指的是只能在CorelDRAW各个模块中使用的命令集,CorelDRAW的每个模块(如DRAW、PAINT等)都有自己独立的命令集,这里只介绍用于DRAW模块中的命令集。ENDWITH2的每条命令只能用在WITHOBJECTOBJECT语句中。DRAW模块的命令集分为很多类,分别用于文件、编辑、查看、图层、风格对象选取、曲线绘制、创建与编辑对象、区域填色、线划的线型与色彩、对象的变形、符号、安排、文本、数据管理等。其中对编程序比较重要的有如下这些:(1)文件操作类,如:FILENEW—建立新文件,FILEOPEN—打开文件,FILECLOSE—关闭文件,FILEIMPORT—导入文件,FILEEXPORT—导出文件,FILESAVE—存储文件,FILEPRINT—打印;(2)图层类,如:NEWLAYER—建新层,SE2LECTLAYER—选择层,DELETELAYER—删除层,CHANGELAYERNAME—改层名,COPYTOLAYER—拷贝到层,MOVETOLAYER—移到层,SETLAYER2LOCKED—锁层,SETLAYERPRINTABLE—层可打义函数(FUNCTION(DOLOOPENDFUNCTION);循环控制NEXT、WHILEWEND);顺控制(IFENDIF、GOTO、SELECT2THENELSECASEENDSELECT);用于对话框语句(如BEGIN2DIALOGENDDLALOG、DIALOG等);进入模收稿日期:2000-07-ID号选取,SELECTOBJECTINRECT—框选取,SE2LECTPREVIOUSOBJECT—选取第一个,UNSELEC2TALL—取消选取;(4)曲线绘制类,如:BEGINDRAWCURVE—开始绘制,DRAWCURVECLOSEPATH—封闭曲线,DRAWCURVECURVETO—设置曲线控制点,DRAWCURVELINETO—绘直线,DRAWCURVEMOVE2TO—绘曲线,ENDDRAWCURVE—绘制结束;(5)创建与编辑对象类,如:CREATELLIPSE—创建椭圆,CREATRECTANGLE—创建矩形,DELE2TEOBJECT—删除对象,CLONEOBJECT—再制对象,CONVERTTOCURVES—转为曲线;(6)区域填色类,如:APPLYFOUNTAINFILL—喷泉填充,APPLYFULLCOLORFILL—全色填充,AP2PLYNOFILL—不填充,APPLYPOSTSCRIPTFILL—PS填充,APPLYTWOCOLORFILL—双色填充,APPLYU2NIFORMFILLCOLOR—平色填充,GETFILLTYPE—获取填充类型,GETUNIFORMFILLCOLOR—获取平色填充类型与色值;(7)线划的线型与色彩类,如:APPLBooltest=TRUEDOWHILEBooltestREM如果是组合对象则要准备递归调用过程REM调用方式为SearchALL(组内第一个对象ID号,组对象ID号)IF.GetObjectType()=12THEN’如果选取的是组合对象GroupID&=.GetObjectsCDRStaticID()’获取组合对象的ID号控制递归调用.SelectNextObject-1’选取对象组内第一个对象IDNext&=.GetObjectsCDRStaticID()’获取对象组内第一个对象的ID号CALLSearchAll(IDNext,GroupID).SelectNextObject0’选取对象组外的下一个对象.SelectNextObject0对象’选取对象组外的下一个REM如果是第一个对象则...