您好,欢迎来到包装印刷网!

当前位置: 首页 > 新闻资讯  > 技术文章 > 印刷设计

从数据饼图制作看CorelDraw的Script用法

2008/10/1 12:18:18 人评论

 CD在以前的版本(版本6以前)中是带有表格功能的,叫CorelChart,支持的格式远比现在的AI CS和FH MX要多,我记忆中共有十三种之多,只是不支持中文,真的需要中文只能先做好表格后再将问题替换掉。现在的CD没有工具直接生成表格了,所以不少人觉得 CD没有办法精确生成表格比例图了。然而,有一点是大家忽略的地方,CD是一个充分考虑端口开放的软件(这一点其它软件都很难做到),我们可以通过这个特性来做出自己的算法,以CD能接受的方式将数据传递过去。

  我以下就以精确比例饼图做为例子,对CD的另一种使用方法——Action Script做以最初步的窥探。

  这个样例的数据如下:


  

  对于矢量软件来说,一个矢量图形必然有一段与之对应的、唯一的描述,这些描述就是软件执行计算所用到的公式中必不可少的参数。在用户使用矢量软件的工具绘制或更改一个图形的时候,其实就是在更改这些数。——如果用户使用的矢量软件提供可视化数值功能的话,在你绘图或更改图形的过程中你会看到这些参数的数值会根据你的光标操作而改变,如:

  

 

  

  在这一点上,使用什么矢量软件并无差别。

  需要有Excel一样的输入界面——这么个界面就是所谓的“人机对话”。之所以要有人机对话,因为人不懂机器的语言,机器不懂人的语言。所以绘图软件就设立了很多可视性的界面。隐藏在“人机对话”后面的就是机器听得懂的语言。
  CD之所以说它端口开放,因为它的函数是开放的,遵循VB的格式。也因为它的参数是开放的,是一个支持VB格式表达式的变量。换句话说,只要是VB支持的计算方式,CD就支持——这就包括了VB的系统函数、自定义函数、数组等等。  

  

  比较成熟的矢量软件数值输入框的数值都接受简单的运算公式例如:
  3+2、20/5........
  FH和AI都支持。
  但是CD的数值支持更多,你可以在CD的输入框中输入具有优先运算的表达式,CD就能按你的意思计算出正确的数值,如:
  (50+20+10+5+2)/360*50
  但你在FH和AI中,你做不到。CD甚至还直接支持sin、tag等系统定义的数学函数。感兴趣的不妨一试。只是CD的数据输入框太小,无法看完输入的字符,得比较小心操作,以免误留残余字符导致计算出的值并非你想要的数值而已。
  在前面我说到CD支持运算公式例如——50/(50+20+10+5+2)*360。这个公式就是饼图中计算数据比例的公式,计算出的值就是qin走在街头15-20岁PLMM回头率(为了满足Qin的奢望,呵呵,把年龄段给放宽了),这是很简单的数学计算,就此带过。
  既然懂得计算公式了就可以开始绘图了。
  
  先将公式打好。Crtl+C拷贝。

    

  绘制一正圆,快速拷贝多四份,然后居中对齐。
  
  

 

  

  在“扇形终点”中输入“0”,在“扇形起点”输入“50/”,然后Crtl+V,实际上“扇形起点”中的输入值为“50/(50+20+10+5+2)*360”。然后你得到下面图形:

 

   

        第二个物体的终点为第一个物体的起点,所以是“50/(50+20+10+5+2)*360”,起点是“(20+50)/(50+20+10+5+2)*360”,依此类推,就得到了所有的物体。

      

  这是一个很笨的方法,每次都直接手动告诉CD要算什么。但这只是开始。

  我在这个例子中频繁的使用计算公式,这个绘图的过程是完全可以以Script的形式写出来的,因为CD9的Script是纯文本格式的。

  一个饼图的数据如下:
  X1,X2,X3......Xn
  比例数据计算公式为:
  0/(X1+X2+X3+......+Xn)*360
  X1/(X1+X2+X3+......+Xn)*360
  (X1+X2)/(X1+X2+X3+......+Xn)*360
  (X1+X2+X3)/(X1+X2+X3+......+Xn)*360
  .......
  (X1+X2+X3+......+Xn)/(X1+X2+X3+......+Xn)*360
  对于圆来说0度的位置和360度的位置是相等的。所以在这个公式不会存在误差问题。

  在这里我对“函数”说明一下。
  Script中的函数不仅仅是数学意义上的函数。数学函数只是当中的一种。Script中的函数实际上是一组命令,包括逻辑判断、循环指令、运算公式......等等等等。一个完整、通用的Script是允许用户更改参数数值的,然后Script可以根据用户的数值做以判断,并最终算出用户想得到的结果。

     

  在上面的例子中可以看到该脚本的关键处在于后半部分。这部分才是核心,实现条件判断,并根据值的不同执行不同命令。

  该脚本中调用到的命令有:
  .CreateRectangle .SetCornerRoundess .ApplyOutline
  这三个命令就是CD内核执行绘图和修改的命令函数,分别功能为:建立方形、设置物体圆角值、应用外框线(从字面上都能读出来,命名相当直观)。由于在. CreateRectangle函数中的参数嵌有计算公式,而该公式中包含有能让用户设置数值的变量,因而就能绘制出用户指定数据的方形。

  这个脚本是一个相当简单的例子,可以做为学习CD script的入门教程。
  有关CD内核执行绘图和修改的命令函数,可以参阅CD自带的函数说明,该文件默认是C:\Program Files\Corel\Graphics9\Programs\Draw_scr.hlp,根据你安装路径找到对应目录即可找到。

  CD的Script功能强大之处不在录制,在于编写。

  如果不能用得到CD就没必要花这么大的工夫预留这个接口了,这会增加CD的开发难度——在编写每一功能的时候都要考虑让用户可以通过Script来直接调用它。完全不考虑这点要简单得多。

  贴近实际应用的例子都不会简单。因为越方便的功能就需要越多的考虑,用Script写出来就会结构更复杂、调用的命令函数更多。这种例子不适宜当为入门教程。即便举出来也会让入门者摸不着头脑,甚至会吓退很多人。所以很多编程的教程都从“Hello world”教起,出个对话框说“Hello world”有什么实际用途?在实际的应用中我没见过有谁这么做过。但它是入门教程,它教你怎么控制一个对话框。——这是个学习方法的问题。在 Script的使用中思维是很重要的,如果你不能做到分析、归类和推测的应用,就无法触类旁通,那么你就想不出来通过Script来组合CD的命令和物体能做些什么。

  通过Script来组合CD的命令和物体能做些什么?——这是门槛较低的Scrip使用方式。高级的Scrip使用方式是自己编写自己的命令函数,例如我前面提到的3d滤镜,用户只需要输入数值就在后台调用自己定义的命令函数来计算并生成3D物体,然后将物体数据折算成矢量图形的节点数据,这一数据CD能支持,因而CD就能将之绘制在屏幕上。然而这种方法门槛很高,对于大多数人来说可望不可及。所以我对这种使用方法稍带而过,而把“通过 Script来组合CD的命令和物体能做些什么”做为重点。
  组合CD命令能做什么?——用户在使用CD 绘图时都在使用CD的命令。你如果不能总结出来平时绘图的过程(某些命令+某些命令=某种效果,例如AI的阴影滤镜,其实就是拷贝多一个物体+更改颜色+ 调换图层+稍微移位。而拷贝、更换颜色、换图层顺序、移位都是Script能调用的命令函数。依此类推。),那么谁都帮不了了。

相关资讯

  • 印刷厂拼版印刷对印版方向有哪些要求

    拼版是指将要印刷的页面按其折页方式按页码顺序排列在一起,其大小由印刷幅面及印刷纸张的大小来定。拼版可分为:零件的拼版和书刊的拼版两种。那印刷厂拼版印刷对印版方向有哪些要求呢?   一、拼版印刷的方向要求 不论是用单版还是用多版印刷,首先应明确拼色图案…

    2025/4/27 7:28:19
  • 提升印刷效率与品质,先从自动挂版开始

    要实现快速换单,先从自动挂版开始  挂版是印刷换单过程中必不可少的环节。有些人认为挂版是一件简单的事,殊不知就这么一件“小事”,如果不注意细节也是会对印刷效率和品质造成很大影响的。如今,部分大型纸箱厂已开始使用智能化自动挂版设备以提升印刷效率和品质。 …

    2025/4/26 8:02:30
  • 印刷设计印版必懂知识——翻版与拼版

    本文主要为大家讲解印刷翻版和印刷拼版相关知识点希望大家能有所收获。  一、印刷翻版类型  大多设计作品都需双面印刷。一张纸印完一面还得印另一面,就需要翻面,在印刷上就要做翻版。印刷中根据印版内容和翻版方向,将翻版分为3种。  1、正反版印刷  正反版印刷…

    2025/3/30 10:15:47
  • 企业负责人为消防代言,产品包装裹“新衣”

    食品外包装印有消防宣传标语,负责人成为消防公益代言人。近日,在娄底新化县,这一创新举措引发市民点赞。新化县消防大队负责人表示:“今年4月份以来,新化县开展了‘全民消防我行动’大型公益活动,湖南前进食品股份有限公司董事长罗教孟成为消防公益代言人,首批具有消防宣…

    2018/7/10 12:21:45

共有 网友评论