CorelDRAWX4的VBA插件开发(十四)快速定位形状

news/2024/11/16 7:39:41/

.我们经常要根据一特性找到某些形状,比如

  • 找到轮廓颜色为CMYK(0,0,0,100)的形状
  • 找到填充色为RGB的形状
  • 找到应用一特效透镜的形状
  • 并且找到以上这些内容的个数

而他里面内置了快速定位的功能query, 这一节我们共同来学习快速查找QEURY功能

先上代码:

Sub 第一个插件()Dim theCount As IntegertheCount = ActivePage.Shapes.FindShapes(Query:="@colors.find(cmyk(0,0,0,100))").CountIf theCount <> 0 ThenMsgBox "本文件内含有" & theCount & "个"End If
End Sub

这是一段查找填充或者轮廓颜色为CMYK(0,0,0,100)也就是平常常说的单色黑的查找代码

在这里插入图片描述
这就是快速定位颜色的形状集合, 根据上一节的内容我们知道FindShapes是找到的形状集合ShapeRange
Count是ShapeRange里面的一个属性,里面记录的是集合的总数,是一个长整数

  • 再说一下查找形状大于100毫米的写法
Sub 第一个插件()Dim theCount As IntegertheCount = ActivePage.Shapes.FindShapes(Query:="@width > {100 mm}").CountIf theCount <> 0 ThenMsgBox "本文件内含有" & theCount & "个"End If
End Sub

这样就可以了

  • 再说一下查找某些特效的查法
Sub 第一个插件()Dim theCount As IntegertheCount = ActivePage.Shapes.FindShapes(Query:="@com.transparency.type <> 0").CountIf theCount <> 0 ThenMsgBox "本文件内含有" & theCount & "个"End If
End Sub

上面这一串是直接查找所有形状 看看里面有没有含有使用了透镜效果的形状,如果有就会弹窗

代码释义
FindShapes 可以在开发者手册看到最后一个参数是Query,这个query就是另类的快速查询方法了
Query:=""这个是固定用法,后面接双引号, 引号内部就是我们更改的查询参数
"@colors.find(cmyk(0,0,0,100))要访问当前对象的方法和属性,必须在方法或属性名称前加上@符号
这里再说一下关于Shape的可查询方法一共有哪些呢?

序号符号返回值
1@name当前形状的名称
2@type返回表示形状类型的字符串
3@fill返回表示形状填充的填充对象
4@outline返回表示形状轮廓的轮廓对象
5@width返回形状的宽度(后面要带单位)
6@height返回形状的高度
7@left返回该形状在页面上左边缘的水平位置
8@right返回该形状在页面上的右边缘的水平位置
9@top返回该形状在页面上的顶部Y轴位置
10@bottom返回该形状在页面上的底边的Y轴位置
11@centerX返回该形状在页面上的中心点的X轴位置
12@CenterY返回该形状在页面上的中心点的Y轴位置
13@colors返回用于形状填充和轮廓的颜色数组。这个数组只包含唯一的颜色,所以如果填充和轮廓有相同的颜色,只有一种颜色是返回值
14@com返回形状的COM对象。这允许访问形状对象及其子对象的任何属性和函数,因为CQL不能直接访问的方法和属性。

一共就这么14种

这样子,当我们写上其中任意一种的时候,这个@**字符串代表就是所有当前文档中所有能够找得到的与之匹配的形状
.find(cmyk(0,0,0,100))是颜色查找的固定用法

@width > {100 mm} 这一段里面, @width表示形状的宽度,> 表示大于{100 mm}表示100毫米要用大括号包起来.
这里插入讲一下几种常用的:

  1. 等于 =
  2. 不等于 <>
  3. 大于等于 >=
  4. 小于等于 <=
  5. 大于 >
  6. 小于 <
  7. 或者 |
  8. 非 !

@com.transparency.type <> 0这一段的com是一个组件,回传的是COM:IVGShape对象, 这一段是一个布尔值,也就是结果TRUE或者FALSE, 只要是TRUE这个shape就会被加入到集合中
这个COM组件内部是什么还有待进步了解,等我去tlb内部了解清楚了再回头来解释吧
这个transparency就是透镜特效的类,type是他的子属性
等于0的时候是没有特效, 而另外有1到4各表示一种类型的透镜特效, 所以我在这里用了非0,也就是<>0来表示


http://www.ppmy.cn/news/408489.html

相关文章

CorelDRAWX4的VBA插件开发(六)录制宏与调试

看到这一章的时候,我想你已经对整个程序的构成有了大致的了解,但是我这里介绍一点你就只会了这一点,有没有什么方法可以让你自己找到写的方法呢? 答案是有的 CORELDRAW里面集成了VBA宏的录制功能,可以很快捷的把我们的键盘和鼠标操作下的CDR过程全部录成VBA,利用这个功能,我们…

coreldrawx4缩略图显示不出来_cdr软件缩略图怎么不显示?CorelDRAW缩略图显示设置--系统之家...

[cdr下载]CorelDRAW2020官方原版下载 软件大小:700 MB授权方式:免费软件 立即下载 cdr软件缩略图怎么不显示?CorelDRAW缩略图显示设置。有网友反应在使用CorelDRAW软件的时候,刚做好的图片保存到文件夹出现cdr缩略图无法显示,自己弄了好久还是这样,求助本站,下面系统天地…

CorelDRAW X4精简版序列号大家为何对其情有独钟?x8

收集到很多人对CDR X4的版本需求量很大&#xff0c;CorelDRAW中文网站也在积极的为大家的需要寻求解决方式。小编总结分析喜欢CorelDRAW X4版本的人&#xff0c;并不是因为它的功能多么多么的完善&#xff0c;也不是它操作起来无比的流畅&#xff0c;非常的智能化&#xff0c;如…

CorelDRAWX4的VBA插件开发(五) 一键转曲

CorelDRAWX4的VBA插件开发(五)一键转曲 1.先展示一下转曲代码 Sub 第一个插件()CorelDRAW.ActivePage.FindShapes(Type:cdrTextShape).ConvertToCurves End Sub把之前的代码修改成上面这样,当然我直接修改,是为了方便而已,所以没有另外新增一个按钮来实现这个功能,如果你想保…

coreldrawx4缩略图显示不出来_CDR不显示缩略图的3种终极解决办法!

站长所在的印刷出版行业,一般都是使用版本较低的CDR软件,以便更好的兼容出版厂,不然新版本的文件发厂出片时却打不开,而转低版本的话又容易出错。从最开始的 CorelDRAW 9 到现在的 CORELDRAW X4。 但设计公司就不用在乎在些了,常常会使用最新版本,毕竟功能会大大滴增强。…

CorelDRAWX4的VBA插件开发(十六)颜色配置文件设置与检测

首先颜色配置文件的重要性不言而喻 我们在使用CDR的全过程中,时时刻刻都在受这个颜色配置文件的影响,而各个设置之间本身是有显色的差异,而ICC颜色标准的诞生就是为了解决这个问题的,所有输入与输出设备都只要与ICC建立一次颜色转换,那么这一个图像就能畅行无阻的在其它设备上以…

coreldraw最新2023版本更新下载教程

coreldraw作为一款知名的图形设计软件&#xff0c;拥有很多的忠实用户&#xff0c;对于一些新用户来说&#xff0c;对于软件了解不深&#xff0c;coreldraw是一款非常好用的设计软件&#xff0c;功能非常强大&#xff0c;它可应用于商标设计、标志制作、模型绘制、插图描画、排…

CorelDRAWX4的VBA插件开发(十二)新建出血参考线

我们在做设计文件的时候,经常需要考虑好参考线的位置,也就是平时所说的出血,这个也算是比较重要,一般来说内容都要放在安全线以内,所以这里就单独拿出来讲一下,如何一键建立参考线. 接前面的内容往下讲,若有不明白可以从第一篇开始看 打开tool文件创建四周加参考线代码 Sub …